Import translations. DO NOT MERGE
am: 36c3a4556e -s ours
* commit '36c3a4556e883870d5ac1c2b006199b88d41ea68':
Import translations. DO NOT MERGE
Change-Id: If1b435143b95a8472dcbcbfe595cd64234d58edc
diff --git a/Android.mk b/Android.mk
index 906dab8..884085a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -6,6 +6,7 @@
ifeq ($(TARGET_BUILD_APPS),)
LOCAL_RESOURCE_DIR += frameworks/support/design/res
+LOCAL_RESOURCE_DIR += frameworks/support/v14/percent/res
LOCAL_RESOURCE_DIR += frameworks/support/v14/preference/res
LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
LOCAL_RESOURCE_DIR += frameworks/support/v7/gridlayout/res
@@ -13,6 +14,7 @@
LOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/res
else
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/design/res
+LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v14/percent/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v14/preference/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/res
@@ -31,6 +33,7 @@
LOCAL_STATIC_JAVA_LIBRARIES := android-opt-datetimepicker
LOCAL_STATIC_JAVA_LIBRARIES += android-support-design
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
+LOCAL_STATIC_JAVA_LIBRARIES += android-support-v14-percent
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v14-preference
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
@@ -39,6 +42,7 @@
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.design
+LOCAL_AAPT_FLAGS += --extra-packages android.support.v14.percent
LOCAL_AAPT_FLAGS += --extra-packages android.support.v14.preference
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.gridlayout
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1c5f299..6372b8f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -19,8 +19,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.android.deskclock"
- android:versionCode="440"
- android:versionName="4.4.0">
+ android:versionCode="451"
+ android:versionName="4.5.1">
<original-package android:name="com.android.alarmclock" />
<original-package android:name="com.android.deskclock" />
@@ -56,6 +56,7 @@
<provider
android:name=".provider.ClockProvider"
android:authorities="com.android.deskclock"
+ android:directBootAware="true"
android:exported="false" />
<activity
@@ -109,7 +110,9 @@
<activity
android:name=".alarms.AlarmActivity"
+ android:directBootAware="true"
android:excludeFromRecents="true"
+ android:resizeableActivity="false"
android:showOnLockScreen="true"
android:taskAffinity=""
android:theme="@style/AlarmAlertFullScreenTheme"
@@ -118,15 +121,18 @@
<activity
android:name=".ScreensaverActivity"
android:excludeFromRecents="true"
+ android:resizeableActivity="false"
android:taskAffinity=""
android:theme="@style/ScreensaverActivityTheme" />
<receiver
android:name=".alarms.AlarmStateManager"
+ android:directBootAware="true"
android:exported="false" />
<service
android:name=".alarms.AlarmService"
+ android:directBootAware="true"
android:exported="false" />
<activity
@@ -242,8 +248,11 @@
</intent-filter>
</activity>
- <receiver android:name=".AlarmInitReceiver">
+ <receiver
+ android:name=".AlarmInitReceiver"
+ android:directBootAware="true">
<intent-filter>
+ <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
@@ -291,7 +300,7 @@
android:exported="false"
android:permission="android.permission.BIND_REMOTEVIEWS" />
- <!-- Dream (screensaver) implementation -->
+ <!-- Screen saver implementation -->
<service
android:name=".Screensaver"
android:exported="true"
@@ -304,7 +313,7 @@
</intent-filter>
<meta-data
android:name="android.service.dream"
- android:resource="@xml/dream_info" />
+ android:resource="@xml/screensaver_info" />
</service>
<!-- Settings activity for screensaver -->
@@ -333,6 +342,7 @@
android:configChanges="screenSize|keyboardHidden|keyboard|navigation"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
+ android:resizeableActivity="false"
android:showOnLockScreen="true"
android:taskAffinity=""
android:theme="@style/ExpiredTimersActivityTheme" />
diff --git a/res/layout-land/clock_fragment.xml b/res/layout-land/clock_fragment.xml
index dc834f5..78afea0 100644
--- a/res/layout-land/clock_fragment.xml
+++ b/res/layout-land/clock_fragment.xml
@@ -14,38 +14,48 @@
limitations under the License.
-->
-<!-- Use this clock_fragment for landscape, which has main clock frame next to cities,
- with a spacing ratio dependent on the number of clocks per row (phone has 1, tablet has 2). -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:baselineAligned="false"
- android:orientation="horizontal"
- android:paddingEnd="@dimen/clock_side_padding"
- android:paddingStart="@dimen/clock_side_padding">
+ android:layout_height="match_parent">
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+ <!-- Clock: 60% of total width. -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_marginBottom="@dimen/main_clock_bottom_margin"
- android:layout_weight="2"
+ android:paddingBottom="@dimen/fab_height"
+ android:layout_weight="60"
android:gravity="center">
<include
android:id="@+id/main_clock_left_pane"
layout="@layout/main_clock_frame"
android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
+ android:layout_height="wrap_content" />
</LinearLayout>
+ <!-- World Clock List: 32% of total width. -->
<ListView
android:id="@+id/cities"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
- android:layout_weight="@integer/world_clocks_per_row"
- android:clickable="false"/>
+ android:layout_weight="32"
+ android:clickable="false"
+ android:clipToPadding="false"
+ android:paddingBottom="@dimen/fab_height" />
+
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-land/stopwatch_fragment.xml b/res/layout-land/stopwatch_fragment.xml
index 779aba4..cf9754a 100644
--- a/res/layout-land/stopwatch_fragment.xml
+++ b/res/layout-land/stopwatch_fragment.xml
@@ -13,47 +13,52 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:baselineAligned="false"
- android:orientation="horizontal"
- android:paddingBottom="@dimen/fab_height">
+ android:orientation="horizontal">
- <!-- This FrameLayout reserves half the screen for the stopwatch. -->
- <FrameLayout
+ <!-- Left gutter. -->
+ <Space
android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1">
+ android:layout_weight="@integer/gutter_width_percent" />
- <!-- This FrameLayout draws the stopwatch centered within its half of the screen. -->
+ <!-- Guttered content. -->
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/guttered_content_width_percent"
+ android:orientation="horizontal">
+
+ <!-- No circle in the stopwatch_view implies it should consume all remaining width. -->
<FrameLayout
- android:layout_width="@dimen/circle_size"
- android:layout_height="@dimen/circle_size"
- android:layout_gravity="center"
- android:gravity="center"
- android:padding="16dp">
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:paddingBottom="@dimen/fab_height">
- <com.android.deskclock.timer.CountingTimerView
- android:id="@+id/stopwatch_time_text"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ <include layout="@layout/stopwatch_view" />
- <com.android.deskclock.stopwatch.StopwatchCircleView
- android:id="@+id/stopwatch_time"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@null" />
</FrameLayout>
- </FrameLayout>
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/laps_list"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:clipToPadding="false"
+ android:paddingBottom="@dimen/fab_height" />
- <android.support.v7.widget.RecyclerView
- android:id="@+id/laps_list"
+ </LinearLayout>
+
+ <!-- Right gutter. -->
+ <Space
android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="1" />
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-land/time_setup_view.xml b/res/layout-land/time_setup_view.xml
index 828a154..d71ac63 100644
--- a/res/layout-land/time_setup_view.xml
+++ b/res/layout-land/time_setup_view.xml
@@ -13,6 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
@@ -20,22 +21,22 @@
android:baselineAligned="false"
android:orientation="horizontal">
- <!-- This nested ltr layout cannot be combined with the parent because
+ <!-- This nested LTR layout cannot be combined with the parent because
in RTL, the Keypad and Timer value should swap. -->
<LinearLayout
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
- android:layout_marginBottom="@dimen/footer_button_size"
android:layoutDirection="ltr"
android:gravity="center"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/fab_height">
<com.android.deskclock.timer.TimerView
android:id="@+id/timer_time_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:gravity="center_vertical">
+ android:baselineAligned="true">
<include layout="@layout/timer_h_mm_ss_view" />
@@ -44,7 +45,8 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
- android:layout_marginStart="@dimen/timer_setup_delete_start_margin"
+ android:layout_marginStart="@dimen/timer_setup_delete_margin"
+ android:layout_marginEnd="@dimen/timer_setup_delete_margin"
android:padding="@dimen/timer_setup_delete_padding"
android:contentDescription="@string/timer_delete"
android:scaleType="center"
@@ -55,14 +57,14 @@
<View
android:id="@+id/divider"
android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_marginBottom="8dip"
+ android:layout_height="1dp"
+ android:layout_marginBottom="8dp"
android:background="@color/dialog_gray" />
</LinearLayout>
<LinearLayout
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
@@ -82,4 +84,4 @@
</LinearLayout>
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-land/world_clock_item.xml b/res/layout-land/world_clock_item.xml
index 3b62a6a..a5e5327 100644
--- a/res/layout-land/world_clock_item.xml
+++ b/res/layout-land/world_clock_item.xml
@@ -14,58 +14,72 @@
limitations under the License.
-->
-<FrameLayout
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <!-- This layout sits as an include in world_clock_list_item, but the LinearLayout needs
- to have wrap_content so the separator view can have its width set to the width of the
- clock, which means we need the extra parent FrameLayout. -->
+ android:layout_height="match_parent"
+ android:layout_gravity="center_horizontal"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextClock
+ android:id="@+id/digital_clock"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:fontFamily="sans-serif-thin"
+ android:gravity="center"
+ android:includeFontPadding="false"
+ android:textColor="@color/clock_white"
+ android:textSize="@dimen/world_clock_digital_font_size" />
+
+ <com.android.deskclock.AnalogClock
+ android:id="@+id/analog_clock"
+ android:layout_width="@dimen/world_clock_analog_size"
+ android:layout_height="@dimen/world_clock_analog_size"
+ android:layout_marginBottom="@dimen/bottom_text_spacing_analog_small"
+ android:layout_gravity="center_horizontal"
+ android:dial="@drawable/clock_analog_dial_mipmap"
+ android:gravity="center"
+ android:hand_hour="@drawable/clock_analog_hour_mipmap"
+ android:hand_minute="@drawable/clock_analog_minute_mipmap" />
+
+ </FrameLayout>
+
<LinearLayout
android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingTop="@dimen/medium_space_top"
- android:orientation="vertical"
- android:layout_gravity="center_horizontal"
- android:gravity="center_horizontal" >
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:gravity="center">
<FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent">
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1">
- <TextClock
- android:id="@+id/digital_clock"
- style="@style/medium_light"
+ <TextView
+ android:id="@+id/city_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="@color/clock_white"
- android:baselineAligned="true"
- android:layout_gravity="center"
- android:gravity="center" />
-
- <com.android.deskclock.AnalogClock
- android:id="@+id/analog_clock"
- android:layout_width="@dimen/world_clock_analog_size"
- android:layout_height="@dimen/world_clock_analog_size"
- android:layout_marginBottom="@dimen/bottom_text_spacing_analog_small"
- android:layout_gravity="center_horizontal"
- android:dial="@drawable/clock_analog_dial_mipmap"
- android:hand_hour="@drawable/clock_analog_hour_mipmap"
- android:hand_minute="@drawable/clock_analog_minute_mipmap"
- android:gravity="center" />
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:textAppearance="@style/PrimaryLabelTextAppearance" />
</FrameLayout>
- <com.android.deskclock.widget.EllipsizeLayout
- android:layout_height="wrap_content"
+ <TextView
+ android:id="@+id/city_day"
android:layout_width="wrap_content"
- android:layout_marginStart="@dimen/label_margin_small"
- android:gravity="center" >
-
- <include layout="@layout/world_clock_label"/>
-
- </com.android.deskclock.widget.EllipsizeLayout>
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/style_label_space"
+ android:ellipsize="none"
+ android:singleLine="true"
+ android:textAppearance="@style/SecondaryLabelTextAppearance" />
</LinearLayout>
-</FrameLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-sw320dp-land/stopwatch_fragment.xml b/res/layout-sw320dp-land/stopwatch_fragment.xml
new file mode 100644
index 0000000..a1657af
--- /dev/null
+++ b/res/layout-sw320dp-land/stopwatch_fragment.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:baselineAligned="false"
+ android:orientation="horizontal">
+
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+ <!-- Guttered content. -->
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/guttered_content_width_percent"
+ android:orientation="horizontal">
+
+ <!-- A circle in the stopwatch_view implies it should be sized in the remaining area. -->
+ <android.support.percent.PercentFrameLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:paddingBottom="@dimen/fab_height">
+
+ <com.android.deskclock.TimerCircleFrameLayout
+ app:layout_aspectRatio="100%"
+ app:layout_widthPercent="@fraction/timer_circle_width_percent"
+ app:layout_heightPercent="@fraction/timer_circle_height_percent"
+ android:layout_gravity="center">
+
+ <include layout="@layout/stopwatch_view" />
+
+ </com.android.deskclock.TimerCircleFrameLayout>
+
+ </android.support.percent.PercentFrameLayout>
+
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/laps_list"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:clipToPadding="false"
+ android:paddingBottom="@dimen/fab_height" />
+
+ </LinearLayout>
+
+ <!-- Right gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-sw320dp/stopwatch_view.xml b/res/layout-sw320dp/stopwatch_view.xml
new file mode 100644
index 0000000..5a75818
--- /dev/null
+++ b/res/layout-sw320dp/stopwatch_view.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<!-- Sufficient space exists to include the bounding stopwatch circle. -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <com.android.deskclock.timer.CountingTimerView
+ android:id="@+id/stopwatch_time_text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <com.android.deskclock.stopwatch.StopwatchCircleView
+ android:id="@+id/stopwatch_time"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@null" />
+
+</merge>
\ No newline at end of file
diff --git a/res/layout-sw320dp/timer_item.xml b/res/layout-sw320dp/timer_item.xml
new file mode 100644
index 0000000..bb35498
--- /dev/null
+++ b/res/layout-sw320dp/timer_item.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<!-- This TimerItem includes the circle because ample space exists. -->
+<com.android.deskclock.timer.TimerItem
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.percent.PercentFrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_gravity="center">
+
+ <com.android.deskclock.TimerCircleFrameLayout
+ app:layout_aspectRatio="100%"
+ app:layout_widthPercent="@fraction/timer_circle_width_percent"
+ app:layout_heightPercent="@fraction/timer_circle_height_percent"
+ android:layout_gravity="center">
+
+ <com.android.deskclock.CircleButtonsLayout
+ android:id="@+id/timer_circle"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <com.android.deskclock.timer.TimerCircleView
+ android:id="@+id/timer_time"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <com.android.deskclock.timer.CountingTimerView
+ android:id="@+id/timer_time_text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <Button
+ android:id="@+id/timer_label"
+ style="?android:attr/borderlessButtonStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="40dp"
+ android:layout_gravity="top|center_horizontal"
+ android:clickable="false"
+ android:ellipsize="end"
+ android:gravity="center"
+ android:hint="@string/label"
+ android:maxLines="1"
+ android:src="@drawable/ic_label"
+ android:textAppearance="@style/SecondaryLabelTextAppearance" />
+
+ <ImageButton
+ android:id="@+id/reset_add"
+ android:layout_width="@dimen/fab_button_size"
+ android:layout_height="@dimen/fab_button_size"
+ android:layout_gravity="bottom|center_horizontal"
+ android:contentDescription="@string/timer_plus_one"
+ android:gravity="center"
+ android:scaleType="center"
+ android:src="@drawable/ic_plusone" />
+
+ </com.android.deskclock.CircleButtonsLayout>
+
+ </com.android.deskclock.TimerCircleFrameLayout>
+
+ </android.support.percent.PercentFrameLayout>
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/fab_height" />
+
+</com.android.deskclock.timer.TimerItem>
\ No newline at end of file
diff --git a/res/layout-sw600dp-land/alarm_clock.xml b/res/layout-sw600dp-land/alarm_clock.xml
deleted file mode 100644
index d58cc5f..0000000
--- a/res/layout-sw600dp-land/alarm_clock.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/main"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:baselineAligned="false"
- android:orientation="horizontal">
-
- <android.support.v7.widget.RecyclerView
- android:id="@+id/alarms_recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clipToPadding="false"
- android:descendantFocusability="beforeDescendants"
- android:fadingEdgeLength="0dp"
- android:paddingBottom="@dimen/list_bottom_spacing"
- android:scrollbarStyle="outsideOverlay"
- android:scrollbars="vertical" />
-
- </LinearLayout>
-
- <include layout="@layout/alarm_empty_view" />
-
-</FrameLayout>
diff --git a/res/layout-v21/stopwatch_notif_expanded.xml b/res/layout-v21/stopwatch_notif_expanded.xml
index ae694b3..6b4a6b9 100644
--- a/res/layout-v21/stopwatch_notif_expanded.xml
+++ b/res/layout-v21/stopwatch_notif_expanded.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/horizontal_divider"
@@ -51,7 +52,7 @@
<Chronometer
android:id="@+id/swn_expanded_chronometer"
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
@@ -67,7 +68,9 @@
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
android:visibility="gone" />
+
</LinearLayout>
+
</FrameLayout>
<LinearLayout
@@ -100,6 +103,7 @@
android:gravity="start|center_vertical"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Action" />
+
</LinearLayout>
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/alarm_clock.xml b/res/layout/alarm_clock.xml
index af1bfe6..0b3f671 100644
--- a/res/layout/alarm_clock.xml
+++ b/res/layout/alarm_clock.xml
@@ -27,10 +27,22 @@
android:clipToPadding="false"
android:descendantFocusability="beforeDescendants"
android:fadingEdgeLength="0dp"
- android:paddingBottom="@dimen/list_bottom_spacing"
+ android:paddingBottom="@dimen/fab_height"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
- <include layout="@layout/alarm_empty_view" />
+ <TextView
+ android:id="@+id/alarms_empty_view"
+ style="@style/no_alarms"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:contentDescription="@string/no_alarms"
+ android:drawableTop="@drawable/ic_noalarms"
+ android:gravity="center_horizontal"
+ android:paddingBottom="@dimen/fab_height"
+ android:text="@string/no_alarms"
+ android:textColor="#4cffffff"
+ android:visibility="gone" />
-</FrameLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/alarm_empty_view.xml b/res/layout/alarm_empty_view.xml
deleted file mode 100644
index fc03e83..0000000
--- a/res/layout/alarm_empty_view.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 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.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/alarms_empty_view"
- style="@style/no_alarms"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:contentDescription="@string/no_alarms"
- android:drawableTop="@drawable/ic_noalarms"
- android:paddingBottom="@dimen/fab_height"
- android:text="@string/no_alarms"
- android:gravity="center_horizontal"
- android:textColor="#4cffffff"
- android:visibility="gone" />
diff --git a/res/layout/alarm_time_collapsed.xml b/res/layout/alarm_time_collapsed.xml
index 6cb088c..158e37e 100644
--- a/res/layout/alarm_time_collapsed.xml
+++ b/res/layout/alarm_time_collapsed.xml
@@ -20,84 +20,104 @@
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:gravity="center_horizontal|top"
- android:orientation="vertical"
- android:paddingEnd="@dimen/alarm_side_padding"
- android:paddingStart="@dimen/alarm_side_padding">
+ android:orientation="horizontal">
- <include layout="@layout/alarm_time_summary" />
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
- <FrameLayout
- android:layout_width="match_parent"
+ <!-- Guttered content. -->
+ <LinearLayout
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_gravity="bottom">
+ android:layout_weight="@integer/guttered_content_width_percent"
+ android:gravity="center_horizontal|top"
+ android:orientation="vertical">
- <com.android.deskclock.widget.EllipsizeLayout
+ <include layout="@layout/alarm_time_summary" />
+
+ <FrameLayout
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical"
- android:layout_marginEnd="@dimen/touch_target_min_size"
- android:gravity="center_vertical">
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom">
- <TextView
- android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="none"
- android:paddingEnd="@dimen/icon_margin"
- android:paddingStart="@dimen/icon_margin"
- android:singleLine="true"
- android:textColor="@color/clock_gray"
- android:textSize="@dimen/alarm_text_font_size" />
+ <com.android.deskclock.widget.EllipsizeLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center_vertical"
+ android:layout_marginEnd="@dimen/touch_target_min_size"
+ android:gravity="center_vertical">
- <TextView
- android:id="@+id/days_of_week"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:focusable="true"
- android:paddingEnd="@dimen/icon_margin"
- android:paddingStart="@dimen/icon_margin"
- android:singleLine="true"
- android:textColor="@color/clock_white"
- android:textSize="@dimen/alarm_text_font_size"
- android:textStyle="bold" />
+ <TextView
+ android:id="@+id/label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="none"
+ android:paddingEnd="@dimen/icon_margin"
+ android:paddingStart="@dimen/icon_margin"
+ android:singleLine="true"
+ android:textColor="@color/clock_gray"
+ android:textSize="@dimen/alarm_text_font_size" />
- <TextView
- android:id="@+id/upcoming_instance_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:focusable="true"
- android:paddingEnd="@dimen/icon_margin"
- android:paddingStart="@dimen/icon_margin"
- android:singleLine="true"
- android:textColor="@color/clock_white"
- android:textSize="@dimen/alarm_text_font_size"
- android:textStyle="bold" />
+ <TextView
+ android:id="@+id/days_of_week"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:focusable="true"
+ android:paddingEnd="@dimen/icon_margin"
+ android:paddingStart="@dimen/icon_margin"
+ android:singleLine="true"
+ android:textColor="@color/clock_white"
+ android:textSize="@dimen/alarm_text_font_size"
+ android:textStyle="bold" />
- </com.android.deskclock.widget.EllipsizeLayout>
+ <TextView
+ android:id="@+id/upcoming_instance_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:focusable="true"
+ android:paddingEnd="@dimen/icon_margin"
+ android:paddingStart="@dimen/icon_margin"
+ android:singleLine="true"
+ android:textColor="@color/clock_white"
+ android:textSize="@dimen/alarm_text_font_size"
+ android:textStyle="bold" />
- <ImageButton
- android:id="@+id/arrow"
- android:layout_width="@dimen/touch_target_min_size"
- android:layout_height="@dimen/touch_target_min_size"
- android:layout_gravity="center_vertical|end"
- android:background="?attr/selectableItemBackground"
- android:contentDescription="@string/expand_alarm"
- android:scaleType="center"
- android:src="@drawable/ic_expand_down" />
+ </com.android.deskclock.widget.EllipsizeLayout>
- </FrameLayout>
+ <ImageButton
+ android:id="@+id/arrow"
+ android:layout_width="@dimen/touch_target_min_size"
+ android:layout_height="@dimen/touch_target_min_size"
+ android:layout_gravity="center_vertical|end"
+ android:background="?attr/selectableItemBackground"
+ android:contentDescription="@string/expand_alarm"
+ android:scaleType="center"
+ android:src="@drawable/ic_expand_down" />
- <include layout="@layout/preemptive_dismiss" />
+ </FrameLayout>
- <View
- android:id="@+id/hairline"
- android:layout_width="match_parent"
- android:layout_height="@dimen/hairline_height"
- android:layout_gravity="bottom"
- android:layout_marginEnd="@dimen/icon_margin"
- android:layout_marginStart="@dimen/icon_margin"
- android:background="@color/hairline" />
+ <include layout="@layout/preemptive_dismiss" />
-</LinearLayout>
+ <View
+ android:id="@+id/hairline"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/hairline_height"
+ android:layout_gravity="bottom"
+ android:layout_marginEnd="@dimen/icon_margin"
+ android:layout_marginStart="@dimen/icon_margin"
+ android:background="@color/hairline" />
+
+ </LinearLayout>
+
+ <!-- Right gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/alarm_time_expanded.xml b/res/layout/alarm_time_expanded.xml
index d50c5b8..07a39d4 100644
--- a/res/layout/alarm_time_expanded.xml
+++ b/res/layout/alarm_time_expanded.xml
@@ -18,22 +18,30 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:background="?android:attr/selectableItemBackground"
android:gravity="center_horizontal|top"
- android:orientation="vertical"
- android:paddingEnd="@dimen/alarm_side_padding"
- android:paddingStart="@dimen/alarm_side_padding">
+ android:orientation="horizontal">
- <include layout="@layout/alarm_time_summary" />
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ <!-- Guttered content. -->
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="@integer/guttered_content_width_percent"
+ android:gravity="center_horizontal|top"
+ android:orientation="vertical">
+
+ <include layout="@layout/alarm_time_summary" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
- android:layout_marginBottom="@dimen/collapse_expand_height"
android:orientation="vertical">
<CheckBox
@@ -59,12 +67,12 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center_vertical"
+ android:baselineAligned="true"
android:orientation="horizontal">
<TextView
android:id="@+id/choose_ringtone"
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="@dimen/touch_target_min_size"
android:layout_weight="1"
android:background="?android:attr/selectableItemBackground"
@@ -85,9 +93,6 @@
android:id="@+id/vibrate_onoff"
android:layout_width="wrap_content"
android:layout_height="@dimen/touch_target_min_size"
- android:layout_alignParentEnd="true"
- android:layout_centerVertical="true"
- android:includeFontPadding="false"
android:paddingEnd="@dimen/checkbox_start_padding"
android:paddingStart="@dimen/checkbox_start_padding"
android:text="@string/alarm_vibrate"
@@ -103,7 +108,6 @@
android:ellipsize="end"
android:hint="@string/label"
android:paddingBottom="12dp"
- android:paddingEnd="@dimen/alarm_side_padding"
android:paddingStart="44dp"
android:paddingTop="12dp"
android:singleLine="true"
@@ -119,38 +123,44 @@
<include layout="@layout/preemptive_dismiss" />
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|start">
+
+ <ImageButton
+ android:id="@+id/delete"
+ android:layout_width="@dimen/touch_target_min_size"
+ android:layout_height="@dimen/touch_target_min_size"
+ android:layout_gravity="center_vertical|start"
+ android:layout_marginTop="@dimen/alarm_clock_vertical_margin"
+ android:layout_marginBottom="@dimen/alarm_clock_vertical_margin"
+ android:background="?attr/selectableItemBackground"
+ android:contentDescription="@string/delete_alarm"
+ android:scaleType="center"
+ android:src="@drawable/ic_delete_small"/>
+
+ <ImageButton
+ android:id="@+id/arrow"
+ android:layout_width="@dimen/touch_target_min_size"
+ android:layout_height="@dimen/touch_target_min_size"
+ android:layout_gravity="center_vertical|end"
+ android:background="?attr/selectableItemBackground"
+ android:contentDescription="@string/collapse_alarm"
+ android:rotation="@integer/chevron_rotate_180"
+ android:scaleType="center"
+ android:src="@drawable/ic_expand_down" />
+
+ </FrameLayout>
+
</LinearLayout>
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|start">
+ </LinearLayout>
- <ImageButton
- android:id="@+id/delete"
- android:layout_width="@dimen/touch_target_min_size"
- android:layout_height="@dimen/tall_row_height"
- android:layout_gravity="center_vertical|start"
- android:layout_marginTop="@dimen/alarm_clock_vertical_margin"
- android:layout_marginBottom="@dimen/alarm_clock_vertical_margin"
- android:background="?attr/selectableItemBackground"
- android:contentDescription="@string/delete_alarm"
- android:scaleType="center"
- android:src="@drawable/ic_delete_small"/>
+ <!-- Right gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
- <ImageButton
- android:id="@+id/arrow"
- android:layout_width="@dimen/touch_target_min_size"
- android:layout_height="@dimen/touch_target_min_size"
- android:layout_gravity="center_vertical|end"
- android:background="?attr/selectableItemBackground"
- android:contentDescription="@string/collapse_alarm"
- android:rotation="@integer/chevron_rotate_180"
- android:scaleType="center"
- android:src="@drawable/ic_expand_down" />
-
- </FrameLayout>
-
- </FrameLayout>
-
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/alarm_time_summary.xml b/res/layout/alarm_time_summary.xml
index 63e2cde..ef52be5 100644
--- a/res/layout/alarm_time_summary.xml
+++ b/res/layout/alarm_time_summary.xml
@@ -26,7 +26,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-thin"
- android:gravity="center"
android:textColor="@color/clock_white"
android:textSize="@dimen/alarm_time_font_size" />
diff --git a/res/layout/chronometer_notif_content.xml b/res/layout/chronometer_notif_content.xml
new file mode 100644
index 0000000..8cb6d52
--- /dev/null
+++ b/res/layout/chronometer_notif_content.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 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.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <Chronometer
+ android:id="@+id/chronometer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" />
+
+ <TextView
+ android:id="@+id/state"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/clock_fragment.xml b/res/layout/clock_fragment.xml
index 5db224e..227f79e 100644
--- a/res/layout/clock_fragment.xml
+++ b/res/layout/clock_fragment.xml
@@ -14,12 +14,31 @@
limitations under the License.
-->
-<ListView
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/cities"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clickable="false"
- android:clipToPadding="false"
- android:paddingEnd="@dimen/clock_side_padding_reduced"
- android:paddingStart="@dimen/clock_side_padding" />
+ android:layout_height="match_parent">
+
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+ <!-- Guttered content. -->
+ <ListView
+ android:id="@+id/cities"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="@integer/guttered_content_width_percent"
+ android:clickable="false"
+ android:clipToPadding="false"
+ android:paddingBottom="@dimen/fab_height" />
+
+ <!-- Right gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/desk_clock.xml b/res/layout/desk_clock.xml
index aa371af..dcc0f0e 100644
--- a/res/layout/desk_clock.xml
+++ b/res/layout/desk_clock.xml
@@ -78,10 +78,10 @@
android:layout_gravity="start|center_vertical"
android:layout_weight="1">
- <com.android.deskclock.widget.AlphaSafeImageButton
+ <ImageButton
android:id="@+id/left_button"
- android:layout_width="@dimen/design_fab_size_normal"
- android:layout_height="@dimen/design_fab_size_normal"
+ android:layout_width="@dimen/fab_button_size"
+ android:layout_height="@dimen/fab_button_size"
android:layout_gravity="center"
android:contentDescription="@null"
android:scaleType="center" />
@@ -110,14 +110,14 @@
android:layout_gravity="end|center_vertical"
android:layout_weight="1">
- <com.android.deskclock.widget.AlphaSafeImageButton
+ <ImageButton
android:id="@+id/right_button"
- android:layout_width="@dimen/design_fab_size_normal"
- android:layout_height="@dimen/design_fab_size_normal"
+ android:layout_width="@dimen/fab_button_size"
+ android:layout_height="@dimen/fab_button_size"
android:layout_gravity="center"
android:contentDescription="@null"
android:scaleType="center" />
</FrameLayout>
</LinearLayout>
-</android.support.design.widget.CoordinatorLayout>
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/res/layout/expired_timers_activity.xml b/res/layout/expired_timers_activity.xml
index 0bd487e..34ef57e 100644
--- a/res/layout/expired_timers_activity.xml
+++ b/res/layout/expired_timers_activity.xml
@@ -33,8 +33,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
- android:orientation="vertical"
- android:paddingTop="?attr/actionBarSize" />
+ android:orientation="vertical" />
+
</ScrollView>
<android.support.design.widget.FloatingActionButton
@@ -47,4 +47,5 @@
android:src="@drawable/ic_stop_white_24dp"
app:borderWidth="0dp"
app:elevation="@dimen/fab_elevation" />
+
</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/main_clock_frame.xml b/res/layout/main_clock_frame.xml
index cba58d9..f59f614 100644
--- a/res/layout/main_clock_frame.xml
+++ b/res/layout/main_clock_frame.xml
@@ -14,12 +14,12 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingEnd="@dimen/clock_fragment_end_padding">
+ android:orientation="vertical">
<FrameLayout
android:layout_width="wrap_content"
diff --git a/res/layout/stopwatch_fragment.xml b/res/layout/stopwatch_fragment.xml
index 5ce57af..59c0b52 100644
--- a/res/layout/stopwatch_fragment.xml
+++ b/res/layout/stopwatch_fragment.xml
@@ -13,38 +13,40 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:baselineAligned="false"
android:gravity="center"
- android:orientation="vertical"
- android:paddingBottom="@dimen/fab_height">
+ android:baselineAligned="false"
+ android:orientation="vertical">
- <FrameLayout
- android:layout_width="@dimen/circle_size"
- android:layout_height="@dimen/circle_size"
- android:layout_gravity="center"
- android:padding="16dp">
+ <android.support.percent.PercentFrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center">
- <com.android.deskclock.timer.CountingTimerView
- android:id="@+id/stopwatch_time_text"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ <com.android.deskclock.TimerCircleFrameLayout
+ app:layout_aspectRatio="100%"
+ app:layout_widthPercent="@fraction/timer_circle_width_percent"
+ app:layout_heightPercent="@fraction/timer_circle_height_percent"
+ android:layout_gravity="center">
- <com.android.deskclock.stopwatch.StopwatchCircleView
- android:id="@+id/stopwatch_time"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@null" />
- </FrameLayout>
+ <include layout="@layout/stopwatch_view" />
+
+ </com.android.deskclock.TimerCircleFrameLayout>
+
+ </android.support.percent.PercentFrameLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/laps_list"
android:layout_width="match_parent"
android:layout_height="0dp"
+ android:layout_weight="1"
android:layout_gravity="center"
- android:layout_weight="1" />
+ android:clipToPadding="false"
+ android:paddingBottom="@dimen/fab_height" />
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/stopwatch_notif_collapsed.xml b/res/layout/stopwatch_notif_collapsed.xml
index a8ec193..bd67423 100644
--- a/res/layout/stopwatch_notif_collapsed.xml
+++ b/res/layout/stopwatch_notif_collapsed.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swn_collapsed_hitspace"
android:layout_width="match_parent"
android:layout_height="64dp"
@@ -44,11 +45,12 @@
<Chronometer
android:id="@+id/swn_collapsed_chronometer"
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" />
+
</LinearLayout>
<TextView
@@ -61,6 +63,7 @@
android:visibility="gone"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent" />
+
</LinearLayout>
</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/stopwatch_notif_expanded.xml b/res/layout/stopwatch_notif_expanded.xml
index 5bb59a5..ec3e951 100644
--- a/res/layout/stopwatch_notif_expanded.xml
+++ b/res/layout/stopwatch_notif_expanded.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/horizontal_divider"
@@ -52,7 +53,7 @@
<Chronometer
android:id="@+id/swn_expanded_chronometer"
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
@@ -69,7 +70,9 @@
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
android:visibility="gone" />
+
</LinearLayout>
+
</FrameLayout>
<LinearLayout
@@ -106,6 +109,7 @@
android:paddingStart="8dp"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent" />
+
</LinearLayout>
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/stopwatch_notification_icon.xml b/res/layout/stopwatch_notification_icon.xml
index ed8761d..f0872a1 100644
--- a/res/layout/stopwatch_notification_icon.xml
+++ b/res/layout/stopwatch_notification_icon.xml
@@ -21,4 +21,4 @@
android:layout_height="@dimen/notification_icon_size"
android:background="@drawable/notification_icon_bg"
android:scaleType="center"
- android:contentDescription="@null" />
+ android:contentDescription="@null" />
\ No newline at end of file
diff --git a/res/layout/blank_footer_view.xml b/res/layout/stopwatch_view.xml
similarity index 60%
copy from res/layout/blank_footer_view.xml
copy to res/layout/stopwatch_view.xml
index c9460fc..ecc4322 100644
--- a/res/layout/blank_footer_view.xml
+++ b/res/layout/stopwatch_view.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -13,7 +13,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:background="@color/transparent"
- android:layout_height="@dimen/button_footer_height" />
\ No newline at end of file
+
+<!-- Insufficient space exists to include the bounding stopwatch circle. -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <com.android.deskclock.timer.CountingTimerView
+ android:id="@+id/stopwatch_time_text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+</merge>
\ No newline at end of file
diff --git a/res/layout/three_keys_view.xml b/res/layout/three_keys_view.xml
index f0e17e3..10e8ccb 100644
--- a/res/layout/three_keys_view.xml
+++ b/res/layout/three_keys_view.xml
@@ -13,38 +13,40 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:gravity="center"
- android:layoutDirection="ltr"
- android:layout_height="0dip">
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:layoutDirection="ltr">
<Button
android:id="@+id/key_left"
style="@style/dialpad"
- android:layout_width="0dip"
- android:layout_weight="1"
+ android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_weight="1"
android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="center" />
<Button
android:id="@+id/key_middle"
style="@style/dialpad"
- android:layout_width="0dip"
- android:layout_weight="1"
+ android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_weight="1"
android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="center" />
<Button
android:id="@+id/key_right"
style="@style/dialpad"
- android:layout_width="0dip"
- android:layout_weight="1"
+ android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_weight="1"
android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="center" />
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/time_setup_container.xml b/res/layout/time_setup_container.xml
new file mode 100644
index 0000000..4acbbd4
--- /dev/null
+++ b/res/layout/time_setup_container.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<!-- Flanks the timer setup view (which has multiple layouts) with gutters. -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <!-- Left gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+ <!-- Guttered content. -->
+ <include
+ layout="@layout/time_setup_view"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/guttered_content_width_percent" />
+
+ <!-- Right gutter. -->
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/time_setup_view.xml b/res/layout/time_setup_view.xml
index 881b82b..2f92b57 100644
--- a/res/layout/time_setup_view.xml
+++ b/res/layout/time_setup_view.xml
@@ -13,22 +13,21 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/fab_height">
<com.android.deskclock.timer.TimerView
android:id="@+id/timer_time_text"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:layoutDirection="ltr"
- android:orientation="horizontal"
- android:paddingBottom="@dimen/medium_font_padding"
- android:paddingTop="@dimen/medium_font_padding">
+ android:baselineAligned="true"
+ android:layoutDirection="ltr">
<include layout="@layout/timer_h_mm_ss_view" />
@@ -36,8 +35,7 @@
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:layout_gravity="center"
- android:layout_marginStart="@dimen/timer_setup_delete_start_margin"
+ android:layout_marginStart="@dimen/timer_setup_delete_margin"
android:padding="@dimen/timer_setup_delete_padding"
android:contentDescription="@string/timer_delete"
android:scaleType="center"
@@ -48,8 +46,8 @@
<View
android:id="@+id/divider"
android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_marginBottom="8dip"
+ android:layout_height="1dp"
+ android:layout_marginBottom="8dp"
android:background="@color/dialog_gray" />
<include
@@ -68,4 +66,4 @@
android:id="@+id/fourth"
layout="@layout/three_keys_view" />
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/timer_fragment.xml b/res/layout/timer_fragment.xml
index 346d7b5..a34d956 100644
--- a/res/layout/timer_fragment.xml
+++ b/res/layout/timer_fragment.xml
@@ -25,56 +25,62 @@
android:layout_height="match_parent">
<LinearLayout
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_gravity="end|center_vertical"
- android:layout_marginEnd="24dp"
- android:gravity="center"
- android:orientation="vertical">
+ android:layout_marginBottom="@dimen/fab_height"
+ android:orientation="horizontal">
- <ImageView
- android:id="@+id/page_indicator0"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"/>
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="96"
+ android:gravity="center_vertical|end"
+ android:orientation="vertical">
- <ImageView
- android:id="@+id/page_indicator1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"/>
+ <ImageView
+ android:id="@+id/page_indicator0"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:contentDescription="@null" />
- <ImageView
- android:id="@+id/page_indicator2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"/>
+ <ImageView
+ android:id="@+id/page_indicator1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:contentDescription="@null" />
- <ImageView
- android:id="@+id/page_indicator3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:contentDescription="@null"/>
+ <ImageView
+ android:id="@+id/page_indicator2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:contentDescription="@null" />
+ <ImageView
+ android:id="@+id/page_indicator3"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:contentDescription="@null" />
+
+ </LinearLayout>
+
+ <!-- Right gutter. -->
<Space
- android:layout_width="match_parent"
- android:layout_height="@dimen/footer_button_size"
- android:layout_marginBottom="16dp"
- android:layout_marginTop="16dp"/>
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/gutter_width_percent" />
</LinearLayout>
<com.android.deskclock.VerticalViewPager
android:id="@+id/vertical_view_pager"
android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="match_parent" />
</FrameLayout>
<com.android.deskclock.timer.TimerSetupView
android:id="@+id/timer_setup"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_margin="16dp"/>
+ android:layout_height="match_parent" />
-</FrameLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/timer_h_mm_ss_view.xml b/res/layout/timer_h_mm_ss_view.xml
index 51b6ac6..987d2f2 100644
--- a/res/layout/timer_h_mm_ss_view.xml
+++ b/res/layout/timer_h_mm_ss_view.xml
@@ -14,95 +14,60 @@
limitations under the License.
-->
-<merge xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<merge
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<TextView
android:id="@+id/hours_tens"
style="@style/timer_setup_digit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:textColor="@color/clock_white"/>
+ android:layout_height="wrap_content" />
<TextView
android:id="@+id/hours_ones"
style="@style/timer_setup_digit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:textColor="@color/clock_white"/>
+ android:layout_height="wrap_content" />
<TextView
- style="@style/label"
+ style="@style/timer_setup_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
android:contentDescription="@string/hours_label_description"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:text="@string/hours_label"
- android:textColor="@color/clock_white"/>
+ android:text="@string/hours_label" />
<TextView
android:id="@+id/minutes_tens"
style="@style/timer_setup_digit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:textColor="@color/clock_white"/>
+ android:layout_height="wrap_content" />
<TextView
android:id="@+id/minutes_ones"
style="@style/timer_setup_digit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:textColor="@color/clock_white"/>
+ android:layout_height="wrap_content" />
<TextView
- style="@style/label"
+ style="@style/timer_setup_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
android:contentDescription="@string/minutes_label_description"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:text="@string/minutes_label"
- android:textColor="@color/clock_white"/>
+ android:text="@string/minutes_label" />
<TextView
android:id="@+id/seconds"
style="@style/timer_setup_digit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:textColor="@color/clock_white"/>
+ android:layout_height="wrap_content" />
<TextView
- style="@style/label"
+ style="@style/timer_setup_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
android:contentDescription="@string/seconds_label_description"
- android:ellipsize="none"
- android:fontFamily="sans-serif-thin"
- android:singleLine="true"
- android:text="@string/seconds_label"
- android:textColor="@color/clock_white"/>
+ android:text="@string/seconds_label" />
</merge>
\ No newline at end of file
diff --git a/res/layout/timer_item.xml b/res/layout/timer_item.xml
index 6c0a277..6440f18 100644
--- a/res/layout/timer_item.xml
+++ b/res/layout/timer_item.xml
@@ -14,37 +14,28 @@
limitations under the License.
-->
+<!-- This TimerItem discards the circle because space is limited. -->
<com.android.deskclock.timer.TimerItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:gravity="center_vertical"
- android:orientation="vertical"
- android:paddingBottom="@dimen/timer_list_padding_bottom">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
- <com.android.deskclock.CircleButtonsLayout
- android:id="@+id/timer_circle"
- android:layout_width="@dimen/circle_size"
- android:layout_height="@dimen/circle_size"
- android:layout_gravity="center"
- android:padding="@dimen/timer_padding">
-
- <com.android.deskclock.timer.TimerCircleView
- android:id="@+id/timer_time"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
<com.android.deskclock.timer.CountingTimerView
android:id="@+id/timer_time_text"
android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="match_parent" />
<Button
android:id="@+id/timer_label"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
- android:layout_height="56dp"
+ android:layout_height="40dp"
android:layout_gravity="top|center_horizontal"
android:clickable="false"
android:ellipsize="end"
@@ -52,18 +43,22 @@
android:hint="@string/label"
android:maxLines="1"
android:src="@drawable/ic_label"
- android:textAppearance="@style/SecondaryLabelTextAppearance"/>
+ android:textAppearance="@style/SecondaryLabelTextAppearance" />
<ImageButton
android:id="@+id/reset_add"
- android:layout_width="50dp"
- android:layout_height="50dp"
+ android:layout_width="@dimen/fab_button_size"
+ android:layout_height="@dimen/fab_button_size"
android:layout_gravity="bottom|center_horizontal"
android:contentDescription="@string/timer_plus_one"
android:gravity="center"
android:scaleType="center"
- android:src="@drawable/ic_plusone"/>
+ android:src="@drawable/ic_plusone" />
- </com.android.deskclock.CircleButtonsLayout>
+ </FrameLayout>
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/fab_height" />
</com.android.deskclock.timer.TimerItem>
\ No newline at end of file
diff --git a/res/layout/world_clock_item.xml b/res/layout/world_clock_item.xml
index 9dc27c2..7ea2d32 100644
--- a/res/layout/world_clock_item.xml
+++ b/res/layout/world_clock_item.xml
@@ -18,15 +18,28 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:paddingTop="@dimen/medium_space_top">
+ android:gravity="center_vertical">
- <include layout="@layout/world_clock_label" />
+ <TextView
+ android:id="@+id/city_name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:textAppearance="@style/PrimaryLabelTextAppearance" />
+
+ <TextView
+ android:id="@+id/city_day"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/style_label_space"
+ android:ellipsize="none"
+ android:singleLine="true"
+ android:textAppearance="@style/SecondaryLabelTextAppearance" />
<FrameLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:layout_height="wrap_content">
<TextClock
android:id="@+id/digital_clock"
@@ -50,5 +63,4 @@
</FrameLayout>
-</com.android.deskclock.widget.EllipsizeLayout>
-
+</com.android.deskclock.widget.EllipsizeLayout>
\ No newline at end of file
diff --git a/res/layout/world_clock_label.xml b/res/layout/world_clock_label.xml
deleted file mode 100644
index 9111f61..0000000
--- a/res/layout/world_clock_label.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 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.
--->
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
-
- <TextView
- android:id="@+id/city_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:singleLine="true"
- android:textAppearance="@style/PrimaryLabelTextAppearance" />
-
- <TextView
- android:id="@+id/city_day"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/style_label_space"
- android:ellipsize="none"
- android:singleLine="true"
- android:textAppearance="@style/SecondaryLabelTextAppearance" />
-
-</merge>
-
diff --git a/res/layout/world_clock_list_item.xml b/res/layout/world_clock_list_item.xml
deleted file mode 100644
index 49519df..0000000
--- a/res/layout/world_clock_list_item.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/world_clock_margin"
- android:layout_marginEnd="@dimen/world_clock_margin"
- android:layout_marginLeft="@dimen/world_clock_margin"
- android:layout_marginStart="@dimen/world_clock_margin"
- android:paddingEnd="@dimen/clock_fragment_end_padding"
- android:orientation="horizontal">
-
- <include layout="@layout/world_clock_item"
- android:id="@+id/city_left"
- android:gravity="center"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"/>
-
-</LinearLayout>
diff --git a/res/menu/desk_clock_menu.xml b/res/menu/desk_clock_menu.xml
deleted file mode 100644
index 2bf66c6..0000000
--- a/res/menu/desk_clock_menu.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto">
- <group android:id="@+id/menu_items">
- <item
- android:id="@+id/menu_item_search"
- android:icon="@android:drawable/ic_menu_search"
- android:imeOptions="actionSearch"
- android:orderInCategory="1"
- android:title="@android:string/search_go"
- android:visible="false"
- app:actionViewClass="android.support.v7.widget.SearchView"
- app:showAsAction="ifRoom"/>
- <item
- android:id="@+id/menu_item_sort"
- android:title="@string/menu_item_sort_by_gmt_offset"
- app:showAsAction="never"/>
- <item
- android:id="@+id/menu_item_night_mode"
- android:icon="@android:drawable/ic_menu_preferences"
- android:title="@string/menu_item_night_mode"/>
- <item
- android:id="@+id/menu_item_settings"
- android:icon="@android:drawable/ic_menu_preferences"
- android:title="@string/menu_item_settings"/>
- </group>
-</menu>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index bc5565c..ca27dbe 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Onbekend"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Wekkervolume is gedemp"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Ontdemp"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Verstekwekkerluitoon is stil"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Verander"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Toestel is op algehele stilte gestel"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volumeknoppies"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Sluimer"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Aftellervibrasie"</string>
<string name="timer_paused" msgid="5941160896040771462">"Afteller is laat wag"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> aftellers is laat wag"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Raak om jou aftellers te sien"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tik om jou tydhouers te sien"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> aftellers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Volgende afteller: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Droom-instellings"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Sluimerskerminstellings"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nag-modus"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Skerm baie verdof (vir donker kamers)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Vou wekker uit"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 78d8357..a3f95ba 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"ያልታወቀ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"የማንቂያ ድምጽ ተዘግቷል"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ድምፅ-ከል አንሳ"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"ነባሪ የማንቂያ ጥሪ ድምፅ ጸጥ ያለ ነው"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"ለውጥ"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"መሣሪያ ወደ ጠቅላላ ጸጥታ ተዘጋጅቷል"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"የድምፅ አዝራሮች"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"አሸልብ"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"የጊዜ ቆጣሪ ንዝረት"</string>
<string name="timer_paused" msgid="5941160896040771462">"ጊዜ ቆጣሪ ለአፍታ ቆሟል"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ሰዓት ቆጣሪዎች ለአፍታ ቆመዋል"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"የሰዓት ቆጣሪዎችዎን ለማየት ይንኩ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"የእርስዎን ጊዜ መቁጠሪያዎች ለማየት ነካ ያድርጉ።"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ሰዓት ቆጣሪዎች"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"ቀጣዩ የሰዓት ቆጣሪ፦ <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"የህልም ቅንብሮች"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"የማያ ገጽ ጠባቂ ቅንብሮች"</string>
<string name="night_mode_title" msgid="5983813889469616299">"የማታ ሁነታ"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ብርሃኑ በጣም የፈዘዘ ማሳያ (ለጨለሙ ክፍሎች)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ማንቂያ ዘርጋ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 608eb40..8bcb196 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -150,6 +150,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"غير معروف"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"تم كتم صوت المنبه."</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"إعادة الصوت"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"تم تعيين الجهاز إلى الوضع الصامت كليًا."</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"أزرار مستوى الصوت"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"غفوة"</item>
@@ -353,10 +358,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"اهتزاز الموقت"</string>
<string name="timer_paused" msgid="5941160896040771462">"تم إيقاف الموقِّت مؤقتًا"</string>
<string name="timers_stopped" msgid="3186191253226005149">"تم إيقاف <xliff:g id="NUMBER">%d</xliff:g> موقِّتات مؤقتُا"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"المس للاطلاع على الموقتات"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"انقر للاطلاع على الموقِّتات التابعة لك"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> من الموقتات"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"الموقت التالي: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"إعدادات Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"إعدادات شاشة التوقف"</string>
<string name="night_mode_title" msgid="5983813889469616299">"وضع ليلي"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"شاشة معتمة جدًا (للغرف المظلمة)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"توسيع المنبه"</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 1cf3318..8f2b801 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Naməlum"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Siqnal susturulub"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Susdurmayın"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Cihaz tam səssiz rejimə ayarlanıb"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Səs düymələri"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Təxirə sal"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Taymer vibrasiyası"</string>
<string name="timer_paused" msgid="5941160896040771462">"Taymer durdurulub"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> taymer durdurulub"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Vaxtölçənlərinizi görmək üçün toxunun"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Vaxtölçənlərinizi görmək üçün tıklayın"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> vaxtölçən"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Sonrakı vaxtölçən: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Yuxu parametrləri"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekran qoruyucu ayarları"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Gecə rejimi"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Çox zəif ekran (qaranlıq otaqlar üçün)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Siqnalı genişlət"</string>
diff --git a/res/values-b+sr+Latn/cities.xml b/res/values-b+sr+Latn/cities.xml
new file mode 100644
index 0000000..ae73461
--- /dev/null
+++ b/res/values-b+sr+Latn/cities.xml
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2016 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="C1" msgid="3622720549928625541">"<xliff:g id="SEPARATOR">=</xliff:g>Abidžan<xliff:g id="TIMEZONE">|Africa/Abidjan</xliff:g>"</string>
+ <string name="C2" msgid="9073993995416728918">"<xliff:g id="SEPARATOR">=</xliff:g>Akra<xliff:g id="TIMEZONE">|Africa/Accra</xliff:g>"</string>
+ <string name="C3" msgid="5172979423931428620">"<xliff:g id="SEPARATOR">=</xliff:g>Adis Abeba<xliff:g id="TIMEZONE">|Africa/Addis_Ababa</xliff:g>"</string>
+ <string name="C4" msgid="4450258423854546267">"<xliff:g id="SEPARATOR">=</xliff:g>Alžir<xliff:g id="TIMEZONE">|Africa/Algiers</xliff:g>"</string>
+ <string name="C5" msgid="8063142106679202722">"<xliff:g id="SEPARATOR">=</xliff:g>Blantajer<xliff:g id="TIMEZONE">|Africa/Blantyre</xliff:g>"</string>
+ <string name="C6" msgid="1620940469531839828">"<xliff:g id="SEPARATOR">=</xliff:g>Brazavil<xliff:g id="TIMEZONE">|Africa/Brazzaville</xliff:g>"</string>
+ <string name="C7" msgid="8450502029020824529">"<xliff:g id="SEPARATOR">=</xliff:g>Kairo<xliff:g id="TIMEZONE">|Africa/Cairo</xliff:g>"</string>
+ <string name="C8" msgid="5843391672611053116">"<xliff:g id="SEPARATOR">=</xliff:g>Kazablanka<xliff:g id="TIMEZONE">|Africa/Casablanca</xliff:g>"</string>
+ <string name="C9" msgid="2164088076645942134">"<xliff:g id="SEPARATOR">=</xliff:g>Konakri<xliff:g id="TIMEZONE">|Africa/Conakry</xliff:g>"</string>
+ <string name="C10" msgid="6275085554326816487">"<xliff:g id="SEPARATOR">=</xliff:g>Dakar<xliff:g id="TIMEZONE">|Africa/Dakar</xliff:g>"</string>
+ <string name="C11" msgid="8124988526568339100">"<xliff:g id="SEPARATOR">=</xliff:g>Dar es Salam<xliff:g id="TIMEZONE">|Africa/Dar_es_Salaam</xliff:g>"</string>
+ <string name="C12" msgid="9058858575164534385">"<xliff:g id="SEPARATOR">=</xliff:g>Džibuti<xliff:g id="TIMEZONE">|Africa/Djibouti</xliff:g>"</string>
+ <string name="C13" msgid="1020128319695123468">"<xliff:g id="SEPARATOR">=</xliff:g>Fritaun<xliff:g id="TIMEZONE">|Africa/Freetown</xliff:g>"</string>
+ <string name="C14" msgid="5466600602512133072">"<xliff:g id="SEPARATOR">=</xliff:g>Gaborone<xliff:g id="TIMEZONE">|Africa/Gaborone</xliff:g>"</string>
+ <string name="C15" msgid="4045696872348427594">"<xliff:g id="SEPARATOR">=</xliff:g>Harare<xliff:g id="TIMEZONE">|Africa/Harare</xliff:g>"</string>
+ <string name="C16" msgid="109844560982762747">"<xliff:g id="SEPARATOR">=</xliff:g>Johanesburg<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C17" msgid="4868414442726546214">"<xliff:g id="SEPARATOR">=</xliff:g>Kampala<xliff:g id="TIMEZONE">|Africa/Kampala</xliff:g>"</string>
+ <string name="C18" msgid="7460319039497808668">"<xliff:g id="SEPARATOR">=</xliff:g>Kartum<xliff:g id="TIMEZONE">|Africa/Khartoum</xliff:g>"</string>
+ <string name="C19" msgid="3967163989179394825">"<xliff:g id="SEPARATOR">=</xliff:g>Kigali<xliff:g id="TIMEZONE">|Africa/Kigali</xliff:g>"</string>
+ <string name="C20" msgid="832336979058592106">"<xliff:g id="SEPARATOR">=</xliff:g>Kinšasa<xliff:g id="TIMEZONE">|Africa/Kinshasa</xliff:g>"</string>
+ <string name="C21" msgid="8691772487297796331">"<xliff:g id="SEPARATOR">=</xliff:g>Lagos<xliff:g id="TIMEZONE">|Africa/Lagos</xliff:g>"</string>
+ <string name="C22" msgid="6061916756914828881">"<xliff:g id="SEPARATOR">=</xliff:g>Maseru<xliff:g id="TIMEZONE">|Africa/Maseru</xliff:g>"</string>
+ <string name="C23" msgid="6790461017899209498">"<xliff:g id="SEPARATOR">=</xliff:g>Mogadišu<xliff:g id="TIMEZONE">|Africa/Mogadishu</xliff:g>"</string>
+ <string name="C24" msgid="836730985302941979">"<xliff:g id="SEPARATOR">=</xliff:g>Najrobi<xliff:g id="TIMEZONE">|Africa/Nairobi</xliff:g>"</string>
+ <string name="C25" msgid="6439936809920816845">"<xliff:g id="SEPARATOR">=</xliff:g>Sao Tome<xliff:g id="TIMEZONE">|Africa/Sao_Tome</xliff:g>"</string>
+ <string name="C26" msgid="3250092456144685877">"<xliff:g id="SEPARATOR">=</xliff:g>Timbuktu<xliff:g id="TIMEZONE">|Africa/Timbuktu</xliff:g>"</string>
+ <string name="C27" msgid="851018621577780718">"<xliff:g id="SEPARATOR">=</xliff:g>Tripoli<xliff:g id="TIMEZONE">|Africa/Tripoli</xliff:g>"</string>
+ <string name="C28" msgid="7979767521827885833">"<xliff:g id="SEPARATOR">=</xliff:g>Tunis<xliff:g id="TIMEZONE">|Africa/Tunis</xliff:g>"</string>
+ <string name="C29" msgid="7946114495840302218">"<xliff:g id="SEPARATOR">=</xliff:g>Enkoridž<xliff:g id="TIMEZONE">|America/Anchorage</xliff:g>"</string>
+ <string name="C31" msgid="9017443250572798257">"<xliff:g id="SEPARATOR">=</xliff:g>Aruba<xliff:g id="TIMEZONE">|America/Aruba</xliff:g>"</string>
+ <string name="C32" msgid="3825060534011309483">"<xliff:g id="SEPARATOR">=</xliff:g>Asunsion<xliff:g id="TIMEZONE">|America/Asuncion</xliff:g>"</string>
+ <string name="C33" msgid="700410369162607101">"<xliff:g id="SEPARATOR">=</xliff:g>Barbados<xliff:g id="TIMEZONE">|America/Barbados</xliff:g>"</string>
+ <string name="C34" msgid="4247046344370912762">"<xliff:g id="SEPARATOR">=</xliff:g>Belize<xliff:g id="TIMEZONE">|America/Belize</xliff:g>"</string>
+ <string name="C35" msgid="2794708943743875418">"<xliff:g id="SEPARATOR">=</xliff:g>Bogota<xliff:g id="TIMEZONE">|America/Bogota</xliff:g>"</string>
+ <string name="C36" msgid="5404342554664613950">"<xliff:g id="SEPARATOR">=</xliff:g>Buenos Ajres<xliff:g id="TIMEZONE">|America/Buenos_Aires</xliff:g>"</string>
+ <string name="C37" msgid="210142862572070093">"<xliff:g id="SEPARATOR">=</xliff:g>Kankun<xliff:g id="TIMEZONE">|America/Cancun</xliff:g>"</string>
+ <string name="C38" msgid="3882347315148425276">"<xliff:g id="SEPARATOR">=</xliff:g>Karakas<xliff:g id="TIMEZONE">|America/Caracas</xliff:g>"</string>
+ <string name="C39" msgid="1273212484626323439">"<xliff:g id="SEPARATOR">=</xliff:g>Kajmanska ostrva<xliff:g id="TIMEZONE">|America/Cayman</xliff:g>"</string>
+ <string name="C40" msgid="3106173663723475314">"<xliff:g id="SEPARATOR">=</xliff:g>Čikago<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C42" msgid="5638414063615009004">"<xliff:g id="SEPARATOR">=</xliff:g>Kurasao<xliff:g id="TIMEZONE">|America/Curacao</xliff:g>"</string>
+ <string name="C43" msgid="6826097241516998181">"<xliff:g id="SEPARATOR">=</xliff:g>Doson Krik<xliff:g id="TIMEZONE">|America/Dawson_Creek</xliff:g>"</string>
+ <string name="C44" msgid="2779334691893631030">"<xliff:g id="SEPARATOR">=</xliff:g>Denver<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C45" msgid="8943178793317201894">"<xliff:g id="SEPARATOR">=</xliff:g>Detroit<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C46" msgid="5190250990574320177">"<xliff:g id="SEPARATOR">=</xliff:g>Dominika<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C47" msgid="369754396219379227">"<xliff:g id="SEPARATOR">=</xliff:g>Edmonton<xliff:g id="TIMEZONE">|America/Edmonton</xliff:g>"</string>
+ <string name="C48" msgid="7918902616648922410">"<xliff:g id="SEPARATOR">=</xliff:g>Salvador<xliff:g id="TIMEZONE">|America/El_Salvador</xliff:g>"</string>
+ <string name="C49" msgid="6326857727742458931">"<xliff:g id="SEPARATOR">=</xliff:g>Fortaleza<xliff:g id="TIMEZONE">|America/Fortaleza</xliff:g>"</string>
+ <string name="C50" msgid="3131498820508584398">"<xliff:g id="SEPARATOR">=</xliff:g>Grand Turk<xliff:g id="TIMEZONE">|America/Grand_Turk</xliff:g>"</string>
+ <string name="C51" msgid="3122278921760822414">"<xliff:g id="SEPARATOR">=</xliff:g>Grenada<xliff:g id="TIMEZONE">|America/Grenada</xliff:g>"</string>
+ <string name="C52" msgid="7461551991724617520">"<xliff:g id="SEPARATOR">=</xliff:g>Gvatemala<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C53" msgid="296242785331472791">"<xliff:g id="SEPARATOR">=</xliff:g>Gvajana<xliff:g id="TIMEZONE">|America/Guyana</xliff:g>"</string>
+ <string name="C54" msgid="4045007274020361950">"<xliff:g id="SEPARATOR">=</xliff:g>Halifaks<xliff:g id="TIMEZONE">|America/Halifax</xliff:g>"</string>
+ <string name="C55" msgid="8180186289266487770">"<xliff:g id="SEPARATOR">=</xliff:g>Havana<xliff:g id="TIMEZONE">|America/Havana</xliff:g>"</string>
+ <string name="C56" msgid="6062281725956353553">"<xliff:g id="SEPARATOR">=</xliff:g>Indijanapolis<xliff:g id="TIMEZONE">|America/Indiana/Indianapolis</xliff:g>"</string>
+ <string name="C57" msgid="5971109906791493563">"<xliff:g id="SEPARATOR">=</xliff:g>Noks<xliff:g id="TIMEZONE">|America/Indiana/Knox</xliff:g>"</string>
+ <string name="C58" msgid="7657721717096348613">"<xliff:g id="SEPARATOR">=</xliff:g>Marengo<xliff:g id="TIMEZONE">|America/Indiana/Marengo</xliff:g>"</string>
+ <string name="C59" msgid="2053523400941417307">"<xliff:g id="SEPARATOR">=</xliff:g>Pitersburg<xliff:g id="TIMEZONE">|America/Indiana/Petersburg</xliff:g>"</string>
+ <string name="C60" msgid="8112283891039465817">"<xliff:g id="SEPARATOR">=</xliff:g>Tel Siti<xliff:g id="TIMEZONE">|America/Indiana/Tell_City</xliff:g>"</string>
+ <string name="C61" msgid="7778713489993559227">"<xliff:g id="SEPARATOR">=</xliff:g>Vevej<xliff:g id="TIMEZONE">|America/Indiana/Vevay</xliff:g>"</string>
+ <string name="C62" msgid="2667958702401099683">"<xliff:g id="SEPARATOR">=</xliff:g>Vensen<xliff:g id="TIMEZONE">|America/Indiana/Vincennes</xliff:g>"</string>
+ <string name="C63" msgid="2251274863869460838">"<xliff:g id="SEPARATOR">=</xliff:g>Vinamak<xliff:g id="TIMEZONE">|America/Indiana/Winamac</xliff:g>"</string>
+ <string name="C64" msgid="1051183687128385699">"<xliff:g id="SEPARATOR">=</xliff:g>Kingston<xliff:g id="TIMEZONE">|America/Jamaica</xliff:g>"</string>
+ <string name="C65" msgid="4484953311341882894">"<xliff:g id="SEPARATOR">=</xliff:g>La Paz<xliff:g id="TIMEZONE">|America/La_Paz</xliff:g>"</string>
+ <string name="C66" msgid="4486852398001333122">"<xliff:g id="SEPARATOR">=</xliff:g>Lima<xliff:g id="TIMEZONE">|America/Lima</xliff:g>"</string>
+ <string name="C67" msgid="4874799181719358019">"<xliff:g id="SEPARATOR">=</xliff:g>Los Anđeles<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C68" msgid="5526012011469271690">"<xliff:g id="SEPARATOR">=</xliff:g>Luivil<xliff:g id="TIMEZONE">|America/Louisville</xliff:g>"</string>
+ <string name="C69" msgid="6147580167560875608">"<xliff:g id="SEPARATOR">=</xliff:g>Managva<xliff:g id="TIMEZONE">|America/Managua</xliff:g>"</string>
+ <string name="C70" msgid="3277881296053225577">"<xliff:g id="SEPARATOR">=</xliff:g>Martinik<xliff:g id="TIMEZONE">|America/Martinique</xliff:g>"</string>
+ <string name="C71" msgid="4017941126335556194">"<xliff:g id="SEPARATOR">=</xliff:g>Mendoza<xliff:g id="TIMEZONE">|America/Mendoza</xliff:g>"</string>
+ <string name="C72" msgid="3992109594245379480">"<xliff:g id="SEPARATOR">=</xliff:g>Metlakatla<xliff:g id="TIMEZONE">|America/Metlakatla</xliff:g>"</string>
+ <string name="C73" msgid="2715229408279026929">"<xliff:g id="SEPARATOR">=</xliff:g>Meksiko Siti<xliff:g id="TIMEZONE">|America/Mexico_City</xliff:g>"</string>
+ <string name="C74" msgid="4308784353529592128">"<xliff:g id="SEPARATOR">=</xliff:g>Monterej<xliff:g id="TIMEZONE">|America/Monterrey</xliff:g>"</string>
+ <string name="C75" msgid="1026967177018172509">"<xliff:g id="SEPARATOR">=</xliff:g>Montevideo<xliff:g id="TIMEZONE">|America/Montevideo</xliff:g>"</string>
+ <string name="C76" msgid="5677155513568462679">"<xliff:g id="SEPARATOR">=</xliff:g>Montreal<xliff:g id="TIMEZONE">|America/Montreal</xliff:g>"</string>
+ <string name="C77" msgid="7071675194537613715">"<xliff:g id="SEPARATOR">=</xliff:g>Nasau<xliff:g id="TIMEZONE">|America/Nassau</xliff:g>"</string>
+ <string name="C78" msgid="705452895809394827">"<xliff:g id="SEPARATOR">=</xliff:g>Njujork<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C79" msgid="615046244335186458">"<xliff:g id="SEPARATOR">=</xliff:g>Bjula<xliff:g id="TIMEZONE">|America/North_Dakota/Beulah</xliff:g>"</string>
+ <string name="C80" msgid="7462541787750301851">"<xliff:g id="SEPARATOR">=</xliff:g>Senter<xliff:g id="TIMEZONE">|America/North_Dakota/Center</xliff:g>"</string>
+ <string name="C81" msgid="5467118811364466464">"<xliff:g id="SEPARATOR">=</xliff:g>Nju Sejlem<xliff:g id="TIMEZONE">|America/North_Dakota/New_Salem</xliff:g>"</string>
+ <string name="C82" msgid="1040250446144596478">"<xliff:g id="SEPARATOR">=</xliff:g>Panama<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C83" msgid="3734366600481445363">"<xliff:g id="SEPARATOR">=</xliff:g>Feniks<xliff:g id="TIMEZONE">|America/Phoenix</xliff:g>"</string>
+ <string name="C84" msgid="2410152141185166321">"<xliff:g id="SEPARATOR">=</xliff:g>Port ov Spejn<xliff:g id="TIMEZONE">|America/Port_of_Spain</xliff:g>"</string>
+ <string name="C85" msgid="2883572094139689939">"<xliff:g id="SEPARATOR">=</xliff:g>Port o Prens<xliff:g id="TIMEZONE">|America/Port-au-Prince</xliff:g>"</string>
+ <string name="C86" msgid="274590042868724214">"<xliff:g id="SEPARATOR">=</xliff:g>Portoriko<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C87" msgid="2866918562243248306">"<xliff:g id="SEPARATOR">=</xliff:g>Santo Domingo<xliff:g id="TIMEZONE">|America/Santo_Domingo</xliff:g>"</string>
+ <string name="C88" msgid="2261702707416420550">"<xliff:g id="SEPARATOR">=</xliff:g>Sao Paulo<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C89" msgid="8517952667962700432">"<xliff:g id="SEPARATOR">=</xliff:g>Sent Džons<xliff:g id="TIMEZONE">|America/St_Johns</xliff:g>"</string>
+ <string name="C90" msgid="1703939848190669830">"<xliff:g id="SEPARATOR">=</xliff:g>Sent Kits<xliff:g id="TIMEZONE">|America/St_Kitts</xliff:g>"</string>
+ <string name="C91" msgid="4438261556294969442">"<xliff:g id="SEPARATOR">=</xliff:g>Sveta Lucija<xliff:g id="TIMEZONE">|America/St_Lucia</xliff:g>"</string>
+ <string name="C92" msgid="3717300223413621820">"<xliff:g id="SEPARATOR">=</xliff:g>Sent Tomas<xliff:g id="TIMEZONE">|America/St_Thomas</xliff:g>"</string>
+ <string name="C93" msgid="964552099122372664">"<xliff:g id="SEPARATOR">=</xliff:g>Tihuana<xliff:g id="TIMEZONE">|America/Tijuana</xliff:g>"</string>
+ <string name="C94" msgid="6254783598629305021">"<xliff:g id="SEPARATOR">=</xliff:g>Toronto<xliff:g id="TIMEZONE">|America/Toronto</xliff:g>"</string>
+ <string name="C95" msgid="2144206125989179089">"<xliff:g id="SEPARATOR">=</xliff:g>Vankuver<xliff:g id="TIMEZONE">|America/Vancouver</xliff:g>"</string>
+ <string name="C96" msgid="3995904432128369027">"<xliff:g id="SEPARATOR">=</xliff:g>Vinipeg<xliff:g id="TIMEZONE">|America/Winnipeg</xliff:g>"</string>
+ <string name="C97" msgid="5667595440938233073">"<xliff:g id="SEPARATOR">=</xliff:g>Južni pol<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Antarctica/South_Pole</xliff:g>"</string>
+ <string name="C98" msgid="2067640513126652156">"<xliff:g id="SEPARATOR">=</xliff:g>Longjerbjen<xliff:g id="TIMEZONE">|Arctic/Longyearbyen</xliff:g>"</string>
+ <string name="C99" msgid="6750041547603679548">"<xliff:g id="SEPARATOR">=</xliff:g>Almati<xliff:g id="TIMEZONE">|Asia/Almaty</xliff:g>"</string>
+ <string name="C100" msgid="5995329947852415813">"<xliff:g id="SEPARATOR">=</xliff:g>Aman<xliff:g id="TIMEZONE">|Asia/Amman</xliff:g>"</string>
+ <string name="C101" msgid="5760056604239047274">"<xliff:g id="SEPARATOR">=</xliff:g>Anadir<xliff:g id="TIMEZONE">|Asia/Anadyr</xliff:g>"</string>
+ <string name="C102" msgid="9000357065825182754">"<xliff:g id="SEPARATOR">=</xliff:g>Aktau<xliff:g id="TIMEZONE">|Asia/Aqtau</xliff:g>"</string>
+ <string name="C103" msgid="8781982253489209791">"<xliff:g id="SEPARATOR">=</xliff:g>Bagdad<xliff:g id="TIMEZONE">|Asia/Baghdad</xliff:g>"</string>
+ <string name="C104" msgid="4021122575041916540">"<xliff:g id="SEPARATOR">=</xliff:g>Bahrein<xliff:g id="TIMEZONE">|Asia/Bahrain</xliff:g>"</string>
+ <string name="C105" msgid="1812915124794679606">"<xliff:g id="SEPARATOR">=</xliff:g>Baku<xliff:g id="TIMEZONE">|Asia/Baku</xliff:g>"</string>
+ <string name="C106" msgid="1996684628612964988">"<xliff:g id="SEPARATOR">=</xliff:g>Bangkok<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C107" msgid="227554925153715426">"B<xliff:g id="SEPARATOR">=</xliff:g>Bejrut<xliff:g id="TIMEZONE">|Asia/Beirut</xliff:g>"</string>
+ <string name="C108" msgid="5082419901681584844">"K<xliff:g id="SEPARATOR">=</xliff:g>Kalkuta<xliff:g id="TIMEZONE">|Asia/Calcutta</xliff:g>"</string>
+ <string name="C109" msgid="6386566477244958752">"<xliff:g id="SEPARATOR">=</xliff:g>Damask<xliff:g id="TIMEZONE">|Asia/Damascus</xliff:g>"</string>
+ <string name="C110" msgid="1165712058024165012">"<xliff:g id="SEPARATOR">=</xliff:g>Daka<xliff:g id="TIMEZONE">|Asia/Dhaka</xliff:g>"</string>
+ <string name="C111" msgid="5895260692253797547">"<xliff:g id="SEPARATOR">=</xliff:g>Dubai<xliff:g id="TIMEZONE">|Asia/Dubai</xliff:g>"</string>
+ <string name="C112" msgid="1708170128253320625">"<xliff:g id="SEPARATOR">=</xliff:g>Gaza<xliff:g id="TIMEZONE">|Asia/Gaza</xliff:g>"</string>
+ <string name="C113" msgid="8790538811134290878">"<xliff:g id="SEPARATOR">=</xliff:g>Hebron<xliff:g id="TIMEZONE">|Asia/Hebron</xliff:g>"</string>
+ <string name="C114" msgid="8019764566754082688">"<xliff:g id="SEPARATOR">=</xliff:g>Ho Ši Min<xliff:g id="TIMEZONE">|Asia/Ho_Chi_Minh</xliff:g>"</string>
+ <string name="C115" msgid="2707316842482208016">"<xliff:g id="SEPARATOR">=</xliff:g>Hongkong<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Hong_Kong</xliff:g>"</string>
+ <string name="C117" msgid="486537564257069933">"<xliff:g id="SEPARATOR">=</xliff:g>Džakarta<xliff:g id="TIMEZONE">|Asia/Jakarta</xliff:g>"</string>
+ <string name="C118" msgid="2220594023727285784">"<xliff:g id="SEPARATOR">=</xliff:g>Jerusalim<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C119" msgid="7095503078924268384">"<xliff:g id="SEPARATOR">=</xliff:g>Kabul<xliff:g id="TIMEZONE">|Asia/Kabul</xliff:g>"</string>
+ <string name="C120" msgid="4759297844750994699">"<xliff:g id="SEPARATOR">=</xliff:g>Karači<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C121" msgid="6397452077111782277">"<xliff:g id="SEPARATOR">=</xliff:g>Katmandu<xliff:g id="TIMEZONE">|Asia/Kathmandu</xliff:g>"</string>
+ <string name="C122" msgid="3384658968869783693">"<xliff:g id="SEPARATOR">=</xliff:g>Kuala Lumpur<xliff:g id="TIMEZONE">|Asia/Kuala_Lumpur</xliff:g>"</string>
+ <string name="C123" msgid="2596231413860119715">"<xliff:g id="SEPARATOR">=</xliff:g>Kuvajt<xliff:g id="TIMEZONE">|Asia/Kuwait</xliff:g>"</string>
+ <string name="C124" msgid="7128790644999660843">"<xliff:g id="SEPARATOR">=</xliff:g>Makao<xliff:g id="TIMEZONE">|Asia/Macau</xliff:g>"</string>
+ <string name="C125" msgid="7482612453109643531">"<xliff:g id="SEPARATOR">=</xliff:g>Manila<xliff:g id="TIMEZONE">|Asia/Manila</xliff:g>"</string>
+ <string name="C126" msgid="89594601694005714">"<xliff:g id="SEPARATOR">=</xliff:g>Muskat<xliff:g id="TIMEZONE">|Asia/Muscat</xliff:g>"</string>
+ <string name="C127" msgid="6694878912574814081">"<xliff:g id="SEPARATOR">=</xliff:g>Pnom Pen<xliff:g id="TIMEZONE">|Asia/Phnom_Penh</xliff:g>"</string>
+ <string name="C128" msgid="6055116591529458940">"<xliff:g id="SEPARATOR">=</xliff:g>Pjongjang<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Pyongyang</xliff:g>"</string>
+ <string name="C130" msgid="665609990740507143">"<xliff:g id="SEPARATOR">=</xliff:g>Rangun<xliff:g id="TIMEZONE">|Asia/Rangoon</xliff:g>"</string>
+ <string name="C131" msgid="3395769966117356927">"<xliff:g id="SEPARATOR">=</xliff:g>Rijad<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C133" msgid="5204810106521056060">"<xliff:g id="SEPARATOR">=</xliff:g>Seul<xliff:g id="TIMEZONE">|Asia/Seoul</xliff:g>"</string>
+ <string name="C134" msgid="7263747916569669120">"<xliff:g id="SEPARATOR">=</xliff:g>Šangaj<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C135" msgid="4100015019260371393">"<xliff:g id="SEPARATOR">=</xliff:g>Singapur<xliff:g id="TIMEZONE">|Asia/Singapore</xliff:g>"</string>
+ <string name="C136" msgid="6386033226757339839">"<xliff:g id="SEPARATOR">=</xliff:g>Tajpej<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Taipei</xliff:g>"</string>
+ <string name="C137" msgid="5387760734363179588">"<xliff:g id="SEPARATOR">=</xliff:g>Teheran<xliff:g id="TIMEZONE">|Asia/Tehran</xliff:g>"</string>
+ <string name="C138" msgid="7193922868117846792">"<xliff:g id="SEPARATOR">=</xliff:g>Tel Aviv<xliff:g id="TIMEZONE">|Asia/Tel_Aviv</xliff:g>"</string>
+ <string name="C139" msgid="7060339477340222608">"<xliff:g id="SEPARATOR">=</xliff:g>Tokio<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C140" msgid="6273911458061121975">"<xliff:g id="SEPARATOR">=</xliff:g>Ulan Bator<xliff:g id="TIMEZONE">|Asia/Ulaanbaatar</xliff:g>"</string>
+ <string name="C141" msgid="2799340184229547409">"<xliff:g id="SEPARATOR">=</xliff:g>Bermudi<xliff:g id="TIMEZONE">|Atlantic/Bermuda</xliff:g>"</string>
+ <string name="C142" msgid="6015789133959684677">"<xliff:g id="SEPARATOR">=</xliff:g>Kanari<xliff:g id="TIMEZONE">|Atlantic/Canary</xliff:g>"</string>
+ <string name="C143" msgid="4888764215053863961">"<xliff:g id="SEPARATOR">=</xliff:g>Zelenortska Ostrva<xliff:g id="TIMEZONE">|Atlantic/Cape_Verde</xliff:g>"</string>
+ <string name="C144" msgid="3338105941475340049">"<xliff:g id="SEPARATOR">=</xliff:g>Rejkjavik<xliff:g id="TIMEZONE">|Atlantic/Reykjavik</xliff:g>"</string>
+ <string name="C145" msgid="8684297689430494031">"<xliff:g id="SEPARATOR">=</xliff:g>Stenli<xliff:g id="TIMEZONE">|Atlantic/Stanley</xliff:g>"</string>
+ <string name="C146" msgid="843808286721172656">"<xliff:g id="SEPARATOR">=</xliff:g>Adelejd<xliff:g id="TIMEZONE">|Australia/Adelaide</xliff:g>"</string>
+ <string name="C147" msgid="3712535858465321034">"<xliff:g id="SEPARATOR">=</xliff:g>Brizbejn<xliff:g id="TIMEZONE">|Australia/Brisbane</xliff:g>"</string>
+ <string name="C148" msgid="7019403666599702943">"<xliff:g id="SEPARATOR">=</xliff:g>Kanbera<xliff:g id="TIMEZONE">|Australia/Canberra</xliff:g>"</string>
+ <string name="C149" msgid="8185355499458013534">"<xliff:g id="SEPARATOR">=</xliff:g>Darvin<xliff:g id="TIMEZONE">|Australia/Darwin</xliff:g>"</string>
+ <string name="C150" msgid="3516845880105752618">"<xliff:g id="SEPARATOR">=</xliff:g>Melburn<xliff:g id="TIMEZONE">|Australia/Melbourne</xliff:g>"</string>
+ <string name="C151" msgid="5576825403360541823">"<xliff:g id="SEPARATOR">=</xliff:g>Novi Južni Vels<xliff:g id="TIMEZONE">|Australia/NSW</xliff:g>"</string>
+ <string name="C152" msgid="7889900618915436602">"<xliff:g id="SEPARATOR">=</xliff:g>Pert<xliff:g id="TIMEZONE">|Australia/Perth</xliff:g>"</string>
+ <string name="C153" msgid="7506204460601953711">"<xliff:g id="SEPARATOR">=</xliff:g>Kvinslend<xliff:g id="TIMEZONE">|Australia/Queensland</xliff:g>"</string>
+ <string name="C154" msgid="1193262944948312063">"<xliff:g id="SEPARATOR">=</xliff:g>Sidnej<xliff:g id="TIMEZONE">|Australia/Sydney</xliff:g>"</string>
+ <string name="C155" msgid="7079072802229033042">"<xliff:g id="SEPARATOR">=</xliff:g>Viktorija<xliff:g id="TIMEZONE">|Australia/Victoria</xliff:g>"</string>
+ <string name="C156" msgid="4003110220147338835">"<xliff:g id="SEPARATOR">=</xliff:g>Njufaundlend<xliff:g id="TIMEZONE">|Canada/Newfoundland</xliff:g>"</string>
+ <string name="C157" msgid="2861486997803753970">"<xliff:g id="SEPARATOR">=</xliff:g>Saskačevan<xliff:g id="TIMEZONE">|Canada/Saskatchewan</xliff:g>"</string>
+ <string name="C158" msgid="6882933026191056506">"<xliff:g id="SEPARATOR">=</xliff:g>Uskršnje ostrvo<xliff:g id="TIMEZONE">|Chile/EasterIsland</xliff:g>"</string>
+ <string name="C159" msgid="4128429767051043903">"<xliff:g id="SEPARATOR">=</xliff:g>Amsterdam<xliff:g id="TIMEZONE">|Europe/Amsterdam</xliff:g>"</string>
+ <string name="C160" msgid="3488513735205092653">"<xliff:g id="SEPARATOR">=</xliff:g>Andora<xliff:g id="TIMEZONE">|Europe/Andorra</xliff:g>"</string>
+ <string name="C161" msgid="7244325364130392348">"<xliff:g id="SEPARATOR">=</xliff:g>Atina<xliff:g id="TIMEZONE">|Europe/Athens</xliff:g>"</string>
+ <string name="C162" msgid="7484009548361072313">"<xliff:g id="SEPARATOR">=</xliff:g>Belfast<xliff:g id="TIMEZONE">|Europe/Belfast</xliff:g>"</string>
+ <string name="C163" msgid="6106990061397073808">"<xliff:g id="SEPARATOR">=</xliff:g>Beograd<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C164" msgid="3074767496771260157">"<xliff:g id="SEPARATOR">=</xliff:g>Berlin<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C165" msgid="4442005045172394762">"<xliff:g id="SEPARATOR">=</xliff:g>Bratislava<xliff:g id="TIMEZONE">|Europe/Bratislava</xliff:g>"</string>
+ <string name="C166" msgid="8977286721038142474">"<xliff:g id="SEPARATOR">=</xliff:g>Brisel<xliff:g id="TIMEZONE">|Europe/Brussels</xliff:g>"</string>
+ <string name="C167" msgid="5502175796232774744">"<xliff:g id="SEPARATOR">=</xliff:g>Bukurešt<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C168" msgid="6750159439632567316">"<xliff:g id="SEPARATOR">=</xliff:g>Budimpešta<xliff:g id="TIMEZONE">|Europe/Budapest</xliff:g>"</string>
+ <string name="C169" msgid="591483187800562071">"<xliff:g id="SEPARATOR">=</xliff:g>Kišinjev<xliff:g id="TIMEZONE">|Europe/Chisinau</xliff:g>"</string>
+ <string name="C170" msgid="157539770076958216">"<xliff:g id="SEPARATOR">=</xliff:g>Kopenhagen<xliff:g id="TIMEZONE">|Europe/Copenhagen</xliff:g>"</string>
+ <string name="C171" msgid="4774534094571993566">"<xliff:g id="SEPARATOR">=</xliff:g>Dablin<xliff:g id="TIMEZONE">|Europe/Dublin</xliff:g>"</string>
+ <string name="C172" msgid="6781166861618808351">"<xliff:g id="SEPARATOR">=</xliff:g>Gibraltar<xliff:g id="TIMEZONE">|Europe/Gibraltar</xliff:g>"</string>
+ <string name="C173" msgid="6620286361619640304">"<xliff:g id="SEPARATOR">=</xliff:g>Helsinki<xliff:g id="TIMEZONE">|Europe/Helsinki</xliff:g>"</string>
+ <string name="C174" msgid="2279016324825973473">"<xliff:g id="SEPARATOR">=</xliff:g>Ostrvo Man<xliff:g id="TIMEZONE">|Europe/Isle_of_Man</xliff:g>"</string>
+ <string name="C175" msgid="3290185117135612679">"<xliff:g id="SEPARATOR">=</xliff:g>Istanbul<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C176" msgid="8375703098860926099">"<xliff:g id="SEPARATOR">=</xliff:g>Kijev<xliff:g id="TIMEZONE">|Europe/Kiev</xliff:g>"</string>
+ <string name="C177" msgid="6500868250597874838">"<xliff:g id="SEPARATOR">=</xliff:g>Lisabon<xliff:g id="TIMEZONE">|Europe/Lisbon</xliff:g>"</string>
+ <string name="C178" msgid="8805696770032311110">"<xliff:g id="SEPARATOR">=</xliff:g>London<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C179" msgid="3767343883668628062">"<xliff:g id="SEPARATOR">=</xliff:g>Luksemburg<xliff:g id="TIMEZONE">|Europe/Luxembourg</xliff:g>"</string>
+ <string name="C180" msgid="7678392789982322642">"<xliff:g id="SEPARATOR">=</xliff:g>Madrid<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C181" msgid="7514462880775616081">"<xliff:g id="SEPARATOR">=</xliff:g>Malta<xliff:g id="TIMEZONE">|Europe/Malta</xliff:g>"</string>
+ <string name="C182" msgid="1916950203622380579">"<xliff:g id="SEPARATOR">=</xliff:g>Minsk<xliff:g id="TIMEZONE">|Europe/Minsk</xliff:g>"</string>
+ <string name="C183" msgid="4964892686115215073">"<xliff:g id="SEPARATOR">=</xliff:g>Monako<xliff:g id="TIMEZONE">|Europe/Monaco</xliff:g>"</string>
+ <string name="C184" msgid="4848586310907586448">"<xliff:g id="SEPARATOR">=</xliff:g>Moskva<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C185" msgid="2598535413053285569">"<xliff:g id="SEPARATOR">=</xliff:g>Oslo<xliff:g id="TIMEZONE">|Europe/Oslo</xliff:g>"</string>
+ <string name="C186" msgid="678795048839315969">"<xliff:g id="SEPARATOR">=</xliff:g>Pariz<xliff:g id="TIMEZONE">|Europe/Paris</xliff:g>"</string>
+ <string name="C187" msgid="9120486940322565800">"<xliff:g id="SEPARATOR">=</xliff:g>Prag<xliff:g id="TIMEZONE">|Europe/Prague</xliff:g>"</string>
+ <string name="C188" msgid="6820884829000643173">"<xliff:g id="SEPARATOR">=</xliff:g>Riga<xliff:g id="TIMEZONE">|Europe/Riga</xliff:g>"</string>
+ <string name="C189" msgid="8545786001221397208">"<xliff:g id="SEPARATOR">=</xliff:g>Rim<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C190" msgid="2822097113459737895">"<xliff:g id="SEPARATOR">=</xliff:g>San Marino<xliff:g id="TIMEZONE">|Europe/San_Marino</xliff:g>"</string>
+ <string name="C191" msgid="5419026915911469878">"<xliff:g id="SEPARATOR">=</xliff:g>Sarajevo<xliff:g id="TIMEZONE">|Europe/Sarajevo</xliff:g>"</string>
+ <string name="C192" msgid="1416880359034236663">"<xliff:g id="SEPARATOR">=</xliff:g>Simferopolj<xliff:g id="TIMEZONE">|Europe/Simferopol</xliff:g>"</string>
+ <string name="C193" msgid="4639373771601474967">"<xliff:g id="SEPARATOR">=</xliff:g>Skoplje<xliff:g id="TIMEZONE">|Europe/Skopje</xliff:g>"</string>
+ <string name="C194" msgid="4008819631066984591">"<xliff:g id="SEPARATOR">=</xliff:g>Sofija<xliff:g id="TIMEZONE">|Europe/Sofia</xliff:g>"</string>
+ <string name="C195" msgid="6936101855361464954">"<xliff:g id="SEPARATOR">=</xliff:g>Stokholm<xliff:g id="TIMEZONE">|Europe/Stockholm</xliff:g>"</string>
+ <string name="C196" msgid="6845595341045260631">"<xliff:g id="SEPARATOR">=</xliff:g>Talin<xliff:g id="TIMEZONE">|Europe/Tallinn</xliff:g>"</string>
+ <string name="C197" msgid="2200341923401640765">"<xliff:g id="SEPARATOR">=</xliff:g>Vatikan<xliff:g id="TIMEZONE">|Europe/Vatican</xliff:g>"</string>
+ <string name="C198" msgid="3104432830681695782">"<xliff:g id="SEPARATOR">=</xliff:g>Beč<xliff:g id="TIMEZONE">|Europe/Vienna</xliff:g>"</string>
+ <string name="C199" msgid="1622823742072233091">"<xliff:g id="SEPARATOR">=</xliff:g>Vilnijus<xliff:g id="TIMEZONE">|Europe/Vilnius</xliff:g>"</string>
+ <string name="C200" msgid="6181652506383585123">"<xliff:g id="SEPARATOR">=</xliff:g>Varšava<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C201" msgid="5026927396527258914">"<xliff:g id="SEPARATOR">=</xliff:g>Zagreb<xliff:g id="TIMEZONE">|Europe/Zagreb</xliff:g>"</string>
+ <string name="C202" msgid="7479245034393288391">"<xliff:g id="SEPARATOR">=</xliff:g>Cirih<xliff:g id="TIMEZONE">|Europe/Zurich</xliff:g>"</string>
+ <string name="C203" msgid="1651234331866937237">"<xliff:g id="SEPARATOR">=</xliff:g>Antananarivo<xliff:g id="TIMEZONE">|Indian/Antananarivo</xliff:g>"</string>
+ <string name="C204" msgid="3101091022126098393">"<xliff:g id="SEPARATOR">=</xliff:g>Maldivi<xliff:g id="TIMEZONE">|Indian/Maldives</xliff:g>"</string>
+ <string name="C205" msgid="9173530407684443044">"<xliff:g id="SEPARATOR">=</xliff:g>Mauricijus<xliff:g id="TIMEZONE">|Indian/Mauritius</xliff:g>"</string>
+ <string name="C206" msgid="7294622489478378014">"<xliff:g id="SEPARATOR">=</xliff:g>Okland<xliff:g id="TIMEZONE">|Pacific/Auckland</xliff:g>"</string>
+ <string name="C207" msgid="6369257832191627783">"<xliff:g id="SEPARATOR">=</xliff:g>Fidži<xliff:g id="TIMEZONE">|Pacific/Fiji</xliff:g>"</string>
+ <string name="C208" msgid="1022999101729302391">"<xliff:g id="SEPARATOR">=</xliff:g>Guam<xliff:g id="TIMEZONE">|Pacific/Guam</xliff:g>"</string>
+ <string name="C209" msgid="8326714755257287010">"<xliff:g id="SEPARATOR">=</xliff:g>Honolulu<xliff:g id="TIMEZONE">|Pacific/Honolulu</xliff:g>"</string>
+ <string name="C210" msgid="4118975261202718577">"<xliff:g id="SEPARATOR">=</xliff:g>Kiritimati<xliff:g id="TIMEZONE">|Pacific/Kiritimati</xliff:g>"</string>
+ <string name="C211" msgid="6016485615657297427">"<xliff:g id="SEPARATOR">=</xliff:g>Numea<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C214" msgid="5230836436291372485">"<xliff:g id="SEPARATOR">=</xliff:g>Antigva<xliff:g id="TIMEZONE">|America/Antigua</xliff:g>"</string>
+ <string name="C215" msgid="9104600827236874744">"<xliff:g id="SEPARATOR">=</xliff:g>Ostin<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C216" msgid="1919768646168928906">"<xliff:g id="SEPARATOR">=</xliff:g>Boston<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C217" msgid="4879725034214879629">"<xliff:g id="SEPARATOR">=</xliff:g>Kalgari<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C218" msgid="5884212032925236157">"<xliff:g id="SEPARATOR">=</xliff:g>Kolambus<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C219" msgid="2081823206177849440">"<xliff:g id="SEPARATOR">=</xliff:g>Dalas<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C220" msgid="6453910991331509621">"<xliff:g id="SEPARATOR">=</xliff:g>Noksvil<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C221" msgid="8383807404322146544">"<xliff:g id="SEPARATOR">=</xliff:g>Memfis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C222" msgid="3700668026644596138">"<xliff:g id="SEPARATOR">=</xliff:g>Majami<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C223" msgid="221323185158028534">"<xliff:g id="SEPARATOR">=</xliff:g>Mineapolis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C224" msgid="5283127526588257314">"<xliff:g id="SEPARATOR">=</xliff:g>Otava<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C225" msgid="2397752406722350262">"<xliff:g id="SEPARATOR">=</xliff:g>Filadelfija<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C226" msgid="9121074377966278110">"<xliff:g id="SEPARATOR">=</xliff:g>Portland<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C227" msgid="5652209241017010001">"<xliff:g id="SEPARATOR">=</xliff:g>San Dijego<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C228" msgid="4215672329797580482">"<xliff:g id="SEPARATOR">=</xliff:g>San Francisko<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C229" msgid="4196312467437357156">"<xliff:g id="SEPARATOR">=</xliff:g>Solt Lejk Siti<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C230" msgid="5521643115321121383">"<xliff:g id="SEPARATOR">=</xliff:g>San Hoze<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C231" msgid="19294357270942004">"<xliff:g id="SEPARATOR">=</xliff:g>San Salvador<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C232" msgid="4714655032274833316">"<xliff:g id="SEPARATOR">=</xliff:g>Sijetl<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C233" msgid="7162834873553109876">"<xliff:g id="SEPARATOR">=</xliff:g>Sent Luis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C234" msgid="8431913494781960891">"<xliff:g id="SEPARATOR">=</xliff:g>Vašington<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C235" msgid="8650421942456856419">"<xliff:g id="SEPARATOR">=</xliff:g>Hjuston<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C236" msgid="3687627401939103862">"<xliff:g id="SEPARATOR">=</xliff:g>San Antonio<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C237" msgid="4443158977093108877">"<xliff:g id="SEPARATOR">=</xliff:g>Džeksonvil<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C238" msgid="7416660474443881822">"<xliff:g id="SEPARATOR">=</xliff:g>Baltimor<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C239" msgid="4602819453157356596">"<xliff:g id="SEPARATOR">=</xliff:g>Nešvil<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C240" msgid="6474976205162582188">"<xliff:g id="SEPARATOR">=</xliff:g>Milvoki<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C241" msgid="9133192521877174743">"<xliff:g id="SEPARATOR">=</xliff:g>Oklahoma Siti<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C242" msgid="4837450655035932235">"<xliff:g id="SEPARATOR">=</xliff:g>Las Vegas<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C243" msgid="8140503787735683522">"<xliff:g id="SEPARATOR">=</xliff:g>Albukerki<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C244" msgid="5425441385595386539">"<xliff:g id="SEPARATOR">=</xliff:g>Tuson<xliff:g id="TIMEZONE">|MST</xliff:g>"</string>
+ <string name="C245" msgid="2117808251938937801">"<xliff:g id="SEPARATOR">=</xliff:g>Sakramento<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C246" msgid="3092246848082816772">"<xliff:g id="SEPARATOR">=</xliff:g>Atlanta<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C247" msgid="8206866466240263364">"<xliff:g id="SEPARATOR">=</xliff:g>Klivlend<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C248" msgid="2640187332546735575">"<xliff:g id="SEPARATOR">=</xliff:g>Nju Orleans<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C249" msgid="2891345755858261436">"<xliff:g id="SEPARATOR">=</xliff:g>Tampa<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C250" msgid="820338627695297018">"<xliff:g id="SEPARATOR">=</xliff:g>Pitsburg<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C251" msgid="5944336862095193572">"<xliff:g id="SEPARATOR">=</xliff:g>Sinsinati<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C252" msgid="4879366628092590554">"<xliff:g id="SEPARATOR">=</xliff:g>Mauntin Vju<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C253" msgid="131023875763265059">"<xliff:g id="SEPARATOR">=</xliff:g>Rino<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C254" msgid="6114708580340716772">"<xliff:g id="SEPARATOR">=</xliff:g>Blek Rok Siti<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C255" msgid="7954132426931661492">"<xliff:g id="SEPARATOR">=</xliff:g>Doha<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C256" msgid="4677098546257306673">"<xliff:g id="SEPARATOR">=</xliff:g>Peking<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C257" msgid="6859408162854724420">"<xliff:g id="SEPARATOR">=</xliff:g>Mumbaj<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C258" msgid="4883343467599097650">"<xliff:g id="SEPARATOR">=</xliff:g>Delhi<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C259" msgid="5562442240689501324">"<xliff:g id="SEPARATOR">=</xliff:g>Osaka<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C260" msgid="8364102554400427814">"<xliff:g id="SEPARATOR">=</xliff:g>Lahor<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C261" msgid="4120312655526126931">"<xliff:g id="SEPARATOR">=</xliff:g>Sana<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C262" msgid="5548180151889833">"<xliff:g id="SEPARATOR">=</xliff:g>Barselona<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C263" msgid="2667061188896159784">"<xliff:g id="SEPARATOR">=</xliff:g>Minhen<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C264" msgid="2183960913782375290">"<xliff:g id="SEPARATOR">=</xliff:g>Milano<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C265" msgid="7302072801871420825">"<xliff:g id="SEPARATOR">=</xliff:g>Frankfurt<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C266" msgid="2043638131940526010">"<xliff:g id="SEPARATOR">=</xliff:g>Hanoj<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C267" msgid="2210484655793571387">"<xliff:g id="SEPARATOR">=</xliff:g>Ankara<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C268" msgid="263106973500029909">"<xliff:g id="SEPARATOR">=</xliff:g>Bangalor<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C269" msgid="6541694468583591229">"<xliff:g id="SEPARATOR">=</xliff:g>Brazilija<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C270" msgid="1314079881051130603">"<xliff:g id="SEPARATOR">=</xliff:g>Kejptaun<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C271" msgid="8640235215580011665">"<xliff:g id="SEPARATOR">=</xliff:g>Islamabad<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C272" msgid="1609536549681428971">"<xliff:g id="SEPARATOR">=</xliff:g>Rio de Žaneiro<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C273" msgid="7079941149646181981">"<xliff:g id="SEPARATOR">=</xliff:g>En Arbor<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C274" msgid="8459573593923702400">"<xliff:g id="SEPARATOR">=</xliff:g>Bolder<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C275" msgid="6089570009772695384">"<xliff:g id="SEPARATOR">=</xliff:g>Kembridž<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C276" msgid="8770778158932656740">"<xliff:g id="SEPARATOR">=</xliff:g>Kirkland<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C277" msgid="3027642546928363284">"<xliff:g id="SEPARATOR">=</xliff:g>Medison<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C278" msgid="2380762577096499707">"<xliff:g id="SEPARATOR">=</xliff:g>Guangdžou<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C279" msgid="8894272318704876379">"<xliff:g id="SEPARATOR">=</xliff:g>Hajderabad<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C280" msgid="7678401703785036372">"<xliff:g id="SEPARATOR">=</xliff:g>Reston<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C281" msgid="8023528134904066052">"<xliff:g id="SEPARATOR">=</xliff:g>Belo Horizonte<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C282" msgid="6695477038758559199">"<xliff:g id="SEPARATOR">=</xliff:g>Santjago<xliff:g id="TIMEZONE">|America/Santiago</xliff:g>"</string>
+ <string name="C283" msgid="7769787200879321206">"<xliff:g id="SEPARATOR">=</xliff:g>Monrovija<xliff:g id="TIMEZONE">|Africa/Monrovia</xliff:g>"</string>
+ <string name="C284" msgid="6968458422900478829">"<xliff:g id="SEPARATOR">=</xliff:g>Kolombo<xliff:g id="TIMEZONE">|Asia/Colombo</xliff:g>"</string>
+ <string name="C285" msgid="1141404871109476705">"<xliff:g id="SEPARATOR">=</xliff:g>Čivava<xliff:g id="TIMEZONE">|America/Chihuahua</xliff:g>"</string>
+ <string name="C286" msgid="4996225818359904740">"<xliff:g id="SEPARATOR">=</xliff:g>Salvador<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C287" msgid="1988559263618010310">"<xliff:g id="SEPARATOR">=</xliff:g>Gurgaon<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C288" msgid="852288766460325989">"<xliff:g id="SEPARATOR">=</xliff:g>Mančester<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C290" msgid="9191944922972784727">"<xliff:g id="SEPARATOR">=</xliff:g>Sankt Peterburg<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C291" msgid="4662360206594986867">"<xliff:g id="SEPARATOR">=</xliff:g>Krakov<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C292" msgid="3704362015612990315">"<xliff:g id="SEPARATOR">=</xliff:g>Vroclav<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C293" msgid="3807981967850386200">"<xliff:g id="SEPARATOR">=</xliff:g>Hamburg<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C294" msgid="2800056634746552933">"<xliff:g id="SEPARATOR">=</xliff:g>Oulu<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C295" msgid="7855357204471157922">"<xliff:g id="SEPARATOR">=</xliff:g>Haifa<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C296" msgid="2834361512883853579">"<xliff:g id="SEPARATOR">=</xliff:g>San Huan<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C297" msgid="5314407834713913608">"<xliff:g id="SEPARATOR">=</xliff:g>Tegusigalpa<xliff:g id="TIMEZONE">|America/Tegucigalpa</xliff:g>"</string>
+ <string name="C298" msgid="4186340979527221275">"<xliff:g id="SEPARATOR">=</xliff:g>Paramaribo<xliff:g id="TIMEZONE">|America/Paramaribo</xliff:g>"</string>
+ <string name="C299" msgid="5688169950851674667">"<xliff:g id="SEPARATOR">=</xliff:g>Kito<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C300" msgid="7351753589989414696">"<xliff:g id="SEPARATOR">=</xliff:g>Ljubljana<xliff:g id="TIMEZONE">|Europe/Ljubljana</xliff:g>"</string>
+ <string name="C301" msgid="9089921329206815602">"<xliff:g id="SEPARATOR">=</xliff:g>Ašhabad<xliff:g id="TIMEZONE">|Asia/Ashgabat</xliff:g>"</string>
+ <string name="C302" msgid="6471051311513517449">"<xliff:g id="SEPARATOR">=</xliff:g>Asmara<xliff:g id="TIMEZONE">|Africa/Asmara</xliff:g>"</string>
+ <string name="C303" msgid="6208957436062127281">"<xliff:g id="SEPARATOR">=</xliff:g>Bandar Seri Begavan<xliff:g id="TIMEZONE">|Asia/Brunei</xliff:g>"</string>
+ <string name="C304" msgid="7757188637892125245">"<xliff:g id="SEPARATOR">=</xliff:g>Bangi<xliff:g id="TIMEZONE">|Africa/Bangui</xliff:g>"</string>
+ <string name="C305" msgid="5538312768539249335">"<xliff:g id="SEPARATOR">=</xliff:g>Bandžul<xliff:g id="TIMEZONE">|Africa/Banjul</xliff:g>"</string>
+ <string name="C306" msgid="6400938736119754675">"<xliff:g id="SEPARATOR">=</xliff:g>Biškek<xliff:g id="TIMEZONE">|Asia/Bishkek</xliff:g>"</string>
+ <string name="C307" msgid="1169132195117591472">"<xliff:g id="SEPARATOR">=</xliff:g>Bisao<xliff:g id="TIMEZONE">|Africa/Bissau</xliff:g>"</string>
+ <string name="C308" msgid="7704965635342439141">"<xliff:g id="SEPARATOR">=</xliff:g>Budžumbura<xliff:g id="TIMEZONE">|Africa/Bujumbura</xliff:g>"</string>
+ <string name="C309" msgid="1522235235310763925">"<xliff:g id="SEPARATOR">=</xliff:g>Dili<xliff:g id="TIMEZONE">|Asia/Dili</xliff:g>"</string>
+ <string name="C310" msgid="8666508463588411257">"<xliff:g id="SEPARATOR">=</xliff:g>Dušanbe<xliff:g id="TIMEZONE">|Asia/Dushanbe</xliff:g>"</string>
+ <string name="C311" msgid="5940486195605635031">"<xliff:g id="SEPARATOR">=</xliff:g>Funafuti<xliff:g id="TIMEZONE">|Pacific/Funafuti</xliff:g>"</string>
+ <string name="C312" msgid="1714210141256903683">"<xliff:g id="SEPARATOR">=</xliff:g>Honijara<xliff:g id="TIMEZONE">|Pacific/Guadalcanal</xliff:g>"</string>
+ <string name="C313" msgid="8390229571948311411">"<xliff:g id="SEPARATOR">=</xliff:g>Džuba<xliff:g id="TIMEZONE">|Africa/Juba</xliff:g>"</string>
+ <string name="C314" msgid="3840011425345102604">"<xliff:g id="SEPARATOR">=</xliff:g>Kingstaun<xliff:g id="TIMEZONE">|America/St_Vincent</xliff:g>"</string>
+ <string name="C315" msgid="8962557999110557329">"<xliff:g id="SEPARATOR">=</xliff:g>Librvil<xliff:g id="TIMEZONE">|Africa/Libreville</xliff:g>"</string>
+ <string name="C316" msgid="3674113287320887951">"<xliff:g id="SEPARATOR">=</xliff:g>Lome<xliff:g id="TIMEZONE">|Africa/Lome</xliff:g>"</string>
+ <string name="C317" msgid="4818049429422081055">"<xliff:g id="SEPARATOR">=</xliff:g>Luanda<xliff:g id="TIMEZONE">|Africa/Luanda</xliff:g>"</string>
+ <string name="C318" msgid="3814107319819817789">"<xliff:g id="SEPARATOR">=</xliff:g>Lusaka<xliff:g id="TIMEZONE">|Africa/Lusaka</xliff:g>"</string>
+ <string name="C319" msgid="5757039321992317631">"<xliff:g id="SEPARATOR">=</xliff:g>Madžuro<xliff:g id="TIMEZONE">|Pacific/Majuro</xliff:g>"</string>
+ <string name="C320" msgid="8334348266391215583">"<xliff:g id="SEPARATOR">=</xliff:g>Malabo<xliff:g id="TIMEZONE">|Africa/Malabo</xliff:g>"</string>
+ <string name="C321" msgid="5401323973667971972">"<xliff:g id="SEPARATOR">=</xliff:g>Maputo<xliff:g id="TIMEZONE">|Africa/Maputo</xliff:g>"</string>
+ <string name="C322" msgid="67637052310417975">"<xliff:g id="SEPARATOR">=</xliff:g>Mbabane<xliff:g id="TIMEZONE">|Africa/Mbabane</xliff:g>"</string>
+ <string name="C323" msgid="4500721332684955521">"<xliff:g id="SEPARATOR">=</xliff:g>Moroni<xliff:g id="TIMEZONE">|Indian/Comoro</xliff:g>"</string>
+ <string name="C324" msgid="1741927819842539260">"<xliff:g id="SEPARATOR">=</xliff:g>Ndžamena<xliff:g id="TIMEZONE">|Africa/Ndjamena</xliff:g>"</string>
+ <string name="C325" msgid="8771905307322194055">"<xliff:g id="SEPARATOR">=</xliff:g>Ngerulmud<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C326" msgid="2389198042593603472">"<xliff:g id="SEPARATOR">=</xliff:g>Nijamej<xliff:g id="TIMEZONE">|Africa/Niamey</xliff:g>"</string>
+ <string name="C327" msgid="5317479895686981912">"<xliff:g id="SEPARATOR">=</xliff:g>Nikozija<xliff:g id="TIMEZONE">|Europe/Nicosia</xliff:g>"</string>
+ <string name="C328" msgid="6416405203954996861">"<xliff:g id="SEPARATOR">=</xliff:g>Nuakšot<xliff:g id="TIMEZONE">|Africa/Nouakchott</xliff:g>"</string>
+ <string name="C329" msgid="6876960940903095843">"<xliff:g id="SEPARATOR">=</xliff:g>Nukualofa<xliff:g id="TIMEZONE">|Pacific/Tongatapu</xliff:g>"</string>
+ <string name="C330" msgid="1572294706542426161">"<xliff:g id="SEPARATOR">=</xliff:g>Uagadugu<xliff:g id="TIMEZONE">|Africa/Ouagadougou</xliff:g>"</string>
+ <string name="C331" msgid="2607492003890117689">"<xliff:g id="SEPARATOR">=</xliff:g>Palikir<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C332" msgid="8349533418456323370">"<xliff:g id="SEPARATOR">=</xliff:g>Filipsburg<xliff:g id="TIMEZONE">|America/Lower_Princes</xliff:g>"</string>
+ <string name="C333" msgid="2842640664018042568">"<xliff:g id="SEPARATOR">=</xliff:g>Podgorica<xliff:g id="TIMEZONE">|Europe/Podgorica</xliff:g>"</string>
+ <string name="C334" msgid="3310146581437635671">"<xliff:g id="SEPARATOR">=</xliff:g>Port Morsbi<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C335" msgid="3317158262102352303">"<xliff:g id="SEPARATOR">=</xliff:g>Port Vila<xliff:g id="TIMEZONE">|Pacific/Efate</xliff:g>"</string>
+ <string name="C336" msgid="3810072761869903472">"<xliff:g id="SEPARATOR">=</xliff:g>Porto Novo<xliff:g id="TIMEZONE">|Africa/Porto-Novo</xliff:g>"</string>
+ <string name="C337" msgid="3412269218104112252">"<xliff:g id="SEPARATOR">=</xliff:g>Priština<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C338" msgid="6151841959824325885">"<xliff:g id="SEPARATOR">=</xliff:g>Rozo<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C339" msgid="8909994815975646525">"<xliff:g id="SEPARATOR">=</xliff:g>Taškent<xliff:g id="TIMEZONE">|Asia/Tashkent</xliff:g>"</string>
+ <string name="C340" msgid="415479723070879485">"<xliff:g id="SEPARATOR">=</xliff:g>Tbilisi<xliff:g id="TIMEZONE">|Asia/Tbilisi</xliff:g>"</string>
+ <string name="C341" msgid="2299478430610154042">"<xliff:g id="SEPARATOR">=</xliff:g>Timbu<xliff:g id="TIMEZONE">|Asia/Thimphu</xliff:g>"</string>
+ <string name="C342" msgid="7997617194333170685">"<xliff:g id="SEPARATOR">=</xliff:g>Tirana<xliff:g id="TIMEZONE">|Europe/Tirane</xliff:g>"</string>
+ <string name="C343" msgid="622805851462854910">"<xliff:g id="SEPARATOR">=</xliff:g>Vaduc<xliff:g id="TIMEZONE">|Europe/Vaduz</xliff:g>"</string>
+ <string name="C344" msgid="7629820826386244509">"<xliff:g id="SEPARATOR">=</xliff:g>Vijentijan<xliff:g id="TIMEZONE">|Asia/Vientiane</xliff:g>"</string>
+ <string name="C345" msgid="1881198350378158072">"<xliff:g id="SEPARATOR">=</xliff:g>Vindhuk<xliff:g id="TIMEZONE">|Africa/Windhoek</xliff:g>"</string>
+ <string name="C346" msgid="2947674392768816097">"<xliff:g id="SEPARATOR">=</xliff:g>Jaunde<xliff:g id="TIMEZONE">|Africa/Douala</xliff:g>"</string>
+ <string name="C347" msgid="6291282205599716861">"<xliff:g id="SEPARATOR">=</xliff:g>Jaren<xliff:g id="TIMEZONE">|Pacific/Nauru</xliff:g>"</string>
+ <string name="C348" msgid="8462071023392592539">"<xliff:g id="SEPARATOR">=</xliff:g>Jerevan<xliff:g id="TIMEZONE">|Asia/Yerevan</xliff:g>"</string>
+</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..53a60cf
--- /dev/null
+++ b/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_label" msgid="6674495003718166674">"Sat"</string>
+ <string name="delete_alarm" msgid="3457780990646206817">"Izbriši alarm"</string>
+ <string name="label" msgid="162189613902857319">"Oznaka"</string>
+ <string name="default_label" msgid="5590025289805630372">"Alarm"</string>
+ <string name="alarm_vibrate" msgid="3476686921490362230">"Vibracija"</string>
+ <string name="alarm_repeat" msgid="7242985466344233206">"Ponovi"</string>
+ <string name="alert" msgid="6506982899651975645">"Melodija alarma"</string>
+ <string name="default_alarm_ringtone_title" msgid="2916376768509623643">"Podrazumevani zvuk alarma"</string>
+ <string name="default_timer_ringtone_title" msgid="1370799536406862317">"Tajmer je istekao"</string>
+ <string name="alarm_tomorrow" msgid="131356848787643420">"Sutra"</string>
+ <string name="alarm_today" msgid="7873594221106531654">"Danas"</string>
+ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Odbaci"</string>
+ <string name="alarm_alert_dismiss_now_text" msgid="7327972388636305792">"Odbaci odmah"</string>
+ <string name="alarm_missed_title" msgid="3828345099754063392">"Propušteni alarm"</string>
+ <string name="alarm_missed_text" msgid="6585658367289194023">"<xliff:g id="ALARM_TIME">%s</xliff:g> – <xliff:g id="ALARM_LABEL">%s</xliff:g>"</string>
+ <string name="alarm_alert_snoozed_text" msgid="7064642998528766113">"Odloženo"</string>
+ <plurals name="alarm_alert_snooze_duration" formatted="false" msgid="7844300009062867865">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> min</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> min</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> min</item>
+ </plurals>
+ <string name="alarm_alert_off_text" msgid="4472073417593915002">"Alarm je isklj."</string>
+ <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Odloži"</string>
+ <plurals name="alarm_alert_snooze_set" formatted="false" msgid="3212729193036041768">
+ <item quantity="one">Odloženo je za <xliff:g id="MINUTES">%d</xliff:g> minut.</item>
+ <item quantity="few">Odloženo je za <xliff:g id="MINUTES">%d</xliff:g> minuta.</item>
+ <item quantity="other">Odloženo je za <xliff:g id="MINUTES">%d</xliff:g> minuta.</item>
+ </plurals>
+ <string name="alarm_alert_snooze_until" msgid="6958013659168344550">"Odlaganje do <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="alarm_alert_predismiss_title" msgid="5723945586913705445">"Predstojeći alarm"</string>
+ <string name="missed_alarm_has_been_deleted" msgid="5295473204045979335">"Propušteni alarm je izbrisan"</string>
+ <string name="timer_notifications_less_min" msgid="5481375048976427255">"Preostalo je manje od minuta"</string>
+ <string name="timer_notifications_hours" msgid="1613266446037145138">"<xliff:g id="HOURS">%1$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_minutes" msgid="8543138714519498893">"<xliff:g id="MINUTES">%2$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_hours_minutes" msgid="4301167788642025702">"Preostalo: <xliff:g id="HOURS">%1$s</xliff:g> <xliff:g id="MINUTES">%2$s</xliff:g>"</string>
+ <string name="timer_remaining_single" msgid="6782851171906765864">"preostaje"</string>
+ <string name="timer_remaining_multiple" msgid="6052775962092160851">"preostaje"</string>
+ <string-array name="alarm_set">
+ <item msgid="6450913786084215050">"Alarm će se uključiti za manje od 1 minuta."</item>
+ <item msgid="6002066367368421848">"Alarm će se uključiti za <xliff:g id="DAYS">%1$s</xliff:g>."</item>
+ <item msgid="8824719306247973774">"Alarm će se uključiti za <xliff:g id="HOURS">%2$s</xliff:g>."</item>
+ <item msgid="8182406852935468862">"Alarm će se uključiti za <xliff:g id="DAYS">%1$s</xliff:g> i <xliff:g id="HOURS">%2$s</xliff:g>."</item>
+ <item msgid="2532279224777213194">"Alarm će se uključiti za <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="5936557894247187717">"Alarm će se uključiti za <xliff:g id="DAYS">%1$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="9115697840826129603">"Alarm će se uključiti za <xliff:g id="HOURS">%2$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="2332583385137381060">"Alarm će se uključiti za <xliff:g id="DAYS">%1$s</xliff:g>, <xliff:g id="HOURS">%2$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ </string-array>
+ <plurals name="days" formatted="false" msgid="3706846447285206235">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="3871283109767171655">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sat</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sata</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sati</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="5484431721696058697">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <string name="every_day" msgid="4100909974923444602">"Svakog dana"</string>
+ <string name="day_concat" msgid="971998564991636532">", "</string>
+ <string name="loading_widget" msgid="5306242862476796500">"Učitava se…"</string>
+ <string name="analog_gadget" msgid="1670505720837152766">"Analogni sat"</string>
+ <string name="digital_gadget" msgid="2326954556720571358">"Digitalni sat"</string>
+ <string name="settings" msgid="5849739030579520686">"Podešavanja"</string>
+ <string name="snooze_duration_title" msgid="1097309861110780483">"Dužina odlaganja"</string>
+ <plurals name="snooze_duration" formatted="false" msgid="3112918131095248271">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minut</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="snooze_picker_label" formatted="false" msgid="322739253661747732">
+ <item quantity="one">minut</item>
+ <item quantity="few">minuta</item>
+ <item quantity="other">minuta</item>
+ </plurals>
+ <string name="crescendo_duration_title" msgid="8606408542726189528">"Postepeno povećaj jačinu zvuka"</string>
+ <string name="no_crescendo_duration" msgid="383801592865899932">"Isključeno"</string>
+ <string name="crescendo_duration" msgid="6641284876778266541">"<xliff:g id="NUMBER">%s</xliff:g> sek"</string>
+ <string name="crescendo_picker_label" msgid="7758024047003091056">"sekunde"</string>
+ <string name="auto_silence_title" msgid="2012754009554434544">"Utišaj nakon"</string>
+ <plurals name="auto_silence_summary" formatted="false" msgid="6579258788774360396">
+ <item quantity="one"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minut</item>
+ <item quantity="few"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="other"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <string name="auto_silence_never" msgid="4821982647348750809">"Nikada"</string>
+ <string-array name="auto_silence_entries">
+ <item msgid="3024545954917711306">"1 minut"</item>
+ <item msgid="5431906692406316549">"5 minuta"</item>
+ <item msgid="7742728812068919959">"10 minuta"</item>
+ <item msgid="2855948657259647629">"15 minuta"</item>
+ <item msgid="6330196381284475079">"20 minuta"</item>
+ <item msgid="7809240121716151904">"25 minuta"</item>
+ <item msgid="4278641338024561333">"Nemoj utišavati"</item>
+ </string-array>
+ <string name="week_start_title" msgid="4268917518596832096">"Započni sedmicu u"</string>
+ <string-array name="week_start_entries">
+ <item msgid="9010198173394482639">"subotu"</item>
+ <item msgid="3993530639455360921">"nedelju"</item>
+ <item msgid="8594709368683324282">"ponedeljak"</item>
+ </string-array>
+ <string name="alarm_volume_title" msgid="8506245173912428522">"Jačina zvuka alarma"</string>
+ <string name="silent_ringtone_title" msgid="6177287302898634765">"Nečujno"</string>
+ <string name="unknown_ringtone_title" msgid="6637522029614550112">"Nepoznata"</string>
+ <string name="alarm_volume_muted" msgid="6658289289695673569">"Zvuk alarma je isključen"</string>
+ <string name="unmute_alarm_volume" msgid="2655009276035357497">"Uključi zvuk"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Podrazumevana melodija zvona za alarm je utišana"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Promeni"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Uređaj je podešen na potpunu tišinu"</string>
+ <string name="volume_button_setting_title" msgid="6937131248843413357">"Dugmad za jačinu"</string>
+ <string-array name="volume_button_setting_entries">
+ <item msgid="7972756698723318690">"Odloži"</item>
+ <item msgid="3450979320164769576">"Odbaci"</item>
+ <item msgid="6302517608411378024">"Ne radi ništa"</item>
+ </string-array>
+ <string name="label_description" msgid="8736179296142915727">"Oznaka"</string>
+ <string name="ringtone_description" msgid="7580922112921069925">"Melodija zvona"</string>
+ <string name="menu_alarm" msgid="4772010125376647519">"Alarm"</string>
+ <string name="menu_timer" msgid="6459070074762877114">"Tajmer"</string>
+ <string name="menu_clock" msgid="5612760670606829805">"Sat"</string>
+ <string name="menu_stopwatch" msgid="3396117705293574701">"Štoperica"</string>
+ <string name="button_alarms" msgid="3907838219512538763">"Dodaj alarm"</string>
+ <string name="button_cities" msgid="4555761857494501363">"Gradovi"</string>
+ <string name="menu_item_settings" msgid="1413723516369078665">"Podešavanja"</string>
+ <string name="menu_item_help" msgid="4570953476186849841">"Pomoć"</string>
+ <string name="menu_item_night_mode" msgid="3486930302245398975">"Noćni režim"</string>
+ <string name="menu_item_sort_by_gmt_offset" msgid="3120860422682721706">"Sortiraj prema vremenu"</string>
+ <string name="menu_item_sort_by_name" msgid="1762931290495104106">"Sortiraj prema imenu"</string>
+ <string name="selected_cities_label" msgid="3607479399424246605">"Izabrani gradovi"</string>
+ <string name="sw_resume_button" msgid="2569360966002022248">"Nastavi"</string>
+ <string name="sw_reset_button" msgid="6616804728322906117">"Resetuj"</string>
+ <string name="sw_start_button" msgid="8373422516681242270">"Pokreni"</string>
+ <string name="sw_pause_button" msgid="2422084453454138042">"Pauziraj"</string>
+ <string name="sw_lap_button" msgid="6992264696039004233">"Krug"</string>
+ <string name="sw_share_button" msgid="4478648110382859382">"Deli"</string>
+ <string name="hours_label" msgid="3393478155635368097">"č"</string>
+ <string name="minutes_label" msgid="3568098128251438588">"m"</string>
+ <string name="seconds_label" msgid="124655952824003246">"s"</string>
+ <string name="hours_label_description" msgid="8652842524970971830">"sati"</string>
+ <string name="minutes_label_description" msgid="965686733490357796">"minuti"</string>
+ <string name="seconds_label_description" msgid="3821620053141299692">"sekunde"</string>
+ <string name="sw_share_main" msgid="7703563468204234405">"Moje vreme je <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="sw_share_laps" msgid="614390674795945007">"Prolazna vremena:"</string>
+ <string name="sw_notification_lap_number" msgid="3535420316052647126">"<xliff:g id="NUMBER">%d</xliff:g>. krug"</string>
+ <plurals name="Nhours_description" formatted="false" msgid="4539186407746763655">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> sat</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> sata</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> sati</item>
+ </plurals>
+ <plurals name="Nminutes_description" formatted="false" msgid="6373760365221990859">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> minut</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> minuta</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="Nseconds_description" formatted="false" msgid="6456500168536594889">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> sekunda</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> sekunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> sekundi</item>
+ </plurals>
+ <string name="timer_add_timer" msgid="862733633862574752">"Dodaj tajmer"</string>
+ <string name="timer_start" msgid="6158486445614356442">"Započni"</string>
+ <string name="timer_delete" msgid="8699122001991909302">"Izbriši"</string>
+ <string name="timer_descriptive_delete" msgid="8794915342760383536">"Izbrišite <xliff:g id="NUMBER_STRING">%s</xliff:g>"</string>
+ <string name="timer_plus_one" msgid="6631211310420106116">"Dodaj 1 minut"</string>
+ <string name="timer_plus_1_min" msgid="8645224089494875062">"Dodaj 1 min"</string>
+ <string name="timer_stop" msgid="3361154678667736722">"Zaustavi"</string>
+ <string name="timer_stop_all" msgid="9080780442843034376">"Zaustavi sve tajmere"</string>
+ <string name="timer_reset" msgid="7848424809190171640">"Ponovo podesi"</string>
+ <string name="timer_cancel" msgid="3572868404230815644">"Otkaži"</string>
+ <string name="timer_canceled" msgid="7327923392567128060">"Tajmer je otkazan"</string>
+ <string name="timer_times_up" msgid="9190440395938519009">"Vreme je isteklo"</string>
+ <string name="timer_multi_times_up" msgid="1239104626836080409">"Isteklih tajmera: <xliff:g id="NUM_TIMERS">%d</xliff:g>"</string>
+ <string name="timer_notification_label" msgid="4933184831583137249">"Tajmer"</string>
+ <string name="timer_pause" msgid="3748323712728398743">"Pauziraj"</string>
+ <string name="timer_reset_all" msgid="7530633132757866087">"Res. sve tajm."</string>
+ <string-array name="sw_share_strings">
+ <item msgid="842841032273927988">"Brzi ste kao munja."</item>
+ <item msgid="6332879039890727169">"Uživajte u plodovima svog rada."</item>
+ <item msgid="815382761274660130">"Zna se da su Androidi brzi, ali ne kao vi!"</item>
+ <item msgid="7916250650982813737">"Uh."</item>
+ <item msgid="6836603904515182333">"Elitn@ vremena."</item>
+ <item msgid="7508085100680861631">"Kakva vrtoglava brzina."</item>
+ <item msgid="5961245252909589573">"Hajde da vidimo ponovo ubrzani prikaz kroz vreme."</item>
+ <item msgid="5211891900854545940">"Samo skok ulevo."</item>
+ <item msgid="9071353477103826053">"Brzina vam je u krvi."</item>
+ <item msgid="3785193933691117181">"Brzina fotona."</item>
+ </string-array>
+ <string name="home_label" msgid="4436139365695453870">"Kuća"</string>
+ <string name="cities_activity_title" msgid="8552462751129256730">"Gradovi"</string>
+ <string name="clock_settings" msgid="8317286807280600391">"Sat"</string>
+ <string name="clock_style" msgid="2265011060429742344">"Stil"</string>
+ <string name="open_date_settings" msgid="7712226973337806152">"Promeni datum i vreme"</string>
+ <string-array name="clock_style_entries">
+ <item msgid="917900462224167608">"Analogni"</item>
+ <item msgid="8483930821046925592">"Digitalni"</item>
+ </string-array>
+ <string name="automatic_home_clock" msgid="6274174710735449252">"Automatski sat sa vremenom kod kuće"</string>
+ <string name="automatic_home_clock_summary" msgid="6020476321040807273">"Kad putujem u drugoj vremenskoj zoni, dodaj sat sa vremenom kod kuće"</string>
+ <string name="home_time_zone" msgid="9199730676287974501">"Matična vremenska zona"</string>
+ <string name="home_time_zone_title" msgid="807894493443834624">"Matična vremenska zona"</string>
+ <string name="time_picker_cancel" msgid="7437106489606013077">"Otkaži"</string>
+ <string name="time_picker_set" msgid="331153175471468051">"Potvrdi"</string>
+ <string name="city_checked" msgid="616847871968019">"Grad <xliff:g id="CITY_NAME">%s</xliff:g> je označen"</string>
+ <string name="city_unchecked" msgid="710212932781145918">"Oznaka za grad <xliff:g id="CITY_NAME">%s</xliff:g> je uklonjena"</string>
+ <string-array name="timezone_labels">
+ <item msgid="5495601234086197399">"Maršalska ostrva"</item>
+ <item msgid="4196408495909011020">"Ostrvo Midvej"</item>
+ <item msgid="1414384194857730006">"Havaji"</item>
+ <item msgid="2687091371581931926">"Aljaska"</item>
+ <item msgid="1922100269679049660">"Pacifičko vreme"</item>
+ <item msgid="7156402158716866161">"Tihuana"</item>
+ <item msgid="1144117502254612241">"Arizona"</item>
+ <item msgid="101284182011722637">"Čivava"</item>
+ <item msgid="689121094232986897">"Planinsko vreme"</item>
+ <item msgid="5445331923942302756">"Srednja Amerika"</item>
+ <item msgid="2749806434052452351">"Centralno vreme"</item>
+ <item msgid="3997138870229703753">"Meksiko Siti"</item>
+ <item msgid="5425567073027744888">"Saskačevan"</item>
+ <item msgid="2877342865396629368">"Bogota"</item>
+ <item msgid="568682398893899670">"Istočno vreme"</item>
+ <item msgid="668135984541863866">"Venecuela"</item>
+ <item msgid="3737474220861486223">"Atlant. vreme (Barbados)"</item>
+ <item msgid="6279116051273436870">"Atlantsko vreme (Kanada)"</item>
+ <item msgid="8513382867172014244">"Manaus"</item>
+ <item msgid="7776299003105932407">"Santjago"</item>
+ <item msgid="8636989494746218677">"Njufaundlend"</item>
+ <item msgid="4402541016410147505">"Brazilija"</item>
+ <item msgid="2251184440733164084">"Buenos Ajres"</item>
+ <item msgid="6202926618569004969">"Grenland"</item>
+ <item msgid="2355275037115290628">"Montevideo"</item>
+ <item msgid="1377549694711708945">"Srednje-Atlantsko"</item>
+ <item msgid="3457671272126347981">"Azori"</item>
+ <item msgid="3659315141063710840">"Zelenortska Ostrva"</item>
+ <item msgid="1260941741802367635">"Kazablanka"</item>
+ <item msgid="8275203689687954762">"London, Dablin"</item>
+ <item msgid="5970179539479320905">"Amsterdam, Berlin"</item>
+ <item msgid="5396319478750517962">"Beograd"</item>
+ <item msgid="8688787475056663004">"Brisel"</item>
+ <item msgid="3415827874921681622">"Sarajevo"</item>
+ <item msgid="402008965928320066">"Vindhuk"</item>
+ <item msgid="6436942724959275569">"Zapadnoafričko vreme"</item>
+ <item msgid="954536568417204026">"Aman, Jordan"</item>
+ <item msgid="8932745482008902551">"Atina, Istanbul"</item>
+ <item msgid="320025725949024510">"Bejrut, Liban"</item>
+ <item msgid="7242083112551905970">"Kairo"</item>
+ <item msgid="7241520146011450419">"Helsinki"</item>
+ <item msgid="2717065017510546526">"Jerusalim"</item>
+ <item msgid="8698556287741466553">"Minsk"</item>
+ <item msgid="1797598357342084506">"Harare"</item>
+ <item msgid="5169119919905066998">"Bagdad"</item>
+ <item msgid="2615788116201065182">"Moskva"</item>
+ <item msgid="9084354867885584646">"Kuvajt"</item>
+ <item msgid="1351570519986178268">"Najrobi"</item>
+ <item msgid="7094569580635877460">"Teheran"</item>
+ <item msgid="3953138772617909704">"Baku"</item>
+ <item msgid="2868893113598800752">"Tbilisi"</item>
+ <item msgid="7088581865802476373">"Jerevan"</item>
+ <item msgid="1941122257623887992">"Dubai"</item>
+ <item msgid="9194797225058249720">"Kabul"</item>
+ <item msgid="6486569254364577332">"Islamabad, Karači"</item>
+ <item msgid="5487724896895412089">"Uralsk"</item>
+ <item msgid="364906869710826982">"Jekaterinburg"</item>
+ <item msgid="2106505051751383358">"Kolkata"</item>
+ <item msgid="6851586621581501447">"Šri Lanka"</item>
+ <item msgid="800438544128213134">"Katmandu"</item>
+ <item msgid="6173621471007643021">"Astana"</item>
+ <item msgid="8645125891971581128">"Jangon"</item>
+ <item msgid="2886407505119737794">"Krasnojarsk"</item>
+ <item msgid="3408222398188107090">"Bangkok"</item>
+ <item msgid="4441612937172851228">"Peking"</item>
+ <item msgid="4936715789028996930">"Hongkong"</item>
+ <item msgid="4261031143777385525">"Irkutsk"</item>
+ <item msgid="3538060959338191835">"Kuala Lumpur"</item>
+ <item msgid="1438847562643099201">"Pert"</item>
+ <item msgid="3063913827688244383">"Tajpej"</item>
+ <item msgid="3502757135046564209">"Seul"</item>
+ <item msgid="6107588684519111669">"Tokio, Osaka"</item>
+ <item msgid="4350769099755608471">"Jakutsk"</item>
+ <item msgid="2422707004533526462">"Adelejd"</item>
+ <item msgid="1292192084554134339">"Darvin"</item>
+ <item msgid="1320883699470001716">"Brizbejn"</item>
+ <item msgid="5137198806146386527">"Hobart"</item>
+ <item msgid="5920063686933941174">"Sidnej, Kanbera"</item>
+ <item msgid="615906039696009425">"Vladivostok"</item>
+ <item msgid="7738680449356275374">"Guam"</item>
+ <item msgid="2882915026380778227">"Magadan"</item>
+ <item msgid="8255615641810148152">"Okland"</item>
+ <item msgid="3027153773466391728">"Fidži"</item>
+ <item msgid="5911600083231840181">"Tonga"</item>
+ <item msgid="5176858645450908751">"Džakarta"</item>
+ </string-array>
+ <string name="alarm_settings" msgid="2947147071388290814">"Alarmi"</string>
+ <string name="timer_service_desc" msgid="2256002649882602433">"Obrađuje radnje iz obaveštenja tajmera."</string>
+ <string name="stopwatch_service_desc" msgid="9220132827343760767">"Obrađuje radnje iz obaveštenja štoperice."</string>
+ <string name="swn_paused" msgid="6364358842808263589">"Pauzirano"</string>
+ <string name="description_direction_right" msgid="5709209043267548985">"Prevucite nadesno za odbacivanje"</string>
+ <string name="description_direction_left" msgid="7448141043674998679">"Prevucite nalevo za odlaganje"</string>
+ <string name="description_direction_both" msgid="1841309486023845685">"Prevucite nalevo da biste odložili ili nadesno da biste odbacili"</string>
+ <string name="timer_settings" msgid="7955522143086154795">"Tajmeri"</string>
+ <string name="timer_ringtone_title" msgid="7630214935791599619">"Melodija zvona tajmera"</string>
+ <string name="timer_vibrate_title" msgid="7788920024785587518">"Vibracija tajmera"</string>
+ <string name="timer_paused" msgid="5941160896040771462">"Tajmer je pauziran"</string>
+ <string name="timers_stopped" msgid="3186191253226005149">"Pauziranih tajmera: <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Dodirnite da biste videli tajmere"</string>
+ <string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> tajmera"</string>
+ <string name="next_timer_notif" msgid="6136454740115613653">"Sledeći tajmer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Podešavanja čuvara ekrana"</string>
+ <string name="night_mode_title" msgid="5983813889469616299">"Noćni režim"</string>
+ <string name="night_mode_summary" msgid="1017350187324162631">"Veoma taman ekran (za mračne sobe)"</string>
+ <string name="expand_alarm" msgid="7392616528943305020">"Proširi alarm"</string>
+ <string name="collapse_alarm" msgid="3561772046433483980">"Skupi alarm"</string>
+ <string name="alarm_undo" msgid="5710042601177655254">"opozovi"</string>
+ <string name="alarm_deleted" msgid="6131529309389084785">"Alarm je izbrisan"</string>
+ <string name="world_day_of_week_label" msgid="5911196322328341288">"/<xliff:g id="LABEL">%s</xliff:g>"</string>
+ <string name="next_alarm_description" msgid="2650244835760747046">"Sledeći alarm: <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_alarms" msgid="6429431324842022917">"Bez alarma"</string>
+ <string name="invalid_time" msgid="2782334750243998633">"Nevažeće vreme <xliff:g id="INVALID_HOUR">%1$d</xliff:g>:<xliff:g id="INVALID_MINUTES">%2$d</xliff:g> <xliff:g id="INVALID_AMPM">%3$s</xliff:g>"</string>
+ <string name="no_alarm_at" msgid="8140632482969193119">"Nema alarma u <xliff:g id="ALARM_TIME_HOUR">%1$d</xliff:g>:<xliff:g id="ALARM_TIME_MINUTES">%2$d</xliff:g>"</string>
+ <string name="no_scheduled_alarms" msgid="2115420148192753534">"Nema zakazanih alarma"</string>
+ <string name="no_label_specified" msgid="2008482054428460626">"Nije navedena nijedna oznaka"</string>
+ <string name="no_alarms_with_label" msgid="6250998794542941665">"Nijedan alarm ne sadrži oznaku"</string>
+ <string name="stopwatch_isnt_running" msgid="7147219965448204727">"Štoperica nije pokrenuta"</string>
+ <string name="stopwatch_paused" msgid="2187615623275408601">"Štoperica je pauzirana"</string>
+ <string name="stopwatch_reset" msgid="7585914953721021042">"Štoperica je resetovana"</string>
+ <string name="stopwatch_lapped" msgid="5844686448815550482">"Obeleženo je vreme za krug na štoperici"</string>
+ <string name="stopwatch_started" msgid="7843882246387176304">"Štoperica je pokrenuta"</string>
+ <string name="no_alarm_scheduled_for_this_time" msgid="4463069177414482818">"Nijedan alarm nije zakazan za ovo vreme"</string>
+ <string name="alarm_is_dismissed" msgid="5509897230565826642">"Alarm za <xliff:g id="ALARM_TIME">%s</xliff:g> je odbačen"</string>
+ <string name="alarm_is_set" msgid="5503226382620011088">"Alarm je podešen za <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_timers_exist" msgid="7062019300048831373">"Ne postoje tajmeri"</string>
+ <string name="too_many_timers_exist" msgid="6339194231767431627">"Postoji više tajmera"</string>
+ <string name="timer_does_not_exist" msgid="4457482976523984231">"Tajmer je uklonjen."</string>
+ <string name="timer_created" msgid="4381027137335885547">"Tajmer je napravljen"</string>
+ <string name="timer_was_reset" msgid="6495796785185062631">"Tajmer je resetovan"</string>
+ <string name="timer_deleted" msgid="9110322362460029392">"Tajmer je izbrisan"</string>
+ <string name="timer_started" msgid="6715582052946641641">"Tajmer je pokrenut"</string>
+ <string name="invalid_timer_length" msgid="3104567893212932487">"Nevažeća dužina tajmera"</string>
+ <string name="no_city_selected" msgid="1007596865203283741">"Nijedan grad nije izabran"</string>
+ <string name="the_city_you_specified_is_not_available" msgid="1753597460426454543">"Grad koji ste naveli nije dostupan"</string>
+ <string name="the_city_already_added" msgid="3799050213771793020">"Ovaj grad je već dodat"</string>
+ <string name="city_added" msgid="1335509457349179514">"Dodali ste: <xliff:g id="CITY_NAME">%s</xliff:g>"</string>
+ <string name="city_deleted" msgid="3935141305276867838">"Izbrisali ste: <xliff:g id="CITY_NAME">%s</xliff:g>"</string>
+ <string name="alarm_cant_be_dismissed_still_more_than_24_hours_away" msgid="8810520940995307437">"Alarm za <xliff:g id="ALARM_TIME">%s</xliff:g> još uvek ne može da se odbaci, i dalje ima više od 24 sata do vremena alarma"</string>
+ <string name="dismiss_alarm" msgid="7204593078688533541">"Odbaci alarm"</string>
+ <string name="pick_alarm_to_dismiss" msgid="5408769235866082896">"Izaberite alarm koji želite da odbacite"</string>
+ <string name="no_firing_alarms" msgid="4986161963178722289">"Ne aktivira se nijedan alarm"</string>
+ <string name="alarm_is_snoozed" msgid="7044644119744928846">"Alarm za <xliff:g id="ALARM_TIME">%s</xliff:g> je odložen za 10 minuta"</string>
+</resources>
diff --git a/res/values-be-rBY/cities.xml b/res/values-be-rBY/cities.xml
new file mode 100644
index 0000000..f6eb0bc
--- /dev/null
+++ b/res/values-be-rBY/cities.xml
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2016 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="C1" msgid="3622720549928625541">"A<xliff:g id="SEPARATOR">=</xliff:g>Абіджан<xliff:g id="TIMEZONE">|Africa/Abidjan</xliff:g>"</string>
+ <string name="C2" msgid="9073993995416728918">"А<xliff:g id="SEPARATOR">=</xliff:g>Акра<xliff:g id="TIMEZONE">|Africa/Accra</xliff:g>"</string>
+ <string name="C3" msgid="5172979423931428620">"А<xliff:g id="SEPARATOR">=</xliff:g>Адыс-Абеба<xliff:g id="TIMEZONE">|Africa/Addis_Ababa</xliff:g>"</string>
+ <string name="C4" msgid="4450258423854546267">"А<xliff:g id="SEPARATOR">=</xliff:g>Алжыр<xliff:g id="TIMEZONE">|Africa/Algiers</xliff:g>"</string>
+ <string name="C5" msgid="8063142106679202722">"Б<xliff:g id="SEPARATOR">=</xliff:g>Блантайр<xliff:g id="TIMEZONE">|Africa/Blantyre</xliff:g>"</string>
+ <string name="C6" msgid="1620940469531839828">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бразавіль<xliff:g id="TIMEZONE">|Africa/Brazzaville</xliff:g>"</string>
+ <string name="C7" msgid="8450502029020824529">"К<xliff:g id="SEPARATOR">=</xliff:g>Каір<xliff:g id="TIMEZONE">|Africa/Cairo</xliff:g>"</string>
+ <string name="C8" msgid="5843391672611053116">"К<xliff:g id="SEPARATOR">=</xliff:g>Касабланка<xliff:g id="TIMEZONE">|Africa/Casablanca</xliff:g>"</string>
+ <string name="C9" msgid="2164088076645942134">"К<xliff:g id="SEPARATOR">=</xliff:g>Канакры<xliff:g id="TIMEZONE">|Africa/Conakry</xliff:g>"</string>
+ <string name="C10" msgid="6275085554326816487">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дакар<xliff:g id="TIMEZONE">|Africa/Dakar</xliff:g>"</string>
+ <string name="C11" msgid="8124988526568339100">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дар-эс-Салам<xliff:g id="TIMEZONE">|Africa/Dar_es_Salaam</xliff:g>"</string>
+ <string name="C12" msgid="9058858575164534385">"Д<xliff:g id="SEPARATOR">=</xliff:g>Джыбуці<xliff:g id="TIMEZONE">|Africa/Djibouti</xliff:g>"</string>
+ <string name="C13" msgid="1020128319695123468">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Фрытаўн<xliff:g id="TIMEZONE">|Africa/Freetown</xliff:g>"</string>
+ <string name="C14" msgid="5466600602512133072">"Г<xliff:g id="SEPARATOR">=</xliff:g>Габаронэ<xliff:g id="TIMEZONE">|Africa/Gaborone</xliff:g>"</string>
+ <string name="C15" msgid="4045696872348427594">"Х<xliff:g id="SEPARATOR">=</xliff:g>Харарэ<xliff:g id="TIMEZONE">|Africa/Harare</xliff:g>"</string>
+ <string name="C16" msgid="109844560982762747">"Я<xliff:g id="SEPARATOR">=</xliff:g>Яганесбург<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C17" msgid="4868414442726546214">"К<xliff:g id="SEPARATOR">=</xliff:g>Кампала<xliff:g id="TIMEZONE">|Africa/Kampala</xliff:g>"</string>
+ <string name="C18" msgid="7460319039497808668">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хартум<xliff:g id="TIMEZONE">|Africa/Khartoum</xliff:g>"</string>
+ <string name="C19" msgid="3967163989179394825">"К<xliff:g id="SEPARATOR">=</xliff:g>Кігалі<xliff:g id="TIMEZONE">|Africa/Kigali</xliff:g>"</string>
+ <string name="C20" msgid="832336979058592106">"К<xliff:g id="SEPARATOR">=</xliff:g>Кіншаса<xliff:g id="TIMEZONE">|Africa/Kinshasa</xliff:g>"</string>
+ <string name="C21" msgid="8691772487297796331">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лагас<xliff:g id="TIMEZONE">|Africa/Lagos</xliff:g>"</string>
+ <string name="C22" msgid="6061916756914828881">"М<xliff:g id="SEPARATOR">=</xliff:g>Масеру<xliff:g id="TIMEZONE">|Africa/Maseru</xliff:g>"</string>
+ <string name="C23" msgid="6790461017899209498">"М<xliff:g id="SEPARATOR">=</xliff:g>Магадыша<xliff:g id="TIMEZONE">|Africa/Mogadishu</xliff:g>"</string>
+ <string name="C24" msgid="836730985302941979">"Н<xliff:g id="SEPARATOR">=</xliff:g>Найробі<xliff:g id="TIMEZONE">|Africa/Nairobi</xliff:g>"</string>
+ <string name="C25" msgid="6439936809920816845">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Тамэ<xliff:g id="TIMEZONE">|Africa/Sao_Tome</xliff:g>"</string>
+ <string name="C26" msgid="3250092456144685877">"Ц<xliff:g id="SEPARATOR">=</xliff:g>Тамбукту<xliff:g id="TIMEZONE">|Africa/Timbuktu</xliff:g>"</string>
+ <string name="C27" msgid="851018621577780718">"Т<xliff:g id="SEPARATOR">=</xliff:g>Трыпалі<xliff:g id="TIMEZONE">|Africa/Tripoli</xliff:g>"</string>
+ <string name="C28" msgid="7979767521827885833">"Т<xliff:g id="SEPARATOR">=</xliff:g>Туніс<xliff:g id="TIMEZONE">|Africa/Tunis</xliff:g>"</string>
+ <string name="C29" msgid="7946114495840302218">"А<xliff:g id="SEPARATOR">=</xliff:g>Анкарыдж<xliff:g id="TIMEZONE">|America/Anchorage</xliff:g>"</string>
+ <string name="C31" msgid="9017443250572798257">"А<xliff:g id="SEPARATOR">=</xliff:g>Аруба<xliff:g id="TIMEZONE">|America/Aruba</xliff:g>"</string>
+ <string name="C32" msgid="3825060534011309483">"А<xliff:g id="SEPARATOR">=</xliff:g>Асунсьён<xliff:g id="TIMEZONE">|America/Asuncion</xliff:g>"</string>
+ <string name="C33" msgid="700410369162607101">"Б<xliff:g id="SEPARATOR">=</xliff:g>Барбадас<xliff:g id="TIMEZONE">|America/Barbados</xliff:g>"</string>
+ <string name="C34" msgid="4247046344370912762">"Б<xliff:g id="SEPARATOR">=</xliff:g>Беліз<xliff:g id="TIMEZONE">|America/Belize</xliff:g>"</string>
+ <string name="C35" msgid="2794708943743875418">"Б<xliff:g id="SEPARATOR">=</xliff:g>Багата<xliff:g id="TIMEZONE">|America/Bogota</xliff:g>"</string>
+ <string name="C36" msgid="5404342554664613950">"Б<xliff:g id="SEPARATOR">=</xliff:g>Буэнас-Айрэс<xliff:g id="TIMEZONE">|America/Buenos_Aires</xliff:g>"</string>
+ <string name="C37" msgid="210142862572070093">"К<xliff:g id="SEPARATOR">=</xliff:g>Канкун<xliff:g id="TIMEZONE">|America/Cancun</xliff:g>"</string>
+ <string name="C38" msgid="3882347315148425276">"К<xliff:g id="SEPARATOR">=</xliff:g>Каракас<xliff:g id="TIMEZONE">|America/Caracas</xliff:g>"</string>
+ <string name="C39" msgid="1273212484626323439">"К<xliff:g id="SEPARATOR">=</xliff:g>Кайманавы астравы<xliff:g id="TIMEZONE">|America/Cayman</xliff:g>"</string>
+ <string name="C40" msgid="3106173663723475314">"Ч<xliff:g id="SEPARATOR">=</xliff:g>Чыкага<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C42" msgid="5638414063615009004">"К<xliff:g id="SEPARATOR">=</xliff:g>Кюрасаа<xliff:g id="TIMEZONE">|America/Curacao</xliff:g>"</string>
+ <string name="C43" msgid="6826097241516998181">"Д<xliff:g id="SEPARATOR">=</xliff:g>Досан-Крык<xliff:g id="TIMEZONE">|America/Dawson_Creek</xliff:g>"</string>
+ <string name="C44" msgid="2779334691893631030">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дэнвер<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C45" msgid="8943178793317201894">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дэтройт<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C46" msgid="5190250990574320177">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дамініка<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C47" msgid="369754396219379227">"Э<xliff:g id="SEPARATOR">=</xliff:g>Эдмантан<xliff:g id="TIMEZONE">|America/Edmonton</xliff:g>"</string>
+ <string name="C48" msgid="7918902616648922410">"С<xliff:g id="SEPARATOR">=</xliff:g>Салвадор<xliff:g id="TIMEZONE">|America/El_Salvador</xliff:g>"</string>
+ <string name="C49" msgid="6326857727742458931">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Фарталеза<xliff:g id="TIMEZONE">|America/Fortaleza</xliff:g>"</string>
+ <string name="C50" msgid="3131498820508584398">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гранд-Цёрк<xliff:g id="TIMEZONE">|America/Grand_Turk</xliff:g>"</string>
+ <string name="C51" msgid="3122278921760822414">"Г<xliff:g id="SEPARATOR">=</xliff:g>Грэнада<xliff:g id="TIMEZONE">|America/Grenada</xliff:g>"</string>
+ <string name="C52" msgid="7461551991724617520">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гватэмала<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C53" msgid="296242785331472791">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гаяна<xliff:g id="TIMEZONE">|America/Guyana</xliff:g>"</string>
+ <string name="C54" msgid="4045007274020361950">"Г<xliff:g id="SEPARATOR">=</xliff:g>Галіфакс<xliff:g id="TIMEZONE">|America/Halifax</xliff:g>"</string>
+ <string name="C55" msgid="8180186289266487770">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гавана<xliff:g id="TIMEZONE">|America/Havana</xliff:g>"</string>
+ <string name="C56" msgid="6062281725956353553">"І<xliff:g id="SEPARATOR">=</xliff:g>Індыянапаліс<xliff:g id="TIMEZONE">|America/Indiana/Indianapolis</xliff:g>"</string>
+ <string name="C57" msgid="5971109906791493563">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нокс<xliff:g id="TIMEZONE">|America/Indiana/Knox</xliff:g>"</string>
+ <string name="C58" msgid="7657721717096348613">"М<xliff:g id="SEPARATOR">=</xliff:g>Марэнга<xliff:g id="TIMEZONE">|America/Indiana/Marengo</xliff:g>"</string>
+ <string name="C59" msgid="2053523400941417307">"П<xliff:g id="SEPARATOR">=</xliff:g>Пітэрсберг<xliff:g id="TIMEZONE">|America/Indiana/Petersburg</xliff:g>"</string>
+ <string name="C60" msgid="8112283891039465817">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тэл-Сіці<xliff:g id="TIMEZONE">|America/Indiana/Tell_City</xliff:g>"</string>
+ <string name="C61" msgid="7778713489993559227">"В<xliff:g id="SEPARATOR">=</xliff:g>Віві<xliff:g id="TIMEZONE">|America/Indiana/Vevay</xliff:g>"</string>
+ <string name="C62" msgid="2667958702401099683">"В<xliff:g id="SEPARATOR">=</xliff:g>Вінсенс<xliff:g id="TIMEZONE">|America/Indiana/Vincennes</xliff:g>"</string>
+ <string name="C63" msgid="2251274863869460838">"У<xliff:g id="SEPARATOR">=</xliff:g>Уінамак<xliff:g id="TIMEZONE">|America/Indiana/Winamac</xliff:g>"</string>
+ <string name="C64" msgid="1051183687128385699">"К<xliff:g id="SEPARATOR">=</xliff:g>Кінгстан<xliff:g id="TIMEZONE">|America/Jamaica</xliff:g>"</string>
+ <string name="C65" msgid="4484953311341882894">"Л<xliff:g id="SEPARATOR">=</xliff:g>Ла-Пас<xliff:g id="TIMEZONE">|America/La_Paz</xliff:g>"</string>
+ <string name="C66" msgid="4486852398001333122">"Л<xliff:g id="SEPARATOR">=</xliff:g>Ліма<xliff:g id="TIMEZONE">|America/Lima</xliff:g>"</string>
+ <string name="C67" msgid="4874799181719358019">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лос-Анджэлес<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C68" msgid="5526012011469271690">"Л<xliff:g id="SEPARATOR">=</xliff:g>Луісвіл<xliff:g id="TIMEZONE">|America/Louisville</xliff:g>"</string>
+ <string name="C69" msgid="6147580167560875608">"М<xliff:g id="SEPARATOR">=</xliff:g>Манагуа<xliff:g id="TIMEZONE">|America/Managua</xliff:g>"</string>
+ <string name="C70" msgid="3277881296053225577">"М<xliff:g id="SEPARATOR">=</xliff:g>Марцініка<xliff:g id="TIMEZONE">|America/Martinique</xliff:g>"</string>
+ <string name="C71" msgid="4017941126335556194">"М<xliff:g id="SEPARATOR">=</xliff:g>Мендоса<xliff:g id="TIMEZONE">|America/Mendoza</xliff:g>"</string>
+ <string name="C72" msgid="3992109594245379480">"М<xliff:g id="SEPARATOR">=</xliff:g>Метлакатла<xliff:g id="TIMEZONE">|America/Metlakatla</xliff:g>"</string>
+ <string name="C73" msgid="2715229408279026929">"М<xliff:g id="SEPARATOR">=</xliff:g>Мехіка<xliff:g id="TIMEZONE">|America/Mexico_City</xliff:g>"</string>
+ <string name="C74" msgid="4308784353529592128">"М<xliff:g id="SEPARATOR">=</xliff:g>Мантэрэй<xliff:g id="TIMEZONE">|America/Monterrey</xliff:g>"</string>
+ <string name="C75" msgid="1026967177018172509">"М<xliff:g id="SEPARATOR">=</xliff:g>Мантэвідэа<xliff:g id="TIMEZONE">|America/Montevideo</xliff:g>"</string>
+ <string name="C76" msgid="5677155513568462679">"М<xliff:g id="SEPARATOR">=</xliff:g>Манрэаль<xliff:g id="TIMEZONE">|America/Montreal</xliff:g>"</string>
+ <string name="C77" msgid="7071675194537613715">"Н<xliff:g id="SEPARATOR">=</xliff:g>Насаў<xliff:g id="TIMEZONE">|America/Nassau</xliff:g>"</string>
+ <string name="C78" msgid="705452895809394827">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нью-Ёрк<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C79" msgid="615046244335186458">"Б<xliff:g id="SEPARATOR">=</xliff:g>Б\'юла<xliff:g id="TIMEZONE">|America/North_Dakota/Beulah</xliff:g>"</string>
+ <string name="C80" msgid="7462541787750301851">"C<xliff:g id="SEPARATOR">=</xliff:g>Cэнтэр<xliff:g id="TIMEZONE">|America/North_Dakota/Center</xliff:g>"</string>
+ <string name="C81" msgid="5467118811364466464">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нью-Салем<xliff:g id="TIMEZONE">|America/North_Dakota/New_Salem</xliff:g>"</string>
+ <string name="C82" msgid="1040250446144596478">"П<xliff:g id="SEPARATOR">=</xliff:g>Панама<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C83" msgid="3734366600481445363">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Фінікс<xliff:g id="TIMEZONE">|America/Phoenix</xliff:g>"</string>
+ <string name="C84" msgid="2410152141185166321">"П<xliff:g id="SEPARATOR">=</xliff:g>Порт-оф-Спейн<xliff:g id="TIMEZONE">|America/Port_of_Spain</xliff:g>"</string>
+ <string name="C85" msgid="2883572094139689939">"П<xliff:g id="SEPARATOR">=</xliff:g>Порт-о-Прэнс<xliff:g id="TIMEZONE">|America/Port-au-Prince</xliff:g>"</string>
+ <string name="C86" msgid="274590042868724214">"П<xliff:g id="SEPARATOR">=</xliff:g>Пуэрта-Рыка<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C87" msgid="2866918562243248306">"С<xliff:g id="SEPARATOR">=</xliff:g>Санта-Дамінга<xliff:g id="TIMEZONE">|America/Santo_Domingo</xliff:g>"</string>
+ <string name="C88" msgid="2261702707416420550">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Паўлу<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C89" msgid="8517952667962700432">"С<xliff:g id="SEPARATOR">=</xliff:g>Сент-Джонс<xliff:g id="TIMEZONE">|America/St_Johns</xliff:g>"</string>
+ <string name="C90" msgid="1703939848190669830">"С<xliff:g id="SEPARATOR">=</xliff:g>Сент-Кітс<xliff:g id="TIMEZONE">|America/St_Kitts</xliff:g>"</string>
+ <string name="C91" msgid="4438261556294969442">"С<xliff:g id="SEPARATOR">=</xliff:g>Сэнт-Люсія<xliff:g id="TIMEZONE">|America/St_Lucia</xliff:g>"</string>
+ <string name="C92" msgid="3717300223413621820">"С<xliff:g id="SEPARATOR">=</xliff:g>Сент-Томас<xliff:g id="TIMEZONE">|America/St_Thomas</xliff:g>"</string>
+ <string name="C93" msgid="964552099122372664">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тыхуана<xliff:g id="TIMEZONE">|America/Tijuana</xliff:g>"</string>
+ <string name="C94" msgid="6254783598629305021">"Т<xliff:g id="SEPARATOR">=</xliff:g>Таронта<xliff:g id="TIMEZONE">|America/Toronto</xliff:g>"</string>
+ <string name="C95" msgid="2144206125989179089">"В<xliff:g id="SEPARATOR">=</xliff:g>Ванкувер<xliff:g id="TIMEZONE">|America/Vancouver</xliff:g>"</string>
+ <string name="C96" msgid="3995904432128369027">"В<xliff:g id="SEPARATOR">=</xliff:g>Вініпег<xliff:g id="TIMEZONE">|America/Winnipeg</xliff:g>"</string>
+ <string name="C97" msgid="5667595440938233073">"П<xliff:g id="SEPARATOR">=</xliff:g>Паўднёвы полюс<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Antarctica/South_Pole</xliff:g>"</string>
+ <string name="C98" msgid="2067640513126652156">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лонгйір<xliff:g id="TIMEZONE">|Arctic/Longyearbyen</xliff:g>"</string>
+ <string name="C99" msgid="6750041547603679548">"А<xliff:g id="SEPARATOR">=</xliff:g>Алматы<xliff:g id="TIMEZONE">|Asia/Almaty</xliff:g>"</string>
+ <string name="C100" msgid="5995329947852415813">"A<xliff:g id="SEPARATOR">=</xliff:g>Аман<xliff:g id="TIMEZONE">|Asia/Amman</xliff:g>"</string>
+ <string name="C101" msgid="5760056604239047274">"A<xliff:g id="SEPARATOR">=</xliff:g>Анадыр<xliff:g id="TIMEZONE">|Asia/Anadyr</xliff:g>"</string>
+ <string name="C102" msgid="9000357065825182754">"A<xliff:g id="SEPARATOR">=</xliff:g>Актау<xliff:g id="TIMEZONE">|Asia/Aqtau</xliff:g>"</string>
+ <string name="C103" msgid="8781982253489209791">"Б<xliff:g id="SEPARATOR">=</xliff:g>Багдад<xliff:g id="TIMEZONE">|Asia/Baghdad</xliff:g>"</string>
+ <string name="C104" msgid="4021122575041916540">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бахрэйн<xliff:g id="TIMEZONE">|Asia/Bahrain</xliff:g>"</string>
+ <string name="C105" msgid="1812915124794679606">"Б<xliff:g id="SEPARATOR">=</xliff:g>Баку<xliff:g id="TIMEZONE">|Asia/Baku</xliff:g>"</string>
+ <string name="C106" msgid="1996684628612964988">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бангкок<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C107" msgid="227554925153715426">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бейрут<xliff:g id="TIMEZONE">|Asia/Beirut</xliff:g>"</string>
+ <string name="C108" msgid="5082419901681584844">"К<xliff:g id="SEPARATOR">=</xliff:g>Калькута<xliff:g id="TIMEZONE">|Asia/Calcutta</xliff:g>"</string>
+ <string name="C109" msgid="6386566477244958752">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дамаск<xliff:g id="TIMEZONE">|Asia/Damascus</xliff:g>"</string>
+ <string name="C110" msgid="1165712058024165012">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дака<xliff:g id="TIMEZONE">|Asia/Dhaka</xliff:g>"</string>
+ <string name="C111" msgid="5895260692253797547">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дубай<xliff:g id="TIMEZONE">|Asia/Dubai</xliff:g>"</string>
+ <string name="C112" msgid="1708170128253320625">"Г<xliff:g id="SEPARATOR">=</xliff:g>Газа<xliff:g id="TIMEZONE">|Asia/Gaza</xliff:g>"</string>
+ <string name="C113" msgid="8790538811134290878">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хеўрон<xliff:g id="TIMEZONE">|Asia/Hebron</xliff:g>"</string>
+ <string name="C114" msgid="8019764566754082688">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хашымін<xliff:g id="TIMEZONE">|Asia/Ho_Chi_Minh</xliff:g>"</string>
+ <string name="C115" msgid="2707316842482208016">"Г<xliff:g id="SEPARATOR">=</xliff:g>Ганконг<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Hong_Kong</xliff:g>"</string>
+ <string name="C117" msgid="486537564257069933">"Д<xliff:g id="SEPARATOR">=</xliff:g>Джакарта<xliff:g id="TIMEZONE">|Asia/Jakarta</xliff:g>"</string>
+ <string name="C118" msgid="2220594023727285784">"І<xliff:g id="SEPARATOR">=</xliff:g>Іерусалім<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C119" msgid="7095503078924268384">"К<xliff:g id="SEPARATOR">=</xliff:g>Кабул<xliff:g id="TIMEZONE">|Asia/Kabul</xliff:g>"</string>
+ <string name="C120" msgid="4759297844750994699">"К<xliff:g id="SEPARATOR">=</xliff:g>Карачы<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C121" msgid="6397452077111782277">"К<xliff:g id="SEPARATOR">=</xliff:g>Катманду<xliff:g id="TIMEZONE">|Asia/Kathmandu</xliff:g>"</string>
+ <string name="C122" msgid="3384658968869783693">"К<xliff:g id="SEPARATOR">=</xliff:g>Куала-Лумпур<xliff:g id="TIMEZONE">|Asia/Kuala_Lumpur</xliff:g>"</string>
+ <string name="C123" msgid="2596231413860119715">"К<xliff:g id="SEPARATOR">=</xliff:g>Кувейт<xliff:g id="TIMEZONE">|Asia/Kuwait</xliff:g>"</string>
+ <string name="C124" msgid="7128790644999660843">"М<xliff:g id="SEPARATOR">=</xliff:g>Макаа<xliff:g id="TIMEZONE">|Asia/Macau</xliff:g>"</string>
+ <string name="C125" msgid="7482612453109643531">"M<xliff:g id="SEPARATOR">=</xliff:g>Маніла<xliff:g id="TIMEZONE">|Asia/Manila</xliff:g>"</string>
+ <string name="C126" msgid="89594601694005714">"M<xliff:g id="SEPARATOR">=</xliff:g>Маскат<xliff:g id="TIMEZONE">|Asia/Muscat</xliff:g>"</string>
+ <string name="C127" msgid="6694878912574814081">"П<xliff:g id="SEPARATOR">=</xliff:g>Пнампень<xliff:g id="TIMEZONE">|Asia/Phnom_Penh</xliff:g>"</string>
+ <string name="C128" msgid="6055116591529458940">"П<xliff:g id="SEPARATOR">=</xliff:g>Пхеньян<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Pyongyang</xliff:g>"</string>
+ <string name="C130" msgid="665609990740507143">"Я<xliff:g id="SEPARATOR">=</xliff:g>Янгон<xliff:g id="TIMEZONE">|Asia/Rangoon</xliff:g>"</string>
+ <string name="C131" msgid="3395769966117356927">"Э<xliff:g id="SEPARATOR">=</xliff:g>Эр-Рыяд<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C133" msgid="5204810106521056060">"С<xliff:g id="SEPARATOR">=</xliff:g>Сеул<xliff:g id="TIMEZONE">|Asia/Seoul</xliff:g>"</string>
+ <string name="C134" msgid="7263747916569669120">"Ш<xliff:g id="SEPARATOR">=</xliff:g>Шанхай<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C135" msgid="4100015019260371393">"С<xliff:g id="SEPARATOR">=</xliff:g>Сінгапур<xliff:g id="TIMEZONE">|Asia/Singapore</xliff:g>"</string>
+ <string name="C136" msgid="6386033226757339839">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тайбэй<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Taipei</xliff:g>"</string>
+ <string name="C137" msgid="5387760734363179588">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тэгеран<xliff:g id="TIMEZONE">|Asia/Tehran</xliff:g>"</string>
+ <string name="C138" msgid="7193922868117846792">"T<xliff:g id="SEPARATOR">=</xliff:g>Тэль-Авіў<xliff:g id="TIMEZONE">|Asia/Tel_Aviv</xliff:g>"</string>
+ <string name="C139" msgid="7060339477340222608">"Т<xliff:g id="SEPARATOR">=</xliff:g>Токіа<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C140" msgid="6273911458061121975">"У<xliff:g id="SEPARATOR">=</xliff:g>Улан-Батар<xliff:g id="TIMEZONE">|Asia/Ulaanbaatar</xliff:g>"</string>
+ <string name="C141" msgid="2799340184229547409">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бермудскія астравы<xliff:g id="TIMEZONE">|Atlantic/Bermuda</xliff:g>"</string>
+ <string name="C142" msgid="6015789133959684677">"К<xliff:g id="SEPARATOR">=</xliff:g>Канарскія астравы<xliff:g id="TIMEZONE">|Atlantic/Canary</xliff:g>"</string>
+ <string name="C143" msgid="4888764215053863961">"К<xliff:g id="SEPARATOR">=</xliff:g>Каба-Вердэ<xliff:g id="TIMEZONE">|Atlantic/Cape_Verde</xliff:g>"</string>
+ <string name="C144" msgid="3338105941475340049">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рэйк\'явік<xliff:g id="TIMEZONE">|Atlantic/Reykjavik</xliff:g>"</string>
+ <string name="C145" msgid="8684297689430494031">"С<xliff:g id="SEPARATOR">=</xliff:g>Стэнлі<xliff:g id="TIMEZONE">|Atlantic/Stanley</xliff:g>"</string>
+ <string name="C146" msgid="843808286721172656">"А<xliff:g id="SEPARATOR">=</xliff:g>Адэлаіда<xliff:g id="TIMEZONE">|Australia/Adelaide</xliff:g>"</string>
+ <string name="C147" msgid="3712535858465321034">"Б<xliff:g id="SEPARATOR">=</xliff:g>Брысбен<xliff:g id="TIMEZONE">|Australia/Brisbane</xliff:g>"</string>
+ <string name="C148" msgid="7019403666599702943">"К<xliff:g id="SEPARATOR">=</xliff:g>Канбера<xliff:g id="TIMEZONE">|Australia/Canberra</xliff:g>"</string>
+ <string name="C149" msgid="8185355499458013534">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дарвін<xliff:g id="TIMEZONE">|Australia/Darwin</xliff:g>"</string>
+ <string name="C150" msgid="3516845880105752618">"М<xliff:g id="SEPARATOR">=</xliff:g>Мельбурн<xliff:g id="TIMEZONE">|Australia/Melbourne</xliff:g>"</string>
+ <string name="C151" msgid="5576825403360541823">"Н<xliff:g id="SEPARATOR">=</xliff:g>Новы Паўднёвы Уэльс<xliff:g id="TIMEZONE">|Australia/NSW</xliff:g>"</string>
+ <string name="C152" msgid="7889900618915436602">"П<xliff:g id="SEPARATOR">=</xliff:g>Перт<xliff:g id="TIMEZONE">|Australia/Perth</xliff:g>"</string>
+ <string name="C153" msgid="7506204460601953711">"К<xliff:g id="SEPARATOR">=</xliff:g>Квінсленд<xliff:g id="TIMEZONE">|Australia/Queensland</xliff:g>"</string>
+ <string name="C154" msgid="1193262944948312063">"С<xliff:g id="SEPARATOR">=</xliff:g>Сідней<xliff:g id="TIMEZONE">|Australia/Sydney</xliff:g>"</string>
+ <string name="C155" msgid="7079072802229033042">"В<xliff:g id="SEPARATOR">=</xliff:g>Вікторыя<xliff:g id="TIMEZONE">|Australia/Victoria</xliff:g>"</string>
+ <string name="C156" msgid="4003110220147338835">"Н<xliff:g id="SEPARATOR">=</xliff:g>Ньюфаўндленд<xliff:g id="TIMEZONE">|Canada/Newfoundland</xliff:g>"</string>
+ <string name="C157" msgid="2861486997803753970">"С<xliff:g id="SEPARATOR">=</xliff:g>Саскачэван<xliff:g id="TIMEZONE">|Canada/Saskatchewan</xliff:g>"</string>
+ <string name="C158" msgid="6882933026191056506">"В<xliff:g id="SEPARATOR">=</xliff:g>Востраў Вялікадня<xliff:g id="TIMEZONE">|Chile/EasterIsland</xliff:g>"</string>
+ <string name="C159" msgid="4128429767051043903">"А<xliff:g id="SEPARATOR">=</xliff:g>Амстэрдам<xliff:g id="TIMEZONE">|Europe/Amsterdam</xliff:g>"</string>
+ <string name="C160" msgid="3488513735205092653">"А<xliff:g id="SEPARATOR">=</xliff:g>Андора<xliff:g id="TIMEZONE">|Europe/Andorra</xliff:g>"</string>
+ <string name="C161" msgid="7244325364130392348">"А<xliff:g id="SEPARATOR">=</xliff:g>Афіны<xliff:g id="TIMEZONE">|Europe/Athens</xliff:g>"</string>
+ <string name="C162" msgid="7484009548361072313">"Б<xliff:g id="SEPARATOR">=</xliff:g>Белфаст<xliff:g id="TIMEZONE">|Europe/Belfast</xliff:g>"</string>
+ <string name="C163" msgid="6106990061397073808">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бялград<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C164" msgid="3074767496771260157">"Б<xliff:g id="SEPARATOR">=</xliff:g>Берлін<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C165" msgid="4442005045172394762">"Б<xliff:g id="SEPARATOR">=</xliff:g>Браціслава<xliff:g id="TIMEZONE">|Europe/Bratislava</xliff:g>"</string>
+ <string name="C166" msgid="8977286721038142474">"Б<xliff:g id="SEPARATOR">=</xliff:g>Брусель<xliff:g id="TIMEZONE">|Europe/Brussels</xliff:g>"</string>
+ <string name="C167" msgid="5502175796232774744">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бухарэст<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C168" msgid="6750159439632567316">"Б<xliff:g id="SEPARATOR">=</xliff:g>Будапешт<xliff:g id="TIMEZONE">|Europe/Budapest</xliff:g>"</string>
+ <string name="C169" msgid="591483187800562071">"К<xliff:g id="SEPARATOR">=</xliff:g>Кішынёў<xliff:g id="TIMEZONE">|Europe/Chisinau</xliff:g>"</string>
+ <string name="C170" msgid="157539770076958216">"К<xliff:g id="SEPARATOR">=</xliff:g>Капенгаген<xliff:g id="TIMEZONE">|Europe/Copenhagen</xliff:g>"</string>
+ <string name="C171" msgid="4774534094571993566">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дублін<xliff:g id="TIMEZONE">|Europe/Dublin</xliff:g>"</string>
+ <string name="C172" msgid="6781166861618808351">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гібралтар<xliff:g id="TIMEZONE">|Europe/Gibraltar</xliff:g>"</string>
+ <string name="C173" msgid="6620286361619640304">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хельсінкі<xliff:g id="TIMEZONE">|Europe/Helsinki</xliff:g>"</string>
+ <string name="C174" msgid="2279016324825973473">"В<xliff:g id="SEPARATOR">=</xliff:g>Востраў Мэн<xliff:g id="TIMEZONE">|Europe/Isle_of_Man</xliff:g>"</string>
+ <string name="C175" msgid="3290185117135612679">"С<xliff:g id="SEPARATOR">=</xliff:g>Стамбул<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C176" msgid="8375703098860926099">"К<xliff:g id="SEPARATOR">=</xliff:g>Кіеў<xliff:g id="TIMEZONE">|Europe/Kiev</xliff:g>"</string>
+ <string name="C177" msgid="6500868250597874838">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лісабон<xliff:g id="TIMEZONE">|Europe/Lisbon</xliff:g>"</string>
+ <string name="C178" msgid="8805696770032311110">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лондан<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C179" msgid="3767343883668628062">"Л<xliff:g id="SEPARATOR">=</xliff:g>Люксембург<xliff:g id="TIMEZONE">|Europe/Luxembourg</xliff:g>"</string>
+ <string name="C180" msgid="7678392789982322642">"М<xliff:g id="SEPARATOR">=</xliff:g>Мадрыд<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C181" msgid="7514462880775616081">"М<xliff:g id="SEPARATOR">=</xliff:g>Мальта<xliff:g id="TIMEZONE">|Europe/Malta</xliff:g>"</string>
+ <string name="C182" msgid="1916950203622380579">"М<xliff:g id="SEPARATOR">=</xliff:g>Мінск<xliff:g id="TIMEZONE">|Europe/Minsk</xliff:g>"</string>
+ <string name="C183" msgid="4964892686115215073">"М<xliff:g id="SEPARATOR">=</xliff:g>Манака<xliff:g id="TIMEZONE">|Europe/Monaco</xliff:g>"</string>
+ <string name="C184" msgid="4848586310907586448">"М<xliff:g id="SEPARATOR">=</xliff:g>Масква<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C185" msgid="2598535413053285569">"О<xliff:g id="SEPARATOR">=</xliff:g>Осла<xliff:g id="TIMEZONE">|Europe/Oslo</xliff:g>"</string>
+ <string name="C186" msgid="678795048839315969">"П<xliff:g id="SEPARATOR">=</xliff:g>Парыж<xliff:g id="TIMEZONE">|Europe/Paris</xliff:g>"</string>
+ <string name="C187" msgid="9120486940322565800">"П<xliff:g id="SEPARATOR">=</xliff:g>Прага<xliff:g id="TIMEZONE">|Europe/Prague</xliff:g>"</string>
+ <string name="C188" msgid="6820884829000643173">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рыга<xliff:g id="TIMEZONE">|Europe/Riga</xliff:g>"</string>
+ <string name="C189" msgid="8545786001221397208">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рым<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C190" msgid="2822097113459737895">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Марына<xliff:g id="TIMEZONE">|Europe/San_Marino</xliff:g>"</string>
+ <string name="C191" msgid="5419026915911469878">"С<xliff:g id="SEPARATOR">=</xliff:g>Сараева<xliff:g id="TIMEZONE">|Europe/Sarajevo</xliff:g>"</string>
+ <string name="C192" msgid="1416880359034236663">"С<xliff:g id="SEPARATOR">=</xliff:g>Сімферопаль<xliff:g id="TIMEZONE">|Europe/Simferopol</xliff:g>"</string>
+ <string name="C193" msgid="4639373771601474967">"С<xliff:g id="SEPARATOR">=</xliff:g>Скоп\'е<xliff:g id="TIMEZONE">|Europe/Skopje</xliff:g>"</string>
+ <string name="C194" msgid="4008819631066984591">"С<xliff:g id="SEPARATOR">=</xliff:g>Сафія<xliff:g id="TIMEZONE">|Europe/Sofia</xliff:g>"</string>
+ <string name="C195" msgid="6936101855361464954">"С<xliff:g id="SEPARATOR">=</xliff:g>Стакгольм<xliff:g id="TIMEZONE">|Europe/Stockholm</xliff:g>"</string>
+ <string name="C196" msgid="6845595341045260631">"Т<xliff:g id="SEPARATOR">=</xliff:g>Талін<xliff:g id="TIMEZONE">|Europe/Tallinn</xliff:g>"</string>
+ <string name="C197" msgid="2200341923401640765">"В<xliff:g id="SEPARATOR">=</xliff:g>Ватыкан<xliff:g id="TIMEZONE">|Europe/Vatican</xliff:g>"</string>
+ <string name="C198" msgid="3104432830681695782">"В<xliff:g id="SEPARATOR">=</xliff:g>Вена<xliff:g id="TIMEZONE">|Europe/Vienna</xliff:g>"</string>
+ <string name="C199" msgid="1622823742072233091">"В<xliff:g id="SEPARATOR">=</xliff:g>Вільнюс<xliff:g id="TIMEZONE">|Europe/Vilnius</xliff:g>"</string>
+ <string name="C200" msgid="6181652506383585123">"В<xliff:g id="SEPARATOR">=</xliff:g>Варшава<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C201" msgid="5026927396527258914">"З<xliff:g id="SEPARATOR">=</xliff:g>Заграб<xliff:g id="TIMEZONE">|Europe/Zagreb</xliff:g>"</string>
+ <string name="C202" msgid="7479245034393288391">"Ц<xliff:g id="SEPARATOR">=</xliff:g>Цюрых<xliff:g id="TIMEZONE">|Europe/Zurich</xliff:g>"</string>
+ <string name="C203" msgid="1651234331866937237">"А<xliff:g id="SEPARATOR">=</xliff:g>Антананарыву<xliff:g id="TIMEZONE">|Indian/Antananarivo</xliff:g>"</string>
+ <string name="C204" msgid="3101091022126098393">"М<xliff:g id="SEPARATOR">=</xliff:g>Мальдывы<xliff:g id="TIMEZONE">|Indian/Maldives</xliff:g>"</string>
+ <string name="C205" msgid="9173530407684443044">"М<xliff:g id="SEPARATOR">=</xliff:g>Маўрыкій<xliff:g id="TIMEZONE">|Indian/Mauritius</xliff:g>"</string>
+ <string name="C206" msgid="7294622489478378014">"О<xliff:g id="SEPARATOR">=</xliff:g>Окленд<xliff:g id="TIMEZONE">|Pacific/Auckland</xliff:g>"</string>
+ <string name="C207" msgid="6369257832191627783">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Фіджы<xliff:g id="TIMEZONE">|Pacific/Fiji</xliff:g>"</string>
+ <string name="C208" msgid="1022999101729302391">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гуам<xliff:g id="TIMEZONE">|Pacific/Guam</xliff:g>"</string>
+ <string name="C209" msgid="8326714755257287010">"Г<xliff:g id="SEPARATOR">=</xliff:g>Ганалулу<xliff:g id="TIMEZONE">|Pacific/Honolulu</xliff:g>"</string>
+ <string name="C210" msgid="4118975261202718577">"К<xliff:g id="SEPARATOR">=</xliff:g>Кірыцімаці<xliff:g id="TIMEZONE">|Pacific/Kiritimati</xliff:g>"</string>
+ <string name="C211" msgid="6016485615657297427">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нумеа<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C214" msgid="5230836436291372485">"А<xliff:g id="SEPARATOR">=</xliff:g>Антыгуа<xliff:g id="TIMEZONE">|America/Antigua</xliff:g>"</string>
+ <string name="C215" msgid="9104600827236874744">"О<xliff:g id="SEPARATOR">=</xliff:g>Остын<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C216" msgid="1919768646168928906">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бостан<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C217" msgid="4879725034214879629">"К<xliff:g id="SEPARATOR">=</xliff:g>Калгары<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C218" msgid="5884212032925236157">"К<xliff:g id="SEPARATOR">=</xliff:g>Калумбус<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C219" msgid="2081823206177849440">"Д<xliff:g id="SEPARATOR">=</xliff:g>Далас<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C220" msgid="6453910991331509621">"Н<xliff:g id="SEPARATOR">=</xliff:g>Ноксвіл<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C221" msgid="8383807404322146544">"М<xliff:g id="SEPARATOR">=</xliff:g>Мемфіс<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C222" msgid="3700668026644596138">"М<xliff:g id="SEPARATOR">=</xliff:g>Маямі<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C223" msgid="221323185158028534">"М<xliff:g id="SEPARATOR">=</xliff:g>Мінеапаліс<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C224" msgid="5283127526588257314">"А<xliff:g id="SEPARATOR">=</xliff:g>Атава<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C225" msgid="2397752406722350262">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Філадэльфія<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C226" msgid="9121074377966278110">"П<xliff:g id="SEPARATOR">=</xliff:g>Портленд<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C227" msgid="5652209241017010001">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Дыега<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C228" msgid="4215672329797580482">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Францыска<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C229" msgid="4196312467437357156">"С<xliff:g id="SEPARATOR">=</xliff:g>Солт-Лейк-Сіці<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C230" msgid="5521643115321121383">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Хасэ<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C231" msgid="19294357270942004">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Сальвадор<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C232" msgid="4714655032274833316">"С<xliff:g id="SEPARATOR">=</xliff:g>Сіэтл<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C233" msgid="7162834873553109876">"С<xliff:g id="SEPARATOR">=</xliff:g>Сент-Луіс<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C234" msgid="8431913494781960891">"В<xliff:g id="SEPARATOR">=</xliff:g>Вашынгтон, акруга Калумбія<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C235" msgid="8650421942456856419">"Х<xliff:g id="SEPARATOR">=</xliff:g>Х\'юстан<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C236" msgid="3687627401939103862">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Антоніа<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C237" msgid="4443158977093108877">"Д<xliff:g id="SEPARATOR">=</xliff:g>Джэксанвіл<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C238" msgid="7416660474443881822">"Б<xliff:g id="SEPARATOR">=</xliff:g>Балтымар<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C239" msgid="4602819453157356596">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нашвіл<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C240" msgid="6474976205162582188">"М<xliff:g id="SEPARATOR">=</xliff:g>Мілуокі<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C241" msgid="9133192521877174743">"А<xliff:g id="SEPARATOR">=</xliff:g>Аклахома-Сіці<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C242" msgid="4837450655035932235">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лас-Вегас<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C243" msgid="8140503787735683522">"А<xliff:g id="SEPARATOR">=</xliff:g>Альбукерке<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C244" msgid="5425441385595386539">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тусон<xliff:g id="TIMEZONE">|MST</xliff:g>"</string>
+ <string name="C245" msgid="2117808251938937801">"С<xliff:g id="SEPARATOR">=</xliff:g>Сакрамента<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C246" msgid="3092246848082816772">"А<xliff:g id="SEPARATOR">=</xliff:g>Атланта<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C247" msgid="8206866466240263364">"К<xliff:g id="SEPARATOR">=</xliff:g>Кліўленд<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C248" msgid="2640187332546735575">"Н<xliff:g id="SEPARATOR">=</xliff:g>Новы Арлеан<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C249" msgid="2891345755858261436">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тампа<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C250" msgid="820338627695297018">"П<xliff:g id="SEPARATOR">=</xliff:g>Пітсбург<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C251" msgid="5944336862095193572">"Ц<xliff:g id="SEPARATOR">=</xliff:g>Цынцынаты<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C252" msgid="4879366628092590554">"М<xliff:g id="SEPARATOR">=</xliff:g>Маўнтын-В\'ю<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C253" msgid="131023875763265059">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рына<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C254" msgid="6114708580340716772">"Б<xliff:g id="SEPARATOR">=</xliff:g>Блэк-Рок-Сіці<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C255" msgid="7954132426931661492">"Д<xliff:g id="SEPARATOR">=</xliff:g>Доха<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C256" msgid="4677098546257306673">"П<xliff:g id="SEPARATOR">=</xliff:g>Пекін<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C257" msgid="6859408162854724420">"М<xliff:g id="SEPARATOR">=</xliff:g>Мумбаі<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C258" msgid="4883343467599097650">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дэлі<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C259" msgid="5562442240689501324">"О<xliff:g id="SEPARATOR">=</xliff:g>Осака<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C260" msgid="8364102554400427814">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лахор<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C261" msgid="4120312655526126931">"С<xliff:g id="SEPARATOR">=</xliff:g>Сана<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C262" msgid="5548180151889833">"Б<xliff:g id="SEPARATOR">=</xliff:g>Барселона<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C263" msgid="2667061188896159784">"М<xliff:g id="SEPARATOR">=</xliff:g>Мюнхен<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C264" msgid="2183960913782375290">"М<xliff:g id="SEPARATOR">=</xliff:g>Мілан<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C265" msgid="7302072801871420825">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Франкфурт<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C266" msgid="2043638131940526010">"Х<xliff:g id="SEPARATOR">=</xliff:g>Ханой<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C267" msgid="2210484655793571387">"А<xliff:g id="SEPARATOR">=</xliff:g>Анкара<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C268" msgid="263106973500029909">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бангалор<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C269" msgid="6541694468583591229">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бразілія, горад<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C270" msgid="1314079881051130603">"К<xliff:g id="SEPARATOR">=</xliff:g>Кейптаўн<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C271" msgid="8640235215580011665">"І<xliff:g id="SEPARATOR">=</xliff:g>Ісламабад<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C272" msgid="1609536549681428971">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рыа-дэ-Жанэйра<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C273" msgid="7079941149646181981">"Э<xliff:g id="SEPARATOR">=</xliff:g>Эн-Арбар<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C274" msgid="8459573593923702400">"Б<xliff:g id="SEPARATOR">=</xliff:g>Боўлдэр<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C275" msgid="6089570009772695384">"К<xliff:g id="SEPARATOR">=</xliff:g>Кембрыдж<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C276" msgid="8770778158932656740">"К<xliff:g id="SEPARATOR">=</xliff:g>Кэрклэнд<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C277" msgid="3027642546928363284">"М<xliff:g id="SEPARATOR">=</xliff:g>Мадысан<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C278" msgid="2380762577096499707">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гуанчжоу<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C279" msgid="8894272318704876379">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хайдарабад<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C280" msgid="7678401703785036372">"Р<xliff:g id="SEPARATOR">=</xliff:g>Рэстан<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C281" msgid="8023528134904066052">"Б<xliff:g id="SEPARATOR">=</xliff:g>Белу-Арызонты<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C282" msgid="6695477038758559199">"С<xliff:g id="SEPARATOR">=</xliff:g>Сант\'яга<xliff:g id="TIMEZONE">|America/Santiago</xliff:g>"</string>
+ <string name="C283" msgid="7769787200879321206">"М<xliff:g id="SEPARATOR">=</xliff:g>Манровія<xliff:g id="TIMEZONE">|Africa/Monrovia</xliff:g>"</string>
+ <string name="C284" msgid="6968458422900478829">"К<xliff:g id="SEPARATOR">=</xliff:g>Каломба<xliff:g id="TIMEZONE">|Asia/Colombo</xliff:g>"</string>
+ <string name="C285" msgid="1141404871109476705">"Ч<xliff:g id="SEPARATOR">=</xliff:g>Чыўаўа<xliff:g id="TIMEZONE">|America/Chihuahua</xliff:g>"</string>
+ <string name="C286" msgid="4996225818359904740">"С<xliff:g id="SEPARATOR">=</xliff:g>Салвадор<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C287" msgid="1988559263618010310">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гургаан<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C288" msgid="852288766460325989">"М<xliff:g id="SEPARATOR">=</xliff:g>Манчэстэр<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C290" msgid="9191944922972784727">"С<xliff:g id="SEPARATOR">=</xliff:g>Санкт-Пецярбург<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C291" msgid="4662360206594986867">"К<xliff:g id="SEPARATOR">=</xliff:g>Кракаў<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C292" msgid="3704362015612990315">"В<xliff:g id="SEPARATOR">=</xliff:g>Вроцлаў<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C293" msgid="3807981967850386200">"Г<xliff:g id="SEPARATOR">=</xliff:g>Гамбург<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C294" msgid="2800056634746552933">"О<xliff:g id="SEPARATOR">=</xliff:g>Оўлу<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C295" msgid="7855357204471157922">"Х<xliff:g id="SEPARATOR">=</xliff:g>Хайфа<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C296" msgid="2834361512883853579">"С<xliff:g id="SEPARATOR">=</xliff:g>Сан-Хуан<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C297" msgid="5314407834713913608">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тэгусігальпа<xliff:g id="TIMEZONE">|America/Tegucigalpa</xliff:g>"</string>
+ <string name="C298" msgid="4186340979527221275">"П<xliff:g id="SEPARATOR">=</xliff:g>Парамарыба<xliff:g id="TIMEZONE">|America/Paramaribo</xliff:g>"</string>
+ <string name="C299" msgid="5688169950851674667">"К<xliff:g id="SEPARATOR">=</xliff:g>Кіта<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C300" msgid="7351753589989414696">"Л<xliff:g id="SEPARATOR">=</xliff:g>Любляна<xliff:g id="TIMEZONE">|Europe/Ljubljana</xliff:g>"</string>
+ <string name="C301" msgid="9089921329206815602">"А<xliff:g id="SEPARATOR">=</xliff:g>Ашгабат<xliff:g id="TIMEZONE">|Asia/Ashgabat</xliff:g>"</string>
+ <string name="C302" msgid="6471051311513517449">"А<xliff:g id="SEPARATOR">=</xliff:g>Асмара<xliff:g id="TIMEZONE">|Africa/Asmara</xliff:g>"</string>
+ <string name="C303" msgid="6208957436062127281">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бандар-Серы-Бегаван<xliff:g id="TIMEZONE">|Asia/Brunei</xliff:g>"</string>
+ <string name="C304" msgid="7757188637892125245">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бангі<xliff:g id="TIMEZONE">|Africa/Bangui</xliff:g>"</string>
+ <string name="C305" msgid="5538312768539249335">"Б<xliff:g id="SEPARATOR">=</xliff:g>Банджул<xliff:g id="TIMEZONE">|Africa/Banjul</xliff:g>"</string>
+ <string name="C306" msgid="6400938736119754675">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бішкек<xliff:g id="TIMEZONE">|Asia/Bishkek</xliff:g>"</string>
+ <string name="C307" msgid="1169132195117591472">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бісау<xliff:g id="TIMEZONE">|Africa/Bissau</xliff:g>"</string>
+ <string name="C308" msgid="7704965635342439141">"Б<xliff:g id="SEPARATOR">=</xliff:g>Бужумбура<xliff:g id="TIMEZONE">|Africa/Bujumbura</xliff:g>"</string>
+ <string name="C309" msgid="1522235235310763925">"Д<xliff:g id="SEPARATOR">=</xliff:g>Дылі<xliff:g id="TIMEZONE">|Asia/Dili</xliff:g>"</string>
+ <string name="C310" msgid="8666508463588411257">"Д<xliff:g id="SEPARATOR">=</xliff:g>Душанбэ<xliff:g id="TIMEZONE">|Asia/Dushanbe</xliff:g>"</string>
+ <string name="C311" msgid="5940486195605635031">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Фунафуці<xliff:g id="TIMEZONE">|Pacific/Funafuti</xliff:g>"</string>
+ <string name="C312" msgid="1714210141256903683">"Х<xliff:g id="SEPARATOR">=</xliff:g>Ханіяра<xliff:g id="TIMEZONE">|Pacific/Guadalcanal</xliff:g>"</string>
+ <string name="C313" msgid="8390229571948311411">"Д<xliff:g id="SEPARATOR">=</xliff:g>Джуба<xliff:g id="TIMEZONE">|Africa/Juba</xliff:g>"</string>
+ <string name="C314" msgid="3840011425345102604">"К<xliff:g id="SEPARATOR">=</xliff:g>Кінгстаўн<xliff:g id="TIMEZONE">|America/St_Vincent</xliff:g>"</string>
+ <string name="C315" msgid="8962557999110557329">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лібрэвіль<xliff:g id="TIMEZONE">|Africa/Libreville</xliff:g>"</string>
+ <string name="C316" msgid="3674113287320887951">"Л<xliff:g id="SEPARATOR">=</xliff:g>Ламэ<xliff:g id="TIMEZONE">|Africa/Lome</xliff:g>"</string>
+ <string name="C317" msgid="4818049429422081055">"Л<xliff:g id="SEPARATOR">=</xliff:g>Луанда<xliff:g id="TIMEZONE">|Africa/Luanda</xliff:g>"</string>
+ <string name="C318" msgid="3814107319819817789">"Л<xliff:g id="SEPARATOR">=</xliff:g>Лусака<xliff:g id="TIMEZONE">|Africa/Lusaka</xliff:g>"</string>
+ <string name="C319" msgid="5757039321992317631">"М<xliff:g id="SEPARATOR">=</xliff:g>Маджура<xliff:g id="TIMEZONE">|Pacific/Majuro</xliff:g>"</string>
+ <string name="C320" msgid="8334348266391215583">"М<xliff:g id="SEPARATOR">=</xliff:g>Малаба<xliff:g id="TIMEZONE">|Africa/Malabo</xliff:g>"</string>
+ <string name="C321" msgid="5401323973667971972">"М<xliff:g id="SEPARATOR">=</xliff:g>Мапуту<xliff:g id="TIMEZONE">|Africa/Maputo</xliff:g>"</string>
+ <string name="C322" msgid="67637052310417975">"М<xliff:g id="SEPARATOR">=</xliff:g>Мбабанэ<xliff:g id="TIMEZONE">|Africa/Mbabane</xliff:g>"</string>
+ <string name="C323" msgid="4500721332684955521">"М<xliff:g id="SEPARATOR">=</xliff:g>Мароні<xliff:g id="TIMEZONE">|Indian/Comoro</xliff:g>"</string>
+ <string name="C324" msgid="1741927819842539260">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нджамена<xliff:g id="TIMEZONE">|Africa/Ndjamena</xliff:g>"</string>
+ <string name="C325" msgid="8771905307322194055">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нгерулмуд<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C326" msgid="2389198042593603472">"Н<xliff:g id="SEPARATOR">=</xliff:g>Ніямей<xliff:g id="TIMEZONE">|Africa/Niamey</xliff:g>"</string>
+ <string name="C327" msgid="5317479895686981912">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нікасія<xliff:g id="TIMEZONE">|Europe/Nicosia</xliff:g>"</string>
+ <string name="C328" msgid="6416405203954996861">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нуакшот<xliff:g id="TIMEZONE">|Africa/Nouakchott</xliff:g>"</string>
+ <string name="C329" msgid="6876960940903095843">"Н<xliff:g id="SEPARATOR">=</xliff:g>Нукуалофа<xliff:g id="TIMEZONE">|Pacific/Tongatapu</xliff:g>"</string>
+ <string name="C330" msgid="1572294706542426161">"У<xliff:g id="SEPARATOR">=</xliff:g>Уагадугу<xliff:g id="TIMEZONE">|Africa/Ouagadougou</xliff:g>"</string>
+ <string name="C331" msgid="2607492003890117689">"П<xliff:g id="SEPARATOR">=</xliff:g>Палікір<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C332" msgid="8349533418456323370">"Ф<xliff:g id="SEPARATOR">=</xliff:g>Філіпсбург<xliff:g id="TIMEZONE">|America/Lower_Princes</xliff:g>"</string>
+ <string name="C333" msgid="2842640664018042568">"П<xliff:g id="SEPARATOR">=</xliff:g>Падгорыца<xliff:g id="TIMEZONE">|Europe/Podgorica</xliff:g>"</string>
+ <string name="C334" msgid="3310146581437635671">"П<xliff:g id="SEPARATOR">=</xliff:g>Порт-Морсбі<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C335" msgid="3317158262102352303">"П<xliff:g id="SEPARATOR">=</xliff:g>Порт-Віла<xliff:g id="TIMEZONE">|Pacific/Efate</xliff:g>"</string>
+ <string name="C336" msgid="3810072761869903472">"П<xliff:g id="SEPARATOR">=</xliff:g>Порта-Нова<xliff:g id="TIMEZONE">|Africa/Porto-Novo</xliff:g>"</string>
+ <string name="C337" msgid="3412269218104112252">"П<xliff:g id="SEPARATOR">=</xliff:g>Прышціна<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C338" msgid="6151841959824325885">"Р<xliff:g id="SEPARATOR">=</xliff:g>Разо<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C339" msgid="8909994815975646525">"Т<xliff:g id="SEPARATOR">=</xliff:g>Ташкент<xliff:g id="TIMEZONE">|Asia/Tashkent</xliff:g>"</string>
+ <string name="C340" msgid="415479723070879485">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тбілісі<xliff:g id="TIMEZONE">|Asia/Tbilisi</xliff:g>"</string>
+ <string name="C341" msgid="2299478430610154042">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тхімпху<xliff:g id="TIMEZONE">|Asia/Thimphu</xliff:g>"</string>
+ <string name="C342" msgid="7997617194333170685">"Т<xliff:g id="SEPARATOR">=</xliff:g>Тырана<xliff:g id="TIMEZONE">|Europe/Tirane</xliff:g>"</string>
+ <string name="C343" msgid="622805851462854910">"В<xliff:g id="SEPARATOR">=</xliff:g>Вадуц<xliff:g id="TIMEZONE">|Europe/Vaduz</xliff:g>"</string>
+ <string name="C344" msgid="7629820826386244509">"В<xliff:g id="SEPARATOR">=</xliff:g>В\'енцьян<xliff:g id="TIMEZONE">|Asia/Vientiane</xliff:g>"</string>
+ <string name="C345" msgid="1881198350378158072">"В<xliff:g id="SEPARATOR">=</xliff:g>Віндхук<xliff:g id="TIMEZONE">|Africa/Windhoek</xliff:g>"</string>
+ <string name="C346" msgid="2947674392768816097">"Я<xliff:g id="SEPARATOR">=</xliff:g>Яўндэ<xliff:g id="TIMEZONE">|Africa/Douala</xliff:g>"</string>
+ <string name="C347" msgid="6291282205599716861">"Я<xliff:g id="SEPARATOR">=</xliff:g>Ярэн<xliff:g id="TIMEZONE">|Pacific/Nauru</xliff:g>"</string>
+ <string name="C348" msgid="8462071023392592539">"Е<xliff:g id="SEPARATOR">=</xliff:g>Ерэван<xliff:g id="TIMEZONE">|Asia/Yerevan</xliff:g>"</string>
+</resources>
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
new file mode 100644
index 0000000..1eebb6b
--- /dev/null
+++ b/res/values-be-rBY/strings.xml
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_label" msgid="6674495003718166674">"Гадзіннік"</string>
+ <string name="delete_alarm" msgid="3457780990646206817">"Выдаліць сігнал"</string>
+ <string name="label" msgid="162189613902857319">"Метка"</string>
+ <string name="default_label" msgid="5590025289805630372">"Будзільнік"</string>
+ <string name="alarm_vibrate" msgid="3476686921490362230">"Вібрацыя"</string>
+ <string name="alarm_repeat" msgid="7242985466344233206">"Паўтараць"</string>
+ <string name="alert" msgid="6506982899651975645">"Рынгтон абвесткi"</string>
+ <string name="default_alarm_ringtone_title" msgid="2916376768509623643">"Стандартны сігнал будзільніка"</string>
+ <string name="default_timer_ringtone_title" msgid="1370799536406862317">"Таймер скончыўся"</string>
+ <string name="alarm_tomorrow" msgid="131356848787643420">"Заўтра"</string>
+ <string name="alarm_today" msgid="7873594221106531654">"Сёння"</string>
+ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Адхіліць"</string>
+ <string name="alarm_alert_dismiss_now_text" msgid="7327972388636305792">"Адхіліць зараз"</string>
+ <string name="alarm_missed_title" msgid="3828345099754063392">"Прапушчаны будзільнік"</string>
+ <string name="alarm_missed_text" msgid="6585658367289194023">"<xliff:g id="ALARM_TIME">%s</xliff:g> – <xliff:g id="ALARM_LABEL">%s</xliff:g>"</string>
+ <string name="alarm_alert_snoozed_text" msgid="7064642998528766113">"Адкладзена"</string>
+ <plurals name="alarm_alert_snooze_duration" formatted="false" msgid="7844300009062867865">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> хв</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> хв</item>
+ <item quantity="many"><xliff:g id="NUMBER">%d</xliff:g> хв</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> хв</item>
+ </plurals>
+ <string name="alarm_alert_off_text" msgid="4472073417593915002">"Будзільнік адкл"</string>
+ <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Адкласці"</string>
+ <plurals name="alarm_alert_snooze_set" formatted="false" msgid="3212729193036041768">
+ <item quantity="one">Адкладваецца на <xliff:g id="MINUTES">%d</xliff:g> хвіліну.</item>
+ <item quantity="few">Адкладваецца на <xliff:g id="MINUTES">%d</xliff:g> хвіліны.</item>
+ <item quantity="many">Адкладваецца на <xliff:g id="MINUTES">%d</xliff:g> хвілін.</item>
+ <item quantity="other">Адкладваецца на <xliff:g id="MINUTES">%d</xliff:g> хвіліны.</item>
+ </plurals>
+ <string name="alarm_alert_snooze_until" msgid="6958013659168344550">"Перанос да <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="alarm_alert_predismiss_title" msgid="5723945586913705445">"Хутка прагучыць будзільнік"</string>
+ <string name="missed_alarm_has_been_deleted" msgid="5295473204045979335">"Ваш прапушчаны будзільнік быў выдалены"</string>
+ <string name="timer_notifications_less_min" msgid="5481375048976427255">"Застаецца менш за хвiлiну"</string>
+ <string name="timer_notifications_hours" msgid="1613266446037145138">"<xliff:g id="HOURS">%1$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_minutes" msgid="8543138714519498893">"<xliff:g id="MINUTES">%2$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_hours_minutes" msgid="4301167788642025702">"Застаецца <xliff:g id="HOURS">%1$s</xliff:g> <xliff:g id="MINUTES">%2$s</xliff:g>"</string>
+ <string name="timer_remaining_single" msgid="6782851171906765864">"застаецца"</string>
+ <string name="timer_remaining_multiple" msgid="6052775962092160851">"застаецца"</string>
+ <string-array name="alarm_set">
+ <item msgid="6450913786084215050">"Будзільнік спрацуе менш чым праз 1 хвіліну."</item>
+ <item msgid="6002066367368421848">"Будзільнік спрацуе праз <xliff:g id="DAYS">%1$s</xliff:g>."</item>
+ <item msgid="8824719306247973774">"Будзільнік спрацуе праз <xliff:g id="HOURS">%2$s</xliff:g>."</item>
+ <item msgid="8182406852935468862">"Будзільнік спрацуе праз <xliff:g id="DAYS">%1$s</xliff:g> <xliff:g id="HOURS">%2$s</xliff:g>."</item>
+ <item msgid="2532279224777213194">"Будзільнік спрацуе праз <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="5936557894247187717">"Будзільнік спрацуе праз <xliff:g id="DAYS">%1$s</xliff:g> <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="9115697840826129603">"Будзільнік спрацуе праз <xliff:g id="HOURS">%2$s</xliff:g> <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ <item msgid="2332583385137381060">"Будзільнік спрацуе праз <xliff:g id="DAYS">%1$s</xliff:g> <xliff:g id="HOURS">%2$s</xliff:g> <xliff:g id="MINUTES">%3$s</xliff:g>."</item>
+ </string-array>
+ <plurals name="days" formatted="false" msgid="3706846447285206235">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> дзень</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дні</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> дзён</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="3871283109767171655">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> гадзіна</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> гадзіны</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> гадзін</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> гадзіны</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="5484431721696058697">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> хвіліна</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> хвіліны</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> хвілін</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> хвіліны</item>
+ </plurals>
+ <string name="every_day" msgid="4100909974923444602">"Штодзень"</string>
+ <string name="day_concat" msgid="971998564991636532">", "</string>
+ <string name="loading_widget" msgid="5306242862476796500">"Ідзе загрузка…"</string>
+ <string name="analog_gadget" msgid="1670505720837152766">"Гадзіннік са стрэлкамі"</string>
+ <string name="digital_gadget" msgid="2326954556720571358">"Лічбавы гадзіннік"</string>
+ <string name="settings" msgid="5849739030579520686">"Налады"</string>
+ <string name="snooze_duration_title" msgid="1097309861110780483">"Iнтэрвал паўтору"</string>
+ <plurals name="snooze_duration" formatted="false" msgid="3112918131095248271">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> хвіліна</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> хвіліны</item>
+ <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> хвілін</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> хвіліны</item>
+ </plurals>
+ <plurals name="snooze_picker_label" formatted="false" msgid="322739253661747732">
+ <item quantity="one">хвіліна</item>
+ <item quantity="few">хвіліны</item>
+ <item quantity="many">хвілін</item>
+ <item quantity="other">хвіліны</item>
+ </plurals>
+ <string name="crescendo_duration_title" msgid="8606408542726189528">"Паступова павялічваць гучнасць"</string>
+ <string name="no_crescendo_duration" msgid="383801592865899932">"Адключана"</string>
+ <string name="crescendo_duration" msgid="6641284876778266541">"Секунд: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="crescendo_picker_label" msgid="7758024047003091056">"секунды"</string>
+ <string name="auto_silence_title" msgid="2012754009554434544">"Адключаць гук праз"</string>
+ <plurals name="auto_silence_summary" formatted="false" msgid="6579258788774360396">
+ <item quantity="one"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> хвіліна</item>
+ <item quantity="few"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> хвіліны</item>
+ <item quantity="many"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> хвілін</item>
+ <item quantity="other"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> хвіліны</item>
+ </plurals>
+ <string name="auto_silence_never" msgid="4821982647348750809">"Ніколі"</string>
+ <string-array name="auto_silence_entries">
+ <item msgid="3024545954917711306">"1 хвіліна"</item>
+ <item msgid="5431906692406316549">"5 хвілін"</item>
+ <item msgid="7742728812068919959">"10 хвілін"</item>
+ <item msgid="2855948657259647629">"15 хвілін"</item>
+ <item msgid="6330196381284475079">"20 хвілін"</item>
+ <item msgid="7809240121716151904">"25 хвілін"</item>
+ <item msgid="4278641338024561333">"Ніколі"</item>
+ </string-array>
+ <string name="week_start_title" msgid="4268917518596832096">"Першы дзень тыдня"</string>
+ <string-array name="week_start_entries">
+ <item msgid="9010198173394482639">"Субота"</item>
+ <item msgid="3993530639455360921">"Нядзеля"</item>
+ <item msgid="8594709368683324282">"Панядзелак"</item>
+ </string-array>
+ <string name="alarm_volume_title" msgid="8506245173912428522">"Гучнасць будзільніка"</string>
+ <string name="silent_ringtone_title" msgid="6177287302898634765">"Ціхі рэжым"</string>
+ <string name="unknown_ringtone_title" msgid="6637522029614550112">"Невядома"</string>
+ <string name="alarm_volume_muted" msgid="6658289289695673569">"Гук будзільніка адключаны"</string>
+ <string name="unmute_alarm_volume" msgid="2655009276035357497">"Уключыць гук"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Стандартная мелодыя будзільніка – цішыня"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Змяніць"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"На прыладзе заданы рэжым поўнай цішыні"</string>
+ <string name="volume_button_setting_title" msgid="6937131248843413357">"Кнопкі гучнасці"</string>
+ <string-array name="volume_button_setting_entries">
+ <item msgid="7972756698723318690">"Адкласці"</item>
+ <item msgid="3450979320164769576">"Адхіліць"</item>
+ <item msgid="6302517608411378024">"Нічога не рабіць"</item>
+ </string-array>
+ <string name="label_description" msgid="8736179296142915727">"Метка"</string>
+ <string name="ringtone_description" msgid="7580922112921069925">"Мелодыя выкліку"</string>
+ <string name="menu_alarm" msgid="4772010125376647519">"Будзільнік"</string>
+ <string name="menu_timer" msgid="6459070074762877114">"Таймер"</string>
+ <string name="menu_clock" msgid="5612760670606829805">"Гадзіннік"</string>
+ <string name="menu_stopwatch" msgid="3396117705293574701">"Секундамер"</string>
+ <string name="button_alarms" msgid="3907838219512538763">"Дадаць будзільнік"</string>
+ <string name="button_cities" msgid="4555761857494501363">"Гарады"</string>
+ <string name="menu_item_settings" msgid="1413723516369078665">"Налады"</string>
+ <string name="menu_item_help" msgid="4570953476186849841">"Даведка"</string>
+ <string name="menu_item_night_mode" msgid="3486930302245398975">"Начны рэжым"</string>
+ <string name="menu_item_sort_by_gmt_offset" msgid="3120860422682721706">"Сартаваць па часе"</string>
+ <string name="menu_item_sort_by_name" msgid="1762931290495104106">"Сартаваць па назве"</string>
+ <string name="selected_cities_label" msgid="3607479399424246605">"Выбраныя гарады"</string>
+ <string name="sw_resume_button" msgid="2569360966002022248">"Узнавіць"</string>
+ <string name="sw_reset_button" msgid="6616804728322906117">"Скінуць"</string>
+ <string name="sw_start_button" msgid="8373422516681242270">"Запусціць"</string>
+ <string name="sw_pause_button" msgid="2422084453454138042">"Прыпыніць"</string>
+ <string name="sw_lap_button" msgid="6992264696039004233">"Круг"</string>
+ <string name="sw_share_button" msgid="4478648110382859382">"Абагуліць"</string>
+ <string name="hours_label" msgid="3393478155635368097">"гадз"</string>
+ <string name="minutes_label" msgid="3568098128251438588">"хв"</string>
+ <string name="seconds_label" msgid="124655952824003246">"с"</string>
+ <string name="hours_label_description" msgid="8652842524970971830">"гадзіны"</string>
+ <string name="minutes_label_description" msgid="965686733490357796">"хвіліны"</string>
+ <string name="seconds_label_description" msgid="3821620053141299692">"секунды"</string>
+ <string name="sw_share_main" msgid="7703563468204234405">"Мой час: <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="sw_share_laps" msgid="614390674795945007">"Час круга:"</string>
+ <string name="sw_notification_lap_number" msgid="3535420316052647126">"Круг <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <plurals name="Nhours_description" formatted="false" msgid="4539186407746763655">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> гадзіна</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> гадзіны</item>
+ <item quantity="many"><xliff:g id="NUMBER">%d</xliff:g> гадзін</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> гадзіны</item>
+ </plurals>
+ <plurals name="Nminutes_description" formatted="false" msgid="6373760365221990859">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> хвіліна</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> хвіліны</item>
+ <item quantity="many"><xliff:g id="NUMBER">%d</xliff:g> хвілін</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> хвіліны</item>
+ </plurals>
+ <plurals name="Nseconds_description" formatted="false" msgid="6456500168536594889">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> секунда</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> секунды</item>
+ <item quantity="many"><xliff:g id="NUMBER">%d</xliff:g> секунд</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> секунды</item>
+ </plurals>
+ <string name="timer_add_timer" msgid="862733633862574752">"Дадаць таймер"</string>
+ <string name="timer_start" msgid="6158486445614356442">"Запусціць"</string>
+ <string name="timer_delete" msgid="8699122001991909302">"Выдаліць"</string>
+ <string name="timer_descriptive_delete" msgid="8794915342760383536">"Выдаліць <xliff:g id="NUMBER_STRING">%s</xliff:g>"</string>
+ <string name="timer_plus_one" msgid="6631211310420106116">"Дадаць 1 хвiліну"</string>
+ <string name="timer_plus_1_min" msgid="8645224089494875062">"Дадаць 1 хв"</string>
+ <string name="timer_stop" msgid="3361154678667736722">"Спыніць"</string>
+ <string name="timer_stop_all" msgid="9080780442843034376">"Спыніць усе таймеры"</string>
+ <string name="timer_reset" msgid="7848424809190171640">"Скінуць"</string>
+ <string name="timer_cancel" msgid="3572868404230815644">"Скасаваць"</string>
+ <string name="timer_canceled" msgid="7327923392567128060">"Таймер скасаваны"</string>
+ <string name="timer_times_up" msgid="9190440395938519009">"Час выйшаў"</string>
+ <string name="timer_multi_times_up" msgid="1239104626836080409">"Таймеры (<xliff:g id="NUM_TIMERS">%d</xliff:g> шт.) скончыліся"</string>
+ <string name="timer_notification_label" msgid="4933184831583137249">"Таймер"</string>
+ <string name="timer_pause" msgid="3748323712728398743">"Прыпыніць"</string>
+ <string name="timer_reset_all" msgid="7530633132757866087">"Скінуць усе таймеры"</string>
+ <string-array name="sw_share_strings">
+ <item msgid="842841032273927988">"Ты хутчэй маланкi."</item>
+ <item msgid="6332879039890727169">"Атрымлівайце асалоду ад вынiкаў сваёй працы."</item>
+ <item msgid="815382761274660130">"Андроiды хуткiя, але не настолькi!"</item>
+ <item msgid="7916250650982813737">"Уф..."</item>
+ <item msgid="6836603904515182333">"Разоў: L33t."</item>
+ <item msgid="7508085100680861631">"Хутка ты."</item>
+ <item msgid="5961245252909589573">"Паляцелi з касмiчнай хуткасцю!"</item>
+ <item msgid="5211891900854545940">"Проста скокнiце ўлева."</item>
+ <item msgid="9071353477103826053">"Ёсць да чаго iмкнуцца."</item>
+ <item msgid="3785193933691117181">"Фатонная хуткасць."</item>
+ </string-array>
+ <string name="home_label" msgid="4436139365695453870">"Галоўная старонка"</string>
+ <string name="cities_activity_title" msgid="8552462751129256730">"Гарады"</string>
+ <string name="clock_settings" msgid="8317286807280600391">"Гадзіннік"</string>
+ <string name="clock_style" msgid="2265011060429742344">"Стыль"</string>
+ <string name="open_date_settings" msgid="7712226973337806152">"Змяніць дату і час"</string>
+ <string-array name="clock_style_entries">
+ <item msgid="917900462224167608">"Са стрэлкамі"</item>
+ <item msgid="8483930821046925592">"Лічбавы"</item>
+ </string-array>
+ <string name="automatic_home_clock" msgid="6274174710735449252">"Гадзіннік майго часавага пояса"</string>
+ <string name="automatic_home_clock_summary" msgid="6020476321040807273">"Падчас падарожжа ў рэгiёне, дзе час адрознiваецца, дадайце хатнi гадзiннiк"</string>
+ <string name="home_time_zone" msgid="9199730676287974501">"Дамашні часавы пояс"</string>
+ <string name="home_time_zone_title" msgid="807894493443834624">"Дамашні часавы пояс"</string>
+ <string name="time_picker_cancel" msgid="7437106489606013077">"Скасаваць"</string>
+ <string name="time_picker_set" msgid="331153175471468051">"ОК"</string>
+ <string name="city_checked" msgid="616847871968019">"Адзначаны горад <xliff:g id="CITY_NAME">%s</xliff:g>"</string>
+ <string name="city_unchecked" msgid="710212932781145918">"Знята адзнака з горада <xliff:g id="CITY_NAME">%s</xliff:g>"</string>
+ <string-array name="timezone_labels">
+ <item msgid="5495601234086197399">"Маршалавы астравы"</item>
+ <item msgid="4196408495909011020">"Востраў Мідуэй"</item>
+ <item msgid="1414384194857730006">"Гаваі"</item>
+ <item msgid="2687091371581931926">"Аляска"</item>
+ <item msgid="1922100269679049660">"Ціхаакіянскі час"</item>
+ <item msgid="7156402158716866161">"Ціхуана"</item>
+ <item msgid="1144117502254612241">"Арызона"</item>
+ <item msgid="101284182011722637">"Чыўаўа"</item>
+ <item msgid="689121094232986897">"Горны час"</item>
+ <item msgid="5445331923942302756">"Цэнтральная Амерыка"</item>
+ <item msgid="2749806434052452351">"Цэнтральны час"</item>
+ <item msgid="3997138870229703753">"Мехіка"</item>
+ <item msgid="5425567073027744888">"Саскачэван"</item>
+ <item msgid="2877342865396629368">"Багата"</item>
+ <item msgid="568682398893899670">"Усходні час"</item>
+ <item msgid="668135984541863866">"Венесуэла"</item>
+ <item msgid="3737474220861486223">"Атлантычны час (Барбадас)"</item>
+ <item msgid="6279116051273436870">"Атлантычны час (Канада)"</item>
+ <item msgid="8513382867172014244">"Манаўс"</item>
+ <item msgid="7776299003105932407">"Сант\'яга"</item>
+ <item msgid="8636989494746218677">"Ньюфаўндленд"</item>
+ <item msgid="4402541016410147505">"Бразілія, горад"</item>
+ <item msgid="2251184440733164084">"Буэнас-Айрэс"</item>
+ <item msgid="6202926618569004969">"Грэнландыя"</item>
+ <item msgid="2355275037115290628">"Монтавідэа"</item>
+ <item msgid="1377549694711708945">"Сярэднеатлантыч. час"</item>
+ <item msgid="3457671272126347981">"Азорскія астравы"</item>
+ <item msgid="3659315141063710840">"Каба-Вердэ"</item>
+ <item msgid="1260941741802367635">"Касабланка"</item>
+ <item msgid="8275203689687954762">"Лондан, Дублін"</item>
+ <item msgid="5970179539479320905">"Амстэрдам, Берлін"</item>
+ <item msgid="5396319478750517962">"Бялград"</item>
+ <item msgid="8688787475056663004">"Брусель"</item>
+ <item msgid="3415827874921681622">"Сараева"</item>
+ <item msgid="402008965928320066">"Вiндхук"</item>
+ <item msgid="6436942724959275569">"Усходнеафрыканскі час"</item>
+ <item msgid="954536568417204026">"Аман, Іарданія"</item>
+ <item msgid="8932745482008902551">"Афіны, Стамбул"</item>
+ <item msgid="320025725949024510">"Бейрут, Ліван"</item>
+ <item msgid="7242083112551905970">"Каір"</item>
+ <item msgid="7241520146011450419">"Хельсінкі"</item>
+ <item msgid="2717065017510546526">"Ерусалім"</item>
+ <item msgid="8698556287741466553">"Мінск"</item>
+ <item msgid="1797598357342084506">"Харарэ"</item>
+ <item msgid="5169119919905066998">"Багдад"</item>
+ <item msgid="2615788116201065182">"Масква"</item>
+ <item msgid="9084354867885584646">"Кувейт"</item>
+ <item msgid="1351570519986178268">"Найробі"</item>
+ <item msgid="7094569580635877460">"Тэгеран"</item>
+ <item msgid="3953138772617909704">"Баку"</item>
+ <item msgid="2868893113598800752">"Тбілісі"</item>
+ <item msgid="7088581865802476373">"Ерэван"</item>
+ <item msgid="1941122257623887992">"Дубаі"</item>
+ <item msgid="9194797225058249720">"Кабул"</item>
+ <item msgid="6486569254364577332">"Ісламабад, Карачы"</item>
+ <item msgid="5487724896895412089">"Уральск"</item>
+ <item msgid="364906869710826982">"Екацярынбург"</item>
+ <item msgid="2106505051751383358">"Калькута"</item>
+ <item msgid="6851586621581501447">"Шры-Ланка"</item>
+ <item msgid="800438544128213134">"Катманду"</item>
+ <item msgid="6173621471007643021">"Астана"</item>
+ <item msgid="8645125891971581128">"Янгон"</item>
+ <item msgid="2886407505119737794">"Краснаярск"</item>
+ <item msgid="3408222398188107090">"Бангкок"</item>
+ <item msgid="4441612937172851228">"Пекін"</item>
+ <item msgid="4936715789028996930">"Ганконг"</item>
+ <item msgid="4261031143777385525">"Іркуцк"</item>
+ <item msgid="3538060959338191835">"Куала-Лумпур"</item>
+ <item msgid="1438847562643099201">"Перт"</item>
+ <item msgid="3063913827688244383">"Тайбэй"</item>
+ <item msgid="3502757135046564209">"Сеул"</item>
+ <item msgid="6107588684519111669">"Токіо, Осака"</item>
+ <item msgid="4350769099755608471">"Якуцк"</item>
+ <item msgid="2422707004533526462">"Адэлаіда"</item>
+ <item msgid="1292192084554134339">"Дарвін"</item>
+ <item msgid="1320883699470001716">"Брысбэн"</item>
+ <item msgid="5137198806146386527">"Хобарт"</item>
+ <item msgid="5920063686933941174">"Сідней, Канбера"</item>
+ <item msgid="615906039696009425">"Уладзівасток"</item>
+ <item msgid="7738680449356275374">"Гуам"</item>
+ <item msgid="2882915026380778227">"Магадан"</item>
+ <item msgid="8255615641810148152">"Окленд"</item>
+ <item msgid="3027153773466391728">"Фіджы"</item>
+ <item msgid="5911600083231840181">"Тангійская"</item>
+ <item msgid="5176858645450908751">"Джакарта"</item>
+ </string-array>
+ <string name="alarm_settings" msgid="2947147071388290814">"Будзільнікі"</string>
+ <string name="timer_service_desc" msgid="2256002649882602433">"Апрацоўвае дзеянні з апавяшчэнняў таймера."</string>
+ <string name="stopwatch_service_desc" msgid="9220132827343760767">"Апрацоўвае дзеянні з апавяшчэнняў секундамера."</string>
+ <string name="swn_paused" msgid="6364358842808263589">"Прыпынены"</string>
+ <string name="description_direction_right" msgid="5709209043267548985">"Правядзіце пальцам направа, каб адключыць"</string>
+ <string name="description_direction_left" msgid="7448141043674998679">"Правядзіце пальцам налева, каб адкласці"</string>
+ <string name="description_direction_both" msgid="1841309486023845685">"Правядзіце пальцам налева, каб адкласці, або направа, каб адключыць"</string>
+ <string name="timer_settings" msgid="7955522143086154795">"Таймеры"</string>
+ <string name="timer_ringtone_title" msgid="7630214935791599619">"Мелодыя таймера"</string>
+ <string name="timer_vibrate_title" msgid="7788920024785587518">"Вібрацыя таймера"</string>
+ <string name="timer_paused" msgid="5941160896040771462">"Таймер прыпынены"</string>
+ <string name="timers_stopped" msgid="3186191253226005149">"Таймеры (<xliff:g id="NUMBER">%d</xliff:g> шт.) спынены"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Краніце, каб убачыць свае таймеры"</string>
+ <string name="timers_in_use" msgid="5570729467344408506">"Таймераў: <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <string name="next_timer_notif" msgid="6136454740115613653">"Наступны таймер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Налады застаўкі"</string>
+ <string name="night_mode_title" msgid="5983813889469616299">"Начны рэжым"</string>
+ <string name="night_mode_summary" msgid="1017350187324162631">"Вельмі няяркі дысплэй (для цёмных памяшканняў)"</string>
+ <string name="expand_alarm" msgid="7392616528943305020">"Разгарнуць абвестку"</string>
+ <string name="collapse_alarm" msgid="3561772046433483980">"Згарнуць абвесткi"</string>
+ <string name="alarm_undo" msgid="5710042601177655254">"адрабіць"</string>
+ <string name="alarm_deleted" msgid="6131529309389084785">"Будзільнік выдалены"</string>
+ <string name="world_day_of_week_label" msgid="5911196322328341288">"/ <xliff:g id="LABEL">%s</xliff:g>"</string>
+ <string name="next_alarm_description" msgid="2650244835760747046">"Наступны сігнал: <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_alarms" msgid="6429431324842022917">"Няма будзільнікаў"</string>
+ <string name="invalid_time" msgid="2782334750243998633">"Недапушчальны час <xliff:g id="INVALID_HOUR">%1$d</xliff:g>:<xliff:g id="INVALID_MINUTES">%2$d</xliff:g><xliff:g id="INVALID_AMPM">%3$s</xliff:g>"</string>
+ <string name="no_alarm_at" msgid="8140632482969193119">"Няма будзільніка на <xliff:g id="ALARM_TIME_HOUR">%1$d</xliff:g>:<xliff:g id="ALARM_TIME_MINUTES">%2$d</xliff:g>"</string>
+ <string name="no_scheduled_alarms" msgid="2115420148192753534">"Няма запланаваных будзільнікаў"</string>
+ <string name="no_label_specified" msgid="2008482054428460626">"Няма паметкі"</string>
+ <string name="no_alarms_with_label" msgid="6250998794542941665">"Няма будзільнікаў з такой паметкай"</string>
+ <string name="stopwatch_isnt_running" msgid="7147219965448204727">"Секундамер не запушчаны"</string>
+ <string name="stopwatch_paused" msgid="2187615623275408601">"Секундамер прыпынены"</string>
+ <string name="stopwatch_reset" msgid="7585914953721021042">"Секундамер скінуты"</string>
+ <string name="stopwatch_lapped" msgid="5844686448815550482">"Секундамер адзначыў круг"</string>
+ <string name="stopwatch_started" msgid="7843882246387176304">"Секундамер запушчаны"</string>
+ <string name="no_alarm_scheduled_for_this_time" msgid="4463069177414482818">"Няма будзільніка, запланаванага на гэты час"</string>
+ <string name="alarm_is_dismissed" msgid="5509897230565826642">"Будзільнік на <xliff:g id="ALARM_TIME">%s</xliff:g> адключаны"</string>
+ <string name="alarm_is_set" msgid="5503226382620011088">"Будзільнік пастаўлены на <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_timers_exist" msgid="7062019300048831373">"Няма таймераў"</string>
+ <string name="too_many_timers_exist" msgid="6339194231767431627">"Існуе больш за адзін таймер"</string>
+ <string name="timer_does_not_exist" msgid="4457482976523984231">"Таймер быў выдалены."</string>
+ <string name="timer_created" msgid="4381027137335885547">"Таймер створаны"</string>
+ <string name="timer_was_reset" msgid="6495796785185062631">"Скінуць таймер"</string>
+ <string name="timer_deleted" msgid="9110322362460029392">"Таймер выдалены"</string>
+ <string name="timer_started" msgid="6715582052946641641">"Таймер запушчаны"</string>
+ <string name="invalid_timer_length" msgid="3104567893212932487">"Недапушчальная працягласць таймера"</string>
+ <string name="no_city_selected" msgid="1007596865203283741">"Горад не выбраны"</string>
+ <string name="the_city_you_specified_is_not_available" msgid="1753597460426454543">"Пазначаны горад недаступны"</string>
+ <string name="the_city_already_added" msgid="3799050213771793020">"Гэты горад ужо быў дададзены"</string>
+ <string name="city_added" msgid="1335509457349179514">"Горад <xliff:g id="CITY_NAME">%s</xliff:g> дададзены"</string>
+ <string name="city_deleted" msgid="3935141305276867838">"Горад <xliff:g id="CITY_NAME">%s</xliff:g> выдалены"</string>
+ <string name="alarm_cant_be_dismissed_still_more_than_24_hours_away" msgid="8810520940995307437">"Будзільнік на <xliff:g id="ALARM_TIME">%s</xliff:g> не можа быць адключаны зараз, да яго засталося больш за 24 гадзіны"</string>
+ <string name="dismiss_alarm" msgid="7204593078688533541">"Адключыць будзільнік"</string>
+ <string name="pick_alarm_to_dismiss" msgid="5408769235866082896">"Выберыце будзільнік, якія трэба адключыць"</string>
+ <string name="no_firing_alarms" msgid="4986161963178722289">"Няма актыўных будзільнікаў"</string>
+ <string name="alarm_is_snoozed" msgid="7044644119744928846">"Будзільнік на <xliff:g id="ALARM_TIME">%s</xliff:g> адкладзены на 10 хвілін"</string>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 7b706d9..9efe2aa 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Неизвестно"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Силата на звука на будилника е заглушена"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Включване на звука"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"За устройството е зададена пълна тишина"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Бутони за силата на звука"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Отлагане"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Вибриране на таймера"</string>
<string name="timer_paused" msgid="5941160896040771462">"Таймерът е на пауза"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> таймера са на пауза"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Докоснете, за да видите таймерите си"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Докоснете, за да видите таймерите си"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> таймера"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Следващ таймер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Настройки за „Сънища“"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Настройки за скрийнсейвър"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Нощен режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Много затъмнен дисплей (за тъмни стаи)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Разгъване на будилника"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index c5b6564..7ac2c70 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"অজানা"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"অ্যালার্মের ভলিউম নিঃশব্দ করা হয়েছে"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"সশব্দ করুন"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"ডিফল্ট অ্যালার্মের রিংটোন হ\'ল নীরব"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"পরিবর্তন"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ডিভাইসকে সম্পূর্ণ নীরব অবস্থায় সেট করা রয়েছে"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ভলিউম বোতাম"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"স্নুজ"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"টাইমারের স্পন্দন"</string>
<string name="timer_paused" msgid="5941160896040771462">"টাইমারে বিরাম দেওয়া হয়েছে"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g>টি টাইমারে বিরাম দেওয়া হয়েছে"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"আপনার টাইমারগুলি দেখার জন্য ছোঁন"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"আপনার টাইমারগুলি দেখতে আলতো চাপ দিন"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> টি টাইমার"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"পরবর্তী টাইমার: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"স্ক্রিনসেভার সেটিংস"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"স্ক্রীন-সেভারের সেটিংস"</string>
<string name="night_mode_title" msgid="5983813889469616299">"রাতের মোড"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"অত্যন্ত অস্পষ্ট প্রদর্শন (অন্ধকার ঘরের জন্য)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"অ্যালার্ম প্রসারিত করুন"</string>
diff --git a/res/values-bs-rBA/cities.xml b/res/values-bs-rBA/cities.xml
new file mode 100644
index 0000000..6e03455
--- /dev/null
+++ b/res/values-bs-rBA/cities.xml
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2016 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="C1" msgid="3622720549928625541">"<xliff:g id="SEPARATOR">=</xliff:g>Abidžan<xliff:g id="TIMEZONE">|Africa/Abidjan</xliff:g>"</string>
+ <string name="C2" msgid="9073993995416728918">"<xliff:g id="SEPARATOR">=</xliff:g>Akra<xliff:g id="TIMEZONE">|Africa/Accra</xliff:g>"</string>
+ <string name="C3" msgid="5172979423931428620">"<xliff:g id="SEPARATOR">=</xliff:g>Adis Abeba<xliff:g id="TIMEZONE">|Africa/Addis_Ababa</xliff:g>"</string>
+ <string name="C4" msgid="4450258423854546267">"<xliff:g id="SEPARATOR">=</xliff:g>Alžir<xliff:g id="TIMEZONE">|Africa/Algiers</xliff:g>"</string>
+ <string name="C5" msgid="8063142106679202722">"<xliff:g id="SEPARATOR">=</xliff:g>Blantyre<xliff:g id="TIMEZONE">|Africa/Blantyre</xliff:g>"</string>
+ <string name="C6" msgid="1620940469531839828">"<xliff:g id="SEPARATOR">=</xliff:g>Brazavil<xliff:g id="TIMEZONE">|Africa/Brazzaville</xliff:g>"</string>
+ <string name="C7" msgid="8450502029020824529">"<xliff:g id="SEPARATOR">=</xliff:g>Kairo<xliff:g id="TIMEZONE">|Africa/Cairo</xliff:g>"</string>
+ <string name="C8" msgid="5843391672611053116">"<xliff:g id="SEPARATOR">=</xliff:g>Kazablanka<xliff:g id="TIMEZONE">|Africa/Casablanca</xliff:g>"</string>
+ <string name="C9" msgid="2164088076645942134">"<xliff:g id="SEPARATOR">=</xliff:g>Konakri<xliff:g id="TIMEZONE">|Africa/Conakry</xliff:g>"</string>
+ <string name="C10" msgid="6275085554326816487">"<xliff:g id="SEPARATOR">=</xliff:g>Dakar<xliff:g id="TIMEZONE">|Africa/Dakar</xliff:g>"</string>
+ <string name="C11" msgid="8124988526568339100">"<xliff:g id="SEPARATOR">=</xliff:g>Dar es Salam<xliff:g id="TIMEZONE">|Africa/Dar_es_Salaam</xliff:g>"</string>
+ <string name="C12" msgid="9058858575164534385">"DŽ<xliff:g id="SEPARATOR">=</xliff:g>Džibuti<xliff:g id="TIMEZONE">|Africa/Djibouti</xliff:g>"</string>
+ <string name="C13" msgid="1020128319695123468">"<xliff:g id="SEPARATOR">=</xliff:g>Freetown<xliff:g id="TIMEZONE">|Africa/Freetown</xliff:g>"</string>
+ <string name="C14" msgid="5466600602512133072">"<xliff:g id="SEPARATOR">=</xliff:g>Gaborone<xliff:g id="TIMEZONE">|Africa/Gaborone</xliff:g>"</string>
+ <string name="C15" msgid="4045696872348427594">"<xliff:g id="SEPARATOR">=</xliff:g>Harare<xliff:g id="TIMEZONE">|Africa/Harare</xliff:g>"</string>
+ <string name="C16" msgid="109844560982762747">"<xliff:g id="SEPARATOR">=</xliff:g>Johannesburg<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C17" msgid="4868414442726546214">"<xliff:g id="SEPARATOR">=</xliff:g>Kampala<xliff:g id="TIMEZONE">|Africa/Kampala</xliff:g>"</string>
+ <string name="C18" msgid="7460319039497808668">"<xliff:g id="SEPARATOR">=</xliff:g>Kartum<xliff:g id="TIMEZONE">|Africa/Khartoum</xliff:g>"</string>
+ <string name="C19" msgid="3967163989179394825">"<xliff:g id="SEPARATOR">=</xliff:g>Kigali<xliff:g id="TIMEZONE">|Africa/Kigali</xliff:g>"</string>
+ <string name="C20" msgid="832336979058592106">"<xliff:g id="SEPARATOR">=</xliff:g>Kinšasa<xliff:g id="TIMEZONE">|Africa/Kinshasa</xliff:g>"</string>
+ <string name="C21" msgid="8691772487297796331">"<xliff:g id="SEPARATOR">=</xliff:g>Lagos<xliff:g id="TIMEZONE">|Africa/Lagos</xliff:g>"</string>
+ <string name="C22" msgid="6061916756914828881">"<xliff:g id="SEPARATOR">=</xliff:g>Maseru<xliff:g id="TIMEZONE">|Africa/Maseru</xliff:g>"</string>
+ <string name="C23" msgid="6790461017899209498">"<xliff:g id="SEPARATOR">=</xliff:g>Mogadišu<xliff:g id="TIMEZONE">|Africa/Mogadishu</xliff:g>"</string>
+ <string name="C24" msgid="836730985302941979">"<xliff:g id="SEPARATOR">=</xliff:g>Najrobi<xliff:g id="TIMEZONE">|Africa/Nairobi</xliff:g>"</string>
+ <string name="C25" msgid="6439936809920816845">"<xliff:g id="SEPARATOR">=</xliff:g>São Tomé<xliff:g id="TIMEZONE">|Africa/Sao_Tome</xliff:g>"</string>
+ <string name="C26" msgid="3250092456144685877">"<xliff:g id="SEPARATOR">=</xliff:g>Timbuktu<xliff:g id="TIMEZONE">|Africa/Timbuktu</xliff:g>"</string>
+ <string name="C27" msgid="851018621577780718">"<xliff:g id="SEPARATOR">=</xliff:g>Tripoli<xliff:g id="TIMEZONE">|Africa/Tripoli</xliff:g>"</string>
+ <string name="C28" msgid="7979767521827885833">"<xliff:g id="SEPARATOR">=</xliff:g>Tunis<xliff:g id="TIMEZONE">|Africa/Tunis</xliff:g>"</string>
+ <string name="C29" msgid="7946114495840302218">"<xliff:g id="SEPARATOR">=</xliff:g>Anchorage<xliff:g id="TIMEZONE">|America/Anchorage</xliff:g>"</string>
+ <string name="C31" msgid="9017443250572798257">"<xliff:g id="SEPARATOR">=</xliff:g>Aruba<xliff:g id="TIMEZONE">|America/Aruba</xliff:g>"</string>
+ <string name="C32" msgid="3825060534011309483">"<xliff:g id="SEPARATOR">=</xliff:g>Asunsion<xliff:g id="TIMEZONE">|America/Asuncion</xliff:g>"</string>
+ <string name="C33" msgid="700410369162607101">"<xliff:g id="SEPARATOR">=</xliff:g>Barbados<xliff:g id="TIMEZONE">|America/Barbados</xliff:g>"</string>
+ <string name="C34" msgid="4247046344370912762">"<xliff:g id="SEPARATOR">=</xliff:g>Belize<xliff:g id="TIMEZONE">|America/Belize</xliff:g>"</string>
+ <string name="C35" msgid="2794708943743875418">"<xliff:g id="SEPARATOR">=</xliff:g>Bogota<xliff:g id="TIMEZONE">|America/Bogota</xliff:g>"</string>
+ <string name="C36" msgid="5404342554664613950">"<xliff:g id="SEPARATOR">=</xliff:g>Buenos Aires<xliff:g id="TIMEZONE">|America/Buenos_Aires</xliff:g>"</string>
+ <string name="C37" msgid="210142862572070093">"<xliff:g id="SEPARATOR">=</xliff:g>Kankun<xliff:g id="TIMEZONE">|America/Cancun</xliff:g>"</string>
+ <string name="C38" msgid="3882347315148425276">"<xliff:g id="SEPARATOR">=</xliff:g>Karakas<xliff:g id="TIMEZONE">|America/Caracas</xliff:g>"</string>
+ <string name="C39" msgid="1273212484626323439">"<xliff:g id="SEPARATOR">=</xliff:g>Kajman<xliff:g id="TIMEZONE">|America/Cayman</xliff:g>"</string>
+ <string name="C40" msgid="3106173663723475314">"<xliff:g id="SEPARATOR">=</xliff:g>Chicago<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C42" msgid="5638414063615009004">"<xliff:g id="SEPARATOR">=</xliff:g>Kurasao<xliff:g id="TIMEZONE">|America/Curacao</xliff:g>"</string>
+ <string name="C43" msgid="6826097241516998181">"<xliff:g id="SEPARATOR">=</xliff:g>Dawson Creek<xliff:g id="TIMEZONE">|America/Dawson_Creek</xliff:g>"</string>
+ <string name="C44" msgid="2779334691893631030">"<xliff:g id="SEPARATOR">=</xliff:g>Denver<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C45" msgid="8943178793317201894">"<xliff:g id="SEPARATOR">=</xliff:g>Detroit<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C46" msgid="5190250990574320177">"<xliff:g id="SEPARATOR">=</xliff:g>Dominika<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C47" msgid="369754396219379227">"<xliff:g id="SEPARATOR">=</xliff:g>Edmonton<xliff:g id="TIMEZONE">|America/Edmonton</xliff:g>"</string>
+ <string name="C48" msgid="7918902616648922410">"<xliff:g id="SEPARATOR">=</xliff:g>El Salvador<xliff:g id="TIMEZONE">|America/El_Salvador</xliff:g>"</string>
+ <string name="C49" msgid="6326857727742458931">"<xliff:g id="SEPARATOR">=</xliff:g>Fortaleza<xliff:g id="TIMEZONE">|America/Fortaleza</xliff:g>"</string>
+ <string name="C50" msgid="3131498820508584398">"<xliff:g id="SEPARATOR">=</xliff:g>Grand Turk<xliff:g id="TIMEZONE">|America/Grand_Turk</xliff:g>"</string>
+ <string name="C51" msgid="3122278921760822414">"<xliff:g id="SEPARATOR">=</xliff:g>Grenada<xliff:g id="TIMEZONE">|America/Grenada</xliff:g>"</string>
+ <string name="C52" msgid="7461551991724617520">"G<xliff:g id="SEPARATOR">=</xliff:g>Guatemala City<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C53" msgid="296242785331472791">"<xliff:g id="SEPARATOR">=</xliff:g>Gvajana<xliff:g id="TIMEZONE">|America/Guyana</xliff:g>"</string>
+ <string name="C54" msgid="4045007274020361950">"<xliff:g id="SEPARATOR">=</xliff:g>Halifax<xliff:g id="TIMEZONE">|America/Halifax</xliff:g>"</string>
+ <string name="C55" msgid="8180186289266487770">"<xliff:g id="SEPARATOR">=</xliff:g>Havana<xliff:g id="TIMEZONE">|America/Havana</xliff:g>"</string>
+ <string name="C56" msgid="6062281725956353553">"<xliff:g id="SEPARATOR">=</xliff:g>Indianapolis<xliff:g id="TIMEZONE">|America/Indiana/Indianapolis</xliff:g>"</string>
+ <string name="C57" msgid="5971109906791493563">"<xliff:g id="SEPARATOR">=</xliff:g>Knox<xliff:g id="TIMEZONE">|America/Indiana/Knox</xliff:g>"</string>
+ <string name="C58" msgid="7657721717096348613">"<xliff:g id="SEPARATOR">=</xliff:g>Marengo<xliff:g id="TIMEZONE">|America/Indiana/Marengo</xliff:g>"</string>
+ <string name="C59" msgid="2053523400941417307">"<xliff:g id="SEPARATOR">=</xliff:g>Petersburg<xliff:g id="TIMEZONE">|America/Indiana/Petersburg</xliff:g>"</string>
+ <string name="C60" msgid="8112283891039465817">"<xliff:g id="SEPARATOR">=</xliff:g>Tell City<xliff:g id="TIMEZONE">|America/Indiana/Tell_City</xliff:g>"</string>
+ <string name="C61" msgid="7778713489993559227">"<xliff:g id="SEPARATOR">=</xliff:g>Vevaj<xliff:g id="TIMEZONE">|America/Indiana/Vevay</xliff:g>"</string>
+ <string name="C62" msgid="2667958702401099683">"<xliff:g id="SEPARATOR">=</xliff:g>Vincennes<xliff:g id="TIMEZONE">|America/Indiana/Vincennes</xliff:g>"</string>
+ <string name="C63" msgid="2251274863869460838">"<xliff:g id="SEPARATOR">=</xliff:g>Winamac<xliff:g id="TIMEZONE">|America/Indiana/Winamac</xliff:g>"</string>
+ <string name="C64" msgid="1051183687128385699">"<xliff:g id="SEPARATOR">=</xliff:g>Kingston<xliff:g id="TIMEZONE">|America/Jamaica</xliff:g>"</string>
+ <string name="C65" msgid="4484953311341882894">"<xliff:g id="SEPARATOR">=</xliff:g>Nuestra Señora de La Paz<xliff:g id="TIMEZONE">|America/La_Paz</xliff:g>"</string>
+ <string name="C66" msgid="4486852398001333122">"<xliff:g id="SEPARATOR">=</xliff:g>Lima<xliff:g id="TIMEZONE">|America/Lima</xliff:g>"</string>
+ <string name="C67" msgid="4874799181719358019">"<xliff:g id="SEPARATOR">=</xliff:g>Los Angeles<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C68" msgid="5526012011469271690">"<xliff:g id="SEPARATOR">=</xliff:g>Louisville<xliff:g id="TIMEZONE">|America/Louisville</xliff:g>"</string>
+ <string name="C69" msgid="6147580167560875608">"<xliff:g id="SEPARATOR">=</xliff:g>Managua<xliff:g id="TIMEZONE">|America/Managua</xliff:g>"</string>
+ <string name="C70" msgid="3277881296053225577">"<xliff:g id="SEPARATOR">=</xliff:g>Martinique<xliff:g id="TIMEZONE">|America/Martinique</xliff:g>"</string>
+ <string name="C71" msgid="4017941126335556194">"<xliff:g id="SEPARATOR">=</xliff:g>Mendoza<xliff:g id="TIMEZONE">|America/Mendoza</xliff:g>"</string>
+ <string name="C72" msgid="3992109594245379480">"<xliff:g id="SEPARATOR">=</xliff:g>Metlakatla<xliff:g id="TIMEZONE">|America/Metlakatla</xliff:g>"</string>
+ <string name="C73" msgid="2715229408279026929">"<xliff:g id="SEPARATOR">=</xliff:g>Mexico City<xliff:g id="TIMEZONE">|America/Mexico_City</xliff:g>"</string>
+ <string name="C74" msgid="4308784353529592128">"<xliff:g id="SEPARATOR">=</xliff:g>Monterrey<xliff:g id="TIMEZONE">|America/Monterrey</xliff:g>"</string>
+ <string name="C75" msgid="1026967177018172509">"<xliff:g id="SEPARATOR">=</xliff:g>Montevideo<xliff:g id="TIMEZONE">|America/Montevideo</xliff:g>"</string>
+ <string name="C76" msgid="5677155513568462679">"<xliff:g id="SEPARATOR">=</xliff:g>Montreal<xliff:g id="TIMEZONE">|America/Montreal</xliff:g>"</string>
+ <string name="C77" msgid="7071675194537613715">"<xliff:g id="SEPARATOR">=</xliff:g>Nasau<xliff:g id="TIMEZONE">|America/Nassau</xliff:g>"</string>
+ <string name="C78" msgid="705452895809394827">"<xliff:g id="SEPARATOR">=</xliff:g>New York<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C79" msgid="615046244335186458">"<xliff:g id="SEPARATOR">=</xliff:g>Beulah<xliff:g id="TIMEZONE">|America/North_Dakota/Beulah</xliff:g>"</string>
+ <string name="C80" msgid="7462541787750301851">"<xliff:g id="SEPARATOR">=</xliff:g>Centar<xliff:g id="TIMEZONE">|America/North_Dakota/Center</xliff:g>"</string>
+ <string name="C81" msgid="5467118811364466464">"<xliff:g id="SEPARATOR">=</xliff:g>Novi Salem<xliff:g id="TIMEZONE">|America/North_Dakota/New_Salem</xliff:g>"</string>
+ <string name="C82" msgid="1040250446144596478">"<xliff:g id="SEPARATOR">=</xliff:g>Panama<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C83" msgid="3734366600481445363">"<xliff:g id="SEPARATOR">=</xliff:g>Phoenix<xliff:g id="TIMEZONE">|America/Phoenix</xliff:g>"</string>
+ <string name="C84" msgid="2410152141185166321">"<xliff:g id="SEPARATOR">=</xliff:g>Port of Spain<xliff:g id="TIMEZONE">|America/Port_of_Spain</xliff:g>"</string>
+ <string name="C85" msgid="2883572094139689939">"<xliff:g id="SEPARATOR">=</xliff:g>Port-au-Prince<xliff:g id="TIMEZONE">|America/Port-au-Prince</xliff:g>"</string>
+ <string name="C86" msgid="274590042868724214">"<xliff:g id="SEPARATOR">=</xliff:g>Portoriko<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C87" msgid="2866918562243248306">"<xliff:g id="SEPARATOR">=</xliff:g>Santo Domingo<xliff:g id="TIMEZONE">|America/Santo_Domingo</xliff:g>"</string>
+ <string name="C88" msgid="2261702707416420550">"<xliff:g id="SEPARATOR">=</xliff:g>Sao Paolo<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C89" msgid="8517952667962700432">"<xliff:g id="SEPARATOR">=</xliff:g>St. Johns<xliff:g id="TIMEZONE">|America/St_Johns</xliff:g>"</string>
+ <string name="C90" msgid="1703939848190669830">"<xliff:g id="SEPARATOR">=</xliff:g>St. Kitts<xliff:g id="TIMEZONE">|America/St_Kitts</xliff:g>"</string>
+ <string name="C91" msgid="4438261556294969442">"<xliff:g id="SEPARATOR">=</xliff:g>Sv. Lucija<xliff:g id="TIMEZONE">|America/St_Lucia</xliff:g>"</string>
+ <string name="C92" msgid="3717300223413621820">"<xliff:g id="SEPARATOR">=</xliff:g>Sv. Tomas<xliff:g id="TIMEZONE">|America/St_Thomas</xliff:g>"</string>
+ <string name="C93" msgid="964552099122372664">"<xliff:g id="SEPARATOR">=</xliff:g>Tihuana<xliff:g id="TIMEZONE">|America/Tijuana</xliff:g>"</string>
+ <string name="C94" msgid="6254783598629305021">"<xliff:g id="SEPARATOR">=</xliff:g>Toronto<xliff:g id="TIMEZONE">|America/Toronto</xliff:g>"</string>
+ <string name="C95" msgid="2144206125989179089">"<xliff:g id="SEPARATOR">=</xliff:g>Vancouver<xliff:g id="TIMEZONE">|America/Vancouver</xliff:g>"</string>
+ <string name="C96" msgid="3995904432128369027">"<xliff:g id="SEPARATOR">=</xliff:g>Winnipeg<xliff:g id="TIMEZONE">|America/Winnipeg</xliff:g>"</string>
+ <string name="C97" msgid="5667595440938233073">"<xliff:g id="SEPARATOR">=</xliff:g>Južni pol<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Antarctica/South_Pole</xliff:g>"</string>
+ <string name="C98" msgid="2067640513126652156">"<xliff:g id="SEPARATOR">=</xliff:g>Longyearbyen<xliff:g id="TIMEZONE">|Arctic/Longyearbyen</xliff:g>"</string>
+ <string name="C99" msgid="6750041547603679548">"<xliff:g id="SEPARATOR">=</xliff:g>Almati<xliff:g id="TIMEZONE">|Asia/Almaty</xliff:g>"</string>
+ <string name="C100" msgid="5995329947852415813">"<xliff:g id="SEPARATOR">=</xliff:g>Aman<xliff:g id="TIMEZONE">|Asia/Amman</xliff:g>"</string>
+ <string name="C101" msgid="5760056604239047274">"<xliff:g id="SEPARATOR">=</xliff:g>Anadir<xliff:g id="TIMEZONE">|Asia/Anadyr</xliff:g>"</string>
+ <string name="C102" msgid="9000357065825182754">"<xliff:g id="SEPARATOR">=</xliff:g>Aktau<xliff:g id="TIMEZONE">|Asia/Aqtau</xliff:g>"</string>
+ <string name="C103" msgid="8781982253489209791">"<xliff:g id="SEPARATOR">=</xliff:g>Bagdad<xliff:g id="TIMEZONE">|Asia/Baghdad</xliff:g>"</string>
+ <string name="C104" msgid="4021122575041916540">"<xliff:g id="SEPARATOR">=</xliff:g>Bahrein<xliff:g id="TIMEZONE">|Asia/Bahrain</xliff:g>"</string>
+ <string name="C105" msgid="1812915124794679606">"<xliff:g id="SEPARATOR">=</xliff:g>Baku<xliff:g id="TIMEZONE">|Asia/Baku</xliff:g>"</string>
+ <string name="C106" msgid="1996684628612964988">"<xliff:g id="SEPARATOR">=</xliff:g>Bangkok<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C107" msgid="227554925153715426">"<xliff:g id="SEPARATOR">=</xliff:g>Bejrut<xliff:g id="TIMEZONE">|Asia/Beirut</xliff:g>"</string>
+ <string name="C108" msgid="5082419901681584844">"<xliff:g id="SEPARATOR">=</xliff:g>Kalkuta<xliff:g id="TIMEZONE">|Asia/Calcutta</xliff:g>"</string>
+ <string name="C109" msgid="6386566477244958752">"<xliff:g id="SEPARATOR">=</xliff:g>Damask<xliff:g id="TIMEZONE">|Asia/Damascus</xliff:g>"</string>
+ <string name="C110" msgid="1165712058024165012">"<xliff:g id="SEPARATOR">=</xliff:g>Daka<xliff:g id="TIMEZONE">|Asia/Dhaka</xliff:g>"</string>
+ <string name="C111" msgid="5895260692253797547">"<xliff:g id="SEPARATOR">=</xliff:g>Dubai<xliff:g id="TIMEZONE">|Asia/Dubai</xliff:g>"</string>
+ <string name="C112" msgid="1708170128253320625">"<xliff:g id="SEPARATOR">=</xliff:g>Gaza<xliff:g id="TIMEZONE">|Asia/Gaza</xliff:g>"</string>
+ <string name="C113" msgid="8790538811134290878">"<xliff:g id="SEPARATOR">=</xliff:g>Hebron<xliff:g id="TIMEZONE">|Asia/Hebron</xliff:g>"</string>
+ <string name="C114" msgid="8019764566754082688">"<xliff:g id="SEPARATOR">=</xliff:g>Ho Ši Min<xliff:g id="TIMEZONE">|Asia/Ho_Chi_Minh</xliff:g>"</string>
+ <string name="C115" msgid="2707316842482208016">"<xliff:g id="SEPARATOR">=</xliff:g>Hong Kong<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Hong_Kong</xliff:g>"</string>
+ <string name="C117" msgid="486537564257069933">"DŽ<xliff:g id="SEPARATOR">=</xliff:g>Džakarta<xliff:g id="TIMEZONE">|Asia/Jakarta</xliff:g>"</string>
+ <string name="C118" msgid="2220594023727285784">"<xliff:g id="SEPARATOR">=</xliff:g>Jerusalem<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C119" msgid="7095503078924268384">"<xliff:g id="SEPARATOR">=</xliff:g>Kabul<xliff:g id="TIMEZONE">|Asia/Kabul</xliff:g>"</string>
+ <string name="C120" msgid="4759297844750994699">"<xliff:g id="SEPARATOR">=</xliff:g>Karači<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C121" msgid="6397452077111782277">"<xliff:g id="SEPARATOR">=</xliff:g>Katmandu<xliff:g id="TIMEZONE">|Asia/Kathmandu</xliff:g>"</string>
+ <string name="C122" msgid="3384658968869783693">"<xliff:g id="SEPARATOR">=</xliff:g>Kuala Lumpur<xliff:g id="TIMEZONE">|Asia/Kuala_Lumpur</xliff:g>"</string>
+ <string name="C123" msgid="2596231413860119715">"<xliff:g id="SEPARATOR">=</xliff:g>Kuvajt<xliff:g id="TIMEZONE">|Asia/Kuwait</xliff:g>"</string>
+ <string name="C124" msgid="7128790644999660843">"<xliff:g id="SEPARATOR">=</xliff:g>Makau<xliff:g id="TIMEZONE">|Asia/Macau</xliff:g>"</string>
+ <string name="C125" msgid="7482612453109643531">"<xliff:g id="SEPARATOR">=</xliff:g>Manila<xliff:g id="TIMEZONE">|Asia/Manila</xliff:g>"</string>
+ <string name="C126" msgid="89594601694005714">"<xliff:g id="SEPARATOR">=</xliff:g>Muskat<xliff:g id="TIMEZONE">|Asia/Muscat</xliff:g>"</string>
+ <string name="C127" msgid="6694878912574814081">"<xliff:g id="SEPARATOR">=</xliff:g>Pnom Pen<xliff:g id="TIMEZONE">|Asia/Phnom_Penh</xliff:g>"</string>
+ <string name="C128" msgid="6055116591529458940">"<xliff:g id="SEPARATOR">=</xliff:g>Pjongjang<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Pyongyang</xliff:g>"</string>
+ <string name="C130" msgid="665609990740507143">"<xliff:g id="SEPARATOR">=</xliff:g>Rangun<xliff:g id="TIMEZONE">|Asia/Rangoon</xliff:g>"</string>
+ <string name="C131" msgid="3395769966117356927">"<xliff:g id="SEPARATOR">=</xliff:g>Rijad<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C133" msgid="5204810106521056060">"<xliff:g id="SEPARATOR">=</xliff:g>Seul<xliff:g id="TIMEZONE">|Asia/Seoul</xliff:g>"</string>
+ <string name="C134" msgid="7263747916569669120">"<xliff:g id="SEPARATOR">=</xliff:g>Šangaj<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C135" msgid="4100015019260371393">"<xliff:g id="SEPARATOR">=</xliff:g>Singapur<xliff:g id="TIMEZONE">|Asia/Singapore</xliff:g>"</string>
+ <string name="C136" msgid="6386033226757339839">"<xliff:g id="SEPARATOR">=</xliff:g>Tajpeh<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Taipei</xliff:g>"</string>
+ <string name="C137" msgid="5387760734363179588">"<xliff:g id="SEPARATOR">=</xliff:g>Teheran<xliff:g id="TIMEZONE">|Asia/Tehran</xliff:g>"</string>
+ <string name="C138" msgid="7193922868117846792">"<xliff:g id="SEPARATOR">=</xliff:g>Tel Aviv<xliff:g id="TIMEZONE">|Asia/Tel_Aviv</xliff:g>"</string>
+ <string name="C139" msgid="7060339477340222608">"<xliff:g id="SEPARATOR">=</xliff:g>Tokio<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C140" msgid="6273911458061121975">"<xliff:g id="SEPARATOR">=</xliff:g>Ulanbator<xliff:g id="TIMEZONE">|Asia/Ulaanbaatar</xliff:g>"</string>
+ <string name="C141" msgid="2799340184229547409">"<xliff:g id="SEPARATOR">=</xliff:g>Bermudi<xliff:g id="TIMEZONE">|Atlantic/Bermuda</xliff:g>"</string>
+ <string name="C142" msgid="6015789133959684677">"<xliff:g id="SEPARATOR">=</xliff:g>Kanari<xliff:g id="TIMEZONE">|Atlantic/Canary</xliff:g>"</string>
+ <string name="C143" msgid="4888764215053863961">"<xliff:g id="SEPARATOR">=</xliff:g>Kabo Verde<xliff:g id="TIMEZONE">|Atlantic/Cape_Verde</xliff:g>"</string>
+ <string name="C144" msgid="3338105941475340049">"<xliff:g id="SEPARATOR">=</xliff:g>Rejkjavik<xliff:g id="TIMEZONE">|Atlantic/Reykjavik</xliff:g>"</string>
+ <string name="C145" msgid="8684297689430494031">"<xliff:g id="SEPARATOR">=</xliff:g>Stanley<xliff:g id="TIMEZONE">|Atlantic/Stanley</xliff:g>"</string>
+ <string name="C146" msgid="843808286721172656">"<xliff:g id="SEPARATOR">=</xliff:g>Adelaide<xliff:g id="TIMEZONE">|Australia/Adelaide</xliff:g>"</string>
+ <string name="C147" msgid="3712535858465321034">"<xliff:g id="SEPARATOR">=</xliff:g>Brisbane<xliff:g id="TIMEZONE">|Australia/Brisbane</xliff:g>"</string>
+ <string name="C148" msgid="7019403666599702943">"<xliff:g id="SEPARATOR">=</xliff:g>Canberra<xliff:g id="TIMEZONE">|Australia/Canberra</xliff:g>"</string>
+ <string name="C149" msgid="8185355499458013534">"<xliff:g id="SEPARATOR">=</xliff:g>Darwin<xliff:g id="TIMEZONE">|Australia/Darwin</xliff:g>"</string>
+ <string name="C150" msgid="3516845880105752618">"<xliff:g id="SEPARATOR">=</xliff:g>Melbourne<xliff:g id="TIMEZONE">|Australia/Melbourne</xliff:g>"</string>
+ <string name="C151" msgid="5576825403360541823">"<xliff:g id="SEPARATOR">=</xliff:g>Novi Južni Wales<xliff:g id="TIMEZONE">|Australia/NSW</xliff:g>"</string>
+ <string name="C152" msgid="7889900618915436602">"<xliff:g id="SEPARATOR">=</xliff:g>Perth<xliff:g id="TIMEZONE">|Australia/Perth</xliff:g>"</string>
+ <string name="C153" msgid="7506204460601953711">"<xliff:g id="SEPARATOR">=</xliff:g>Queensland<xliff:g id="TIMEZONE">|Australia/Queensland</xliff:g>"</string>
+ <string name="C154" msgid="1193262944948312063">"<xliff:g id="SEPARATOR">=</xliff:g>Sydney<xliff:g id="TIMEZONE">|Australia/Sydney</xliff:g>"</string>
+ <string name="C155" msgid="7079072802229033042">"<xliff:g id="SEPARATOR">=</xliff:g>Victoria<xliff:g id="TIMEZONE">|Australia/Victoria</xliff:g>"</string>
+ <string name="C156" msgid="4003110220147338835">"<xliff:g id="SEPARATOR">=</xliff:g>Newfoundland<xliff:g id="TIMEZONE">|Canada/Newfoundland</xliff:g>"</string>
+ <string name="C157" msgid="2861486997803753970">"<xliff:g id="SEPARATOR">=</xliff:g>Saskatchewan<xliff:g id="TIMEZONE">|Canada/Saskatchewan</xliff:g>"</string>
+ <string name="C158" msgid="6882933026191056506">"<xliff:g id="SEPARATOR">=</xliff:g>Uskršnji otok<xliff:g id="TIMEZONE">|Chile/EasterIsland</xliff:g>"</string>
+ <string name="C159" msgid="4128429767051043903">"<xliff:g id="SEPARATOR">=</xliff:g>Amsterdam<xliff:g id="TIMEZONE">|Europe/Amsterdam</xliff:g>"</string>
+ <string name="C160" msgid="3488513735205092653">"<xliff:g id="SEPARATOR">=</xliff:g>Andora<xliff:g id="TIMEZONE">|Europe/Andorra</xliff:g>"</string>
+ <string name="C161" msgid="7244325364130392348">"<xliff:g id="SEPARATOR">=</xliff:g>Atina<xliff:g id="TIMEZONE">|Europe/Athens</xliff:g>"</string>
+ <string name="C162" msgid="7484009548361072313">"<xliff:g id="SEPARATOR">=</xliff:g>Belfast<xliff:g id="TIMEZONE">|Europe/Belfast</xliff:g>"</string>
+ <string name="C163" msgid="6106990061397073808">"<xliff:g id="SEPARATOR">=</xliff:g>Beograd<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C164" msgid="3074767496771260157">"<xliff:g id="SEPARATOR">=</xliff:g>Berlin<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C165" msgid="4442005045172394762">"<xliff:g id="SEPARATOR">=</xliff:g>Bratislava<xliff:g id="TIMEZONE">|Europe/Bratislava</xliff:g>"</string>
+ <string name="C166" msgid="8977286721038142474">"<xliff:g id="SEPARATOR">=</xliff:g>Brisel<xliff:g id="TIMEZONE">|Europe/Brussels</xliff:g>"</string>
+ <string name="C167" msgid="5502175796232774744">"<xliff:g id="SEPARATOR">=</xliff:g>Bukurešt<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C168" msgid="6750159439632567316">"<xliff:g id="SEPARATOR">=</xliff:g>Budimpešta<xliff:g id="TIMEZONE">|Europe/Budapest</xliff:g>"</string>
+ <string name="C169" msgid="591483187800562071">"<xliff:g id="SEPARATOR">=</xliff:g>Kišinjev<xliff:g id="TIMEZONE">|Europe/Chisinau</xliff:g>"</string>
+ <string name="C170" msgid="157539770076958216">"<xliff:g id="SEPARATOR">=</xliff:g>Kopenhagen<xliff:g id="TIMEZONE">|Europe/Copenhagen</xliff:g>"</string>
+ <string name="C171" msgid="4774534094571993566">"<xliff:g id="SEPARATOR">=</xliff:g>Dablin<xliff:g id="TIMEZONE">|Europe/Dublin</xliff:g>"</string>
+ <string name="C172" msgid="6781166861618808351">"<xliff:g id="SEPARATOR">=</xliff:g>Gibraltar<xliff:g id="TIMEZONE">|Europe/Gibraltar</xliff:g>"</string>
+ <string name="C173" msgid="6620286361619640304">"<xliff:g id="SEPARATOR">=</xliff:g>Helsinki<xliff:g id="TIMEZONE">|Europe/Helsinki</xliff:g>"</string>
+ <string name="C174" msgid="2279016324825973473">"<xliff:g id="SEPARATOR">=</xliff:g>Otok Man<xliff:g id="TIMEZONE">|Europe/Isle_of_Man</xliff:g>"</string>
+ <string name="C175" msgid="3290185117135612679">"<xliff:g id="SEPARATOR">=</xliff:g>Istanbul<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C176" msgid="8375703098860926099">"<xliff:g id="SEPARATOR">=</xliff:g>Kijev<xliff:g id="TIMEZONE">|Europe/Kiev</xliff:g>"</string>
+ <string name="C177" msgid="6500868250597874838">"<xliff:g id="SEPARATOR">=</xliff:g>Lisabon<xliff:g id="TIMEZONE">|Europe/Lisbon</xliff:g>"</string>
+ <string name="C178" msgid="8805696770032311110">"<xliff:g id="SEPARATOR">=</xliff:g>London<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C179" msgid="3767343883668628062">"<xliff:g id="SEPARATOR">=</xliff:g>Luksemburg<xliff:g id="TIMEZONE">|Europe/Luxembourg</xliff:g>"</string>
+ <string name="C180" msgid="7678392789982322642">"<xliff:g id="SEPARATOR">=</xliff:g>Madrid<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C181" msgid="7514462880775616081">"<xliff:g id="SEPARATOR">=</xliff:g>Malta<xliff:g id="TIMEZONE">|Europe/Malta</xliff:g>"</string>
+ <string name="C182" msgid="1916950203622380579">"<xliff:g id="SEPARATOR">=</xliff:g>Minsk<xliff:g id="TIMEZONE">|Europe/Minsk</xliff:g>"</string>
+ <string name="C183" msgid="4964892686115215073">"<xliff:g id="SEPARATOR">=</xliff:g>Monako<xliff:g id="TIMEZONE">|Europe/Monaco</xliff:g>"</string>
+ <string name="C184" msgid="4848586310907586448">"<xliff:g id="SEPARATOR">=</xliff:g>Moskva<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C185" msgid="2598535413053285569">"<xliff:g id="SEPARATOR">=</xliff:g>Oslo<xliff:g id="TIMEZONE">|Europe/Oslo</xliff:g>"</string>
+ <string name="C186" msgid="678795048839315969">"<xliff:g id="SEPARATOR">=</xliff:g>Pariz<xliff:g id="TIMEZONE">|Europe/Paris</xliff:g>"</string>
+ <string name="C187" msgid="9120486940322565800">"<xliff:g id="SEPARATOR">=</xliff:g>Prag<xliff:g id="TIMEZONE">|Europe/Prague</xliff:g>"</string>
+ <string name="C188" msgid="6820884829000643173">"<xliff:g id="SEPARATOR">=</xliff:g>Riga<xliff:g id="TIMEZONE">|Europe/Riga</xliff:g>"</string>
+ <string name="C189" msgid="8545786001221397208">"<xliff:g id="SEPARATOR">=</xliff:g>Rim<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C190" msgid="2822097113459737895">"<xliff:g id="SEPARATOR">=</xliff:g>San Marino<xliff:g id="TIMEZONE">|Europe/San_Marino</xliff:g>"</string>
+ <string name="C191" msgid="5419026915911469878">"<xliff:g id="SEPARATOR">=</xliff:g>Sarajevo<xliff:g id="TIMEZONE">|Europe/Sarajevo</xliff:g>"</string>
+ <string name="C192" msgid="1416880359034236663">"<xliff:g id="SEPARATOR">=</xliff:g>Simferopol<xliff:g id="TIMEZONE">|Europe/Simferopol</xliff:g>"</string>
+ <string name="C193" msgid="4639373771601474967">"<xliff:g id="SEPARATOR">=</xliff:g>Skoplje<xliff:g id="TIMEZONE">|Europe/Skopje</xliff:g>"</string>
+ <string name="C194" msgid="4008819631066984591">"<xliff:g id="SEPARATOR">=</xliff:g>Sofija<xliff:g id="TIMEZONE">|Europe/Sofia</xliff:g>"</string>
+ <string name="C195" msgid="6936101855361464954">"<xliff:g id="SEPARATOR">=</xliff:g>Štokholm<xliff:g id="TIMEZONE">|Europe/Stockholm</xliff:g>"</string>
+ <string name="C196" msgid="6845595341045260631">"<xliff:g id="SEPARATOR">=</xliff:g>Tallin<xliff:g id="TIMEZONE">|Europe/Tallinn</xliff:g>"</string>
+ <string name="C197" msgid="2200341923401640765">"<xliff:g id="SEPARATOR">=</xliff:g>Vatikan<xliff:g id="TIMEZONE">|Europe/Vatican</xliff:g>"</string>
+ <string name="C198" msgid="3104432830681695782">"<xliff:g id="SEPARATOR">=</xliff:g>Beč<xliff:g id="TIMEZONE">|Europe/Vienna</xliff:g>"</string>
+ <string name="C199" msgid="1622823742072233091">"<xliff:g id="SEPARATOR">=</xliff:g>Viljnus<xliff:g id="TIMEZONE">|Europe/Vilnius</xliff:g>"</string>
+ <string name="C200" msgid="6181652506383585123">"<xliff:g id="SEPARATOR">=</xliff:g>Varšava<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C201" msgid="5026927396527258914">"<xliff:g id="SEPARATOR">=</xliff:g>Zagreb<xliff:g id="TIMEZONE">|Europe/Zagreb</xliff:g>"</string>
+ <string name="C202" msgid="7479245034393288391">"<xliff:g id="SEPARATOR">=</xliff:g>Cirih<xliff:g id="TIMEZONE">|Europe/Zurich</xliff:g>"</string>
+ <string name="C203" msgid="1651234331866937237">"<xliff:g id="SEPARATOR">=</xliff:g>Antananarivo<xliff:g id="TIMEZONE">|Indian/Antananarivo</xliff:g>"</string>
+ <string name="C204" msgid="3101091022126098393">"<xliff:g id="SEPARATOR">=</xliff:g>Maldivi<xliff:g id="TIMEZONE">|Indian/Maldives</xliff:g>"</string>
+ <string name="C205" msgid="9173530407684443044">"<xliff:g id="SEPARATOR">=</xliff:g>Mauricijus<xliff:g id="TIMEZONE">|Indian/Mauritius</xliff:g>"</string>
+ <string name="C206" msgid="7294622489478378014">"<xliff:g id="SEPARATOR">=</xliff:g>Auckland<xliff:g id="TIMEZONE">|Pacific/Auckland</xliff:g>"</string>
+ <string name="C207" msgid="6369257832191627783">"<xliff:g id="SEPARATOR">=</xliff:g>Fidži<xliff:g id="TIMEZONE">|Pacific/Fiji</xliff:g>"</string>
+ <string name="C208" msgid="1022999101729302391">"<xliff:g id="SEPARATOR">=</xliff:g>Guam<xliff:g id="TIMEZONE">|Pacific/Guam</xliff:g>"</string>
+ <string name="C209" msgid="8326714755257287010">"<xliff:g id="SEPARATOR">=</xliff:g>Honolulu<xliff:g id="TIMEZONE">|Pacific/Honolulu</xliff:g>"</string>
+ <string name="C210" msgid="4118975261202718577">"<xliff:g id="SEPARATOR">=</xliff:g>Kiritimati<xliff:g id="TIMEZONE">|Pacific/Kiritimati</xliff:g>"</string>
+ <string name="C211" msgid="6016485615657297427">"<xliff:g id="SEPARATOR">=</xliff:g>Noumea<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C214" msgid="5230836436291372485">"<xliff:g id="SEPARATOR">=</xliff:g>Antigua<xliff:g id="TIMEZONE">|America/Antigua</xliff:g>"</string>
+ <string name="C215" msgid="9104600827236874744">"<xliff:g id="SEPARATOR">=</xliff:g>Austin<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C216" msgid="1919768646168928906">"<xliff:g id="SEPARATOR">=</xliff:g>Boston<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C217" msgid="4879725034214879629">"<xliff:g id="SEPARATOR">=</xliff:g>Calgary<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C218" msgid="5884212032925236157">"<xliff:g id="SEPARATOR">=</xliff:g>Columbus<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C219" msgid="2081823206177849440">"<xliff:g id="SEPARATOR">=</xliff:g>Dallas<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C220" msgid="6453910991331509621">"<xliff:g id="SEPARATOR">=</xliff:g>Knoxville<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C221" msgid="8383807404322146544">"<xliff:g id="SEPARATOR">=</xliff:g>Memphis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C222" msgid="3700668026644596138">"<xliff:g id="SEPARATOR">=</xliff:g>Miami<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C223" msgid="221323185158028534">"<xliff:g id="SEPARATOR">=</xliff:g>Minneapolis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C224" msgid="5283127526588257314">"<xliff:g id="SEPARATOR">=</xliff:g>Ottawa<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C225" msgid="2397752406722350262">"<xliff:g id="SEPARATOR">=</xliff:g>Philadelphia<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C226" msgid="9121074377966278110">"<xliff:g id="SEPARATOR">=</xliff:g>Portland<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C227" msgid="5652209241017010001">"<xliff:g id="SEPARATOR">=</xliff:g>San Diego<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C228" msgid="4215672329797580482">"<xliff:g id="SEPARATOR">=</xliff:g>San Francisco<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C229" msgid="4196312467437357156">"<xliff:g id="SEPARATOR">=</xliff:g>Salt Lake City<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C230" msgid="5521643115321121383">"<xliff:g id="SEPARATOR">=</xliff:g>San Jose<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C231" msgid="19294357270942004">"<xliff:g id="SEPARATOR">=</xliff:g>San Salvador<xliff:g id="TIMEZONE">|America/Guatemala</xliff:g>"</string>
+ <string name="C232" msgid="4714655032274833316">"<xliff:g id="SEPARATOR">=</xliff:g>Seattle<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C233" msgid="7162834873553109876">"<xliff:g id="SEPARATOR">=</xliff:g>St. Louis<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C234" msgid="8431913494781960891">"<xliff:g id="SEPARATOR">=</xliff:g>Washington D.C.<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C235" msgid="8650421942456856419">"<xliff:g id="SEPARATOR">=</xliff:g>Houston<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C236" msgid="3687627401939103862">"<xliff:g id="SEPARATOR">=</xliff:g>San Antonio<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C237" msgid="4443158977093108877">"<xliff:g id="SEPARATOR">=</xliff:g>Jacksonville<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C238" msgid="7416660474443881822">"<xliff:g id="SEPARATOR">=</xliff:g>Baltimore<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C239" msgid="4602819453157356596">"<xliff:g id="SEPARATOR">=</xliff:g>Nashville<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C240" msgid="6474976205162582188">"<xliff:g id="SEPARATOR">=</xliff:g>Milwaukee<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C241" msgid="9133192521877174743">"<xliff:g id="SEPARATOR">=</xliff:g>Oklahoma City<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C242" msgid="4837450655035932235">"<xliff:g id="SEPARATOR">=</xliff:g>Las Vegas<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C243" msgid="8140503787735683522">"<xliff:g id="SEPARATOR">=</xliff:g>Albuquerque<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C244" msgid="5425441385595386539">"<xliff:g id="SEPARATOR">=</xliff:g>Tucson<xliff:g id="TIMEZONE">|MST</xliff:g>"</string>
+ <string name="C245" msgid="2117808251938937801">"<xliff:g id="SEPARATOR">=</xliff:g>Sacramento<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C246" msgid="3092246848082816772">"<xliff:g id="SEPARATOR">=</xliff:g>Atlanta<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C247" msgid="8206866466240263364">"<xliff:g id="SEPARATOR">=</xliff:g>Cleveland<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C248" msgid="2640187332546735575">"<xliff:g id="SEPARATOR">=</xliff:g>New Orleans<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C249" msgid="2891345755858261436">"<xliff:g id="SEPARATOR">=</xliff:g>Tampa<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C250" msgid="820338627695297018">"<xliff:g id="SEPARATOR">=</xliff:g>Pittsburgh<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C251" msgid="5944336862095193572">"<xliff:g id="SEPARATOR">=</xliff:g>Cincinnati<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C252" msgid="4879366628092590554">"<xliff:g id="SEPARATOR">=</xliff:g>Mountain View<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C253" msgid="131023875763265059">"<xliff:g id="SEPARATOR">=</xliff:g>Reno<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C254" msgid="6114708580340716772">"<xliff:g id="SEPARATOR">=</xliff:g>Black Rock City<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C255" msgid="7954132426931661492">"<xliff:g id="SEPARATOR">=</xliff:g>Doha<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C256" msgid="4677098546257306673">"<xliff:g id="SEPARATOR">=</xliff:g>Peking<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C257" msgid="6859408162854724420">"<xliff:g id="SEPARATOR">=</xliff:g>Mumbai<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C258" msgid="4883343467599097650">"<xliff:g id="SEPARATOR">=</xliff:g>Delhi<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C259" msgid="5562442240689501324">"<xliff:g id="SEPARATOR">=</xliff:g>Osaka<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Tokyo</xliff:g>"</string>
+ <string name="C260" msgid="8364102554400427814">"<xliff:g id="SEPARATOR">=</xliff:g>Lahore<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C261" msgid="4120312655526126931">"<xliff:g id="SEPARATOR">=</xliff:g>Sana<xliff:g id="TIMEZONE">|Asia/Riyadh</xliff:g>"</string>
+ <string name="C262" msgid="5548180151889833">"<xliff:g id="SEPARATOR">=</xliff:g>Barselona<xliff:g id="TIMEZONE">|Europe/Madrid</xliff:g>"</string>
+ <string name="C263" msgid="2667061188896159784">"<xliff:g id="SEPARATOR">=</xliff:g>Minhen<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C264" msgid="2183960913782375290">"<xliff:g id="SEPARATOR">=</xliff:g>Milano<xliff:g id="TIMEZONE">|Europe/Rome</xliff:g>"</string>
+ <string name="C265" msgid="7302072801871420825">"<xliff:g id="SEPARATOR">=</xliff:g>Frankfurt<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C266" msgid="2043638131940526010">"<xliff:g id="SEPARATOR">=</xliff:g>Hanoj<xliff:g id="TIMEZONE">|Asia/Bangkok</xliff:g>"</string>
+ <string name="C267" msgid="2210484655793571387">"<xliff:g id="SEPARATOR">=</xliff:g>Ankara<xliff:g id="TIMEZONE">|Europe/Istanbul</xliff:g>"</string>
+ <string name="C268" msgid="263106973500029909">"<xliff:g id="SEPARATOR">=</xliff:g>Bangalore<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C269" msgid="6541694468583591229">"<xliff:g id="SEPARATOR">=</xliff:g>Brazilija<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C270" msgid="1314079881051130603">"<xliff:g id="SEPARATOR">=</xliff:g>Cape Town<xliff:g id="TIMEZONE">|Africa/Johannesburg</xliff:g>"</string>
+ <string name="C271" msgid="8640235215580011665">"<xliff:g id="SEPARATOR">=</xliff:g>Islamabad<xliff:g id="TIMEZONE">|Asia/Karachi</xliff:g>"</string>
+ <string name="C272" msgid="1609536549681428971">"<xliff:g id="SEPARATOR">=</xliff:g>Rio de Žaneiro<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C273" msgid="7079941149646181981">"<xliff:g id="SEPARATOR">=</xliff:g>Ann Arbor<xliff:g id="TIMEZONE">|America/Detroit</xliff:g>"</string>
+ <string name="C274" msgid="8459573593923702400">"<xliff:g id="SEPARATOR">=</xliff:g>Boulder<xliff:g id="TIMEZONE">|America/Denver</xliff:g>"</string>
+ <string name="C275" msgid="6089570009772695384">"<xliff:g id="SEPARATOR">=</xliff:g>Cambridge<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C276" msgid="8770778158932656740">"<xliff:g id="SEPARATOR">=</xliff:g>Kirkland<xliff:g id="TIMEZONE">|America/Los_Angeles</xliff:g>"</string>
+ <string name="C277" msgid="3027642546928363284">"<xliff:g id="SEPARATOR">=</xliff:g>Madison<xliff:g id="TIMEZONE">|America/Chicago</xliff:g>"</string>
+ <string name="C278" msgid="2380762577096499707">"<xliff:g id="SEPARATOR">=</xliff:g>Guangzou<xliff:g id="PHONETIC">:</xliff:g><xliff:g id="TIMEZONE">|Asia/Shanghai</xliff:g>"</string>
+ <string name="C279" msgid="8894272318704876379">"<xliff:g id="SEPARATOR">=</xliff:g>Hajderabad<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C280" msgid="7678401703785036372">"<xliff:g id="SEPARATOR">=</xliff:g>Reston<xliff:g id="TIMEZONE">|America/New_York</xliff:g>"</string>
+ <string name="C281" msgid="8023528134904066052">"<xliff:g id="SEPARATOR">=</xliff:g>Belo Horizonte<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C282" msgid="6695477038758559199">"<xliff:g id="SEPARATOR">=</xliff:g>Santjago<xliff:g id="TIMEZONE">|America/Santiago</xliff:g>"</string>
+ <string name="C283" msgid="7769787200879321206">"<xliff:g id="SEPARATOR">=</xliff:g>Monrovija<xliff:g id="TIMEZONE">|Africa/Monrovia</xliff:g>"</string>
+ <string name="C284" msgid="6968458422900478829">"<xliff:g id="SEPARATOR">=</xliff:g>Kolombo<xliff:g id="TIMEZONE">|Asia/Colombo</xliff:g>"</string>
+ <string name="C285" msgid="1141404871109476705">"<xliff:g id="SEPARATOR">=</xliff:g>Chihuahua<xliff:g id="TIMEZONE">|America/Chihuahua</xliff:g>"</string>
+ <string name="C286" msgid="4996225818359904740">"<xliff:g id="SEPARATOR">=</xliff:g>Salvador<xliff:g id="TIMEZONE">|America/Sao_Paulo</xliff:g>"</string>
+ <string name="C287" msgid="1988559263618010310">"<xliff:g id="SEPARATOR">=</xliff:g>Gurgaon<xliff:g id="TIMEZONE">|Asia/Kolkata</xliff:g>"</string>
+ <string name="C288" msgid="852288766460325989">"<xliff:g id="SEPARATOR">=</xliff:g>Manchester<xliff:g id="TIMEZONE">|Europe/London</xliff:g>"</string>
+ <string name="C290" msgid="9191944922972784727">"<xliff:g id="SEPARATOR">=</xliff:g>St. Petersburg<xliff:g id="TIMEZONE">|Europe/Moscow</xliff:g>"</string>
+ <string name="C291" msgid="4662360206594986867">"<xliff:g id="SEPARATOR">=</xliff:g>Krakov<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C292" msgid="3704362015612990315">"<xliff:g id="SEPARATOR">=</xliff:g>Vroclav<xliff:g id="TIMEZONE">|Europe/Warsaw</xliff:g>"</string>
+ <string name="C293" msgid="3807981967850386200">"<xliff:g id="SEPARATOR">=</xliff:g>Hamburg<xliff:g id="TIMEZONE">|Europe/Berlin</xliff:g>"</string>
+ <string name="C294" msgid="2800056634746552933">"<xliff:g id="SEPARATOR">=</xliff:g>Oulu<xliff:g id="TIMEZONE">|Europe/Bucharest</xliff:g>"</string>
+ <string name="C295" msgid="7855357204471157922">"<xliff:g id="SEPARATOR">=</xliff:g>Haifa<xliff:g id="TIMEZONE">|Asia/Jerusalem</xliff:g>"</string>
+ <string name="C296" msgid="2834361512883853579">"<xliff:g id="SEPARATOR">=</xliff:g>San Juan<xliff:g id="TIMEZONE">|America/Puerto_Rico</xliff:g>"</string>
+ <string name="C297" msgid="5314407834713913608">"<xliff:g id="SEPARATOR">=</xliff:g>Tegusigalpa<xliff:g id="TIMEZONE">|America/Tegucigalpa</xliff:g>"</string>
+ <string name="C298" msgid="4186340979527221275">"<xliff:g id="SEPARATOR">=</xliff:g>Paramaribo<xliff:g id="TIMEZONE">|America/Paramaribo</xliff:g>"</string>
+ <string name="C299" msgid="5688169950851674667">"<xliff:g id="SEPARATOR">=</xliff:g>Kito<xliff:g id="TIMEZONE">|America/Panama</xliff:g>"</string>
+ <string name="C300" msgid="7351753589989414696">"LJ<xliff:g id="SEPARATOR">=</xliff:g>Ljubljana<xliff:g id="TIMEZONE">|Europe/Ljubljana</xliff:g>"</string>
+ <string name="C301" msgid="9089921329206815602">"A<xliff:g id="SEPARATOR">=</xliff:g>Ašgabat<xliff:g id="TIMEZONE">|Asia/Ashgabat</xliff:g>"</string>
+ <string name="C302" msgid="6471051311513517449">"A<xliff:g id="SEPARATOR">=</xliff:g>Asmara<xliff:g id="TIMEZONE">|Africa/Asmara</xliff:g>"</string>
+ <string name="C303" msgid="6208957436062127281">"B<xliff:g id="SEPARATOR">=</xliff:g>Bandar Seri Begawan<xliff:g id="TIMEZONE">|Asia/Brunei</xliff:g>"</string>
+ <string name="C304" msgid="7757188637892125245">"B<xliff:g id="SEPARATOR">=</xliff:g>Bangui<xliff:g id="TIMEZONE">|Africa/Bangui</xliff:g>"</string>
+ <string name="C305" msgid="5538312768539249335">"B<xliff:g id="SEPARATOR">=</xliff:g>Banjul<xliff:g id="TIMEZONE">|Africa/Banjul</xliff:g>"</string>
+ <string name="C306" msgid="6400938736119754675">"B<xliff:g id="SEPARATOR">=</xliff:g>Biškek<xliff:g id="TIMEZONE">|Asia/Bishkek</xliff:g>"</string>
+ <string name="C307" msgid="1169132195117591472">"B<xliff:g id="SEPARATOR">=</xliff:g>Bissau<xliff:g id="TIMEZONE">|Africa/Bissau</xliff:g>"</string>
+ <string name="C308" msgid="7704965635342439141">"B<xliff:g id="SEPARATOR">=</xliff:g>Bujumbura<xliff:g id="TIMEZONE">|Africa/Bujumbura</xliff:g>"</string>
+ <string name="C309" msgid="1522235235310763925">"D<xliff:g id="SEPARATOR">=</xliff:g>Dili<xliff:g id="TIMEZONE">|Asia/Dili</xliff:g>"</string>
+ <string name="C310" msgid="8666508463588411257">"D<xliff:g id="SEPARATOR">=</xliff:g>Dušanbe<xliff:g id="TIMEZONE">|Asia/Dushanbe</xliff:g>"</string>
+ <string name="C311" msgid="5940486195605635031">"F<xliff:g id="SEPARATOR">=</xliff:g>Funafuti<xliff:g id="TIMEZONE">|Pacific/Funafuti</xliff:g>"</string>
+ <string name="C312" msgid="1714210141256903683">"H<xliff:g id="SEPARATOR">=</xliff:g>Honiara<xliff:g id="TIMEZONE">|Pacific/Guadalcanal</xliff:g>"</string>
+ <string name="C313" msgid="8390229571948311411">"Dž<xliff:g id="SEPARATOR">=</xliff:g>Džuba<xliff:g id="TIMEZONE">|Africa/Juba</xliff:g>"</string>
+ <string name="C314" msgid="3840011425345102604">"K<xliff:g id="SEPARATOR">=</xliff:g>Kingstown<xliff:g id="TIMEZONE">|America/St_Vincent</xliff:g>"</string>
+ <string name="C315" msgid="8962557999110557329">"L<xliff:g id="SEPARATOR">=</xliff:g>Libreville<xliff:g id="TIMEZONE">|Africa/Libreville</xliff:g>"</string>
+ <string name="C316" msgid="3674113287320887951">"L<xliff:g id="SEPARATOR">=</xliff:g>Lomé<xliff:g id="TIMEZONE">|Africa/Lome</xliff:g>"</string>
+ <string name="C317" msgid="4818049429422081055">"L<xliff:g id="SEPARATOR">=</xliff:g>Luanda<xliff:g id="TIMEZONE">|Africa/Luanda</xliff:g>"</string>
+ <string name="C318" msgid="3814107319819817789">"L<xliff:g id="SEPARATOR">=</xliff:g>Lusaka<xliff:g id="TIMEZONE">|Africa/Lusaka</xliff:g>"</string>
+ <string name="C319" msgid="5757039321992317631">"M<xliff:g id="SEPARATOR">=</xliff:g>Majuro<xliff:g id="TIMEZONE">|Pacific/Majuro</xliff:g>"</string>
+ <string name="C320" msgid="8334348266391215583">"M<xliff:g id="SEPARATOR">=</xliff:g>Malabo<xliff:g id="TIMEZONE">|Africa/Malabo</xliff:g>"</string>
+ <string name="C321" msgid="5401323973667971972">"M<xliff:g id="SEPARATOR">=</xliff:g>Maputo<xliff:g id="TIMEZONE">|Africa/Maputo</xliff:g>"</string>
+ <string name="C322" msgid="67637052310417975">"M<xliff:g id="SEPARATOR">=</xliff:g>Mbabane<xliff:g id="TIMEZONE">|Africa/Mbabane</xliff:g>"</string>
+ <string name="C323" msgid="4500721332684955521">"M<xliff:g id="SEPARATOR">=</xliff:g>Moroni<xliff:g id="TIMEZONE">|Indian/Comoro</xliff:g>"</string>
+ <string name="C324" msgid="1741927819842539260">"N<xliff:g id="SEPARATOR">=</xliff:g>N\'Djamena<xliff:g id="TIMEZONE">|Africa/Ndjamena</xliff:g>"</string>
+ <string name="C325" msgid="8771905307322194055">"N<xliff:g id="SEPARATOR">=</xliff:g>Ngerulmud<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C326" msgid="2389198042593603472">"N<xliff:g id="SEPARATOR">=</xliff:g>Niamey<xliff:g id="TIMEZONE">|Africa/Niamey</xliff:g>"</string>
+ <string name="C327" msgid="5317479895686981912">"N<xliff:g id="SEPARATOR">=</xliff:g>Nikozija<xliff:g id="TIMEZONE">|Europe/Nicosia</xliff:g>"</string>
+ <string name="C328" msgid="6416405203954996861">"N<xliff:g id="SEPARATOR">=</xliff:g>Nouakchott<xliff:g id="TIMEZONE">|Africa/Nouakchott</xliff:g>"</string>
+ <string name="C329" msgid="6876960940903095843">"N<xliff:g id="SEPARATOR">=</xliff:g>Nuku\'alofa<xliff:g id="TIMEZONE">|Pacific/Tongatapu</xliff:g>"</string>
+ <string name="C330" msgid="1572294706542426161">"O<xliff:g id="SEPARATOR">=</xliff:g>Ouagadougou<xliff:g id="TIMEZONE">|Africa/Ouagadougou</xliff:g>"</string>
+ <string name="C331" msgid="2607492003890117689">"P<xliff:g id="SEPARATOR">=</xliff:g>Palikir<xliff:g id="TIMEZONE">|Pacific/Noumea</xliff:g>"</string>
+ <string name="C332" msgid="8349533418456323370">"P<xliff:g id="SEPARATOR">=</xliff:g>Philipsburg<xliff:g id="TIMEZONE">|America/Lower_Princes</xliff:g>"</string>
+ <string name="C333" msgid="2842640664018042568">"P<xliff:g id="SEPARATOR">=</xliff:g>Podgorica<xliff:g id="TIMEZONE">|Europe/Podgorica</xliff:g>"</string>
+ <string name="C334" msgid="3310146581437635671">"P<xliff:g id="SEPARATOR">=</xliff:g>Port Moresby<xliff:g id="TIMEZONE">|Pacific/Palau</xliff:g>"</string>
+ <string name="C335" msgid="3317158262102352303">"P<xliff:g id="SEPARATOR">=</xliff:g>Port Vila<xliff:g id="TIMEZONE">|Pacific/Efate</xliff:g>"</string>
+ <string name="C336" msgid="3810072761869903472">"P<xliff:g id="SEPARATOR">=</xliff:g>Porto-Novo<xliff:g id="TIMEZONE">|Africa/Porto-Novo</xliff:g>"</string>
+ <string name="C337" msgid="3412269218104112252">"P<xliff:g id="SEPARATOR">=</xliff:g>Priština<xliff:g id="TIMEZONE">|Europe/Belgrade</xliff:g>"</string>
+ <string name="C338" msgid="6151841959824325885">"R<xliff:g id="SEPARATOR">=</xliff:g>Roseau<xliff:g id="TIMEZONE">|America/Dominica</xliff:g>"</string>
+ <string name="C339" msgid="8909994815975646525">"T<xliff:g id="SEPARATOR">=</xliff:g>Taškent<xliff:g id="TIMEZONE">|Asia/Tashkent</xliff:g>"</string>
+ <string name="C340" msgid="415479723070879485">"T<xliff:g id="SEPARATOR">=</xliff:g>Tbilisi<xliff:g id="TIMEZONE">|Asia/Tbilisi</xliff:g>"</string>
+ <string name="C341" msgid="2299478430610154042">"T<xliff:g id="SEPARATOR">=</xliff:g>Thimphu<xliff:g id="TIMEZONE">|Asia/Thimphu</xliff:g>"</string>
+ <string name="C342" msgid="7997617194333170685">"T<xliff:g id="SEPARATOR">=</xliff:g>Tirana<xliff:g id="TIMEZONE">|Europe/Tirane</xliff:g>"</string>
+ <string name="C343" msgid="622805851462854910">"V<xliff:g id="SEPARATOR">=</xliff:g>Vaduz<xliff:g id="TIMEZONE">|Europe/Vaduz</xliff:g>"</string>
+ <string name="C344" msgid="7629820826386244509">"V<xliff:g id="SEPARATOR">=</xliff:g>Vientiane<xliff:g id="TIMEZONE">|Asia/Vientiane</xliff:g>"</string>
+ <string name="C345" msgid="1881198350378158072">"W<xliff:g id="SEPARATOR">=</xliff:g>Windhoek<xliff:g id="TIMEZONE">|Africa/Windhoek</xliff:g>"</string>
+ <string name="C346" msgid="2947674392768816097">"Y<xliff:g id="SEPARATOR">=</xliff:g>Yaoundé<xliff:g id="TIMEZONE">|Africa/Douala</xliff:g>"</string>
+ <string name="C347" msgid="6291282205599716861">"Y<xliff:g id="SEPARATOR">=</xliff:g>Yaren<xliff:g id="TIMEZONE">|Pacific/Nauru</xliff:g>"</string>
+ <string name="C348" msgid="8462071023392592539">"E<xliff:g id="SEPARATOR">=</xliff:g>Erevan<xliff:g id="TIMEZONE">|Asia/Yerevan</xliff:g>"</string>
+</resources>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..004ad95
--- /dev/null
+++ b/res/values-bs-rBA/strings.xml
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_label" msgid="6674495003718166674">"Sat"</string>
+ <string name="delete_alarm" msgid="3457780990646206817">"Izbriši alarm"</string>
+ <string name="label" msgid="162189613902857319">"Oznaka"</string>
+ <string name="default_label" msgid="5590025289805630372">"Alarm"</string>
+ <string name="alarm_vibrate" msgid="3476686921490362230">"Vibracija"</string>
+ <string name="alarm_repeat" msgid="7242985466344233206">"Ponovi"</string>
+ <string name="alert" msgid="6506982899651975645">"Melodija zvona alarma"</string>
+ <string name="default_alarm_ringtone_title" msgid="2916376768509623643">"Zadani zvuk alarma"</string>
+ <string name="default_timer_ringtone_title" msgid="1370799536406862317">"Tajmer je istekao"</string>
+ <string name="alarm_tomorrow" msgid="131356848787643420">"Sutra"</string>
+ <string name="alarm_today" msgid="7873594221106531654">"Danas"</string>
+ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Odbaci"</string>
+ <string name="alarm_alert_dismiss_now_text" msgid="7327972388636305792">"Odbaci sada"</string>
+ <string name="alarm_missed_title" msgid="3828345099754063392">"Propušteni alarm"</string>
+ <string name="alarm_missed_text" msgid="6585658367289194023">"<xliff:g id="ALARM_TIME">%s</xliff:g> - <xliff:g id="ALARM_LABEL">%s</xliff:g>"</string>
+ <string name="alarm_alert_snoozed_text" msgid="7064642998528766113">"Odloženo"</string>
+ <plurals name="alarm_alert_snooze_duration" formatted="false" msgid="7844300009062867865">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> min.</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> min.</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> min.</item>
+ </plurals>
+ <string name="alarm_alert_off_text" msgid="4472073417593915002">"Alarm isključen"</string>
+ <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Odloži"</string>
+ <plurals name="alarm_alert_snooze_set" formatted="false" msgid="3212729193036041768">
+ <item quantity="one">Odlaganje na <xliff:g id="MINUTES">%d</xliff:g> minutu.</item>
+ <item quantity="few">Odlaganje na <xliff:g id="MINUTES">%d</xliff:g> minute.</item>
+ <item quantity="other">Odlaganje na <xliff:g id="MINUTES">%d</xliff:g> minuta.</item>
+ </plurals>
+ <string name="alarm_alert_snooze_until" msgid="6958013659168344550">"Odlaganje do <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="alarm_alert_predismiss_title" msgid="5723945586913705445">"Predstojeći alarm"</string>
+ <string name="missed_alarm_has_been_deleted" msgid="5295473204045979335">"Propušteni alarm je izbrisan"</string>
+ <string name="timer_notifications_less_min" msgid="5481375048976427255">"Preostalo je manje od minute"</string>
+ <string name="timer_notifications_hours" msgid="1613266446037145138">"<xliff:g id="HOURS">%1$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_minutes" msgid="8543138714519498893">"<xliff:g id="MINUTES">%2$s</xliff:g><xliff:g id="REMAINING"> %3$s</xliff:g>"</string>
+ <string name="timer_notifications_hours_minutes" msgid="4301167788642025702">"Preostalo <xliff:g id="HOURS">%1$s</xliff:g> <xliff:g id="MINUTES">%2$s</xliff:g>"</string>
+ <string name="timer_remaining_single" msgid="6782851171906765864">"preostalo"</string>
+ <string name="timer_remaining_multiple" msgid="6052775962092160851">"preostalo"</string>
+ <string-array name="alarm_set">
+ <item msgid="6450913786084215050">"Alarm postavljen za manje od 1 minute od sada."</item>
+ <item msgid="6002066367368421848">"Alarm postavljen za <xliff:g id="DAYS">%1$s</xliff:g> od sada."</item>
+ <item msgid="8824719306247973774">"Alarm postavljen za <xliff:g id="HOURS">%2$s</xliff:g> od sada."</item>
+ <item msgid="8182406852935468862">"Alarm postavljen za <xliff:g id="DAYS">%1$s</xliff:g> i <xliff:g id="HOURS">%2$s</xliff:g> od sada."</item>
+ <item msgid="2532279224777213194">"Alarm postavljen za <xliff:g id="MINUTES">%3$s</xliff:g> od sada."</item>
+ <item msgid="5936557894247187717">"Alarm postavljen za <xliff:g id="DAYS">%1$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g> od sada."</item>
+ <item msgid="9115697840826129603">"Alarm postavljen za <xliff:g id="HOURS">%2$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g> od sada."</item>
+ <item msgid="2332583385137381060">"Alarm postavljen za <xliff:g id="DAYS">%1$s</xliff:g>, <xliff:g id="HOURS">%2$s</xliff:g> i <xliff:g id="MINUTES">%3$s</xliff:g> od sada."</item>
+ </string-array>
+ <plurals name="days" formatted="false" msgid="3706846447285206235">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
+ </plurals>
+ <plurals name="hours" formatted="false" msgid="3871283109767171655">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sat</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sata</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sati</item>
+ </plurals>
+ <plurals name="minutes" formatted="false" msgid="5484431721696058697">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <string name="every_day" msgid="4100909974923444602">"Svakog dana"</string>
+ <string name="day_concat" msgid="971998564991636532">", "</string>
+ <string name="loading_widget" msgid="5306242862476796500">"Učitavanje..."</string>
+ <string name="analog_gadget" msgid="1670505720837152766">"Analogni sat"</string>
+ <string name="digital_gadget" msgid="2326954556720571358">"Digitalni sat"</string>
+ <string name="settings" msgid="5849739030579520686">"Postavke"</string>
+ <string name="snooze_duration_title" msgid="1097309861110780483">"Dužina odlaganja"</string>
+ <plurals name="snooze_duration" formatted="false" msgid="3112918131095248271">
+ <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="snooze_picker_label" formatted="false" msgid="322739253661747732">
+ <item quantity="one">minuta</item>
+ <item quantity="few">minute</item>
+ <item quantity="other">minuta</item>
+ </plurals>
+ <string name="crescendo_duration_title" msgid="8606408542726189528">"Postepeno povećavaj jačinu zvuka"</string>
+ <string name="no_crescendo_duration" msgid="383801592865899932">"Isključeno"</string>
+ <string name="crescendo_duration" msgid="6641284876778266541">"Broj sekundi: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="crescendo_picker_label" msgid="7758024047003091056">"sekundi"</string>
+ <string name="auto_silence_title" msgid="2012754009554434544">"Utišaj nakon"</string>
+ <plurals name="auto_silence_summary" formatted="false" msgid="6579258788774360396">
+ <item quantity="one"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minuta</item>
+ <item quantity="few"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="FORMATTED_NUMBER">%s</xliff:g> minuta</item>
+ </plurals>
+ <string name="auto_silence_never" msgid="4821982647348750809">"Nikad"</string>
+ <string-array name="auto_silence_entries">
+ <item msgid="3024545954917711306">"1 minuta"</item>
+ <item msgid="5431906692406316549">"5 minuta"</item>
+ <item msgid="7742728812068919959">"10 minuta"</item>
+ <item msgid="2855948657259647629">"15 minuta"</item>
+ <item msgid="6330196381284475079">"20 minuta"</item>
+ <item msgid="7809240121716151904">"25 minuta"</item>
+ <item msgid="4278641338024561333">"Nikad"</item>
+ </string-array>
+ <string name="week_start_title" msgid="4268917518596832096">"Prvi dan sedmice"</string>
+ <string-array name="week_start_entries">
+ <item msgid="9010198173394482639">"subota"</item>
+ <item msgid="3993530639455360921">"nedjelja"</item>
+ <item msgid="8594709368683324282">"ponedjeljak"</item>
+ </string-array>
+ <string name="alarm_volume_title" msgid="8506245173912428522">"Jačina zvuka alarma"</string>
+ <string name="silent_ringtone_title" msgid="6177287302898634765">"Nečujno"</string>
+ <string name="unknown_ringtone_title" msgid="6637522029614550112">"Nepoznato"</string>
+ <string name="alarm_volume_muted" msgid="6658289289695673569">"Zvuk alarma je isključen"</string>
+ <string name="unmute_alarm_volume" msgid="2655009276035357497">"Uključi zvuk"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Zadana melodija alarma je nečujna"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Promijeni"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Uređaj je u potpunosti utišan"</string>
+ <string name="volume_button_setting_title" msgid="6937131248843413357">"Dugmad za jačinu zvuka"</string>
+ <string-array name="volume_button_setting_entries">
+ <item msgid="7972756698723318690">"Odloži"</item>
+ <item msgid="3450979320164769576">"Odbaci"</item>
+ <item msgid="6302517608411378024">"Ne radi ništa"</item>
+ </string-array>
+ <string name="label_description" msgid="8736179296142915727">"Oznaka"</string>
+ <string name="ringtone_description" msgid="7580922112921069925">"Melodija zvona"</string>
+ <string name="menu_alarm" msgid="4772010125376647519">"Alarm"</string>
+ <string name="menu_timer" msgid="6459070074762877114">"Tajmer"</string>
+ <string name="menu_clock" msgid="5612760670606829805">"Sat"</string>
+ <string name="menu_stopwatch" msgid="3396117705293574701">"Štoperica"</string>
+ <string name="button_alarms" msgid="3907838219512538763">"Dodaj alarm"</string>
+ <string name="button_cities" msgid="4555761857494501363">"Gradovi"</string>
+ <string name="menu_item_settings" msgid="1413723516369078665">"Postavke"</string>
+ <string name="menu_item_help" msgid="4570953476186849841">"Pomoć"</string>
+ <string name="menu_item_night_mode" msgid="3486930302245398975">"Noćni način rada"</string>
+ <string name="menu_item_sort_by_gmt_offset" msgid="3120860422682721706">"Sortiraj po vremenu"</string>
+ <string name="menu_item_sort_by_name" msgid="1762931290495104106">"Sortiraj po nazivu"</string>
+ <string name="selected_cities_label" msgid="3607479399424246605">"Odabrani gradovi"</string>
+ <string name="sw_resume_button" msgid="2569360966002022248">"Nastavi"</string>
+ <string name="sw_reset_button" msgid="6616804728322906117">"Poništi"</string>
+ <string name="sw_start_button" msgid="8373422516681242270">"Pokreni"</string>
+ <string name="sw_pause_button" msgid="2422084453454138042">"Pauziraj"</string>
+ <string name="sw_lap_button" msgid="6992264696039004233">"Krug"</string>
+ <string name="sw_share_button" msgid="4478648110382859382">"Podijeli"</string>
+ <string name="hours_label" msgid="3393478155635368097">"h"</string>
+ <string name="minutes_label" msgid="3568098128251438588">"m"</string>
+ <string name="seconds_label" msgid="124655952824003246">"s"</string>
+ <string name="hours_label_description" msgid="8652842524970971830">"sati"</string>
+ <string name="minutes_label_description" msgid="965686733490357796">"minuta"</string>
+ <string name="seconds_label_description" msgid="3821620053141299692">"sekundi"</string>
+ <string name="sw_share_main" msgid="7703563468204234405">"Moje vrijeme je <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="sw_share_laps" msgid="614390674795945007">"Vremena krugova:"</string>
+ <string name="sw_notification_lap_number" msgid="3535420316052647126">"Krug <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <plurals name="Nhours_description" formatted="false" msgid="4539186407746763655">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> sat</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> sata</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> sati</item>
+ </plurals>
+ <plurals name="Nminutes_description" formatted="false" msgid="6373760365221990859">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> minuta</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> minute</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="Nseconds_description" formatted="false" msgid="6456500168536594889">
+ <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> sekunda</item>
+ <item quantity="few"><xliff:g id="NUMBER">%d</xliff:g> sekunde</item>
+ <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> sekundi</item>
+ </plurals>
+ <string name="timer_add_timer" msgid="862733633862574752">"Dodaj tajmer"</string>
+ <string name="timer_start" msgid="6158486445614356442">"Pokreni"</string>
+ <string name="timer_delete" msgid="8699122001991909302">"Izbriši"</string>
+ <string name="timer_descriptive_delete" msgid="8794915342760383536">"Izbriši <xliff:g id="NUMBER_STRING">%s</xliff:g>"</string>
+ <string name="timer_plus_one" msgid="6631211310420106116">"Dodajte 1 minutu"</string>
+ <string name="timer_plus_1_min" msgid="8645224089494875062">"Dodaj 1 min."</string>
+ <string name="timer_stop" msgid="3361154678667736722">"Zaustavi"</string>
+ <string name="timer_stop_all" msgid="9080780442843034376">"Zaustavi sve tajmere"</string>
+ <string name="timer_reset" msgid="7848424809190171640">"Poništi"</string>
+ <string name="timer_cancel" msgid="3572868404230815644">"Otkaži"</string>
+ <string name="timer_canceled" msgid="7327923392567128060">"Tajmer otkazan"</string>
+ <string name="timer_times_up" msgid="9190440395938519009">"Vrijeme je isteklo"</string>
+ <string name="timer_multi_times_up" msgid="1239104626836080409">"Isteklih tajmera: <xliff:g id="NUM_TIMERS">%d</xliff:g>"</string>
+ <string name="timer_notification_label" msgid="4933184831583137249">"Tajmer"</string>
+ <string name="timer_pause" msgid="3748323712728398743">"Pauziraj"</string>
+ <string name="timer_reset_all" msgid="7530633132757866087">"Poništi sve tajmere"</string>
+ <string-array name="sw_share_strings">
+ <item msgid="842841032273927988">"Ni ptica trkačica nije ovako brza."</item>
+ <item msgid="6332879039890727169">"Uživaj, zasluženo je."</item>
+ <item msgid="815382761274660130">"Androidi su brzi, ali ne kao ti!"</item>
+ <item msgid="7916250650982813737">"Uh."</item>
+ <item msgid="6836603904515182333">"Vrhunsko vrij3m3."</item>
+ <item msgid="7508085100680861631">"Monstruozno brzo."</item>
+ <item msgid="5961245252909589573">"Ovo je bilo brže od munje, hoćemo još jednom?"</item>
+ <item msgid="5211891900854545940">"Idemo ludo, idemo jako."</item>
+ <item msgid="9071353477103826053">"Tebi se baš žuri."</item>
+ <item msgid="3785193933691117181">"Brže od svjetlosti."</item>
+ </string-array>
+ <string name="home_label" msgid="4436139365695453870">"Lokalno vrijeme"</string>
+ <string name="cities_activity_title" msgid="8552462751129256730">"Gradovi"</string>
+ <string name="clock_settings" msgid="8317286807280600391">"Sat"</string>
+ <string name="clock_style" msgid="2265011060429742344">"Stil"</string>
+ <string name="open_date_settings" msgid="7712226973337806152">"Promijeni datum i vrijeme"</string>
+ <string-array name="clock_style_entries">
+ <item msgid="917900462224167608">"Analogni"</item>
+ <item msgid="8483930821046925592">"Digitalni"</item>
+ </string-array>
+ <string name="automatic_home_clock" msgid="6274174710735449252">"Automatski sat s vremenom kod kuće"</string>
+ <string name="automatic_home_clock_summary" msgid="6020476321040807273">"Dok putujete u područje u kojem vrijedi drugo vrijeme, dodajte sat za vrijeme kod kuće"</string>
+ <string name="home_time_zone" msgid="9199730676287974501">"Matična vremenska zona"</string>
+ <string name="home_time_zone_title" msgid="807894493443834624">"Matična vremenska zona"</string>
+ <string name="time_picker_cancel" msgid="7437106489606013077">"Otkaži"</string>
+ <string name="time_picker_set" msgid="331153175471468051">"Uredu"</string>
+ <string name="city_checked" msgid="616847871968019">"Grad <xliff:g id="CITY_NAME">%s</xliff:g> potvrđen"</string>
+ <string name="city_unchecked" msgid="710212932781145918">"Grad <xliff:g id="CITY_NAME">%s</xliff:g> nije potvrđen"</string>
+ <string-array name="timezone_labels">
+ <item msgid="5495601234086197399">"Marshallovi otoci"</item>
+ <item msgid="4196408495909011020">"Otok Midway"</item>
+ <item msgid="1414384194857730006">"Havaji"</item>
+ <item msgid="2687091371581931926">"Aljaska"</item>
+ <item msgid="1922100269679049660">"Pacifičko vrijeme"</item>
+ <item msgid="7156402158716866161">"Tihuana"</item>
+ <item msgid="1144117502254612241">"Arizona"</item>
+ <item msgid="101284182011722637">"Chihuahua"</item>
+ <item msgid="689121094232986897">"Planinsko vrijeme"</item>
+ <item msgid="5445331923942302756">"Centralna Amerika"</item>
+ <item msgid="2749806434052452351">"Centralno vrijeme"</item>
+ <item msgid="3997138870229703753">"Mexico City"</item>
+ <item msgid="5425567073027744888">"Saskatchewan"</item>
+ <item msgid="2877342865396629368">"Bogota"</item>
+ <item msgid="568682398893899670">"Istočno vrijeme"</item>
+ <item msgid="668135984541863866">"Venecuela"</item>
+ <item msgid="3737474220861486223">"Atlantsko vrijeme (Barbados)"</item>
+ <item msgid="6279116051273436870">"Atlantsko vrijeme (Kanada)"</item>
+ <item msgid="8513382867172014244">"Manaus"</item>
+ <item msgid="7776299003105932407">"Santiago"</item>
+ <item msgid="8636989494746218677">"Newfoundland"</item>
+ <item msgid="4402541016410147505">"Brazilija"</item>
+ <item msgid="2251184440733164084">"Buenos Aires"</item>
+ <item msgid="6202926618569004969">"Grenland"</item>
+ <item msgid="2355275037115290628">"Montevideo"</item>
+ <item msgid="1377549694711708945">"Srednje Atlantsko"</item>
+ <item msgid="3457671272126347981">"Azori"</item>
+ <item msgid="3659315141063710840">"Zelenortski otoci"</item>
+ <item msgid="1260941741802367635">"Kazablanka"</item>
+ <item msgid="8275203689687954762">"London, Dablin"</item>
+ <item msgid="5970179539479320905">"Amsterdam, Berlin"</item>
+ <item msgid="5396319478750517962">"Beograd"</item>
+ <item msgid="8688787475056663004">"Brisel"</item>
+ <item msgid="3415827874921681622">"Sarajevo"</item>
+ <item msgid="402008965928320066">"Windhoek"</item>
+ <item msgid="6436942724959275569">"Zapadnoafričko vrijeme"</item>
+ <item msgid="954536568417204026">"Aman, Jordan"</item>
+ <item msgid="8932745482008902551">"Atina, Istanbul"</item>
+ <item msgid="320025725949024510">"Bejrut, Liban"</item>
+ <item msgid="7242083112551905970">"Kairo"</item>
+ <item msgid="7241520146011450419">"Helsinki"</item>
+ <item msgid="2717065017510546526">"Jeruzalem"</item>
+ <item msgid="8698556287741466553">"Minsk"</item>
+ <item msgid="1797598357342084506">"Harare"</item>
+ <item msgid="5169119919905066998">"Bagdad"</item>
+ <item msgid="2615788116201065182">"Moskva"</item>
+ <item msgid="9084354867885584646">"Kuvajt"</item>
+ <item msgid="1351570519986178268">"Najrobi"</item>
+ <item msgid="7094569580635877460">"Teheran"</item>
+ <item msgid="3953138772617909704">"Baku"</item>
+ <item msgid="2868893113598800752">"Tbilisi"</item>
+ <item msgid="7088581865802476373">"Erevan"</item>
+ <item msgid="1941122257623887992">"Dubai"</item>
+ <item msgid="9194797225058249720">"Kabul"</item>
+ <item msgid="6486569254364577332">"Islamabad, Karači"</item>
+ <item msgid="5487724896895412089">"Uralsk"</item>
+ <item msgid="364906869710826982">"Ekaterinburg"</item>
+ <item msgid="2106505051751383358">"Kolkata"</item>
+ <item msgid="6851586621581501447">"Šri Lanka"</item>
+ <item msgid="800438544128213134">"Katmandu"</item>
+ <item msgid="6173621471007643021">"Astana"</item>
+ <item msgid="8645125891971581128">"Jangon"</item>
+ <item msgid="2886407505119737794">"Krasnojarsk"</item>
+ <item msgid="3408222398188107090">"Bangkok"</item>
+ <item msgid="4441612937172851228">"Peking"</item>
+ <item msgid="4936715789028996930">"Hong Kong"</item>
+ <item msgid="4261031143777385525">"Irkutsk"</item>
+ <item msgid="3538060959338191835">"Kuala Lumpur"</item>
+ <item msgid="1438847562643099201">"Perth"</item>
+ <item msgid="3063913827688244383">"Tajpeh"</item>
+ <item msgid="3502757135046564209">"Seul"</item>
+ <item msgid="6107588684519111669">"Tokio, Osaka"</item>
+ <item msgid="4350769099755608471">"Jakutsk"</item>
+ <item msgid="2422707004533526462">"Adelaide"</item>
+ <item msgid="1292192084554134339">"Darwin"</item>
+ <item msgid="1320883699470001716">"Brisbane"</item>
+ <item msgid="5137198806146386527">"Hobart"</item>
+ <item msgid="5920063686933941174">"Sydney, Canberra"</item>
+ <item msgid="615906039696009425">"Vladivostok"</item>
+ <item msgid="7738680449356275374">"Guam"</item>
+ <item msgid="2882915026380778227">"Magadan"</item>
+ <item msgid="8255615641810148152">"Auckland"</item>
+ <item msgid="3027153773466391728">"Fidži"</item>
+ <item msgid="5911600083231840181">"Tonga"</item>
+ <item msgid="5176858645450908751">"Džakarta"</item>
+ </string-array>
+ <string name="alarm_settings" msgid="2947147071388290814">"Alarmi"</string>
+ <string name="timer_service_desc" msgid="2256002649882602433">"Obrađuje radnje iz obavijesti tajmera."</string>
+ <string name="stopwatch_service_desc" msgid="9220132827343760767">"Obrađuje radnje iz obavijesti štoperice."</string>
+ <string name="swn_paused" msgid="6364358842808263589">"Pauzirana"</string>
+ <string name="description_direction_right" msgid="5709209043267548985">"Prevucite desno da odbacite"</string>
+ <string name="description_direction_left" msgid="7448141043674998679">"Prevucite lijevo da odložite"</string>
+ <string name="description_direction_both" msgid="1841309486023845685">"Prevucite lijevo da odložite ili desno da odbacite"</string>
+ <string name="timer_settings" msgid="7955522143086154795">"Tajmeri"</string>
+ <string name="timer_ringtone_title" msgid="7630214935791599619">"Melodija zvona za tajmer"</string>
+ <string name="timer_vibrate_title" msgid="7788920024785587518">"Vibracija za mjerač vremena"</string>
+ <string name="timer_paused" msgid="5941160896040771462">"Tajmer pauziran"</string>
+ <string name="timers_stopped" msgid="3186191253226005149">"Pauziranih tajmera: <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Dodirnite da biste vidjeli tajmere"</string>
+ <string name="timers_in_use" msgid="5570729467344408506">"Tajmeri: <xliff:g id="NUMBER">%d</xliff:g>"</string>
+ <string name="next_timer_notif" msgid="6136454740115613653">"Naredni tajmer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Podešavanje čuvara ekrana"</string>
+ <string name="night_mode_title" msgid="5983813889469616299">"Noćni način rada"</string>
+ <string name="night_mode_summary" msgid="1017350187324162631">"Veoma prigušen ekran (za mračne prostorije)"</string>
+ <string name="expand_alarm" msgid="7392616528943305020">"Proširi alarm"</string>
+ <string name="collapse_alarm" msgid="3561772046433483980">"Skupi alarm"</string>
+ <string name="alarm_undo" msgid="5710042601177655254">"Vrati"</string>
+ <string name="alarm_deleted" msgid="6131529309389084785">"Alarm izbrisan"</string>
+ <string name="world_day_of_week_label" msgid="5911196322328341288">"/ <xliff:g id="LABEL">%s</xliff:g>"</string>
+ <string name="next_alarm_description" msgid="2650244835760747046">"Naredni alarm: <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_alarms" msgid="6429431324842022917">"Nema alarma"</string>
+ <string name="invalid_time" msgid="2782334750243998633">"Nevažeće vrijeme <xliff:g id="INVALID_HOUR">%1$d</xliff:g>:<xliff:g id="INVALID_MINUTES">%2$d</xliff:g> <xliff:g id="INVALID_AMPM">%3$s</xliff:g>"</string>
+ <string name="no_alarm_at" msgid="8140632482969193119">"Nema alarma u <xliff:g id="ALARM_TIME_HOUR">%1$d</xliff:g>:<xliff:g id="ALARM_TIME_MINUTES">%2$d</xliff:g>"</string>
+ <string name="no_scheduled_alarms" msgid="2115420148192753534">"Nema zakazanih alarma"</string>
+ <string name="no_label_specified" msgid="2008482054428460626">"Nije navedena oznaka"</string>
+ <string name="no_alarms_with_label" msgid="6250998794542941665">"Nijedan alarm nema oznaku"</string>
+ <string name="stopwatch_isnt_running" msgid="7147219965448204727">"Štoperica nije pokrenuta"</string>
+ <string name="stopwatch_paused" msgid="2187615623275408601">"Štoperica pauzirana"</string>
+ <string name="stopwatch_reset" msgid="7585914953721021042">"Poništavanje štoperice"</string>
+ <string name="stopwatch_lapped" msgid="5844686448815550482">"Štoperica je izmjerila krug"</string>
+ <string name="stopwatch_started" msgid="7843882246387176304">"Štoperica pokrenuta"</string>
+ <string name="no_alarm_scheduled_for_this_time" msgid="4463069177414482818">"Nema zakazanih alarma za ovo vrijeme"</string>
+ <string name="alarm_is_dismissed" msgid="5509897230565826642">"Alarm za <xliff:g id="ALARM_TIME">%s</xliff:g> odbačen"</string>
+ <string name="alarm_is_set" msgid="5503226382620011088">"Alarm postavljen za <xliff:g id="ALARM_TIME">%s</xliff:g>"</string>
+ <string name="no_timers_exist" msgid="7062019300048831373">"Nema tajmera"</string>
+ <string name="too_many_timers_exist" msgid="6339194231767431627">"Postoji više od jednog tajmera"</string>
+ <string name="timer_does_not_exist" msgid="4457482976523984231">"Tajmer je uklonjen."</string>
+ <string name="timer_created" msgid="4381027137335885547">"Tajmer kreiran"</string>
+ <string name="timer_was_reset" msgid="6495796785185062631">"Tajmer poništen"</string>
+ <string name="timer_deleted" msgid="9110322362460029392">"Tajmer izbrisan"</string>
+ <string name="timer_started" msgid="6715582052946641641">"Tajmer pokrenut"</string>
+ <string name="invalid_timer_length" msgid="3104567893212932487">"Nevažeća dužina tajmera"</string>
+ <string name="no_city_selected" msgid="1007596865203283741">"Nije odabran grad"</string>
+ <string name="the_city_you_specified_is_not_available" msgid="1753597460426454543">"Grad koji ste naveli nije dostupan"</string>
+ <string name="the_city_already_added" msgid="3799050213771793020">"Taj grad je već dodan"</string>
+ <string name="city_added" msgid="1335509457349179514">"<xliff:g id="CITY_NAME">%s</xliff:g> dodan"</string>
+ <string name="city_deleted" msgid="3935141305276867838">"<xliff:g id="CITY_NAME">%s</xliff:g> izbrisan"</string>
+ <string name="alarm_cant_be_dismissed_still_more_than_24_hours_away" msgid="8810520940995307437">"<xliff:g id="ALARM_TIME">%s</xliff:g> alarm se još ne može odbaciti; do njega ima više od 24 sata"</string>
+ <string name="dismiss_alarm" msgid="7204593078688533541">"Odbaci alarm"</string>
+ <string name="pick_alarm_to_dismiss" msgid="5408769235866082896">"Odaberite koji će se alarm odbaciti"</string>
+ <string name="no_firing_alarms" msgid="4986161963178722289">"Nema aktivnih alarma"</string>
+ <string name="alarm_is_snoozed" msgid="7044644119744928846">"Alarm za <xliff:g id="ALARM_TIME">%s</xliff:g> odložen na 10 minuta"</string>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 18963fc..65e6f40 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Desconegut"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"S\'ha silenciat el volum de l\'alarma"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Activa el so"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"El dispositiu està configurat en silenci total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botons de volum"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Posposa"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibració del temporitzador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Temporitzador en pausa"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporitzadors en pausa"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toca per veure els temporitzadors"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Toca per veure els teus temporitzadors"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> temporitzadors"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Pròxim: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Configuració de l\'estalvi de pantalla"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Configuració de l\'estalvi de pantalla"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Mode nocturn"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Pantalla molt tènue (per a espais foscos)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Amplia l\'alarma"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 6c669c6..72e6952 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -134,6 +134,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Neznámé"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Hlasitost budíku ztlumena"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Zapnout zvuk"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Výchozí tón budíku je tichý"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Změnit"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Zařízení je nastaveno na úplné ticho"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Tlačítka hlasitosti"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Odložit zvonění"</item>
@@ -331,10 +334,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibrace časovače"</string>
<string name="timer_paused" msgid="5941160896040771462">"Časovač pozastaven"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Pozastavené časovače: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Dotykem zobrazíte časovače"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Klepnutím zobrazíte časovače"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Časovače (<xliff:g id="NUMBER">%d</xliff:g>)"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Další časovač: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Nastavení spořiče"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Nastavení spořiče obrazovky"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Noční režim"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Velmi ztlumený jas displeje (pro tmavé místnosti)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Rozbalit budík"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ff98a7d..7941726 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Ukendt"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarmlyden er slået fra"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Slå lyden til"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Enheden er indstillet til total stilhed"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Lydstyrkeknapper"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Udsætter"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibration for timer"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timeren blev sat på pause"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timere blev sat på pause"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Tryk for at se dine timere"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tryk for at se dine timere"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timere"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Næste timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Indstillinger for Dagdrøm"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Indstillinger for pauseskærm"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nattilstand"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Meget mørk skærm (til mørke rum)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Udvid alarm"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a890334..e592096 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Unbekannt"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Wecker stummgeschaltet"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Stummschaltung aufheben"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Gerät ist im Modus \"Lautlos\""</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Lautstärketaste"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Schlummern"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibrationsalarm des Timers"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer pausiert"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> Timer pausiert"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Zum Ansehen der Timer berühren"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tippen, um Timer abzurufen"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> Timer"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Nächster Timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Daydream-Einstellungen"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Bildschirmschoner-Einstellungen"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nachtmodus"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Stark gedimmtes Display (für dunkle Räume)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Wecker maximieren"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 616983f..2b66299 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Άγνωστο"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Ήχος ξυπνητηριού σε σίγαση"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Κατάργηση σίγασης"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Η σίγαση ορίστηκε ως προεπιλεγμένος ήχος κλήσης"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Αλλαγή"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Η συσκευή έχει τεθεί σε πλήρη σίγαση"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Κουμπιά έντασης"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Αναβολή"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Δόνηση χρονομέτρου"</string>
<string name="timer_paused" msgid="5941160896040771462">"Χρονόμετρο σε παύση"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> χρονόμετρα σε παύση"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Αγγίξτε για να δείτε τα ξυπνητήρια σας"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Πατήστε για να δείτε τα χρονόμετρα"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> χρονόμετρα"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Επόμενο χρονόμετρο: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Ρυθμίσεις Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ρυθμίσεις προφύλαξης οθόνης"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Λειτουργία νύχτας"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Πολύ χαμηλή φωτεινότητα οθόνης (για σκοτεινά δωμάτια)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Ανάπτυξη ξυπνητηριού"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 34449c9..a780c2d 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Unknown"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarm volume muted"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Unmute"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Default alarm ringtone is silent"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Change"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Device is set to total silence"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volume buttons"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snooze"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Timer vibrate"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer paused"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timers paused"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Touch to see your timers"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tap to see your timers"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Next timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Dream settings"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Screen-saver settings"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Night mode"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Very dim display (for dark rooms)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expand alarm"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 34449c9..a780c2d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Unknown"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarm volume muted"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Unmute"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Default alarm ringtone is silent"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Change"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Device is set to total silence"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volume buttons"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snooze"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Timer vibrate"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer paused"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timers paused"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Touch to see your timers"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tap to see your timers"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Next timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Dream settings"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Screen-saver settings"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Night mode"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Very dim display (for dark rooms)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expand alarm"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 34449c9..a780c2d 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Unknown"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarm volume muted"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Unmute"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Default alarm ringtone is silent"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Change"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Device is set to total silence"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volume buttons"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snooze"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Timer vibrate"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer paused"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timers paused"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Touch to see your timers"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tap to see your timers"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Next timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Dream settings"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Screen-saver settings"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Night mode"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Very dim display (for dark rooms)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expand alarm"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f1c14ad..e3d20a0 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Desconocido"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Se silenció el volumen de la alarma"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Dejar de silenciar"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Tono de alarma predeterminado silenciado"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Cambiar"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"El dispositivo está configurado en silencio total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botones de volumen"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Posponer"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibración del temporizador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Se pausó el temporizador"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores pausados"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toca para ver tus temporizadores."</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Presiona para ver tus temporizadores"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Próximo temporizador: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Configuración de Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Configuración del protector de pantalla"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modo nocturno"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Pantalla muy atenuada (para ambientes poco iluminados)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expandir alarma"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b42877c..e2dde4d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Desconocido"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volumen de la alarma silenciado"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Activar sonido"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Dispositivo en silencio total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botones de volumen"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Posponer"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibración del temporizador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Temporizador pausado"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores en pausa"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toca para ver tus temporizadores"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Toca para ver los recordatorios"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Próximo: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Ajustes del salvapantallas"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Configuración del salvapantallas"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modo nocturno"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Pantalla muy atenuada (para habitaciones oscuras)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expandir alarma"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a72c8c1..641d91a 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Tundmatu"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Äratuste helitugevus vaigistati"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Tühista vaigistus"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Seade on täielikult vaigistatud"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Helitugevuse nupud"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Lükka edasi"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Taimeri vibratsioon"</string>
<string name="timer_paused" msgid="5941160896040771462">"Taimer peatati"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> taimerit peatati"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Puudutage, et näha oma taimereid"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Puudutage taimerite nägemiseks"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> taimerit"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Järgmine taimer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Uneseaded"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekraanisäästja seaded"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Öörežiim"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Väga hämar ekraan (pimedate ruumide jaoks)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Äratuse laiendamine"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index c952ffb..15abaea 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Ezezaguna"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarma isilarazi da"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Aktibatu audioa"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Alarmaren tonu lehenetsia modu isilean dago"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Aldatu"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Gailua isiltasun osoko moduan dago"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Bolumen-botoiak"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Atzeratu"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Tenporizadorearen dardara"</string>
<string name="timer_paused" msgid="5941160896040771462">"Pausatu da tenporizadorea"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> tenporizadore pausatuta"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Tenporizadoreak ikusteko, ukitu hau"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Sakatu tenporizadoreak ikusteko"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> tenporizadore"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Hurrengo tenporizadorea: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Pantaila-babeslearen ezarpenak"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Pantaila-babeslearen ezarpenak"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Gau modua"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Oso argi ahula (toki ilunetarako)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Zabaldu alarma"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 914aba6..59ac68d 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"نامشخص"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"زنگ بیصدا شد"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"باصدا"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"دستگاه روی سکوت کلی تنظیم شده است"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"دکمههای میزان صدا"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"تعویق"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"لرزش تایمر"</string>
<string name="timer_paused" msgid="5941160896040771462">"تایمر متوقف شد"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> تایمر متوقف شد"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"برای دیدن تایمرهای خود لمس کنید"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"برای دیدن تایمرها ضربه بزنید"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> تایمر"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"تایمر بعدی: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"تنظیمات حالت رؤیا"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"تنظیمات محافظ صفحه"</string>
<string name="night_mode_title" msgid="5983813889469616299">"حالت شب"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"نمایشگر بسیار تیره (برای اتاقهای تاریک)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"هشدار بزرگکردن"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 9658885..6dbfb17 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Tuntematon"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Herätyksen ääni mykistetty"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Poista mykistys"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Täydellinen hiljaisuus on käytössä"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Äänenvoimakkuuspainikkeet"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Torkku"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Ajastimen värinä"</string>
<string name="timer_paused" msgid="5941160896040771462">"Ajastin keskeytetty"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ajastinta keskeytetty"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Kosketa ja näytä ajastimet"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Näytä ajastimet koskettamalla."</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ajastinta"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Seuraava ajastin: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Lepotila-asetukset"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Näytönsäästäjäasetukset"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Yötila"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Hyvin himmeä näyttö (hämärille huoneille)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Laajenna hälytys"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 1a0f011..f0ffb70 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Inconnu"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume de l\'alarme coupé"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Réactiver le son"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"L\'appareil est réglé en mode Silence total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Boutons du volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Arrêt momentané"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibration du minuteur"</string>
<string name="timer_paused" msgid="5941160896040771462">"Minuterie interrompue"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> minuteries en pause"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Appuyer ici pour afficher les minuteurs"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Touchez ici pour afficher vos minuteries"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> minuteries"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Minuteur suivant : <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Paramètres de l\'écran de veille"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Paramètres de l\'écran de veille"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Mode Nuit"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Affichage peu lumineux (pour les pièces sombres)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Développer l\'alarme"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f597ea8..9062bd6 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Inconnue"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume de l\'alarme coupé"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Réactiver le son"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"L\'appareil est défini sur \"Aucune interruption\"."</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Boutons du volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Répéter"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Minuteur en mode vibreur"</string>
<string name="timer_paused" msgid="5941160896040771462">"Minuteur interrompu"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> minuteurs interrompus"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Appuyer ici pour afficher les minuteurs"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Appuyez pour afficher vos minuteurs."</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> minuteurs"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Minuteur suivant : <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Paramètres écran de veille"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Paramètres de l\'économiseur d\'écran"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Mode Nuit"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Affichage peu lumineux (pour les pièces sombres)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Développer l\'alarme"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index c79841c..6809777 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Descoñecido"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Silenciouse o volume da alarma"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Activar o son"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Ton de chamada de alarma predeterminado silenciado"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Cambiar"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Activouse a opción de silencio total no dispositivo"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botóns de volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Adiar"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibración do temporizador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Pausouse o temporizador"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores en pausa"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toca para ver os temporizadores"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Toca para ver os teus temporizadores"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Seguinte temporizador: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Configuración do protector de pantalla"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Configuración do protector de pantalla"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modo nocturno"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Pantalla moi tenue (para salas escuras)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expande a alarma"</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 47e99b8..1b66692 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"અજાણ્યું"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"એલાર્મનું વૉલ્યૂમ મ્યૂટ કર્યું"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"અનમ્યૂટ કરો"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ઉપકરણ સંપૂર્ણ મૌન પર સેટ કરેલ છે"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"વૉલ્યૂમ બટન્સ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"સ્નૂઝ"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ટાઇમર વાઇબ્રેટ"</string>
<string name="timer_paused" msgid="5941160896040771462">"ટાઇમર થોભાવ્યું"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ટાઇમર્સ થોભાવ્યાં"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"તમારા ટાઇમર્સ જોવા માટે ટચ કરો"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"તમારા ટાઇમર્સને જોવા માટે ટૅપ કરો"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ટાઇમર્સ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"આગલું ટાઇમર: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ડ્રીમ સેટિંગ્સ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"સ્ક્રીન સેવર સેટિંગ્સ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"રાત્રિ મોડ"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ખૂબ આછું પ્રદર્શન (અંધારા રૂમ્સ માટે)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"એલાર્મ વિસ્તૃત કરો"</string>
diff --git a/res/layout/blank_footer_view.xml b/res/values-h420dp/dimens.xml
similarity index 69%
rename from res/layout/blank_footer_view.xml
rename to res/values-h420dp/dimens.xml
index c9460fc..3bb17b3 100644
--- a/res/layout/blank_footer_view.xml
+++ b/res/values-h420dp/dimens.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -13,7 +13,10 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:background="@color/transparent"
- android:layout_height="@dimen/button_footer_height" />
\ No newline at end of file
+
+<resources>
+ <dimen name="alarm_text_font_size">16sp</dimen>
+ <dimen name="alarm_time_font_size">64sp</dimen>
+
+ <dimen name="day_button_font_size">18sp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-h470dp-v21/dimens.xml b/res/values-h470dp-v21/dimens.xml
new file mode 100644
index 0000000..e1e6fb9
--- /dev/null
+++ b/res/values-h470dp-v21/dimens.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<!-- Fab automatically adjusts its size from mini to normal at this height. Mirror the change so the
+values can be used elsewhere in clock layouts. -->
+<resources>
+ <!-- Lollipop and later normal floating action button margin. -->
+ <dimen name="fab_margin">16dp</dimen>
+
+ <!-- Lollipop and later normal floating action button container height. -->
+ <dimen name="fab_height">88dp</dimen>
+
+ <!-- Lollipop and later normal floating action button size. -->
+ <dimen name="fab_button_size">@dimen/design_fab_size_normal</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index d08645d..f46309b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"अज्ञात"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"अलार्म का वॉल्यूम म्यूट किया हुआ है"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"अनम्यूट करें"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"डिफ़ॉल्ट अलार्म रिंगटोन मौन है"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"बदलें"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"डिवाइस पूरी तरह से मौन पर सेट है"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"वॉल्यूम बटन को दबाने पर"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"बाद में याद दिलाएं"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"टाइमर कंपन"</string>
<string name="timer_paused" msgid="5941160896040771462">"टाइमर रोका गया"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> टाइमर रोके गए"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"अपने टाइमर देखने के लिए स्पर्श करें"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"अपने टाइमर देखने के लिए टैप करें"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> टाइमर"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"अगला टाइमर: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"स्वप्न सेटिंग"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"स्क्रीन सेवर सेटिंग"</string>
<string name="night_mode_title" msgid="5983813889469616299">"रात्रि मोड"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"बहुत मद्धिम प्रदर्शन (अंधेरे कमरों के लिए)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"अलार्म विस्तृत करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 32d6c52..a5039ae 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -126,6 +126,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Nepoznato"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Zvuk alarma isključen"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Uključi zvuk"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Uređaj je postavljen na potpunu tišinu"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Gumbi za glasnoću"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Odgodi alarm"</item>
@@ -320,10 +325,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibriranje odbrojavanja"</string>
<string name="timer_paused" msgid="5941160896040771462">"Tajmer je pauziran"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Broj pauziranih tajmera: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Dodirnite da biste vidjeli svoje mjerače vremena"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Dodirnite da biste vidjeli mjerače vremena"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> tajmera"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Sljedeći: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Postavke sna"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Postavke čuvara zaslona"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Noćni način"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Jako zatamnjeni zaslon (za tamne komore)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Proširi alarm"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 32da322..f3ef87d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Ismeretlen"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Ébresztési hangerő lenémítva"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Némítás feloldása"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Az eszköz teljesen le van némítva"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Hangerőgombok"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Szundi"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Időzítő rezgése"</string>
<string name="timer_paused" msgid="5941160896040771462">"Időzítő szüneteltetve"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> időzítő szüneteltetve"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Érintse meg az időzítők megtekintéséhez"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Koppintson rá az időzítők megtekintéséhez"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> időzítő"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Következő időzítő: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Álom beállításai"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Képernyőkímélő beállításai"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Éjszakai üzemmód"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Nagyon halvány megjelenítés (sötét szobában)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Ébresztő megnyitása"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 31a9937..f256ad9 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Անհայտ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Զարթուցիչի ձայնն անջատված է"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Միացնել ձայնը"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Սարքը ընդհանուր լուռ ռեժիմում է"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Ձայնի կոճակներ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Ննջել"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Ժամաչափի թրթռում"</string>
<string name="timer_paused" msgid="5941160896040771462">"Ժամաչափը դադարեցված է"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ժամաչափ դադարեցված է"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Հպեք՝ ձեր ժամաչափերը տեսնելու համար"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Հպեք՝ ձեր ժամաչափերը տեսնելու համար"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ժամաչափ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Հաջորդ ժամաչափը՝ <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Էկրանապահի կարգավորումներ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Էկրանի խնայման կարգավորումներ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Գիշերային ռեժիմ"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Շատ մուգ էկրան (մութ սենյակների համար)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Ընդարձակել զարթուցիչը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 1b62313..972ec4c 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Tidak diketahui"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume alarm dibisukan"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Suarakan"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Perangkat disetel ke senyap total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Tombol volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Tunda"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Pewaktu bergetar"</string>
<string name="timer_paused" msgid="5941160896040771462">"Pewaktu dijeda"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> pewaktu dijeda"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Sentuh untuk melihat pewaktu Anda"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Ketuk untuk melihat pewaktu Anda"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> pewaktu"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Pewaktu Berikutnya: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Setelan Mimpi"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Setelan screen saver"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Mode malam"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Tampilan yang sangat redup (untuk ruangan gelap)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Luaskan alarm"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index f231cb4..b4066fb 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Óþekktur"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Hljóðstyrkur vekjara þaggaður"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Kveikja á hljóði"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Tækið er stillt á algjöra þögn"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Hljóðstyrkstakkar"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Blunda"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Teljari með titringi"</string>
<string name="timer_paused" msgid="5941160896040771462">"Hlé gert á teljara"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Hlé gert á <xliff:g id="NUMBER">%d</xliff:g> teljurum"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Snertu til að sjá teljarana þína"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Ýttu til að sjá teljarana þína"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> teljarar"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Næsti teljari: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Draumastillingar"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Stillingar fyrir skjávara"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Næturstilling"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Mjög dimmur skjár (fyrir myrk herbergi)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Stækka vekjara"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index be5a192..44e42bb 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Elemento sconosciuto"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume sveglia disattivato"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Riattiva audio"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"La suoneria predefinita della sveglia è Silenzioso"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Modifica"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Il dispositivo è impostato su \"Silenzio totale\""</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Pulsanti volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Attiva ripetizione sveglia"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibrazione timer"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer in pausa"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timer in pausa"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Tocca per visualizzare i timer"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tocca per visualizzare i timer"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timer"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Prossimo timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Impostazioni Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Impostazioni dello screensaver"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modalità Notte"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Display molto scuro (per stanze buie)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Espandi sveglia"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 308f613..7e767f5 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -134,6 +134,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"לא ידוע"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"עוצמת הקול של ההתראות הושתקה"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"בטל השתקה"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"המכשיר מוגדר למצב השתקה כוללת"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"לחצני עוצמת קול"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"נודניק"</item>
@@ -331,10 +336,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"רטט טיימר"</string>
<string name="timer_paused" msgid="5941160896040771462">"הטיימר מושהה"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> טיימרים הושהו"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"גע כדי לראות את הטיימרים שלך"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"הקש כדי לראות את הטיימרים שלך"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> טיימרים"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"הטיימר הבא: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"הגדרות חלום בהקיץ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"הגדרות שומר מסך"</string>
<string name="night_mode_title" msgid="5983813889469616299">"מצב לילה"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"תצוגה עמומה מאוד (לחדרים חשוכים)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"הרחב התראה"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 0c33b7a..a2a4784 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"不明"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"アラームの音量をミュートしました"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ミュート解除"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"端末は [サイレント] に設定されています"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"音量ボタン"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"スヌーズ"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"タイマーのバイブレーション"</string>
<string name="timer_paused" msgid="5941160896040771462">"タイマーを一時停止しました"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g>個のタイマーを一時停止しました"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"タップしてタイマーを表示"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"タイマーを表示するにはタップします"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g>件のタイマー"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"次のタイマー: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"スクリーンセーバーの設定"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"スクリーンセーバーの設定"</string>
<string name="night_mode_title" msgid="5983813889469616299">"夜間モード"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"薄暗い表示(暗い部屋用)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"アラームを展開"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 86f1df5..23b3743 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"უცნობი"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"მაღვიძარას ხმა დადუმდა"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"დადუმების გაუქმება"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"მოწყობილობა დაყენებულია სრული სიჩუმის რეჟიმზე"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ხმის ღილაკები"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ჩაჩუმება"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ტაიმერის ვიბრაცია"</string>
<string name="timer_paused" msgid="5941160896040771462">"ტაიმერი დაპაუზებულია"</string>
<string name="timers_stopped" msgid="3186191253226005149">"დაპაუზებულია <xliff:g id="NUMBER">%d</xliff:g> ტაიმერი"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"შეეხეთ, რათა ნახოთ თქვენი ტაიმერები"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"შეეხეთ თქვენი ტაიმერების სანახავად"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ტაიმერი"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"მომდევნო ტაიმერი: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"სიზმრის პარამეტრები"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ეკრანმზოგის პარამეტრები"</string>
<string name="night_mode_title" msgid="5983813889469616299">"ღამის რეჟიმი"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ძალიან მუქი ეკრანი (ბნელი ოთახებისთვის)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"მაღვიძარას გაფართოება"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 00fb3ea..d989f5f 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Белгісіз"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Дабыл дыбысы өшірілді"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Дыбысын қосу"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Әдепкі дабыл қоңырау әуені — дыбыссыз."</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Өзгерту"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Құрылғы толық тыныштық режиміне орнатылды"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Дыбыс түймелері"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Кейінге қалдыру"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Таймермен дірілдеу"</string>
<string name="timer_paused" msgid="5941160896040771462">"Таймер кідіртілді"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> таймер кідіртілді"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Таймерлерді көру үшін түртіңіз"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Таймерлерді көру үшін түртіңіз"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> таймер"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Келесі таймер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Қалғу параметрлері"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Экранды сақтау режимінің параметрлері"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Түнгі режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Өте күңгірт дисплей (күңгірт бөлмелер үшін)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Дабылды жаю"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index be94bdc..08efae8 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"មិនស្គាល់"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"បានបិទសំឡេងម៉ោងរោទិ៍"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"បើកសំឡេង"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ឧបករណ៍ត្រូវបានកំណត់ឲ្យស្ងាត់ទាំងស្រុង"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ប៊ូតុងកម្រិតសំឡេង"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ផ្អាក"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ការញ័រនៃកម្មវិធីកំណត់ពេល"</string>
<string name="timer_paused" msgid="5941160896040771462">"បានផ្អាកកម្មវិធីកំណត់ពេល"</string>
<string name="timers_stopped" msgid="3186191253226005149">"បានផ្អាកកម្មវិធីកំណត់ពេល <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"ប៉ះដើម្បីមើលកម្មវិធីកំណត់ពេលរបស់អ្នក"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"ប៉ះដើម្បីមើលកម្មវិធីកំណត់ពេលរបស់អ្នក"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> កម្មវិធីកំណត់ពេល"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"កម្មវិធីកំណត់ពេលបន្ទាប់៖ <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ការកំណត់ស្រមើស្រមៃ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ការកំណត់ធាតុរក្សាអេក្រង់"</string>
<string name="night_mode_title" msgid="5983813889469616299">"របៀបរាត្រី"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ការបង្ហាញយ៉ាងស្រអាប់ (សម្រាប់បន្ទប់ងងឹត)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ពង្រីកសំឡេងរោទ៍"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index c7641de..06235f1 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"ಅಪರಿಚಿತ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"ಅಲಾರಮ್ ವಾಲ್ಯೂಮ್ ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ಅನ್ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ಸಾಧನವನ್ನು ಸಂಪೂರ್ಣ ನಿಶ್ಯಬ್ದವಾಗಿ ಹೊಂದಿಸಿ"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ವಾಲ್ಯೂಮ್ ಬಟನ್ಗಳು"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ಸ್ನೂಜ್"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ಟೈಮರ್ ವೈಬ್ರೇಟ್"</string>
<string name="timer_paused" msgid="5941160896040771462">"ಟೈಮರ್ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ಟೈಮರ್ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"ನಿಮ್ಮ ಟೈಮರ್ಗಳನ್ನು ನೋಡಲು ಸ್ಪರ್ಶಿಸಿ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"ನಿಮ್ಮ ಟೈಮರ್ಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ಟೈಮರ್ಗಳು"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"ಮುಂದಿನ ಟೈಮರ್: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ಡ್ರೀಮ್ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ಸ್ಕ್ರೀನ್ ಸೇವರ್ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="night_mode_title" msgid="5983813889469616299">"ರಾತ್ರಿ ಮೋಡ್"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ತೀರಾ ಮಂದ ಡಿಸ್ಪ್ಲೇ (ಕತ್ತಲೆ ಕೊಠಡಿಗಳಿಗಾಗಿ)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ಅಲಾರಮ್ ವಿಸ್ತರಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index c176f17..b868512 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"알 수 없음"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"알람 볼륨이 음소거되었습니다."</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"음소거 해제"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"기기가 모두 차단으로 설정됨"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"볼륨 버튼"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"다시 울림"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"타이머 진동"</string>
<string name="timer_paused" msgid="5941160896040771462">"타이머가 일시중지됨"</string>
<string name="timers_stopped" msgid="3186191253226005149">"타이머 <xliff:g id="NUMBER">%d</xliff:g>개 일시중지됨"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"타이머를 보려면 터치하세요."</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"타이머를 보려면 탭하세요."</string>
<string name="timers_in_use" msgid="5570729467344408506">"타이머 <xliff:g id="NUMBER">%d</xliff:g>개"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"다음 타이머: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"화면 보호기 설정"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"스크린세이버 설정"</string>
<string name="night_mode_title" msgid="5983813889469616299">"야간 모드"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"디스플레이 아주 어둡게 하기(어두운 장소용)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"알람 펼치기"</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 0ee1eab..75ba27e 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Белгисиз"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Ойготкучтун үнү өчүрүлдү"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Үндү чыгаруу"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Түзмөк толугу менен үнсүз режимге коюлган"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Үндү катуулатуучу баскычтар"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Тындыруу"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Таймер дирилдөөсү"</string>
<string name="timer_paused" msgid="5941160896040771462">"Таймер тындырылды"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> таймерлер тындырылды"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Таймерлериңизди көрүү үчүн тийип коюңуз"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Таймерлериңизди көрүү үчүн таптап коюңуз"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> таймер"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Кийинки таймер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Көшөгөлөнтүү жөндөөлөрү"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Көшөгөнүн жөндөөлөрү"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Түнкү режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Өтө күңүрт дисплей (караңгы бөлмөлөр үчүн)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Ойготкучту жайып көрсөтүү"</string>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index b68e145..2533246 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -1,20 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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.
-*/
+<!-- 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.
-->
<!-- These resources are around just to allow their values to be customized
@@ -25,36 +22,18 @@
<dimen name="date_text_size">15sp</dimen>
<dimen name="next_alarm_text_size">15sp</dimen>
<dimen name="time_margin_top">24dip</dimen>
- <dimen name="timer_list_padding_bottom">80dip</dimen>
<dimen name="dialpad_font_size">24sp</dimen>
<dimen name="dialpad_digit_padding">14dip</dimen>
- <dimen name="timer_setup_delete_start_margin">24sp</dimen>
- <dimen name="timer_setup_label_size">16sp</dimen>
+ <dimen name="timer_setup_delete_margin">12sp</dimen>
<dimen name="actionbar_tab_padding">32dip</dimen>
<!-- Size of margin for circles. -->
- <dimen name="circle_margin">8dp</dimen>
<dimen name="analog_clock_margin">70dp</dimen>
- <dimen name="main_clock_padding">0dp</dimen>
<dimen name="circle_margin_top">0dp</dimen>
- <dimen name="top_text_spacing_digital">-25dp</dimen>
<dimen name="bottom_text_spacing_analog">5dp</dimen>
- <dimen name="alarm_side_padding">48dip</dimen>
- <dimen name="clock_side_padding">32dip</dimen>
- <dimen name="clock_fragment_end_padding">0dip</dimen>
- <dimen name="main_clock_bottom_margin">80dip</dimen>
-
<dimen name="medium_font_size">48sp</dimen>
- <dimen name="circle_size">190dip</dimen>
- <dimen name="stopwatch_circle_margin_bottom">80dip</dimen>
-
- <dimen name="world_clock_margin">8dp</dimen>
- <dimen name="sw_padding_end">8dp</dimen>
-
- <dimen name="alarm_alert_clock_padding_left">32dp</dimen>
-
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/layout/blank_footer_view.xml b/res/values-land/fractions.xml
similarity index 60%
copy from res/layout/blank_footer_view.xml
copy to res/values-land/fractions.xml
index c9460fc..4642e0e 100644
--- a/res/layout/blank_footer_view.xml
+++ b/res/values-land/fractions.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -13,7 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:background="@color/transparent"
- android:layout_height="@dimen/button_footer_height" />
\ No newline at end of file
+
+<resources>
+ <!-- In landscape, -100% width implies only height is used to size the timer container. -->
+ <fraction name="timer_circle_width_percent">-100%</fraction>
+
+ <!-- In landscape, timer circles are 90% of the container height; width matches height. -->
+ <fraction name="timer_circle_height_percent">90%</fraction>
+</resources>
\ No newline at end of file
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 5306770..2a8c84a 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"ບໍ່ຮູ້ຈັກ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"ປິດສຽງໂມງປຸກແລ້ວ"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ເຊົາປິດສຽງ"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"ສຽງໂມງປຸກເລີ່ມຕົ້ນແມ່ນງຽບຢູ່"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"ປ່ຽນແປງ"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ຕັ້ງອຸປະກອນເປັນສຽງງຽບທັງໝົດແລ້ວ"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ປຸ່ມປັບລະດັບສຽງ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ປິດສຽງເຕືອນຊົ່ວຄາວ"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ໂມງນັບຖອຍຫຼັງສັ່ນ"</string>
<string name="timer_paused" msgid="5941160896040771462">"ເຄື່ອງຈັບເວລາຢຸດແລ້ວ"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ເຄື່ອງຈັບເວລາຢຸດແລ້ວ"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"ແຕະເພື່ອເບິ່ງໂຕຈັບເວລາຂອງທ່ານ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"ແຕະເພື່ອເບິ່ງໂມງນັບຖອຍຫຼັງຂອງທ່ານ"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ໂມງນັບຖອຍຫຼັງ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"ໂມງຈັບເວລາຄັ້ງຕໍ່ໄປ: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ຕັ້ງຄ່າ Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ການຕັ້ງຄ່າສະກຣີນເຊບເວີ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"ໂໝດກາງຄືນ"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ຜ່ອນແສງໜ້າຈໍອ່ອນໆ (ສຳລັບຫ້ອງທີ່ມືດຫຼາຍ)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ຂະຫຍາຍໂມງປຸກ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index a6ba6f8..86f5025 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -134,6 +134,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Nežinomas"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Signalas nutildytas"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Įjungti garsą"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Įrenginyje nustatytas visiškos tylos režimas"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Garsumo mygtukai"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snausti"</item>
@@ -331,10 +336,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Laikmačio vibravimas"</string>
<string name="timer_paused" msgid="5941160896040771462">"Laikmatis pristabdytas"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Pristabdytų laikmačių: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Palieskite, jei norite peržiūrėti laikmačius"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Palieskite, jei norite matyti savo laikmačius"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Laikmačių: <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Kitas laikmatis: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Režimo „Svajonė“ nustatymai"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekrano užsklandos nustatymai"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nakties režimas"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Labai blankus rodinys (skirta tamsioms patalpoms)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Išskleisti signalą"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 8e1cef1..d52d6cc 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -126,6 +126,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Nezināms"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Noņemta skaņa"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Ieslēgt skaņu"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Ierīcē ir iestatīts pilnīga klusuma režīms"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Skaļuma pogas"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snauda"</item>
@@ -320,10 +325,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Taimera vibrācija"</string>
<string name="timer_paused" msgid="5941160896040771462">"Taimeris apturēts"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Apturēti <xliff:g id="NUMBER">%d</xliff:g> taimeri"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Pieskarieties, lai skatītu savus taimerus."</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Pieskarieties, lai skatītu iestatītos taimerus."</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> taimeri"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Nākamais taimeris: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Ekrānsaudzētāja iestatījumi"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekrānsaudzētāja iestatījumi"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nakts režīms"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Ļoti aptumšots displejs (tumšās telpās)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Izvēršanas signāls"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 7d0c718..f7e4a48 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Непознато"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Исклучен е звукот на алармот"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Вклучи звук"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Уредот е поставен на целосна тишина"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Копчиња за гласност"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Одложи аларм"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Вибрации на тајмер"</string>
<string name="timer_paused" msgid="5941160896040771462">"Тајмерот е паузиран"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> тајмери се паузирани"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Допрете за да ги видите вашите тајмери"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Допрете за да ги видите тајмерите"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> тајмери"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Следен тајмер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Поставки за спиење"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Поставки на заштитникот на екран"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Ноќен режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Многу затемнет екран (за темни соби)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Прошири аларм"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 7f88659..bb456a3 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"അജ്ഞാതം"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"അലാറം വോളിയം നിശബ്ദമാക്കി"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ശബ്ദമുള്ളതാക്കുക"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ഉപകരണം സമ്പൂർണ്ണ നിശബ്ദമാക്കി സജ്ജീകരിച്ചിരിക്കുന്നു"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"വോളിയം ബട്ടണുകൾ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"സ്നൂസ് ചെയ്യുക"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ടൈമർ വൈബ്രേഷൻ"</string>
<string name="timer_paused" msgid="5941160896040771462">"ടൈമർ തൽക്കാലം നിർത്തി"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ടൈമറുകൾ തൽക്കാലം നിർത്തി"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"നിങ്ങളുടെ ടൈമറുകൾ കാണുന്നതിന് സ്പർശിക്കുക"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"നിങ്ങളുടെ ടൈമറുകൾ കാണാൻ ടാപ്പുചെയ്യുക"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ടൈമറുകൾ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"അടുത്ത ടൈമർ: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ഡ്രീം ക്രമീകരണങ്ങൾ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"സ്ക്രീൻ സേവർ ക്രമീകരണം"</string>
<string name="night_mode_title" msgid="5983813889469616299">"നൈറ്റ് മോഡ്"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"വളരെ മങ്ങിയ ഡിസ്പ്ലേ (ഇരുണ്ട മുറികൾക്കായി)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"അലാറം വിപുലീകരിക്കുക"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index e3bb7dd..007f997 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Тодорхойгүй"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Сэрүүлгийн дууг хаасан"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Дууг нээх"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Төхөөрөмжийг бүхэлд нь чимээгүй болгож тохируулсан"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Дууны товч"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Түр хойшлуулагч"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Цаг хэмжигчийн чичиргээ"</string>
<string name="timer_paused" msgid="5941160896040771462">"Цаг хэмжигчийг түр зогсоосон"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> цаг хэмжигчийг түр зогсоосон"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Цаг хэмжигчийг харахын тулд хүрнэ үү"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Цаг хэмжигчээ харахын тулд дарна уу"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> цаг хэмжигч"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Дараагийн цаг хэмжигч: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Мөрөөдлийн тохиргоо"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Дэлгэц амраагчийн тохиргоо"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Шөнийн горим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Маш бүдэг харуулах (харанхуй өрөөнд)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Сэрүүлгийг дэлгэх"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 27bb601..09f9587 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"अज्ञात"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"अलार्म आवाज नि:शब्द केला"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"सशब्द करा"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"डीफॉल्ट अलार्म रिंंगटोन शांत आहे"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"बदला"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"डिव्हाइस संपूर्ण शांत वर सेट केले आहे"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"व्हॉल्यूम बटणे"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"स्नूझ करा"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"टायमर कंपन"</string>
<string name="timer_paused" msgid="5941160896040771462">"टायमरला विराम दिला"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> टायमरला विराम दिला"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"आपले टाइमर पाहण्यासाठी स्पर्श करा"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"आपले टायमर पाहण्यासाठी टॅप करा"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> टाइमर"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"पुढील टाइमर: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ड्रीम सेटिंग्ज"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"स्क्रीन सेव्हर सेटिंग्ज"</string>
<string name="night_mode_title" msgid="5983813889469616299">"रात्र मोड"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"खूप मंद प्रदर्शन (अंधार असलेल्या खोल्यांसाठी)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"अलार्म विस्तृत करा"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 7ceb0f0..e109a96 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Tidak diketahui"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Kelantangan penggera diredamkan"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Nyahredam"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Peranti ditetapkan kepada senyap sepenuhnya"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Butang kelantangan"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Tunda"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Getaran pemasa"</string>
<string name="timer_paused" msgid="5941160896040771462">"Pemasa dijeda"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> pemasa dijeda"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Sentuh untuk melihat pemasa anda"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Ketik untuk melihat pemasa anda"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> pemasa"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Pemasa seterusnya: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Tetapan mimpi"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Tetapan penyelamat skrin"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Mod malam"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Paparan sangat malap (untuk bilik gelap)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Kembangkan penggera"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 596858e..4e5e340 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"မသိရ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"နိုးစက်အသံပိတ်ထားသည်"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"အသံပြန်ဖွင့်ပါ"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"မူရင်းနိုးစက်မြည်သံကို အသံတိတ်အဖြစ် သတ်မှတ်ထားသည်"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"ပြောင်းပါ"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"စက်ပစ္စည်းကို အသံတိတ် သတ်မှတ်ထားသည်"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"အသံခလုတ်များ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"မှေးရန်"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"အချိန်ကိုက်စနစ် တုန်ခါမှု"</string>
<string name="timer_paused" msgid="5941160896040771462">"တိုင်မား ရပ်တန့်ထား"</string>
<string name="timers_stopped" msgid="3186191253226005149">"တိုင်မား <xliff:g id="NUMBER">%d</xliff:g> ကြိမ် ရပ်တန့်ခဲ့"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"သင်၏ တိုင်မားများကို ကြည့်ရန် ထိပါ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"အချိန်မှတ်ကိရိယာကို မြင်နိုင်ရန် တို့ထိပါ"</string>
<string name="timers_in_use" msgid="5570729467344408506">"တိုင်မား <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"နောက် တိုင်မား တစ်ခု: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"အိပ်မက် ဆက်တင်များ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"မျက်နှာပြင်အသုံးပြုမှု ချွေတာမှုစနစ် ဆက်တင်များ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"ညသုံး မုဒ်"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"သိပ် မှိန်စွာ ပြသမှု (မှောင်နေသည့် အခန်းများအတွက်)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"နှိုးစက်ကို တိုးချဲ့ရန်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 99903eb..0c3c4c4 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Ukjent"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarmlyden er slått av"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Slå på lyden"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Ringelyden som er angitt som standard, er lydløs"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Endre"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Enheten er angitt til total stillhet"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volumknapper"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Slumre"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Tidtakervibrering"</string>
<string name="timer_paused" msgid="5941160896040771462">"Tidtaker er satt på pause"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> tidtakere satt på pause"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Trykk for å se nedtellingene dine"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Trykk for å se tidtakerne dine"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> nedtellinger"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Neste nedtelling: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Innstillinger for Drøm"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Innstillinger for skjermspareren"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nattmodus"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Dempet lysstyrke (for mørke rom)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Vis alarmen"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 43c6a89..9e28314 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"अज्ञात"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"अलार्मको भोल्युम म्यूट गरियो"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"अनम्यूट गर्नुहोस्"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"यन्त्रलाई पूर्ण शान्तमा सेट गरिएको छ"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"भोल्युम बटनहरू"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"स्नुज"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"टाइमर भाइब्रेट"</string>
<string name="timer_paused" msgid="5941160896040771462">"टाइमर रोकियो"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> टाइमरहरू रोकिए"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"तपाईँको घडी हेर्न छुनुहोस्"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"आफ्नो टाइमरहरू हेर्न ट्याप गर्नुहोस्"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> घडीहरू"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"अर्को घडी: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ड्रिम सेटिङहरू"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"स्क्रिन सेभर सम्बन्धी सेटिङहरू"</string>
<string name="night_mode_title" msgid="5983813889469616299">"रात्री मोड"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ज्यादै मधुरो प्रदर्शन (अध्याँरा कोठाहरूका लागि)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"अलार्म विस्तार गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 2792fe1..5a5199f 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Onbekend"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarmvolume gedempt"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Dempen opheffen"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Standaardbeltoon voor alarm is stil"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Wijzigen"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Apparaat is ingesteld op totale stilte"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volumeknoppen"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snoozen"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Trillen voor timer"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer gepauzeerd"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timers gepauzeerd"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Tik om je timers te bekijken"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tik om je timers te bekijken"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Volgende timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Instellingen voor dromen"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Instellingen voor screensaver"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nachtmodus"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Sterk gedimd scherm (voor donkere kamers)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Alarm uitvouwen"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index d2b97c0..9612f26 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"ਅਗਿਆਤ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"ਅਲਾਰਮ ਵੌਲਯੂਮ ਮਿਊਟ ਕੀਤੀ ਗਈ ਹੈ"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ਅਣਮਿਊਟ ਕਰੋ"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"ਡੀਵਾਈਸ ਪੂਰੀ ਤਰ੍ਹਾਂ ਚੁੱਪ \'ਤੇ ਸੈੱਟ ਹੈ"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ਵੌਲਯੂਮ ਬਟਨ"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ਸਨੂਜ਼"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ਟਾਈਮਰ ਵਾਈਬ੍ਰੇਟ"</string>
<string name="timer_paused" msgid="5941160896040771462">"ਟਾਈਮਰ ਰੋਕਿਆ"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ਟਾਈਮਰ ਰੋਕੇ ਗਏ"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"ਆਪਣੇ ਟਾਈਮਰ ਦੇਖਣ ਲਈ ਛੋਹਵੋ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"ਆਪਣੇ ਟਾਈਮਰਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ਟਾਈਮਰ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"ਅਗਲਾ ਟਾਈਮਰ: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ਸੁਪਨ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ਸਕ੍ਰੀਨ ਸੇਵਰ ਸੈਟਿੰਗਾਂ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"ਰਾਤ ਮੋਡ"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ਬਹੁਤ ਮੱਧਮ ਡਿਸਪਲੇ (ਹਨੇਰੇ ਕਮਰਿਆਂ ਲਈ)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ਅਲਾਰਮ ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c462c04..6d7d8a6 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -134,6 +134,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Nieznany"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Wyciszono dźwięk alarmu"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Wyłącz wyciszenie"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Domyślny dzwonek alarmu jest wyciszony"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Zmień"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Urządzenie jest całkowicie wyciszone"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Przyciski głośności"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Drzemka"</item>
@@ -331,10 +334,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Wibracje minutnika"</string>
<string name="timer_paused" msgid="5941160896040771462">"Minutnik wstrzymany"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Minutniki (<xliff:g id="NUMBER">%d</xliff:g>) wstrzymane"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Kliknij, by zobaczyć minutniki"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Dotknij, by wyświetlić minutniki"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> minutniki"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Następny minutnik: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Ustawienia wygaszacza"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ustawienia wygaszacza ekranu"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Tryb nocny"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Mocno przyciemniony wyświetlacz (do ciemnych pomieszczeń)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Rozwiń alarm"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7835b00..934e2f4 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Desconhecido"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume do alarme desativado"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Reativar o som"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"O dispositivo está definido para silêncio total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botões de volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Suspender"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibração do temporizador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Temporizador interrompido"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporiz. interrompidos"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toque para ver os seus temporizadores"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Toque para ver os seus temporizadores"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> temporizadores"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Temp. seguinte: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Definições de sonho"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Definições de proteção de ecrã"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modo noturno"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Apresentação muito esbatida (para salas escuras)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expandir alarme"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 6aeb68c..9b5ec3c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Desconhecido"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volume do alarme silenciado"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Ativar som"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"O dispositivo está configurado para silêncio total"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Botões de volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Ativam soneca"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibração do temporizador"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timer pausado"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timers pausados"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Toque para ver seus timers"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Toque para ver seus temporizadores"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timers"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Próximo timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Configurações de Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Configurações da proteção de tela"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modo noturno"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Tela muito escura (para salas escuras)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expandir alarme"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 982a31d..cea336d 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -126,6 +126,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Necunoscut"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volumul alarmei a fost dezactivat"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Activați sunetul"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Dispozitivul este setat pe „Niciun sunet”"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Butoane de volum"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Amânați"</item>
@@ -320,10 +325,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibrare temporizator"</string>
<string name="timer_paused" msgid="5941160896040771462">"Temporizator întrerupt"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> temporizatoare întrerupte"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Atingeți pentru a vedea contoarele"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Atingeți pentru a vedea temporizatoarele"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> contoare"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Următorul temporizator: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Setări Dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Setări pentru economizorul de ecran"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modul Noapte"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Luminozitate foarte redusă (pentru camere întunecate)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Extindeți alarma"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 1219e43..3ef1e19 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -134,6 +134,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Неизвестно"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Звук будильника отключен"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Включить звук"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Включен режим \"Полная тишина\""</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Кнопки громкости"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Отложить"</item>
@@ -331,10 +336,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Вибросигнал таймера"</string>
<string name="timer_paused" msgid="5941160896040771462">"Таймер приостановлен"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Таймеры (<xliff:g id="NUMBER">%d</xliff:g>) приостановлены"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Нажмите, чтобы посмотреть таймеры"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Нажмите, чтобы посмотреть таймеры"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Таймеров: <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"След.: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Параметры заставки"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Настройки заставки"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Ночной режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Тусклый дисплей (для темных помещений)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Развернуть"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 559cd62..bf05a67 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"නොදනී"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"එලාම හඬ නිහඬ කරන ලදී"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"නිහඬ කිරීම ඉවත් කරන්න"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"උපාංගය පූර්ණ නිහඬ බවට සකසා ඇත"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ශබ්ද බොත්තම්"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"යළි සිහි කැඳවන්න"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"කාල ගණකය කම්පනය"</string>
<string name="timer_paused" msgid="5941160896040771462">"කාල ගණකය විරාම කරන ලදී"</string>
<string name="timers_stopped" msgid="3186191253226005149">"කාල ගණක <xliff:g id="NUMBER">%d</xliff:g>ක් විරාම කරන ලදී"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"ඔබගේ කාල ගණනයන් බැලීමට ස්පර්ශ කරන්න"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"ඔබගේ කාල ගණක බැලීමට තට්ටු කරන්න"</string>
<string name="timers_in_use" msgid="5570729467344408506">"කාල ගැනීම් <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"මීළඟ කාල ගණනය කිරීම: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ඩ්රීම් සැකසුම්"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"තිර සුරැකුම් සැකසීම්"</string>
<string name="night_mode_title" msgid="5983813889469616299">"රාත්රී ආකාරය"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"ඉතා අඳුරු දර්ශන තීරය (අඳුරු කාමර සඳහා)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ඇඟවීම දිග හරින්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 4f5193a..a1af63e 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -134,6 +134,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Neznáme"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Hlasitosť budíka bola stlmená"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Obnoviť zvuk"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Predvolený zvuk budíka je ticho"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Zmeniť"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Zariadenie je nastavené na úplné ticho"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Tlačidlá hlasitosti"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Odložiť"</item>
@@ -331,10 +334,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibrovanie časovača"</string>
<string name="timer_paused" msgid="5941160896040771462">"Časovač pozastavený"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Pozastavené časovače (<xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Dotykom zobrazíte časovače"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Časovače zobrazíte klepnutím"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Časovače (<xliff:g id="NUMBER">%d</xliff:g>)"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Ďalší časovač: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Nastavenia šetriča"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Nastavenia šetriča obrazovky"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nočný režim"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Stlmený jas (pre tmavé miestnosti)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Rozbaliť budík"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index e0e387d..d3922a3 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -134,6 +134,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Neznano"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Glasnost alarma – izklopljen zvok"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Vklop zvoka"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Privzeti ton zvonjenja alarma je »tiho«"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Spremeni"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Naprava je nastavljena na popolno tišino"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Gumbi za glasnost"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Dremež"</item>
@@ -331,10 +334,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibriranje pri časovniku"</string>
<string name="timer_paused" msgid="5941160896040771462">"Časovnik je zaustavljen"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Zaustavljeni časovniki: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Dotaknite se za prikaz časovnikov"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Dotaknite se, če si želite ogledati časovnike"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Št. časovnikov: <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Naslednji časovnik: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Nastavitve za spanje"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Nastavitve ohranjevalnika zaslona"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nočni način"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Zatemnjen zaslon (za temne prostore)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Razširi budilko"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 4787f71..cb3bb86 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"E panjohur"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Volumi i alarmit u çaktivizua"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Aktivizo audion"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Pajisja është vendosur në heshtje totale"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Butonat e volumit"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Shty alarmin"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Dridhjet e kohëmatësit"</string>
<string name="timer_paused" msgid="5941160896040771462">"Kohëmatësi u vendos në pauzë"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> kohëmatës u vendosën në pauzë"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Prek për të parë kohëmatësit"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Trokit për të parë kohëmatësit"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> kohëmatës"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Kohëmatësi tjetër: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Cilësimet e mbrojtësit të ekranit"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Cilësimet e mbrojtësit të ekranit"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modaliteti i natës"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Ekran shumë i zbehtë (për dhoma të errëta)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Zgjero alarmin"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index fb82aab..4d10522 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -126,6 +126,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Непозната"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Звук аларма је искључен"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Укључи звук"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Подразумевана мелодија звона за аларм је утишана"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Промени"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Уређај је подешен на потпуну тишину"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Дугмад за јачину"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Одложи"</item>
@@ -320,10 +323,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Вибрација тајмера"</string>
<string name="timer_paused" msgid="5941160896040771462">"Тајмер је паузиран"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Паузираних тајмера: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Додирните да бисте видели тајмере"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Додирните да бисте видели тајмере"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> тајмера"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Следећи тајмер: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Подешавања за Сан"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Подешавања чувара екрана"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Ноћни режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Веома таман екран (за мрачне собе)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Прошири аларм"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index bc98eac..5a1fb52 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Okänd"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarmljudet har stängts av"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Slå på ljudet"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Standardsignal för alarm: tyst"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Ändra"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Helt tyst läge är aktiverat på enheten"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Volymknappar"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snooza"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Vibration för timer"</string>
<string name="timer_paused" msgid="5941160896040771462">"Timern har pausats"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> timer har pausats"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Visa timer genom att trycka"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Tryck här om du vill visa timer"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> timer"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Nästa timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Inställningar för Dröm"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Inställningar för skärmsläckare"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Nattläge"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Mycket ljussvag skärm (för mörka rum)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Expandera alarm"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index fb77793..a5c5a60 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Isiyojulikana"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Sauti ya kengele imezimwa"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Acha kunyamazisha"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Mlio chaguo-msingi wa kengele ni kimya"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Badilisha"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Kifaa kimewekwa katika hali ya kimya"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Vitufe vya kudhibiti sauti"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Nikumbushe baadaye"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Mtetemo wa kipima muda"</string>
<string name="timer_paused" msgid="5941160896040771462">"Kipima wakati kimesitishwa"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Vipima wakati <xliff:g id="NUMBER">%d</xliff:g> vimesitishwa"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Gusa ili kuona vipima wakati vyako"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Gonga ili uone vipima muda vyako"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Vipima wakati <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Kipima wakati Kinachofuata: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Mipangilio ya Pazia ya Kuvutia"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Mipangilio ya taswira ya skrini"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Modi ya usiku"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Mwangaza hafifu wa skrini katika vyumba vyenye giza"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Panua kengele"</string>
diff --git a/res/layout/blank_footer_view.xml b/res/values-sw320dp/dimens.xml
similarity index 69%
copy from res/layout/blank_footer_view.xml
copy to res/values-sw320dp/dimens.xml
index c9460fc..d64c205 100644
--- a/res/layout/blank_footer_view.xml
+++ b/res/values-sw320dp/dimens.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:background="@color/transparent"
- android:layout_height="@dimen/button_footer_height" />
\ No newline at end of file
+
+<resources>
+ <dimen name="big_font_size">60sp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw360dp-land/dimens.xml b/res/values-sw360dp-land/dimens.xml
index 0275592..1ff913a 100644
--- a/res/values-sw360dp-land/dimens.xml
+++ b/res/values-sw360dp-land/dimens.xml
@@ -20,6 +20,5 @@
for different hardware and product builds.
-->
<resources>
- <dimen name="circle_size">232dip</dimen>
<dimen name="timer_setup_font_size">48sp</dimen>
</resources>
diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml
index ad9e060..1c26c0f 100644
--- a/res/values-sw600dp-land/dimens.xml
+++ b/res/values-sw600dp-land/dimens.xml
@@ -1,20 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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.
-*/
+<!-- 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.
-->
<!-- These resources are around just to allow their values to be customized
@@ -26,28 +23,16 @@
<dimen name="next_alarm_text_size">15sp</dimen>
<dimen name="time_margin_top">32dip</dimen>
- <dimen name="alarm_side_padding">128dip</dimen>
- <dimen name="clock_side_padding">48dip</dimen>
- <dimen name="main_clock_bottom_margin">112dip</dimen>
-
<dimen name="dialpad_font_size">42sp</dimen>
<dimen name="dialpad_digit_padding">26dip</dimen>
<dimen name="timer_setup_font_size">78sp</dimen>
<dimen name="timer_setup_button_size">36sp</dimen>
- <dimen name="timer_setup_delete_start_margin">38sp</dimen>
- <dimen name="timer_setup_label_size">24sp</dimen>
+ <dimen name="timer_setup_delete_margin">19sp</dimen>
<!-- Size of margin for circles. -->
<dimen name="circle_margin_top">0dp</dimen>
- <dimen name="circle_margin">48dp</dimen>
<dimen name="analog_clock_margin">48dp</dimen>
- <dimen name="circle_size">360dip</dimen>
- <dimen name="stopwatch_circle_margin_bottom">112dip</dimen>
-
- <dimen name="world_clock_margin">48dp</dimen>
- <dimen name="sw_padding_end">48dp</dimen>
-
<!-- The maximum size of the font for the time in widgets. -->
<dimen name="widget_max_clock_font_size">100dp</dimen>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 2c9c594..67ac240 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -1,20 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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.
-*/
+<!-- 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.
-->
<!-- These resources are around just to allow their values to be customized
@@ -26,9 +23,6 @@
<dimen name="date_text_size">15sp</dimen>
<dimen name="next_alarm_text_size">15sp</dimen>
<dimen name="time_margin_top">48dip</dimen>
- <dimen name="timer_list_padding_bottom">112dip</dimen>
- <!-- 88dip + 0.5 of footer_button_size -->
- <dimen name="timer_cancel_end_margin">128dip</dimen>
<dimen name="screensaver_margin">20dip</dimen>
<dimen name="alarm_label_padding">64dip</dimen>
<dimen name="bottom_text_size">18sp</dimen>
@@ -36,10 +30,6 @@
<dimen name="bottom_text_spacing_analog">18dp</dimen>
<dimen name="bottom_text_spacing_analog_small">10dp</dimen>
- <dimen name="alarm_side_padding">48dip</dimen>
- <dimen name="clock_side_padding">48dip</dimen>
- <dimen name="clock_side_padding_reduced">36dip</dimen>
-
<dimen name="main_clock_font_size">125sp</dimen>
<dimen name="big_font_size">115sp</dimen>
<dimen name="medium_font_size">96sp</dimen>
@@ -47,7 +37,6 @@
<dimen name="alarm_label_size">18sp</dimen>
<dimen name="body_font_size">20sp</dimen>
<dimen name="day_button_font_size">20sp</dimen>
- <dimen name="alarm_time_font_size">64sp</dimen>
<dimen name="alarm_info_font_size">48sp</dimen>
<dimen name="no_alarm_font_size">20sp</dimen>
@@ -57,7 +46,6 @@
<dimen name="small_space">32dp</dimen>
<dimen name="medium_space_top">46dp</dimen>
<dimen name="medium_space_bottom">18dp</dimen>
- <dimen name="main_clock_padding">40dp</dimen>
<dimen name="label_margin_big">8dp</dimen>
<dimen name="label_margin_small">4dp</dimen>
@@ -66,24 +54,17 @@
<dimen name="dialpad_digit_padding">34dip</dimen>
<dimen name="timer_setup_font_size">86sp</dimen>
<dimen name="timer_setup_button_size">36sp</dimen>
- <dimen name="timer_setup_delete_start_margin">42sp</dimen>
- <dimen name="timer_setup_label_size">28sp</dimen>
+ <dimen name="timer_setup_delete_margin">21sp</dimen>
<!-- Size of margin for circles. -->
<dimen name="circle_margin_top">48dp</dimen>
- <dimen name="circle_margin">96dp</dimen>
<dimen name="analog_clock_margin">96dp</dimen>
- <dimen name="circle_size">400dp</dimen>
- <!-- stopwatch_list_bottom_spacing = footer_button_size + footer_button_layout_margin -->
- <dimen name="list_bottom_spacing">96dip</dimen>
-
<!-- Width of the clock, for use with alarm buttons. -->
<dimen name="alarm_alert_display_width">550dip</dimen>
<!-- Size of analog clock in world clock. -->
- <dimen name="world_clock_analog_size">200dip</dimen>
- <dimen name="world_clock_margin">96dp</dimen>
+ <dimen name="world_clock_analog_size">200dp</dimen>
<dimen name="min_analog_widget_size">170dp</dimen>
@@ -98,6 +79,4 @@
<dimen name="city_widget_name_font_size">20dp</dimen>
<!-- The maximum size of the font for the time in widgets. -->
<dimen name="widget_max_clock_font_size">125dp</dimen>
-
- <dimen name="footer_button_size">80dip</dimen>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml
index 525d655..d3046f2 100644
--- a/res/values-sw720dp-land/dimens.xml
+++ b/res/values-sw720dp-land/dimens.xml
@@ -1,34 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2012 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
- -->
+<!-- Copyright (C) 2012 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.
+-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
- <dimen name="alarm_alert_clock_padding_left">128dp</dimen>
-
<dimen name="dialpad_font_size">42sp</dimen>
<dimen name="dialpad_digit_padding">26dip</dimen>
<dimen name="timer_setup_font_size">78sp</dimen>
<dimen name="timer_setup_button_size">36sp</dimen>
- <dimen name="timer_setup_delete_start_margin">38sp</dimen>
- <dimen name="timer_setup_label_size">24sp</dimen>
+ <dimen name="timer_setup_delete_margin">19sp</dimen>
- <dimen name="alarm_side_padding">192dip</dimen>
- <dimen name="clock_side_padding">96dip</dimen>
-
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index 9e87600..31b2e41 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -1,31 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2014 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
- -->
+<!-- Copyright (C) 2014 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.
+-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
- <dimen name="alarm_side_padding">96dip</dimen>
- <dimen name="clock_side_padding">128dip</dimen>
- <dimen name="clock_side_padding_reduced">116dip</dimen>
-
<dimen name="big_font_size">152sp</dimen>
<dimen name="medium_font_size">80sp</dimen>
<!-- The maximum size of the font for the time in widgets. -->
<dimen name="widget_max_clock_font_size">138dp</dimen>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 250b2cb..a3ffdd3 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"அறியப்படாதது"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"அலார ஒலி முடக்கப்பட்டது"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"ஒலி இயக்கு"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"\"தொந்தரவு செய்ய வேண்டாம்\" அம்சம் இயக்கத்திலுள்ளது"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ஒலியளவு பொத்தான்கள்"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"உறக்கநிலை"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"டைமர் அதிர்வு"</string>
<string name="timer_paused" msgid="5941160896040771462">"டைமர் இடைநிறுத்தப்பட்டது"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> டைமர்கள் இடைநிறுத்தப்பட்டன"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"உங்கள் டைமர்களைப் பார்க்க தொடவும்"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"டைமர்களைப் பார்க்க, தட்டவும்"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> டைமர்கள்"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"அடுத்த டைமர்: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"இயக்க அமைப்பு"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"ஸ்கிரீன் சேவர் அமைப்புகள்"</string>
<string name="night_mode_title" msgid="5983813889469616299">"இரவு பயன்முறை"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"மிகவும் மங்கலான காட்சி (இருண்ட அறைகளுக்கானது)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"அலாரத்தை விரிவாக்கு"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index cf26d5e..ca9ef5a 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"తెలియనివి"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"అలారం వాల్యూమ్ మ్యూట్ చేయబడింది"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"అన్మ్యూట్ చేయి"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"పరికరం పూర్తి నిశ్శబ్దానికి సెట్ చేయబడింది"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"వాల్యూమ్ బటన్లు"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"తాత్కాలిక ఆపివేత"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"టైమర్ వైబ్రేషన్"</string>
<string name="timer_paused" msgid="5941160896040771462">"టైమర్ పాజ్ చేయబడింది"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> టైమర్లు పాజ్ చేయబడ్డాయి"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"మీ టైమర్లను చూడటానికి తాకండి"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"మీ టైమర్లను చూడటానికి నొక్కండి"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> టైమర్లు"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"తదుపరి టైమర్: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"డ్రీమ్ సెట్టింగ్లు"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"స్క్రీన్ సేవర్ సెట్టింగ్లు"</string>
<string name="night_mode_title" msgid="5983813889469616299">"రాత్రి మోడ్"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"డిస్ప్లే అత్యంత కాంతివిహీనంగా ఉంటుంది (చీకటిగా ఉండే గదుల కోసం)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"అలారంను విస్తరింపజేయండి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index d882a22..cb000a4 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"ไม่ทราบ"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"ปิดเสียงปลุกแล้ว"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"เปิดเสียง"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"อุปกรณ์อยู่ในโหมดปิดเสียง"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"ปุ่มระดับเสียง"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"ปิดเสียงเตือนชั่วคราว"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ตัวจับเวลาสั่น"</string>
<string name="timer_paused" msgid="5941160896040771462">"หยุดตัวจับเวลาชั่วคราวแล้ว"</string>
<string name="timers_stopped" msgid="3186191253226005149">"หยุด <xliff:g id="NUMBER">%d</xliff:g> ตัวจับเวลาชั่วคราว"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"แตะเพื่อดูนาฬิกาจับเวลาของคุณ"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"แตะเพื่อดูตัวจับเวลา"</string>
<string name="timers_in_use" msgid="5570729467344408506">"นาฬิกาจับเวลา <xliff:g id="NUMBER">%d</xliff:g> เรือน"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"นาฬิกาจับเวลาถัดไป: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"การตั้งค่าเดย์ดรีม"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"การตั้งค่าโปรแกรมรักษาหน้าจอ"</string>
<string name="night_mode_title" msgid="5983813889469616299">"โหมดกลางคืน"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"หน้าจอมืดมาก (สำหรับห้องมืด)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"ขยายการแจ้งเตือน"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 14c72f7..48f8828 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Hindi alam"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Naka-mute ang volume ng alarm"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"I-unmute"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Nakatakda ang device na hindi talaga tumunog"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Button ng volume"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"I-snooze"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Pag-vibrate ng timer"</string>
<string name="timer_paused" msgid="5941160896040771462">"Naka-pause ang timer"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Naka-pause ang <xliff:g id="NUMBER">%d</xliff:g> timer"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Pindutin upang tingnan ang iyong mga timer"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"I-tap upang makita ang iyong mga timer"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> (na) timer"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Susunod na timer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Mga setting ng dream"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Mga setting ng screen saver"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Night mode"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Napakadilim na display (para sa madidilim na kuwarto)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Alarm sa pagpalawak"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 683245b..3da4bd6 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Bilinmiyor"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Alarm sesi kapatıldı"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Sesi aç"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Cihaz tamamen sessize ayarlı"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Ses düğmeleri"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Ertele"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Zamanlayıcı titreşimi"</string>
<string name="timer_paused" msgid="5941160896040771462">"Zamanlayıcı duraklatıldı"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> zamanlayıcı duraklatıldı"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Zamanlayıcılarınızı görmek için dokunun"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Zamanlayıcılarınızı görmek için hafifçe dokunun"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> zamanlayıcı"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Sonraki zamanlayıcı: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Hafif uyku ayarları"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekran koruyucusu ayarları"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Gece modu"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Çok karanlık ekran (karanlık odalar için)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Alarmı genişlet"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a7e73e1..381ba54 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -134,6 +134,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Невідомий сигнал"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Гучність будильника вимкнено"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Увімкнути звук"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"На пристрої ввімкнено режим \"Без сигналів\""</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Кнопки гучності"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Відкласти"</item>
@@ -331,10 +336,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Вібросигнал таймера"</string>
<string name="timer_paused" msgid="5941160896040771462">"Таймер призупинено"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Призупинено таймерів: <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Торкніться, щоб переглянути свої таймери"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Торкніться, щоб переглянути таймери"</string>
<string name="timers_in_use" msgid="5570729467344408506">"Таймерів: <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Наступний за <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Параметри заставки"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Налаштування заставки"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Нічний режим"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Дуже тьмяний дисплей (для темних приміщень)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Посилити сигнал"</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 650e8c5..4b34091 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"نامعلوم"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"الارم کی آواز خاموش ہے"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"آواز چالو کریں"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"آلہ مکمل خاموشی پر سیٹ ہے"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"والیوم بٹنز"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"اسنوز کریں"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"ٹائمر ارتعاش"</string>
<string name="timer_paused" msgid="5941160896040771462">"ٹائمر موقوف ہو گیا"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ٹائمرز موقوف ہو گئے"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"اپنے ٹائمرز دیکھنے کیلئے ٹچ کریں"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"اپنے ٹائمرز دیکھنے کے لئے تھپتھپائیں"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ٹائمرز"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"اگلا ٹائمر: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"ڈریم کی ترتیبات"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"اسکرین سیور کی ترتیبات"</string>
<string name="night_mode_title" msgid="5983813889469616299">"رات وضع"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"بہت کم روشن ڈسپلے (تاریک کمروں کیلئے)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"الارم کی توسیع کریں"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 206e388..45285ff 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Noma’lum"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Uyg‘otkich ovozi o‘chirilgan"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Ovozni yoqish"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Qurilma to‘liq sukut rejimiga sozlangan"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Ovoz tugmalari"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Qoldirish"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Taymer tebranishi"</string>
<string name="timer_paused" msgid="5941160896040771462">"Taymer pauza qilindi"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> ta taymer pauza qilindi"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Taymerlarni ko‘rish uchun bosing"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Taymerlarni ko‘rish uchun bosing"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> ta taymer"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Keyingi taymer: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Lavha sozlamalari"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Ekran lavhasi sozlamalari"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Tungi rejim"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Xira ekran (qorong‘i xonalar uchun)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Uyg‘otkichni ochish"</string>
diff --git a/res/values-v21/dimens.xml b/res/values-v21/dimens.xml
index f320981..704ab81 100644
--- a/res/values-v21/dimens.xml
+++ b/res/values-v21/dimens.xml
@@ -16,10 +16,16 @@
-->
<resources>
- <!-- Floating action button style -->
- <dimen name="fab_margin">16dp</dimen>
+ <!-- Lollipop and later mini floating action button margin. -->
+ <dimen name="fab_margin">8dp</dimen>
- <!-- Size of margin between icon and text / title text. -->
- <dimen name="notification_content_margin_start">0dp</dimen>
+ <!-- Lollipop and later mini floating action button container height. -->
+ <dimen name="fab_height">56dp</dimen>
-</resources>
+ <!-- Lollipop and later mini floating action button size. -->
+ <dimen name="fab_button_size">@dimen/design_fab_size_mini</dimen>
+
+ <!-- Size of margin between icon and text / title text. -->
+ <dimen name="notification_content_margin_start">0dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/res/values-v23/styles.xml b/res/values-v23/styles.xml
index 3996711..8994fdd 100644
--- a/res/values-v23/styles.xml
+++ b/res/values-v23/styles.xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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>
<style name="SettingsAlertDialogTheme" parent="android:ThemeOverlay.Material.Dialog.Alert" />
@@ -18,4 +33,14 @@
<item name="android:shadowDy">@dimen/widget_shadow_dy</item>
</style>
+ <style name="timer_setup_digit">
+ <item name="android:ellipsize">none</item>
+ <item name="android:fontFamily">sans-serif-thin</item>
+ <item name="android:fontFeatureSettings">tnum</item>
+ <item name="android:includeFontPadding">false</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:textColor">@color/clock_white</item>
+ <item name="android:textSize">@dimen/timer_setup_font_size</item>
+ </style>
+
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 8f1c754..40e8931 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Không xác định"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Đã tắt âm lượng báo thức"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Hiển thị"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Thiết bị được đặt thành hoàn toàn tắt tiếng"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Nút âm lượng"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Báo lại"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Bộ hẹn giờ rung"</string>
<string name="timer_paused" msgid="5941160896040771462">"Đã tạm dừng hẹn giờ"</string>
<string name="timers_stopped" msgid="3186191253226005149">"Đã tạm dừng <xliff:g id="NUMBER">%d</xliff:g> hẹn giờ"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Chạm để xem bộ hẹn giờ của bạn"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Nhấn để xem bộ hẹn giờ của bạn"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> bộ hẹn giờ"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Bộ hẹn giờ tiếp theo: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Cài đặt bảo vệ màn hình"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Cài đặt trình bảo vệ màn hình"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Chế độ ban đêm"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Màn hình rất mờ (đối với phòng tối)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Mở rộng báo thức"</string>
diff --git a/res/values-w470dp-v21/dimens.xml b/res/values-w470dp-v21/dimens.xml
new file mode 100644
index 0000000..85d53ac
--- /dev/null
+++ b/res/values-w470dp-v21/dimens.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<!-- Fab automatically adjusts its size from mini to normal at this width. Mirror the change so the
+values can be used elsewhere in clock layouts. -->
+<resources>
+ <!-- Lollipop and later normal floating action button margin. -->
+ <dimen name="fab_margin">16dp</dimen>
+
+ <!-- Lollipop and later normal floating action button container height. -->
+ <dimen name="fab_height">88dp</dimen>
+
+ <!-- Lollipop and later normal floating action button size. -->
+ <dimen name="fab_button_size">@dimen/design_fab_size_normal</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 1654114..867d131 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"未知"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"闹钟已设为静音"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"取消静音"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"设备已设为“完全静音”"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"音量按钮"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"暂停"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"计时器振动"</string>
<string name="timer_paused" msgid="5941160896040771462">"计时器已暂停"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> 个计时器已暂停"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"触摸可查看您的计时器"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"点按即可查看您的计时器"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g>个计时器"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"下一个计时器:<xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"互动式屏保设置"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"屏保设置"</string>
<string name="night_mode_title" msgid="5983813889469616299">"夜间模式"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"将屏幕亮度调至非常低(适合光线昏暗的环境)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"展开闹钟"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 778301a..920f6ad 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"不明"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"鬧鐘已設為靜音"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"取消靜音"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"裝置已設定為完全靜音"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"音量按鈕"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"重響"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"計時器震動"</string>
<string name="timer_paused" msgid="5941160896040771462">"計時器已暫停"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> 個計時器已暫停"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"輕觸即可查看您的計時器"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"輕按即可查看計時器"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> 個計時器"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"下一個計時器:<xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Dream 設定"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"螢幕保護設定"</string>
<string name="night_mode_title" msgid="5983813889469616299">"夜間模式"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"非常暗淡的顯示 (適用於昏暗的室內環境)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"展開鬧鐘"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 274a542..3e53ba7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -118,6 +118,11 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"不明"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"鬧鐘已設為靜音"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"取消靜音"</string>
+ <!-- no translation found for silent_default_alarm_ringtone (6012855475009670997) -->
+ <skip />
+ <!-- no translation found for change_default_alarm_ringtone (7040346397494294392) -->
+ <skip />
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"裝置已設為完全靜音"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"音量按鈕"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"暫停"</item>
@@ -309,10 +314,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"計時器震動"</string>
<string name="timer_paused" msgid="5941160896040771462">"計時器已暫停"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> 個計時器已暫停"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"輕觸即可查看您的計時器"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"輕觸即可查看計時器"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> 個計時器"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"下一個計時器:<xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"休眠模式設定"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"螢幕保護程式設定"</string>
<string name="night_mode_title" msgid="5983813889469616299">"夜間模式"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"非常暗淡的顯示畫面 (適用於昏暗的室內)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"展開鬧鐘"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e5faeb3..8458e6a 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -118,6 +118,9 @@
<string name="unknown_ringtone_title" msgid="6637522029614550112">"Akwaziwa"</string>
<string name="alarm_volume_muted" msgid="6658289289695673569">"Ivolumu ye-alamu ithulisiwe"</string>
<string name="unmute_alarm_volume" msgid="2655009276035357497">"Susa ukuthula"</string>
+ <string name="silent_default_alarm_ringtone" msgid="6012855475009670997">"Ithoni yokukhala ezenzakalelayo ithulile"</string>
+ <string name="change_default_alarm_ringtone" msgid="7040346397494294392">"Shintsha"</string>
+ <string name="alarms_blocked_by_dnd" msgid="6089433757505898969">"Idivayisi isethelwe ekuthuleni okuphelele"</string>
<string name="volume_button_setting_title" msgid="6937131248843413357">"Izinkinobho zevolumu"</string>
<string-array name="volume_button_setting_entries">
<item msgid="7972756698723318690">"Snuza"</item>
@@ -309,10 +312,10 @@
<string name="timer_vibrate_title" msgid="7788920024785587518">"Ukudlidlizela kwesibali sesikhathi"</string>
<string name="timer_paused" msgid="5941160896040771462">"Isibali sikhathi simiswe isikhashana"</string>
<string name="timers_stopped" msgid="3186191253226005149">"<xliff:g id="NUMBER">%d</xliff:g> izibali sikhathi ezimiswe isikhashana"</string>
- <string name="all_timers_stopped_notif" msgid="278532320068394600">"Thinta ukuze ubone izikhathi zakho"</string>
+ <string name="all_timers_stopped_notif" msgid="883027111895833440">"Thepha ukuze ubone izibali zakho zesikhathi"</string>
<string name="timers_in_use" msgid="5570729467344408506">"<xliff:g id="NUMBER">%d</xliff:g> izikhathi"</string>
<string name="next_timer_notif" msgid="6136454740115613653">"Isikhathi esilandelayo: <xliff:g id="TIME_REMAINING">%s</xliff:g>"</string>
- <string name="screensaver_settings" msgid="7013450738357352801">"Izilungiselelo ziphupho"</string>
+ <string name="screensaver_settings" msgid="1780742944194267226">"Izilungiselelo zokulondoloza isikrini"</string>
<string name="night_mode_title" msgid="5983813889469616299">"Imodi yasebusuku"</string>
<string name="night_mode_summary" msgid="1017350187324162631">"Ukubonisa okufiphele kakhulu (ngamagumbi amnyama)"</string>
<string name="expand_alarm" msgid="7392616528943305020">"Nwebissa i-alamu"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index 6c879c7..749706d 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -18,6 +18,4 @@
for different hardware and product builds. -->
<resources>
<bool name="config_rotateAlarmAlert">false</bool>
- <!-- Number of world clocks in a row, for the clock tab. -->
- <item type="integer" name="world_clocks_per_row">1</item>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d8844a8..41864eb 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -1,20 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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.
-*/
+<!-- 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.
-->
<!-- These resources are around just to allow their values to be customized
@@ -24,19 +21,12 @@
<dimen name="label_edittext_padding">21dp</dimen>
<dimen name="time_margin_top">32dip</dimen>
<dimen name="timer_padding">16dp</dimen>
- <dimen name="timer_list_padding_bottom">88dip</dimen>
- <!-- 88dip + 0.5 of footer_button_size -->
<dimen name="screensaver_margin">16dip</dimen>
<dimen name="alarm_label_padding">8dip</dimen>
<dimen name="bottom_text_spacing_digital">-8dp</dimen>
<dimen name="bottom_text_spacing_analog">14dp</dimen>
<dimen name="bottom_text_spacing_analog_small">6dp</dimen>
- <dimen name="alarm_side_padding">12dip</dimen>
- <dimen name="clock_side_padding">12dip</dimen>
- <!-- clock_side_padding_reduced = clock_side_padding - clock_fragment_end_padding -->
- <dimen name="clock_side_padding_reduced">0dip</dimen>
- <dimen name="clock_fragment_end_padding">12dip</dimen>
<dimen name="alarm_clock_vertical_margin">12dip</dimen>
<!-- Analog clock size in the the screen saver -->
@@ -44,26 +34,25 @@
<dimen name="actionbar_tab_padding">0dip</dimen>
- <dimen name="footer_button_size">56dip</dimen>
-
- <dimen name="alarm_text_font_size">16sp</dimen>
- <dimen name="circletimer_dot_size">12dip</dimen>
- <dimen name="circletimer_circle_size">4dip</dimen>
- <dimen name="circletimer_marker_size">16dip</dimen>
+ <dimen name="alarm_text_font_size">12sp</dimen>
+ <dimen name="circletimer_dot_size">12dp</dimen>
+ <dimen name="circletimer_circle_size">4dp</dimen>
+ <dimen name="circletimer_marker_size">16dp</dimen>
+ <dimen name="max_timer_circle_size">360dp</dimen>
<dimen name="alarm_lockscreen_alarm_horizontal_padding">16dp</dimen>
<dimen name="alarm_lockscreen_alarm_vertical_padding">48dp</dimen>
<dimen name="alarm_lockscreen_pulse_radius">128dp</dimen>
<dimen name="alarm_lockscreen_bottom_margin">40dp</dimen>
- <dimen name="main_clock_font_size">70sp</dimen>
- <dimen name="big_font_size">60sp</dimen>
+ <dimen name="main_clock_font_size">64sp</dimen>
+ <dimen name="big_font_size">32sp</dimen>
<dimen name="medium_font_size">56sp</dimen>
<dimen name="small_font_size">32sp</dimen>
<dimen name="label_font_size">16sp</dimen>
<dimen name="header_font_size">24sp</dimen>
- <dimen name="day_button_font_size">18sp</dimen>
- <dimen name="alarm_time_font_size">64sp</dimen>
+ <dimen name="day_button_font_size">16sp</dimen>
+ <dimen name="alarm_time_font_size">48sp</dimen>
<dimen name="alarm_info_font_size">36sp</dimen>
<dimen name="no_alarm_font_size">16sp</dimen>
@@ -88,9 +77,8 @@
<!--padding should be (in dip) ~ 60% dialpad_font_size -->
<dimen name="timer_setup_font_size">38sp</dimen>
<!--margin should be ~ half timer_setup_font_size -->
- <dimen name="timer_setup_delete_start_margin">28sp</dimen>
- <dimen name="timer_setup_delete_padding">12dip</dimen>
- <dimen name="timer_setup_label_size">18sp</dimen>
+ <dimen name="timer_setup_delete_margin">14sp</dimen>
+ <dimen name="timer_setup_delete_padding">12dp</dimen>
<dimen name="cities_list_item_height">56dip</dimen>
@@ -98,15 +86,8 @@
<dimen name="circle_margin_top">16dp</dimen>
<dimen name="analog_clock_margin">60dp</dimen>
- <dimen name="circle_size">280dp</dimen>
- <!--
- list_bottom_spacing = footer_button_size + footer_button_layout_margin.
- Used by both StopwatchFragment and AlarmFragment.
- -->
- <dimen name="list_bottom_spacing">72dip</dimen>
-
<!-- The width and height of the notification icon -->
- <dimen name="notification_icon_size">64dip</dimen>
+ <dimen name="notification_icon_size">64dp</dimen>
<!-- Size of notification text (see TextAppearance.StatusBar.EventContent) -->
<dimen name="notification_text_size">14dp</dimen>
<!-- Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) -->
@@ -118,12 +99,9 @@
<!-- Bottom padding for alarm lock screen hint text -->
<!-- Size of time zone analog clocks in world clock. -->
- <dimen name="world_clock_analog_size">100dip</dimen>
- <dimen name="world_clock_margin">32dp</dimen>
-
- <!-- Height of the button footers. 56 height and 16 on top and bottom. -->
- <dimen name="button_footer_height">88dip</dimen>
- <!-- Negative value of the height of the button footers, for use with lightsout. -->
+ <dimen name="world_clock_analog_size">100dp</dimen>
+ <!-- Size of digital world clock font in landscape. -->
+ <dimen name="world_clock_digital_font_size">40sp</dimen>
<dimen name="min_analog_widget_size">110dp</dimen>
@@ -144,17 +122,14 @@
<item name="widget_shadow_radius" format="float" type="dimen">2.75</item>
<item name="widget_shadow_dy" format="float" type="dimen">2.0</item>
- <!-- Bottom margin for the expand area -->
- <dimen name="collapse_expand_height">72dip</dimen>
-
<!-- Divider height -->
- <dimen name="hairline_height">1dip</dimen>
+ <dimen name="hairline_height">1dp</dimen>
<!-- Divider side padding -->
<dimen name="hairline_side_padding">6dp</dimen>
<!-- The minimum height/width of any touch target -->
- <dimen name="touch_target_min_size">48dip</dimen>
+ <dimen name="touch_target_min_size">48dp</dimen>
<!-- Dimens for cities fastscroll -->
<dimen name="fastscroll_thumb_height">48dp</dimen>
@@ -169,15 +144,21 @@
<dimen name="icon_margin">4dp</dimen>
<!-- Padding between checkbox and text. -->
- <dimen name="checkbox_start_padding">20dp</dimen>
+ <dimen name="checkbox_start_padding">12dp</dimen>
<!-- Dimens for taller rows on Alarms tab -->
<dimen name="tall_row_height">58dp</dimen>
- <!-- Floating action button style -->
- <dimen name="fab_margin">0dp</dimen>
+ <!-- Kitkat and later floating action button elevation. -->
<dimen name="fab_elevation">8dp</dimen>
- <!-- Height of the bar containing the floating action button -->
- <dimen name="fab_height">88dp</dimen>
-</resources>
+ <!-- KitKat floating action button margin; see -v21 folder for newer platforms. -->
+ <dimen name="fab_margin">0dp</dimen>
+
+ <!-- KitKat floating action button container height; see -v21 folder for newer platforms. -->
+ <dimen name="fab_height">96dp</dimen>
+
+ <!-- KitKat floating action button size; see -v21 folder for newer platforms. -->
+ <dimen name="fab_button_size">@dimen/design_fab_size_normal</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/res/layout/blank_footer_view.xml b/res/values/fractions.xml
similarity index 60%
copy from res/layout/blank_footer_view.xml
copy to res/values/fractions.xml
index c9460fc..62c866d 100644
--- a/res/layout/blank_footer_view.xml
+++ b/res/values/fractions.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -13,7 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:background="@color/transparent"
- android:layout_height="@dimen/button_footer_height" />
\ No newline at end of file
+
+<resources>
+ <!-- In portrait, -100% height implies only width is used to size the timer container. -->
+ <fraction name="timer_circle_height_percent">-100%</fraction>
+
+ <!-- In portrait, timer circles are 60% of the container width; height matches width. -->
+ <fraction name="timer_circle_width_percent">60%</fraction>
+</resources>
\ No newline at end of file
diff --git a/res/values/ids.xml b/res/values/ids.xml
index d195123..cc80468 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -16,4 +16,9 @@
<resources>
<item name="numbers_key" type="id" />
+
+ <item name="menu_item_search" type="id" />
+ <item name="menu_item_sort" type="id" />
+ <item name="menu_item_night_mode" type="id" />
+ <item name="menu_item_settings" type="id" />
</resources>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 76565ba..58afbb9 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -16,4 +16,6 @@
<resources>
<integer name="chevron_rotate_180">180</integer>
-</resources>
+ <integer name="gutter_width_percent">4</integer>
+ <integer name="guttered_content_width_percent">92</integer>
+</resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index eb3422f..dccf10a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -288,12 +288,21 @@
<!-- Title for ringtones that cannot be located by uri. -->
<string name="unknown_ringtone_title">Unknown</string>
- <!-- Text to display when alarm volume is muted. -->
+ <!-- Text to display when alarm volume is muted. [CHAR LIMIT=50] -->
<string name="alarm_volume_muted">Alarm volume muted</string>
- <!-- Text for action that presents a volume control to adjust alarm volume. -->
+ <!-- Text for action that presents a volume control to adjust alarm volume. [CHAR LIMIT=20] -->
<string name="unmute_alarm_volume">Unmute</string>
+ <!-- Text to display when system default alarm ringtone is silent. [CHAR LIMIT=50] -->
+ <string name="silent_default_alarm_ringtone">Default alarm ringtone is silent</string>
+
+ <!-- Text for action that shows the UI that changes the default alarm ringtone. [CHAR LIMIT=20] -->
+ <string name="change_default_alarm_ringtone">Change</string>
+
+ <!-- Text to display when do-not-disturb is blocking alarms. [CHAR LIMIT=60] -->
+ <string name="alarms_blocked_by_dnd">Device is set to total silence</string>
+
<!-- Title of the setting to change hardware button behavior. This string
should be changed for each piece of hardware. [CHAR LIMIT=20] -->
<string name="volume_button_setting_title">Volume buttons</string>
@@ -726,15 +735,15 @@
<!-- Notification title when multiple timers are paused. [CHAR LIMIT = 30] -->
<string name="timers_stopped"><xliff:g id="number" example="7">%d</xliff:g> timers paused</string>
<!-- Notification text when multiple timers are paused. -->
- <string name="all_timers_stopped_notif">Touch to see your timers</string>
+ <string name="all_timers_stopped_notif">Tap to see your timers</string>
<!-- Notification title when at least one timer, of those in use, is counting down. -->
<string name="timers_in_use"><xliff:g id="number" example="7">%d</xliff:g> timers</string>
<!-- Notification text when at least one timer, of those in use, is counting down. -->
<string name="next_timer_notif">Next timer: <xliff:g id="time_remaining" example="2 minutes remaining">%s</xliff:g></string>
<!-- screensaver settings strings -->
- <!-- Label for the screen saver activity displayed on-screen when that activity must be represented to the user. -->
- <string name="screensaver_settings">Dream settings</string>
+ <!-- Title for the screen saver settings activity. -->
+ <string name="screensaver_settings">Screen saver settings</string>
<!-- Title for check box to pick intensity of display diminuation during dream mode -->
<string name="night_mode_title">Night mode</string>
<!-- Describes intensity of display diminuation during dream mode -->
@@ -953,4 +962,3 @@
<string name="alarm_is_snoozed"><xliff:g id="alarm_time" example="14:20">%s</xliff:g> alarm snoozed for 10 minutes</string>
</resources>
-
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 17d76ad..f6a86b5 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -126,12 +126,19 @@
</style>
<style name="timer_setup_digit">
- <item name="android:textSize">@dimen/timer_setup_font_size</item>
+ <item name="android:ellipsize">none</item>
+ <item name="android:includeFontPadding">false</item>
<item name="android:fontFamily">sans-serif-thin</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:textColor">@color/clock_white</item>
+ <item name="android:textSize">@dimen/timer_setup_font_size</item>
</style>
- <style name="timer_setup_label">
- <item name="android:textSize">@dimen/timer_setup_label_size</item>
+ <style name="timer_setup_label" parent="label">
+ <item name="android:ellipsize">none</item>
+ <item name="android:fontFamily">sans-serif-thin</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:textColor">@color/clock_white</item>
</style>
<style name="medium_light">
@@ -197,7 +204,7 @@
<item name="android:textStyle">bold</item>
</style>
- <style name="dialpad">
+ <style name="dialpad" parent="Widget.AppCompat.Button.Borderless">
<item name="android:textSize">@dimen/dialpad_font_size</item>
<item name="android:fontFamily">sans-serif-thin</item>
</style>
diff --git a/res/xml/dream_info.xml b/res/xml/screensaver_info.xml
similarity index 100%
rename from res/xml/dream_info.xml
rename to res/xml/screensaver_info.xml
diff --git a/res/xml/dream_settings.xml b/res/xml/screensaver_settings.xml
similarity index 85%
rename from res/xml/dream_settings.xml
rename to res/xml/screensaver_settings.xml
index 5c7a3e1..1680aab 100644
--- a/res/xml/dream_settings.xml
+++ b/res/xml/screensaver_settings.xml
@@ -15,16 +15,19 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/app_label">
+
<ListPreference
- android:key="screensaver_clock_style"
- android:title="@string/clock_style"
+ android:defaultValue="@string/default_clock_style"
+ android:dialogTitle="@string/clock_style"
android:entries="@array/clock_style_entries"
android:entryValues="@array/clock_style_values"
- android:defaultValue="@string/default_clock_style"
- android:dialogTitle="@string/clock_style" />
+ android:key="screensaver_clock_style"
+ android:title="@string/clock_style" />
+
<CheckBoxPreference
+ android:defaultValue="true"
android:key="screensaver_night_mode"
- android:title="@string/night_mode_title"
android:summary="@string/night_mode_summary"
- android:defaultValue="true" />
-</PreferenceScreen>
+ android:title="@string/night_mode_title" />
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/src/com/android/alarmclock/WidgetUtils.java b/src/com/android/alarmclock/WidgetUtils.java
index e3099cc..be7bf33 100644
--- a/src/com/android/alarmclock/WidgetUtils.java
+++ b/src/com/android/alarmclock/WidgetUtils.java
@@ -18,11 +18,11 @@
import android.appwidget.AppWidgetManager;
import android.content.Context;
-import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
public final class WidgetUtils {
@@ -44,7 +44,7 @@
// No data , do no scaling
return 1f;
}
- Resources res = context.getResources();
+ final Resources res = context.getResources();
float density = res.getDisplayMetrics().density;
float ratio = (density * minWidth) / res.getDimension(R.dimen.min_digital_widget_width);
ratio = Math.min(ratio, getHeightScaleRatio(context, options, id));
@@ -55,7 +55,7 @@
}
ratio = Math.min(ratio, 1.6f);
- if (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
+ if (Utils.isPortrait(context)) {
ratio = Math.max(ratio, .71f);
}
else {
@@ -82,10 +82,10 @@
// No data , do no scaling
return 1f;
}
- Resources res = context.getResources();
+ final Resources res = context.getResources();
float density = res.getDisplayMetrics().density;
float ratio = density * minHeight / res.getDimension(R.dimen.min_digital_widget_height);
- if (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
+ if (Utils.isPortrait(context)) {
return ratio * 1.75f;
}
return ratio;
diff --git a/src/com/android/deskclock/AlarmInitReceiver.java b/src/com/android/deskclock/AlarmInitReceiver.java
index 69badef..a5dc04e 100644
--- a/src/com/android/deskclock/AlarmInitReceiver.java
+++ b/src/com/android/deskclock/AlarmInitReceiver.java
@@ -16,6 +16,7 @@
package com.android.deskclock;
+import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -26,6 +27,15 @@
import com.android.deskclock.events.Events;
public class AlarmInitReceiver extends BroadcastReceiver {
+
+ /**
+ * When running on N devices, we're interested in the boot completed event that is sent while
+ * the user is still locked, so that we can schedule alarms.
+ */
+ @SuppressLint("InlinedApi")
+ private static final String ACTION_BOOT_COMPLETED = Utils.isNOrLater()
+ ? Intent.ACTION_LOCKED_BOOT_COMPLETED : Intent.ACTION_BOOT_COMPLETED;
+
/**
* This receiver handles a variety of actions:
*
@@ -52,7 +62,7 @@
// Clear stopwatch data and reset timers because they rely on elapsed real-time values
// which are meaningless after a device reboot.
- if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
+ if (ACTION_BOOT_COMPLETED.equals(action)) {
DataModel.getDataModel().resetStopwatch();
Events.sendStopwatchEvent(R.string.action_reset, R.string.label_reboot);
DataModel.getDataModel().resetTimers(R.string.label_reboot);
@@ -81,4 +91,4 @@
}
});
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/deskclock/AsyncRingtonePlayer.java b/src/com/android/deskclock/AsyncRingtonePlayer.java
index 3f8f7f6..dc4ec60 100644
--- a/src/com/android/deskclock/AsyncRingtonePlayer.java
+++ b/src/com/android/deskclock/AsyncRingtonePlayer.java
@@ -14,7 +14,6 @@
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
-import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
import android.text.format.DateUtils;
@@ -170,16 +169,14 @@
* @return Uri of the ringtone to play when the user is in a telephone call
*/
private static Uri getInCallRingtoneUri(Context context) {
- final String packageName = context.getPackageName();
- return Uri.parse("android.resource://" + packageName + "/" + R.raw.alarm_expire);
+ return Utils.getResourceUri(context, R.raw.alarm_expire);
}
/**
* @return Uri of the ringtone to play when the chosen ringtone fails to play
*/
private static Uri getFallbackRingtoneUri(Context context) {
- final String packageName = context.getPackageName();
- return Uri.parse("android.resource://" + packageName + "/" + R.raw.alarm_expire);
+ return Utils.getResourceUri(context, R.raw.alarm_expire);
}
/**
@@ -227,7 +224,7 @@
* @return the duration of the crescendo in milliseconds
*/
private long getCrescendoDurationMillis(Context context) {
- final String crescendoSecondsStr = PreferenceManager.getDefaultSharedPreferences(context)
+ final String crescendoSecondsStr = Utils.getDefaultSharedPreferences(context)
.getString(mCrescendoPrefKey, DEFAULT_CRESCENDO_LENGTH);
return Integer.parseInt(crescendoSecondsStr) * DateUtils.SECOND_IN_MILLIS;
}
diff --git a/src/com/android/deskclock/CircleButtonsLayout.java b/src/com/android/deskclock/CircleButtonsLayout.java
index a00d6cb..1830ef8 100644
--- a/src/com/android/deskclock/CircleButtonsLayout.java
+++ b/src/com/android/deskclock/CircleButtonsLayout.java
@@ -16,9 +16,6 @@
*/
public class CircleButtonsLayout extends FrameLayout {
- private int mCircleTimerViewId;
- private int mResetAddButtonId;
- private int mLabelId;
private float mDiamOffset;
private View mCircleView;
private ImageButton mResetAddButton;
@@ -31,12 +28,6 @@
public CircleButtonsLayout(Context context, AttributeSet attrs) {
super(context, attrs);
- }
-
- public void setCircleTimerViewIds(int circleTimerViewId, int stopButtonId, int labelId) {
- mCircleTimerViewId = circleTimerViewId;
- mResetAddButtonId = stopButtonId;
- mLabelId = labelId;
final Resources res = getContext().getResources();
final float strokeSize = res.getDimension(R.dimen.circletimer_circle_size);
@@ -56,13 +47,10 @@
}
protected void remeasureViews() {
- if (mCircleView == null) {
- mCircleView = findViewById(mCircleTimerViewId);
- if (mCircleView == null) {
- return;
- }
- mResetAddButton = (ImageButton) findViewById(mResetAddButtonId);
- mLabel = (TextView) findViewById(mLabelId);
+ if (mLabel == null) {
+ mCircleView = findViewById(R.id.timer_time);
+ mLabel = (TextView) findViewById(R.id.timer_label);
+ mResetAddButton = (ImageButton) findViewById(R.id.reset_add);
}
final int frameWidth = mCircleView.getMeasuredWidth();
diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java
index a60c009..041e951 100644
--- a/src/com/android/deskclock/ClockFragment.java
+++ b/src/com/android/deskclock/ClockFragment.java
@@ -22,6 +22,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.res.Resources;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
@@ -101,7 +102,6 @@
super.onCreateView(inflater, container, icicle);
final OnTouchListener startScreenSaverListener = new StartScreenSaverListener();
- final View footerView = inflater.inflate(R.layout.blank_footer_view, mCityList, false);
final View fragmentView = inflater.inflate(R.layout.clock_fragment, container, false);
mCityAdapter = new SelectedCitiesAdapter(getActivity());
@@ -109,7 +109,6 @@
mCityList = (ListView) fragmentView.findViewById(R.id.cities);
mCityList.setDivider(null);
mCityList.setAdapter(mCityAdapter);
- mCityList.addFooterView(footerView, null, false);
mCityList.setOnTouchListener(startScreenSaverListener);
mCityList.setOnScrollListener(new VerticalScrollPositionUpdater());
@@ -267,7 +266,8 @@
@Override
public void run() {
- startActivity(new Intent(getActivity(), ScreensaverActivity.class));
+ startActivity(new Intent(getActivity(), ScreensaverActivity.class)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
@@ -366,14 +366,12 @@
// Inflate a new view for the city, if necessary.
if (view == null) {
- view = mInflater.inflate(R.layout.world_clock_list_item, parent, false);
+ view = mInflater.inflate(R.layout.world_clock_item, parent, false);
}
- final View clock = view.findViewById(R.id.city_left);
-
// Configure the digital clock or analog clock depending on the user preference.
- final TextClock digitalClock = (TextClock) clock.findViewById(R.id.digital_clock);
- final AnalogClock analogClock = (AnalogClock) clock.findViewById(R.id.analog_clock);
+ final TextClock digitalClock = (TextClock) view.findViewById(R.id.digital_clock);
+ final AnalogClock analogClock = (AnalogClock) view.findViewById(R.id.analog_clock);
if (DataModel.getDataModel().getClockStyle() == DataModel.ClockStyle.ANALOG) {
digitalClock.setVisibility(GONE);
analogClock.setVisibility(VISIBLE);
@@ -387,8 +385,17 @@
digitalClock.setFormat24Hour(Utils.get24ModeFormat());
}
+ // Supply top and bottom padding dynamically.
+ final Resources res = mContext.getResources();
+ final int padding = res.getDimensionPixelSize(R.dimen.medium_space_top);
+ final int top = position == 0 ? 0 : padding;
+ final int left = view.getPaddingLeft();
+ final int right = view.getPaddingRight();
+ final int bottom = view.getPaddingBottom();
+ view.setPadding(left, top, right, bottom);
+
// Bind the city name.
- final TextView name = (TextView) clock.findViewById(R.id.city_name);
+ final TextView name = (TextView) view.findViewById(R.id.city_name);
name.setText(city.getName());
// Compute if the city week day matches the weekday of the current timezone.
@@ -397,7 +404,7 @@
final boolean displayDayOfWeek = localCal.get(DAY_OF_WEEK) != cityCal.get(DAY_OF_WEEK);
// Bind the week day display.
- final TextView dayOfWeek = (TextView) clock.findViewById(R.id.city_day);
+ final TextView dayOfWeek = (TextView) view.findViewById(R.id.city_day);
dayOfWeek.setVisibility(displayDayOfWeek ? VISIBLE : GONE);
if (displayDayOfWeek) {
final Locale locale = Locale.getDefault();
@@ -428,4 +435,4 @@
return DataModel.getDataModel().getShowHomeClock();
}
}
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java
index 00b5008..402fe7b 100644
--- a/src/com/android/deskclock/DeskClock.java
+++ b/src/com/android/deskclock/DeskClock.java
@@ -20,15 +20,25 @@
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
import android.app.Fragment;
import android.app.FragmentManager;
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.ContentObserver;
import android.media.AudioManager;
+import android.media.RingtoneManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.provider.Settings;
+import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.design.widget.TabLayout.ViewPagerOnTabSelectedListener;
@@ -37,6 +47,7 @@
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -45,10 +56,10 @@
import android.widget.ImageButton;
import android.widget.ImageView;
-import com.android.deskclock.actionbarmenu.ActionBarMenuManager;
import com.android.deskclock.actionbarmenu.MenuItemControllerFactory;
import com.android.deskclock.actionbarmenu.NightModeMenuItemController;
-import com.android.deskclock.actionbarmenu.SettingMenuItemController;
+import com.android.deskclock.actionbarmenu.OptionsMenuManager;
+import com.android.deskclock.actionbarmenu.SettingsMenuItemController;
import com.android.deskclock.alarms.AlarmStateManager;
import com.android.deskclock.data.DataModel;
import com.android.deskclock.events.Events;
@@ -59,9 +70,13 @@
import com.android.deskclock.widget.RtlViewPager;
import com.android.deskclock.widget.toast.SnackbarManager;
+import static android.app.NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_NONE;
import static android.media.AudioManager.FLAG_SHOW_UI;
import static android.media.AudioManager.STREAM_ALARM;
+import static android.media.RingtoneManager.TYPE_ALARM;
import static android.provider.Settings.System.CONTENT_URI;
+import static android.provider.Settings.System.DEFAULT_ALARM_ALERT_URI;
import static android.support.v4.view.ViewPager.SCROLL_STATE_DRAGGING;
import static android.support.v4.view.ViewPager.SCROLL_STATE_IDLE;
import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING;
@@ -80,11 +95,16 @@
/** The Uri to the settings entry that stores alarm stream volume. */
private static final Uri VOLUME_URI = Uri.withAppendedPath(CONTENT_URI, "volume_alarm_speaker");
+ /** The intent filter that identifies do-not-disturb change broadcasts. */
+ @SuppressLint("NewApi")
+ private static final IntentFilter DND_CHANGE_FILTER
+ = new IntentFilter(ACTION_INTERRUPTION_FILTER_CHANGED);
+
/** Models the interesting state of display the {@link #mFab} button may inhabit. */
private enum FabState { SHOWING, HIDE_ARMED, HIDING }
/** Coordinates handling of context menu items. */
- private final ActionBarMenuManager mActionBarMenuManager = new ActionBarMenuManager();
+ private final OptionsMenuManager mOptionsMenuManager = new OptionsMenuManager();
/** Shrinks the {@link #mFab}, {@link #mLeftButton} and {@link #mRightButton} to nothing. */
private final AnimatorSet mHideAnimation = new AnimatorSet();
@@ -101,17 +121,32 @@
/** Updates the user interface to reflect the selected tab from the backing model. */
private final TabListener mTabChangeWatcher = new TabChangeWatcher();
- /** Displays a snackbar explaining that the alarm volume is muted, possibly after a delay. */
+ /** Displays a snackbar explaining that the system default alarm ringtone is silent. */
+ private final Runnable mShowSilentAlarmSnackbarRunnable = new ShowSilentAlarmSnackbarRunnable();
+
+ /** Observes default alarm ringtone changes while the app is in the foreground. */
+ private final ContentObserver mAlarmRingtoneChangeObserver = new AlarmRingtoneChangeObserver();
+
+ /** Displays a snackbar explaining that the alarm volume is muted. */
private final Runnable mShowMutedVolumeSnackbarRunnable = new ShowMutedVolumeSnackbarRunnable();
/** Observes alarm volume changes while the app is in the foreground. */
private final ContentObserver mAlarmVolumeChangeObserver = new AlarmVolumeChangeObserver();
+ /** Displays a snackbar explaining that do-not-disturb is blocking alarms. */
+ private final Runnable mShowDNDBlockingSnackbarRunnable = new ShowDNDBlockingSnackbarRunnable();
+
+ /** Observes do-not-disturb changes while the app is in the foreground. */
+ private final BroadcastReceiver mDoNotDisturbChangeReceiver = new DoNotDisturbChangeReceiver();
+
/** Used to query the alarm volume and display the system control to change the alarm volume. */
private AudioManager mAudioManager;
+ /** Used to query the do-not-disturb setting value, also called "interruption filter". */
+ private NotificationManager mNotificationManager;
+
/** {@code true} permits the muted alarm volume snackbar to show when starting this activity. */
- private boolean mShowMutedVolumeSnackbar;
+ private boolean mShowSilencedAlarmsSnackbar;
/** The view to which snackbar items are anchored. */
private View mSnackbarAnchor;
@@ -165,8 +200,10 @@
setContentView(R.layout.desk_clock);
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
+ mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+
// Don't show the volume muted snackbar on rotations.
- mShowMutedVolumeSnackbar = savedInstanceState == null;
+ mShowSilencedAlarmsSnackbar = savedInstanceState == null;
mSnackbarAnchor = findViewById(R.id.coordinator);
// Configure the toolbar.
@@ -175,9 +212,9 @@
getSupportActionBar().setDisplayShowTitleEnabled(false);
// Configure the menu item controllers add behavior to the toolbar.
- mActionBarMenuManager
- .addMenuItemController(new SettingMenuItemController(this))
+ mOptionsMenuManager
.addMenuItemController(new NightModeMenuItemController(this))
+ .addMenuItemController(new SettingsMenuItemController(this))
.addMenuItemController(MenuItemControllerFactory.getInstance()
.buildMenuItemControllers(this));
@@ -273,13 +310,30 @@
protected void onStart() {
super.onStart();
- if (mShowMutedVolumeSnackbar && mAudioManager.getStreamVolume(STREAM_ALARM) <= 0) {
- // Show the volume muted snackbar after a brief delay so it is more noticeable.
- mSnackbarAnchor.postDelayed(mShowMutedVolumeSnackbarRunnable, SECOND_IN_MILLIS);
+ if (mShowSilencedAlarmsSnackbar) {
+ if (isDoNotDisturbBlockingAlarms()) {
+ mSnackbarAnchor.postDelayed(mShowDNDBlockingSnackbarRunnable, SECOND_IN_MILLIS);
+ } else if (isAlarmStreamMuted()) {
+ mSnackbarAnchor.postDelayed(mShowMutedVolumeSnackbarRunnable, SECOND_IN_MILLIS);
+ } else if (isSystemAlarmRingtoneSilent()) {
+ mSnackbarAnchor.postDelayed(mShowSilentAlarmSnackbarRunnable, SECOND_IN_MILLIS);
+ }
}
// Subsequent starts of this activity should show the snackbar by default.
- mShowMutedVolumeSnackbar = true;
+ mShowSilencedAlarmsSnackbar = true;
+
+ final ContentResolver cr = getContentResolver();
+ // Watch for system alarm ringtone changes while the app is in the foreground.
+ cr.registerContentObserver(DEFAULT_ALARM_ALERT_URI, false, mAlarmRingtoneChangeObserver);
+
+ // Watch for alarm volume changes while the app is in the foreground.
+ cr.registerContentObserver(VOLUME_URI, false, mAlarmVolumeChangeObserver);
+
+ if (Utils.isMOrLater()) {
+ // Watch for do-not-disturb changes while the app is in the foreground.
+ registerReceiver(mDoNotDisturbChangeReceiver, DND_CHANGE_FILTER);
+ }
}
@Override
@@ -289,9 +343,6 @@
final View dropShadow = findViewById(R.id.drop_shadow);
mDropShadowController = new DropShadowController(dropShadow, UiDataModel.getUiDataModel());
- // Watch for alarm volume changes while the app is in the foreground.
- getContentResolver().registerContentObserver(VOLUME_URI, true, mAlarmVolumeChangeObserver);
-
// Honor the selected tab in case it changed while the app was paused.
updateCurrentTab(UiDataModel.getUiDataModel().getSelectedTabIndex());
@@ -318,9 +369,6 @@
@Override
public void onPause() {
- // Stop watching for alarm volume changes while the app is in the background.
- getContentResolver().unregisterContentObserver(mAlarmVolumeChangeObserver);
-
DataModel.getDataModel().setApplicationInForeground(false);
mDropShadowController.stop();
@@ -331,7 +379,20 @@
@Override
protected void onStop() {
- // Remove any scheduled work to show the muted volume snackbar; it is no longer relevant.
+ // Stop watching for system alarm ringtone changes while the app is in the background.
+ getContentResolver().unregisterContentObserver(mAlarmRingtoneChangeObserver);
+
+ // Stop watching for alarm volume changes while the app is in the background.
+ getContentResolver().unregisterContentObserver(mAlarmVolumeChangeObserver);
+
+ if (Utils.isMOrLater()) {
+ // Stop watching for do-not-disturb changes while the app is in the background.
+ unregisterReceiver(mDoNotDisturbChangeReceiver);
+ }
+
+ // Remove any scheduled work to show snackbars; it is no longer relevant.
+ mSnackbarAnchor.removeCallbacks(mShowSilentAlarmSnackbarRunnable);
+ mSnackbarAnchor.removeCallbacks(mShowDNDBlockingSnackbarRunnable);
mSnackbarAnchor.removeCallbacks(mShowMutedVolumeSnackbarRunnable);
super.onStop();
}
@@ -344,20 +405,20 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- mActionBarMenuManager.createOptionsMenu(menu, getMenuInflater());
+ mOptionsMenuManager.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- mActionBarMenuManager.prepareShowMenu(menu);
+ mOptionsMenuManager.onPrepareOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- return mActionBarMenuManager.handleMenuItemClick(item) || super.onOptionsItemSelected(item);
+ return mOptionsMenuManager.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}
/**
@@ -371,6 +432,18 @@
}
}
+ /**
+ * Listens for keyboard activity for the tab fragments to handle if necessary. A tab may want to
+ * respond to key presses even if they are not currently focused.
+ */
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (getSelectedDeskClockFragment().onKeyDown(keyCode,event)) {
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
@Override
public void updateFab(UpdateType updateType) {
switch (updateType) {
@@ -402,13 +475,17 @@
mHideAnimation.start();
break;
}
+ case FAB_REQUESTS_FOCUS: {
+ mFab.requestFocus();
+ break;
+ }
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Recreate the activity if any settings have been changed
- if (requestCode == SettingMenuItemController.REQUEST_CHANGE_SETTINGS
+ if (requestCode == SettingsMenuItemController.REQUEST_CHANGE_SETTINGS
&& resultCode == RESULT_OK) {
mRecreateActivity = true;
}
@@ -435,6 +512,28 @@
return (DeskClockFragment) mFragmentTabPagerAdapter.getItem(index);
}
+ private boolean isSystemAlarmRingtoneSilent() {
+ return RingtoneManager.getActualDefaultRingtoneUri(this, TYPE_ALARM) == null;
+ }
+
+ private void showSilentRingtoneSnackbar() {
+ final OnClickListener changeClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
+ }
+ };
+
+ SnackbarManager.show(
+ createSnackbar(R.string.silent_default_alarm_ringtone)
+ .setAction(R.string.change_default_alarm_ringtone, changeClickListener)
+ );
+ }
+
+ private boolean isAlarmStreamMuted() {
+ return mAudioManager.getStreamVolume(STREAM_ALARM) <= 0;
+ }
+
private void showAlarmVolumeMutedSnackbar() {
final OnClickListener unmuteClickListener = new OnClickListener() {
@Override
@@ -446,15 +545,34 @@
};
SnackbarManager.show(
- Snackbar.make(mSnackbarAnchor, R.string.alarm_volume_muted, 5000)
+ createSnackbar(R.string.alarm_volume_muted)
.setAction(R.string.unmute_alarm_volume, unmuteClickListener)
);
}
+ @TargetApi(Build.VERSION_CODES.M)
+ private boolean isDoNotDisturbBlockingAlarms() {
+ if (!Utils.isMOrLater()) {
+ return false;
+ }
+ return mNotificationManager.getCurrentInterruptionFilter() == INTERRUPTION_FILTER_NONE;
+ }
+
+ private void showDoNotDisturbIsBlockingAlarmsSnackbar() {
+ SnackbarManager.show(createSnackbar(R.string.alarms_blocked_by_dnd));
+ }
+
+ /**
+ * @return a Snackbar that displays the message with the given id for 5 seconds
+ */
+ private Snackbar createSnackbar(@StringRes int messageId) {
+ return Snackbar.make(mSnackbarAnchor, messageId, 5000 /* duration */);
+ }
+
/**
* As the view pager changes the selected page, update the model to record the new selected tab.
*/
- private class PageChangeWatcher implements OnPageChangeListener {
+ private final class PageChangeWatcher implements OnPageChangeListener {
/** The last reported page scroll state; used to detect exotic state changes. */
private int mPriorState = SCROLL_STATE_IDLE;
@@ -522,7 +640,7 @@
* If this listener is attached to {@link #mHideAnimation} when it ends, the corresponding
* {@link #mShowAnimation} is automatically started.
*/
- private class AutoStartShowListener extends AnimatorListenerAdapter {
+ private final class AutoStartShowListener extends AnimatorListenerAdapter {
@Override
public void onAnimationEnd(Animator animation) {
// Prepare the hide animation for its next use; by default do not auto-show after hide.
@@ -540,10 +658,19 @@
}
/**
+ * Displays a snackbar that indicates the system default alarm ringtone currently silent and
+ * offers an action that displays the system alarm ringtone setting to adjust it.
+ */
+ private final class ShowSilentAlarmSnackbarRunnable implements Runnable {
+ @Override
+ public void run() {
+ showSilentRingtoneSnackbar();
+ }
+ }
+
+ /**
* Displays a snackbar that indicates the alarm volume is currently muted and offers an action
- * that displays the system volume control to adjust it. This runnable may be executed
- * immediately (if the volume is changed while this app is in the foreground) or after a delay
- * (if the volume is detected to be zero while bringing the app to the foreground).
+ * that displays the system volume control to adjust it.
*/
private final class ShowMutedVolumeSnackbarRunnable implements Runnable {
@Override
@@ -553,6 +680,35 @@
}
/**
+ * Displays a snackbar that indicates the do-not-disturb setting is currently blocking alarms.
+ */
+ private final class ShowDNDBlockingSnackbarRunnable implements Runnable {
+ @Override
+ public void run() {
+ showDoNotDisturbIsBlockingAlarmsSnackbar();
+ }
+ }
+
+ /**
+ * Observe changes to the system default alarm ringtone while the application is in the
+ * foreground and show/hide the snackbar that warns when the ringtone is silent.
+ */
+ private final class AlarmRingtoneChangeObserver extends ContentObserver {
+ private AlarmRingtoneChangeObserver() {
+ super(new Handler());
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ if (isSystemAlarmRingtoneSilent()) {
+ showSilentRingtoneSnackbar();
+ } else {
+ SnackbarManager.dismiss();
+ }
+ }
+ }
+
+ /**
* Observe changes to the alarm stream volume while the application is in the foreground and
* show/hide the snackbar that warns when the alarm volume is muted.
*/
@@ -563,7 +719,7 @@
@Override
public void onChange(boolean selfChange) {
- if (mAudioManager.getStreamVolume(STREAM_ALARM) <= 0) {
+ if (isAlarmStreamMuted()) {
showAlarmVolumeMutedSnackbar();
} else {
SnackbarManager.dismiss();
@@ -572,9 +728,24 @@
}
/**
+ * Observe changes to the do-not-disturb setting while the application is in the foreground
+ * and show/hide the snackbar that warns when the setting is blocking alarms.
+ */
+ private final class DoNotDisturbChangeReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (isDoNotDisturbBlockingAlarms()) {
+ showDoNotDisturbIsBlockingAlarmsSnackbar();
+ } else {
+ SnackbarManager.dismiss();
+ }
+ }
+ }
+
+ /**
* As the model reports changes to the selected tab, update the user interface.
*/
- private class TabChangeWatcher implements TabListener {
+ private final class TabChangeWatcher implements TabListener {
@Override
public void selectedTabChanged(Tab oldSelectedTab, Tab newSelectedTab) {
final int index = newSelectedTab.ordinal();
@@ -612,7 +783,7 @@
/**
* This adapter produces the DeskClockFragments that are the contents of the tabs.
*/
- private static class TabFragmentAdapter extends FragmentPagerAdapter {
+ private static final class TabFragmentAdapter extends FragmentPagerAdapter {
private final FragmentManager mFragmentManager;
private final Context mContext;
@@ -651,4 +822,4 @@
return "android:switcher:" + viewId + ":" + id;
}
}
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/DeskClockBackupAgent.java b/src/com/android/deskclock/DeskClockBackupAgent.java
index 73e0ea6..96c64c8 100644
--- a/src/com/android/deskclock/DeskClockBackupAgent.java
+++ b/src/com/android/deskclock/DeskClockBackupAgent.java
@@ -24,7 +24,6 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.ParcelFileDescriptor;
import android.os.SystemClock;
@@ -83,19 +82,14 @@
*/
@Override
public void onRestoreFinished() {
- // Write a preference to indicate a data restore has been completed.
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
- prefs.edit().putBoolean(KEY_RESTORE_FINISHED, true).apply();
-
- // If device boot is not yet completed, use ACTION_BOOT_COMPLETED to trigger completion of
- // the data restore process at a safer time.
- if (registerReceiver(null, new IntentFilter(Intent.ACTION_BOOT_COMPLETED)) != null) {
- LOGGER.i("Waiting for %s to complete the data restore", Intent.ACTION_BOOT_COMPLETED);
- return;
+ if (Utils.isNOrLater()) {
+ // TODO: migrate restored database and preferences over into
+ // the device-encrypted storage area
}
- // Otherwise, the device is already booted, so schedule a custom broadcast to start the
- // application in 10 seconds.
+ // Write a preference to indicate a data restore has been completed.
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(this);
+ prefs.edit().putBoolean(KEY_RESTORE_FINISHED, true).apply();
// Create an Intent to send into DeskClock indicating restore is complete.
final PendingIntent restoreIntent = PendingIntent.getBroadcast(this, 0,
@@ -118,7 +112,7 @@
*/
public static boolean processRestoredData(Context context) {
// If the preference indicates data was not recently restored, there is nothing to do.
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
if (!prefs.getBoolean(KEY_RESTORE_FINISHED, false)) {
return false;
}
diff --git a/src/com/android/deskclock/DeskClockFragment.java b/src/com/android/deskclock/DeskClockFragment.java
index 0f07aea..c2d738d 100644
--- a/src/com/android/deskclock/DeskClockFragment.java
+++ b/src/com/android/deskclock/DeskClockFragment.java
@@ -18,6 +18,7 @@
import android.app.Fragment;
import android.support.annotation.NonNull;
+import android.view.KeyEvent;
import android.widget.ImageButton;
import com.android.deskclock.uidata.UiDataModel;
@@ -44,6 +45,11 @@
}
}
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ // By default return false so event continues to propagate
+ return false;
+ }
+
@Override
public void onLeftButtonClick(@NonNull ImageButton left) {
// Do nothing here, only in derived classes
diff --git a/src/com/android/deskclock/FabContainer.java b/src/com/android/deskclock/FabContainer.java
index 41680f7..4e12e38 100644
--- a/src/com/android/deskclock/FabContainer.java
+++ b/src/com/android/deskclock/FabContainer.java
@@ -21,7 +21,10 @@
FAB_AND_BUTTONS_MORPH,
/** Disable the buttons of the fab so they do not respond to clicks. */
- DISABLE_BUTTONS
+ DISABLE_BUTTONS,
+
+ /** Signals that the fab should request focus. */
+ FAB_REQUESTS_FOCUS
}
/**
diff --git a/src/com/android/deskclock/TimerCircleFrameLayout.java b/src/com/android/deskclock/TimerCircleFrameLayout.java
new file mode 100644
index 0000000..45bd546
--- /dev/null
+++ b/src/com/android/deskclock/TimerCircleFrameLayout.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+
+/**
+ * A container that frames a timer circle of some sort. The circle is allowed to grow naturally
+ * according to its layout constraints up to the {@link R.dimen#max_timer_circle_size largest}
+ * allowable size.
+ */
+public class TimerCircleFrameLayout extends FrameLayout {
+
+ public TimerCircleFrameLayout(Context context) {
+ super(context);
+ }
+
+ public TimerCircleFrameLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TimerCircleFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ /**
+ * Note: this method assumes the parent container will specify {@link MeasureSpec#EXACTLY exact}
+ * width and height values.
+ *
+ * @param widthMeasureSpec horizontal space requirements as imposed by the parent
+ * @param heightMeasureSpec vertical space requirements as imposed by the parent
+ */
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ // Fetch the exact sizes imposed by the parent container.
+ final int width = MeasureSpec.getSize(widthMeasureSpec);
+ final int height = MeasureSpec.getSize(heightMeasureSpec);
+ final int smallestDimension = Math.min(width, height);
+
+ // Fetch the absolute maximum circle size allowed.
+ final int maxSize = getResources().getDimensionPixelSize(R.dimen.max_timer_circle_size);
+ final int size = Math.min(smallestDimension, maxSize);
+
+ // Set the size of this container.
+ widthMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
+
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java
index 9ff74b4..148a2bd 100644
--- a/src/com/android/deskclock/Utils.java
+++ b/src/com/android/deskclock/Utils.java
@@ -19,9 +19,12 @@
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
@@ -37,8 +40,10 @@
import android.os.Looper;
import android.preference.PreferenceManager;
import android.provider.Settings;
+import android.support.annotation.AnyRes;
import android.support.annotation.DrawableRes;
import android.support.graphics.drawable.VectorDrawableCompat;
+import android.support.v4.os.BuildCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Spannable;
@@ -69,10 +74,12 @@
import java.util.Locale;
import java.util.TimeZone;
-import static android.graphics.Bitmap.Config.ARGB_8888;
-
+import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static android.appwidget.AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY;
import static android.appwidget.AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD;
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
+import static android.graphics.Bitmap.Config.ARGB_8888;
public class Utils {
@@ -178,6 +185,25 @@
}
/**
+ * @return {@code true} if the device is {@link Build.VERSION_CODES#N} or later
+ */
+ public static boolean isNOrLater() {
+ return BuildCompat.isAtLeastN();
+ }
+
+ /**
+ * @param resourceId identifies an application resource
+ * @return the Uri by which the application resource is accessed
+ */
+ public static Uri getResourceUri(Context context, @AnyRes int resourceId) {
+ return new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
+ .authority(context.getPackageName())
+ .path(String.valueOf(resourceId))
+ .build();
+ }
+
+ /**
* @param listView the scrollable list view to test
* @return {@code true} iff the {@code listView} content is currently scrolled to the top
*/
@@ -280,6 +306,28 @@
}
/**
+ * Update and return the PendingIntent corresponding to the given {@code intent}.
+ *
+ * @param context the Context in which the PendingIntent should start the service
+ * @param intent an Intent describing the service to be started
+ * @return a PendingIntent that will start a service
+ */
+ public static PendingIntent pendingServiceIntent(Context context, Intent intent) {
+ return PendingIntent.getService(context, 0, intent, FLAG_UPDATE_CURRENT);
+ }
+
+ /**
+ * Update and return the PendingIntent corresponding to the given {@code intent}.
+ *
+ * @param context the Context in which the PendingIntent should start the activity
+ * @param intent an Intent describing the activity to be started
+ * @return a PendingIntent that will start an activity
+ */
+ public static PendingIntent pendingActivityIntent(Context context, Intent intent) {
+ return PendingIntent.getActivity(context, 0, intent, FLAG_UPDATE_CURRENT);
+ }
+
+ /**
* @return The next alarm from {@link AlarmManager}
*/
public static String getNextAlarm(Context context) {
@@ -502,8 +550,7 @@
// Return the first day of the week value corresponding to Calendar.<WEEKDAY> value, which is
// 1-indexed starting with Sunday.
public static int getFirstDayOfWeek(Context context) {
- return Integer.parseInt(PreferenceManager
- .getDefaultSharedPreferences(context)
+ return Integer.parseInt(getDefaultSharedPreferences(context)
.getString(SettingsActivity.KEY_WEEK_START, String.valueOf(DEFAULT_WEEK_START)));
}
@@ -586,4 +633,42 @@
arraySet.addAll(collection);
return arraySet;
}
-}
+
+ /**
+ * Returns the default {@link SharedPreferences} instance from the underlying storage context.
+ */
+ @TargetApi(Build.VERSION_CODES.N)
+ public static SharedPreferences getDefaultSharedPreferences(Context context) {
+ final Context storageContext;
+ if (isNOrLater()) {
+ // All N devices have split storage areas, but we may need to
+ // migrate existing preferences into the new device encrypted
+ // storage area, which is where our data lives from now on.
+ storageContext = context.createDeviceProtectedStorageContext();
+ if (!storageContext.moveSharedPreferencesFrom(context,
+ PreferenceManager.getDefaultSharedPreferencesName(context))) {
+ LogUtils.wtf("Failed to migrate shared preferences");
+ }
+ } else {
+ storageContext = context;
+ }
+
+ return PreferenceManager.getDefaultSharedPreferences(storageContext);
+ }
+
+ /**
+ * @param context from which to query the current device configuration
+ * @return {@code true} if the device is currently in portrait or reverse portrait orientation
+ */
+ public static boolean isPortrait(Context context) {
+ return context.getResources().getConfiguration().orientation == ORIENTATION_PORTRAIT;
+ }
+
+ /**
+ * @param context from which to query the current device configuration
+ * @return {@code true} if the device is currently in landscape or reverse landscape orientation
+ */
+ public static boolean isLandscape(Context context) {
+ return context.getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/actionbarmenu/AbstractMenuItemController.java b/src/com/android/deskclock/actionbarmenu/AbstractMenuItemController.java
deleted file mode 100644
index 047d816..0000000
--- a/src/com/android/deskclock/actionbarmenu/AbstractMenuItemController.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.deskclock.actionbarmenu;
-
-import android.view.Menu;
-
-/**
- * Base of all {@link MenuItemController}. It contains basic implementation for enabling controller.
- */
-public abstract class AbstractMenuItemController implements MenuItemController {
- // Whether or not the controller is enabled. By default it's enabled.
- private boolean mEnabled = true;
-
- @Override
- public void setEnabled(boolean enabled) {
- mEnabled = enabled;
- }
-
- @Override
- public boolean isEnabled() {
- return mEnabled;
- }
-
- @Override
- public void setInitialState(Menu menu) {
- // By default, there is nothing to initialize.
- }
-}
diff --git a/src/com/android/deskclock/actionbarmenu/ActionBarMenuManager.java b/src/com/android/deskclock/actionbarmenu/ActionBarMenuManager.java
deleted file mode 100644
index d2438e5..0000000
--- a/src/com/android/deskclock/actionbarmenu/ActionBarMenuManager.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.deskclock.actionbarmenu;
-
-import android.app.Activity;
-import android.util.ArrayMap;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-
-import com.android.deskclock.R;
-
-/**
- * Activity scoped singleton that manages action bar menus. Each menu item is controlled by a
- * {@link MenuItemController} instance.
- * <p/>
- * This class needs to be instantiated before or during activity's onCreate event.
- */
-public final class ActionBarMenuManager {
- // A map of all menu item controllers, keyed by menu item id.
- private final ArrayMap<Integer, MenuItemController> mControllers;
-
- public ActionBarMenuManager() {
- mControllers = new ArrayMap<>();
- }
-
- /**
- * Add one or more {@link MenuItemController} to the actionbar menu.
- * <p/>
- * This should be called before activity's onPrepareOptionsMenu event.
- */
- public ActionBarMenuManager addMenuItemController(MenuItemController... menuItemControllers) {
- if (menuItemControllers != null) {
- for (MenuItemController controller : menuItemControllers) {
- mControllers.put(controller.getId(), controller);
- }
- }
- return this;
- }
-
- /**
- * Inflates {@link Menu} for the activity.
- * <p/>
- * This method should be called during activity's onCreateOptionsMenu method.
- */
- public void createOptionsMenu(Menu menu, MenuInflater inflater) {
- if (menu.size() > 0) {
- throw new IllegalStateException("Menu has already been inflated.");
- }
- inflater.inflate(R.menu.desk_clock_menu, menu);
-
- final int controllerSize = mControllers.size();
- for (int i = 0; i < controllerSize; i++) {
- final MenuItemController controller = mControllers.valueAt(i);
- if (controller.isEnabled()) {
- controller.setInitialState(menu);
- }
- }
- }
-
- /**
- * Prepares the popup to displays all required menu items.
- * <p/>
- * This method should be called during activity's onPrepareOptionsMenu method.
- */
- public void prepareShowMenu(Menu menu) {
- final int menuSize = menu.size();
- for (int i = 0; i < menuSize; i++) {
- menu.getItem(i).setVisible(false);
- }
- final int controllerSize = mControllers.size();
- for (int i = 0; i < controllerSize; i++) {
- final MenuItemController controller = mControllers.valueAt(i);
- if (controller.isEnabled()) {
- controller.showMenuItem(menu);
- }
- }
- }
-
- /**
- * Handles click action for a menu item.
- * <p/>
- * This method should be called during activity's onOptionsItemSelected method.
- */
- public boolean handleMenuItemClick(MenuItem item) {
- final int itemId = item.getItemId();
- return mControllers.get(itemId).handleMenuItemClick(item);
- }
-}
diff --git a/src/com/android/deskclock/actionbarmenu/MenuItemController.java b/src/com/android/deskclock/actionbarmenu/MenuItemController.java
index d7cb06f..542a035 100644
--- a/src/com/android/deskclock/actionbarmenu/MenuItemController.java
+++ b/src/com/android/deskclock/actionbarmenu/MenuItemController.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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.
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.deskclock.actionbarmenu;
import android.view.Menu;
@@ -24,37 +25,27 @@
public interface MenuItemController {
/**
- * Sets whether or not the controller is enabled.
- */
- void setEnabled(boolean enabled);
-
- /**
- * Returns true if the controller is currently enabled.
- */
- boolean isEnabled();
-
- /**
- * Returns the menu item id that the controller is responsible for.
+ * Returns the menu item resource id that the controller manages.
*/
int getId();
/**
- * Sets the initial state for the menu item.
+ * Create the menu item.
*/
- void setInitialState(Menu menu);
+ void onCreateOptionsItem(Menu menu);
/**
- * Find the menu item this controller cares about, and make it visible.
+ * Called immediately before the {@link MenuItem} is shown.
*
- * @param menu The menu object containing an item that controller can handle.
+ * @param item the {@link MenuItem} created by the controller
*/
- void showMenuItem(Menu menu);
+ void onPrepareOptionsItem(MenuItem item);
/**
* Attempts to handle the click action.
*
- * @param item The menu item being clicked.
- * @return True if the action is handled by this controller, false otherwise.
+ * @param item the {@link MenuItem} that was selected
+ * @return {@code true} if the action is handled by this controller
*/
- boolean handleMenuItemClick(MenuItem item);
+ boolean onOptionsItemSelected(MenuItem item);
}
diff --git a/src/com/android/deskclock/actionbarmenu/NavUpMenuItemController.java b/src/com/android/deskclock/actionbarmenu/NavUpMenuItemController.java
index a2aebbf..b1622da 100644
--- a/src/com/android/deskclock/actionbarmenu/NavUpMenuItemController.java
+++ b/src/com/android/deskclock/actionbarmenu/NavUpMenuItemController.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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
@@ -24,7 +24,7 @@
* {@link MenuItemController} for handling navigation up button in actionbar. It is a special
* menu item because it's not inflated through menu.xml, and has its own predefined id.
*/
-public final class NavUpMenuItemController extends AbstractMenuItemController {
+public final class NavUpMenuItemController implements MenuItemController {
private final Activity mActivity;
@@ -38,13 +38,16 @@
}
@Override
- public void showMenuItem(Menu menu) {
- // Intentionally left empty, because back button in actionbar is not shown by inflating
- // menu layouts. It's directly controlled by actionbar.
+ public void onCreateOptionsItem(Menu menu) {
+ // "Home" option is automatically created by the Toolbar.
}
@Override
- public boolean handleMenuItemClick(MenuItem item) {
+ public void onPrepareOptionsItem(MenuItem item) {
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
mActivity.finish();
return true;
}
diff --git a/src/com/android/deskclock/actionbarmenu/NightModeMenuItemController.java b/src/com/android/deskclock/actionbarmenu/NightModeMenuItemController.java
index 0a98621..745a8f8 100644
--- a/src/com/android/deskclock/actionbarmenu/NightModeMenuItemController.java
+++ b/src/com/android/deskclock/actionbarmenu/NightModeMenuItemController.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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.
@@ -23,10 +23,12 @@
import com.android.deskclock.R;
import com.android.deskclock.ScreensaverActivity;
+import static android.view.Menu.NONE;
+
/**
* {@link MenuItemController} for controlling night mode display.
*/
-public final class NightModeMenuItemController extends AbstractMenuItemController {
+public final class NightModeMenuItemController implements MenuItemController {
private static final int NIGHT_MODE_MENU_RES_ID = R.id.menu_item_night_mode;
@@ -42,13 +44,19 @@
}
@Override
- public void showMenuItem(Menu menu) {
- menu.findItem(NIGHT_MODE_MENU_RES_ID).setVisible(true);
+ public void onCreateOptionsItem(Menu menu) {
+ menu.add(NONE, NIGHT_MODE_MENU_RES_ID, NONE, R.string.menu_item_night_mode)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
@Override
- public boolean handleMenuItemClick(MenuItem item) {
- mContext.startActivity(new Intent(mContext, ScreensaverActivity.class));
+ public void onPrepareOptionsItem(MenuItem item) {
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ mContext.startActivity(new Intent(mContext, ScreensaverActivity.class)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
return true;
}
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/actionbarmenu/OptionsMenuManager.java b/src/com/android/deskclock/actionbarmenu/OptionsMenuManager.java
new file mode 100644
index 0000000..4d66e2d
--- /dev/null
+++ b/src/com/android/deskclock/actionbarmenu/OptionsMenuManager.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock.actionbarmenu;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Activity scoped singleton that manages action bar menus. Each menu item is controlled by a
+ * {@link MenuItemController} instance.
+ */
+public final class OptionsMenuManager {
+
+ private final List<MenuItemController> mControllers = new ArrayList<>();
+
+ /**
+ * Add one or more {@link MenuItemController} to the actionbar menu.
+ * <p/>
+ * This should be called in {@link Activity#onCreate(Bundle)}.
+ */
+ public OptionsMenuManager addMenuItemController(MenuItemController... controllers) {
+ Collections.addAll(mControllers, controllers);
+ return this;
+ }
+
+ /**
+ * Inflates {@link Menu} for the activity.
+ * <p/>
+ * This method should be called during {@link Activity#onCreateOptionsMenu(Menu)}.
+ */
+ public void onCreateOptionsMenu(Menu menu) {
+ for (MenuItemController controller : mControllers) {
+ controller.onCreateOptionsItem(menu);
+ }
+ }
+
+ /**
+ * Prepares the popup to displays all required menu items.
+ * <p/>
+ * This method should be called during {@link Activity#onPrepareOptionsMenu(Menu)} (Menu)}.
+ */
+ public void onPrepareOptionsMenu(Menu menu) {
+ for (MenuItemController controller : mControllers) {
+ final MenuItem menuItem = menu.findItem(controller.getId());
+ if (menuItem != null) {
+ controller.onPrepareOptionsItem(menuItem);
+ }
+ }
+ }
+
+ /**
+ * Handles click action for a menu item.
+ * <p/>
+ * This method should be called during {@link Activity#onOptionsItemSelected(MenuItem)}.
+ */
+ public boolean onOptionsItemSelected(MenuItem item) {
+ final int itemId = item.getItemId();
+ for (MenuItemController controller : mControllers) {
+ if (controller.getId() == itemId
+ && controller.onOptionsItemSelected(item)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/com/android/deskclock/actionbarmenu/SearchMenuItemController.java b/src/com/android/deskclock/actionbarmenu/SearchMenuItemController.java
index fbba78d..52a4680 100644
--- a/src/com/android/deskclock/actionbarmenu/SearchMenuItemController.java
+++ b/src/com/android/deskclock/actionbarmenu/SearchMenuItemController.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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
@@ -16,10 +16,11 @@
package com.android.deskclock.actionbarmenu;
+import android.content.Context;
import android.os.Bundle;
-import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
+import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -27,22 +28,32 @@
import com.android.deskclock.R;
+import static android.view.Menu.FIRST;
+import static android.view.Menu.NONE;
+
/**
* {@link MenuItemController} for search menu.
*/
-public final class SearchMenuItemController extends AbstractMenuItemController {
+public final class SearchMenuItemController implements MenuItemController {
private static final String KEY_SEARCH_QUERY = "search_query";
private static final String KEY_SEARCH_MODE = "search_mode";
+
private static final int SEARCH_MENU_RES_ID = R.id.menu_item_search;
+
+ private final Context mContext;
private final SearchView.OnQueryTextListener mQueryListener;
private final SearchModeChangeListener mSearchModeChangeListener;
+
private String mQuery = "";
private boolean mSearchMode;
- public SearchMenuItemController(OnQueryTextListener queryListener, Bundle savedState) {
+ public SearchMenuItemController(Context context, OnQueryTextListener queryListener,
+ Bundle savedState) {
+ mContext = context;
mSearchModeChangeListener = new SearchModeChangeListener();
mQueryListener = queryListener;
+
if (savedState != null) {
mSearchMode = savedState.getBoolean(KEY_SEARCH_MODE, false);
mQuery = savedState.getString(KEY_SEARCH_QUERY, "");
@@ -60,15 +71,20 @@
}
@Override
- public void setInitialState(Menu menu) {
- super.setInitialState(menu);
- final MenuItem search = menu.findItem(SEARCH_MENU_RES_ID);
- final SearchView searchView = (SearchView) MenuItemCompat.getActionView(search);
+ public void onCreateOptionsItem(Menu menu) {
+ final SearchView searchView = new SearchView(mContext);
searchView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
+ searchView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
searchView.setQuery(mQuery, false);
searchView.setOnCloseListener(mSearchModeChangeListener);
searchView.setOnSearchClickListener(mSearchModeChangeListener);
searchView.setOnQueryTextListener(mQueryListener);
+
+ menu.add(NONE, SEARCH_MENU_RES_ID, FIRST, android.R.string.search_go)
+ .setIcon(android.R.drawable.ic_menu_search)
+ .setActionView(searchView)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+
if (mSearchMode) {
searchView.requestFocus();
searchView.setIconified(false);
@@ -76,12 +92,11 @@
}
@Override
- public void showMenuItem(Menu menu) {
- menu.findItem(SEARCH_MENU_RES_ID).setVisible(true);
+ public void onPrepareOptionsItem(MenuItem item) {
}
@Override
- public boolean handleMenuItemClick(MenuItem item) {
+ public boolean onOptionsItemSelected(MenuItem item) {
// The search view is handled by {@link #mSearchListener}. Skip handling here.
return false;
}
diff --git a/src/com/android/deskclock/actionbarmenu/SettingMenuItemController.java b/src/com/android/deskclock/actionbarmenu/SettingsMenuItemController.java
similarity index 64%
rename from src/com/android/deskclock/actionbarmenu/SettingMenuItemController.java
rename to src/com/android/deskclock/actionbarmenu/SettingsMenuItemController.java
index a984451..ecf442e 100644
--- a/src/com/android/deskclock/actionbarmenu/SettingMenuItemController.java
+++ b/src/com/android/deskclock/actionbarmenu/SettingsMenuItemController.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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.
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.deskclock.actionbarmenu;
import android.app.Activity;
@@ -23,17 +24,20 @@
import com.android.deskclock.R;
import com.android.deskclock.settings.SettingsActivity;
+import static android.view.Menu.NONE;
+
/**
- * {@link MenuItemController} for setting menu.
+ * {@link MenuItemController} for settings menu.
*/
-public final class SettingMenuItemController extends AbstractMenuItemController {
+public final class SettingsMenuItemController implements MenuItemController {
public static final int REQUEST_CHANGE_SETTINGS = 1;
private static final int SETTING_MENU_RES_ID = R.id.menu_item_settings;
+
private final Activity mActivity;
- public SettingMenuItemController(Activity activity) {
+ public SettingsMenuItemController(Activity activity) {
mActivity = activity;
}
@@ -43,13 +47,18 @@
}
@Override
- public void showMenuItem(Menu menu) {
- menu.findItem(SETTING_MENU_RES_ID).setVisible(true);
+ public void onCreateOptionsItem(Menu menu) {
+ menu.add(NONE, SETTING_MENU_RES_ID, NONE, R.string.menu_item_settings)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
@Override
- public boolean handleMenuItemClick(MenuItem item) {
- Intent settingIntent = new Intent(mActivity, SettingsActivity.class);
+ public void onPrepareOptionsItem(MenuItem item) {
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ final Intent settingIntent = new Intent(mActivity, SettingsActivity.class);
mActivity.startActivityForResult(settingIntent, REQUEST_CHANGE_SETTINGS);
return true;
}
diff --git a/src/com/android/deskclock/alarms/AlarmActivity.java b/src/com/android/deskclock/alarms/AlarmActivity.java
index 80864c8..c9c9ba1 100644
--- a/src/com/android/deskclock/alarms/AlarmActivity.java
+++ b/src/com/android/deskclock/alarms/AlarmActivity.java
@@ -170,7 +170,7 @@
LOGGER.i("Displaying alarm for instance: %s", mAlarmInstance);
// Get the volume/camera button behavior setting
- mVolumeBehavior = PreferenceManager.getDefaultSharedPreferences(this)
+ mVolumeBehavior = Utils.getDefaultSharedPreferences(this)
.getString(SettingsActivity.KEY_VOLUME_BUTTONS,
SettingsActivity.DEFAULT_VOLUME_BEHAVIOR);
@@ -291,6 +291,7 @@
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_MUTE:
+ case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_CAMERA:
case KeyEvent.KEYCODE_FOCUS:
if (!mAlarmHandled && keyEvent.getAction() == KeyEvent.ACTION_UP) {
diff --git a/src/com/android/deskclock/alarms/AlarmStateManager.java b/src/com/android/deskclock/alarms/AlarmStateManager.java
index ce9046e..f1491b3 100644
--- a/src/com/android/deskclock/alarms/AlarmStateManager.java
+++ b/src/com/android/deskclock/alarms/AlarmStateManager.java
@@ -160,12 +160,12 @@
}
public static int getGlobalIntentId(Context context) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
return prefs.getInt(ALARM_GLOBAL_ID_EXTRA, -1);
}
public static void updateGlobalIntentId(Context context) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
int globalId = prefs.getInt(ALARM_GLOBAL_ID_EXTRA, -1) + 1;
prefs.edit().putInt(ALARM_GLOBAL_ID_EXTRA, globalId).commit();
}
@@ -491,7 +491,7 @@
AlarmService.stopAlarm(context, instance);
// Calculate the new snooze alarm time
- String snoozeMinutesStr = PreferenceManager.getDefaultSharedPreferences(context)
+ String snoozeMinutesStr = Utils.getDefaultSharedPreferences(context)
.getString(SettingsActivity.KEY_ALARM_SNOOZE, DEFAULT_SNOOZE_MINUTES);
final int snoozeMinutes = Integer.parseInt(snoozeMinutesStr);
Calendar newAlarmTime = Calendar.getInstance();
@@ -529,7 +529,7 @@
}
public static int getSnoozedMinutes(Context context) {
- final String snoozeMinutesStr = PreferenceManager.getDefaultSharedPreferences(context)
+ final String snoozeMinutesStr = Utils.getDefaultSharedPreferences(context)
.getString(SettingsActivity.KEY_ALARM_SNOOZE, DEFAULT_SNOOZE_MINUTES);
return Integer.parseInt(snoozeMinutesStr);
}
diff --git a/src/com/android/deskclock/data/CityDAO.java b/src/com/android/deskclock/data/CityDAO.java
index fc6f0dc..1399248 100644
--- a/src/com/android/deskclock/data/CityDAO.java
+++ b/src/com/android/deskclock/data/CityDAO.java
@@ -20,12 +20,12 @@
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import android.preference.PreferenceManager;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.ArrayMap;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
import java.util.ArrayList;
import java.util.Collection;
@@ -43,26 +43,23 @@
*/
final class CityDAO {
- // Regex to match numeric index values when parsing city names.
+ /** Regex to match numeric index values when parsing city names. */
private static final Pattern NUMERIC_INDEX_REGEX = Pattern.compile("\\d+");
- // Key to a preference that stores the number of selected cities.
+ /** Key to a preference that stores the number of selected cities. */
private static final String NUMBER_OF_CITIES = "number_of_cities";
- // Prefix for a key to a preference that stores the id of a selected city.
+ /** Prefix for a key to a preference that stores the id of a selected city. */
private static final String CITY_ID = "city_id_";
- // Lazily instantiated and cached for the life of the application.
- private static SharedPreferences sPrefs;
-
private CityDAO() {}
/**
* @param cityMap maps city ids to city instances
* @return the list of city ids selected for display by the user
*/
- public static List<City> getSelectedCities(Context context, Map<String, City> cityMap) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static List<City> getSelectedCities(Context context, Map<String, City> cityMap) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final int size = prefs.getInt(NUMBER_OF_CITIES, 0);
final List<City> selectedCities = new ArrayList<>(size);
@@ -80,8 +77,8 @@
/**
* @param cities the collection of cities selected for display by the user
*/
- public static void setSelectedCities(Context context, Collection<City> cities) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static void setSelectedCities(Context context, Collection<City> cities) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
editor.putInt(NUMBER_OF_CITIES, cities.size());
@@ -97,7 +94,7 @@
/**
* @return the domain of cities from which the user may choose a world clock
*/
- public static Map<String, City> getCities(Context context) {
+ static Map<String, City> getCities(Context context) {
final Resources resources = context.getResources();
final TypedArray cityStrings = resources.obtainTypedArray(R.array.city_ids);
final int citiesCount = cityStrings.length();
@@ -169,12 +166,4 @@
return new City(id, index, indexString, name, phoneticName, tz);
}
-
- private static SharedPreferences getSharedPreferences(Context context) {
- if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- }
-
- return sPrefs;
- }
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/CityModel.java b/src/com/android/deskclock/data/CityModel.java
index 2f344ad..b34c447 100644
--- a/src/com/android/deskclock/data/CityModel.java
+++ b/src/com/android/deskclock/data/CityModel.java
@@ -22,7 +22,6 @@
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.preference.PreferenceManager;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
@@ -83,7 +82,7 @@
mContext.registerReceiver(mLocaleChangedReceiver, localeBroadcastFilter);
// Clear caches affected by preferences when preferences change.
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(mContext);
prefs.registerOnSharedPreferenceChangeListener(mPreferenceListener);
}
diff --git a/src/com/android/deskclock/data/SettingsDAO.java b/src/com/android/deskclock/data/SettingsDAO.java
index 799b4da..b609293 100644
--- a/src/com/android/deskclock/data/SettingsDAO.java
+++ b/src/com/android/deskclock/data/SettingsDAO.java
@@ -19,9 +19,9 @@
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
-import android.preference.PreferenceManager;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
import com.android.deskclock.data.DataModel.CitySort;
import com.android.deskclock.data.DataModel.ClockStyle;
import com.android.deskclock.settings.ScreensaverSettingsActivity;
@@ -35,11 +35,11 @@
*/
final class SettingsDAO {
+ /** Key to a preference that stores the preferred sort order of world cities. */
private static final String KEY_SORT_PREFERENCE = "sort_preference";
- private static final String KEY_DEFAULT_ALARM_RINGTONE_URI = "default_alarm_ringtone_uri";
- // Lazily instantiated and cached for the life of the application.
- private static SharedPreferences sPrefs;
+ /** Key to a preference that stores the default ringtone for new alarms. */
+ private static final String KEY_DEFAULT_ALARM_RINGTONE_URI = "default_alarm_ringtone_uri";
private SettingsDAO() {}
@@ -48,7 +48,7 @@
*/
static CitySort getCitySort(Context context) {
final int defaultSortOrdinal = CitySort.NAME.ordinal();
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final int citySortOrdinal = prefs.getInt(KEY_SORT_PREFERENCE, defaultSortOrdinal);
return CitySort.values()[citySortOrdinal];
}
@@ -59,7 +59,7 @@
static void toggleCitySort(Context context) {
final CitySort oldSort = getCitySort(context);
final CitySort newSort = oldSort == CitySort.NAME ? CitySort.UTC_OFFSET : CitySort.NAME;
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
prefs.edit().putInt(KEY_SORT_PREFERENCE, newSort.ordinal()).apply();
}
@@ -68,7 +68,7 @@
* displayed when it doesn't match the current timezone
*/
static boolean getAutoShowHomeClock(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
return prefs.getBoolean(SettingsActivity.KEY_AUTO_HOME_CLOCK, false);
}
@@ -76,7 +76,7 @@
* @return the user's home timezone
*/
static TimeZone getHomeTimeZone(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final String defaultTimeZoneId = TimeZone.getDefault().getID();
final String timeZoneId = prefs.getString(SettingsActivity.KEY_HOME_TZ, defaultTimeZoneId);
return TimeZone.getTimeZone(timeZoneId);
@@ -88,7 +88,7 @@
* @param homeTimeZone the timezone to set as the user's home timezone if necessary
*/
static void setDefaultHomeTimeZone(Context context, TimeZone homeTimeZone) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final String homeTimeZoneId = prefs.getString(SettingsActivity.KEY_HOME_TZ, null);
if (homeTimeZoneId == null) {
prefs.edit().putString(SettingsActivity.KEY_HOME_TZ, homeTimeZone.getID()).apply();
@@ -113,7 +113,7 @@
* @return {@code true} if the screen saver should be dimmed for lower contrast at night
*/
static boolean getScreensaverNightModeOn(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
return prefs.getBoolean(ScreensaverSettingsActivity.KEY_NIGHT_MODE, false);
}
@@ -122,7 +122,7 @@
* has yet been made
*/
static Uri getTimerRingtoneUri(Context context, Uri defaultUri) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final String uriString = prefs.getString(SettingsActivity.KEY_TIMER_RINGTONE, null);
return uriString == null ? defaultUri : Uri.parse(uriString);
}
@@ -131,7 +131,7 @@
* @return whether timer vibration is enabled. false by default.
*/
static boolean getTimerVibrate(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
return prefs.getBoolean(SettingsActivity.KEY_TIMER_VIBRATE, false);
}
@@ -139,7 +139,7 @@
* @param enabled whether vibration will be turned on for all timers.
*/
static void setTimerVibrate(Context context, boolean enabled) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
prefs.edit().putBoolean(SettingsActivity.KEY_TIMER_VIBRATE, enabled).apply();
}
@@ -147,7 +147,7 @@
* @param uri the uri of the ringtone to play for all timers
*/
static void setTimerRingtoneUri(Context context, Uri uri) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
prefs.edit().putString(SettingsActivity.KEY_TIMER_RINGTONE, uri.toString()).apply();
}
@@ -156,7 +156,7 @@
* has yet been made
*/
static Uri getDefaultAlarmRingtoneUri(Context context, Uri defaultUri) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final String uriString = prefs.getString(KEY_DEFAULT_ALARM_RINGTONE_URI, null);
return uriString == null ? defaultUri : Uri.parse(uriString);
}
@@ -164,24 +164,16 @@
* @param uri identifies the default ringtone to play for new alarms
*/
static void setDefaultAlarmRingtoneUri(Context context, Uri uri) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
prefs.edit().putString(KEY_DEFAULT_ALARM_RINGTONE_URI, uri.toString()).apply();
}
private static ClockStyle getClockStyle(Context context, String prefKey) {
final String defaultStyle = context.getString(R.string.default_clock_style);
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final String clockStyle = prefs.getString(prefKey, defaultStyle);
// Use hardcoded locale to perform toUpperCase, because in some languages toUpperCase adds
// accent to character, which breaks the enum conversion.
return ClockStyle.valueOf(clockStyle.toUpperCase(Locale.US));
}
-
- private static SharedPreferences getSharedPreferences(Context context) {
- if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- }
-
- return sPrefs;
- }
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/SettingsModel.java b/src/com/android/deskclock/data/SettingsModel.java
index 86131a2..caeef93 100644
--- a/src/com/android/deskclock/data/SettingsModel.java
+++ b/src/com/android/deskclock/data/SettingsModel.java
@@ -21,6 +21,7 @@
import android.provider.Settings;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
import com.android.deskclock.data.DataModel.CitySort;
import com.android.deskclock.data.DataModel.ClockStyle;
@@ -81,10 +82,7 @@
Uri getDefaultTimerRingtoneUri() {
if (mDefaultTimerRingtoneUri == null) {
- final String packageName = mContext.getPackageName();
- final int resId = R.raw.timer_expire;
- final String uriString = String.format("android.resource://%s/%d", packageName, resId);
- mDefaultTimerRingtoneUri = Uri.parse(uriString);
+ mDefaultTimerRingtoneUri = Utils.getResourceUri(mContext, R.raw.timer_expire);
}
return mDefaultTimerRingtoneUri;
diff --git a/src/com/android/deskclock/data/Stopwatch.java b/src/com/android/deskclock/data/Stopwatch.java
index bc27991..bfb7fba 100644
--- a/src/com/android/deskclock/data/Stopwatch.java
+++ b/src/com/android/deskclock/data/Stopwatch.java
@@ -16,8 +16,11 @@
package com.android.deskclock.data;
+import android.net.Uri;
import android.os.SystemClock;
+import com.android.deskclock.provider.ClockContract;
+
import static com.android.deskclock.data.Stopwatch.State.PAUSED;
import static com.android.deskclock.data.Stopwatch.State.RESET;
import static com.android.deskclock.data.Stopwatch.State.RUNNING;
@@ -29,6 +32,12 @@
public enum State { RESET, RUNNING, PAUSED }
+ /**
+ * The content:// style URI for the stopwatch.
+ */
+ public static final Uri CONTENT_URI =
+ Uri.parse("content://" + ClockContract.AUTHORITY + "/stopwatch");
+
/** The single, immutable instance of a reset stopwatch. */
private static final Stopwatch RESET_STOPWATCH = new Stopwatch(RESET, Long.MIN_VALUE, 0);
@@ -47,6 +56,10 @@
mAccumulatedTime = accumulatedTime;
}
+ public Uri getContentUri() {
+ return CONTENT_URI;
+ }
+
public State getState() { return mState; }
public long getLastStartTime() { return mLastStartTime; }
public boolean isReset() { return mState == RESET; }
@@ -71,7 +84,7 @@
/**
* @return the amount of time accumulated up to the last time the stopwatch was started
*/
- long getAccumulatedTime() {
+ public long getAccumulatedTime() {
return mAccumulatedTime;
}
diff --git a/src/com/android/deskclock/data/StopwatchDAO.java b/src/com/android/deskclock/data/StopwatchDAO.java
index a95cbe4..a230481 100644
--- a/src/com/android/deskclock/data/StopwatchDAO.java
+++ b/src/com/android/deskclock/data/StopwatchDAO.java
@@ -18,8 +18,8 @@
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
+import com.android.deskclock.Utils;
import com.android.deskclock.data.Stopwatch.State;
import java.util.ArrayList;
@@ -34,31 +34,28 @@
*/
final class StopwatchDAO {
- // Key to a preference that stores the state of the stopwatch.
+ /** Key to a preference that stores the state of the stopwatch. */
private static final String STATE = "sw_state";
- // Key to a preference that stores the last start time of the stopwatch.
+ /** Key to a preference that stores the last start time of the stopwatch. */
private static final String LAST_START_TIME = "sw_start_time";
- // Key to a preference that stores the accumulated elapsed time of the stopwatch.
+ /** Key to a preference that stores the accumulated elapsed time of the stopwatch. */
private static final String ACCUMULATED_TIME = "sw_accum_time";
- // Key to a preference that stores the number of recorded laps.
+ /** Prefix for a key to a preference that stores the number of recorded laps. */
private static final String LAP_COUNT = "sw_lap_num";
- // Prefix for a key to a preference that stores accumulated time at the end of a particular lap.
+ /** Prefix for a key to a preference that stores accumulated time at the end of a lap. */
private static final String LAP_ACCUMULATED_TIME = "sw_lap_time_";
- // Lazily instantiated and cached for the life of the application.
- private static SharedPreferences sPrefs;
-
private StopwatchDAO() {}
/**
* @return the stopwatch from permanent storage or a reset stopwatch if none exists
*/
- public static Stopwatch getStopwatch(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static Stopwatch getStopwatch(Context context) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final int stateIndex = prefs.getInt(STATE, RESET.ordinal());
final State state = State.values()[stateIndex];
final long lastStartTime = prefs.getLong(LAST_START_TIME, Long.MIN_VALUE);
@@ -69,8 +66,8 @@
/**
* @param stopwatch the last state of the stopwatch
*/
- public static void setStopwatch(Context context, Stopwatch stopwatch) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static void setStopwatch(Context context, Stopwatch stopwatch) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
if (stopwatch.isReset()) {
@@ -89,8 +86,8 @@
/**
* @return a list of recorded laps for the stopwatch
*/
- public static List<Lap> getLaps(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static List<Lap> getLaps(Context context) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
// Prepare the container to be filled with laps.
final int lapCount = prefs.getInt(LAP_COUNT, 0);
@@ -124,8 +121,9 @@
* @param newLapCount the number of laps including the new lap
* @param accumulatedTime the amount of time accumulate by the stopwatch at the end of the lap
*/
- public static void addLap(Context context, int newLapCount, long accumulatedTime) {
- getSharedPreferences(context).edit()
+ static void addLap(Context context, int newLapCount, long accumulatedTime) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
+ prefs.edit()
.putInt(LAP_COUNT, newLapCount)
.putLong(LAP_ACCUMULATED_TIME + newLapCount, accumulatedTime)
.apply();
@@ -134,8 +132,8 @@
/**
* Remove the recorded laps for the stopwatch
*/
- public static void clearLaps(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static void clearLaps(Context context) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
final int lapCount = prefs.getInt(LAP_COUNT, 0);
@@ -146,12 +144,4 @@
editor.apply();
}
-
- private static SharedPreferences getSharedPreferences(Context context) {
- if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- }
-
- return sPrefs;
- }
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/StopwatchModel.java b/src/com/android/deskclock/data/StopwatchModel.java
index f12a4fd..ecbd864 100644
--- a/src/com/android/deskclock/data/StopwatchModel.java
+++ b/src/com/android/deskclock/data/StopwatchModel.java
@@ -17,33 +17,19 @@
package com.android.deskclock.data;
import android.app.Notification;
-import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.res.Resources;
-import android.os.SystemClock;
-import android.support.annotation.IdRes;
-import android.support.annotation.StringRes;
import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
-import android.widget.RemoteViews;
-import com.android.deskclock.HandleDeskClockApiCalls;
-import com.android.deskclock.R;
-import com.android.deskclock.stopwatch.StopwatchService;
+import com.android.deskclock.Utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
-import static android.view.View.GONE;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
-
/**
* All {@link Stopwatch} data is accessed via this model.
*/
@@ -63,6 +49,9 @@
/** The listeners to notify when the stopwatch or its laps change. */
private final List<StopwatchListener> mStopwatchListeners = new ArrayList<>();
+ /** Delegate that builds platform-specific stopwatch notifications. */
+ private NotificationBuilder mNotificationBuilder;
+
/** The current state of the stopwatch. */
private Stopwatch mStopwatch;
@@ -236,126 +225,11 @@
return;
}
- @StringRes final int eventLabel = R.string.label_notification;
-
- // Intent to load the app when the notification is tapped.
- final Intent showApp = new Intent(mContext, HandleDeskClockApiCalls.class)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setAction(HandleDeskClockApiCalls.ACTION_SHOW_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
-
- final PendingIntent pendingShowApp = PendingIntent.getActivity(mContext, 0, showApp,
- PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
-
- // Compute some values required below.
- final boolean running = stopwatch.isRunning();
- final String pname = mContext.getPackageName();
- final Resources res = mContext.getResources();
- final long base = SystemClock.elapsedRealtime() - stopwatch.getTotalTime();
-
- final RemoteViews collapsed = new RemoteViews(pname, R.layout.stopwatch_notif_collapsed);
- collapsed.setChronometer(R.id.swn_collapsed_chronometer, base, null, running);
- collapsed.setOnClickPendingIntent(R.id.swn_collapsed_hitspace, pendingShowApp);
- collapsed.setImageViewResource(R.id.notification_icon, R.drawable.stat_notify_stopwatch);
-
- final RemoteViews expanded = new RemoteViews(pname, R.layout.stopwatch_notif_expanded);
- expanded.setChronometer(R.id.swn_expanded_chronometer, base, null, running);
- expanded.setOnClickPendingIntent(R.id.swn_expanded_hitspace, pendingShowApp);
- expanded.setImageViewResource(R.id.notification_icon, R.drawable.stat_notify_stopwatch);
-
- @IdRes final int leftButtonId = R.id.swn_left_button;
- @IdRes final int rightButtonId = R.id.swn_right_button;
- if (running) {
- // Left button: Pause
- expanded.setTextViewText(leftButtonId, res.getText(R.string.sw_pause_button));
- setTextViewDrawable(expanded, leftButtonId, R.drawable.ic_pause_24dp);
- final Intent pause = new Intent(mContext, StopwatchService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
- expanded.setOnClickPendingIntent(leftButtonId, pendingServiceIntent(pause));
-
- // Right button: Add Lap
- if (canAddMoreLaps()) {
- expanded.setTextViewText(rightButtonId, res.getText(R.string.sw_lap_button));
- setTextViewDrawable(expanded, rightButtonId, R.drawable.ic_sw_lap_24dp);
-
- final Intent lap = new Intent(mContext, StopwatchService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_LAP_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
- expanded.setOnClickPendingIntent(rightButtonId, pendingServiceIntent(lap));
- expanded.setViewVisibility(rightButtonId, VISIBLE);
- } else {
- expanded.setViewVisibility(rightButtonId, INVISIBLE);
- }
-
- // Show the current lap number if any laps have been recorded.
- final int lapCount = getLaps().size();
- if (lapCount > 0) {
- final int lapNumber = lapCount + 1;
- final String lap = res.getString(R.string.sw_notification_lap_number, lapNumber);
- collapsed.setTextViewText(R.id.swn_collapsed_laps, lap);
- collapsed.setViewVisibility(R.id.swn_collapsed_laps, VISIBLE);
- expanded.setTextViewText(R.id.swn_expanded_laps, lap);
- expanded.setViewVisibility(R.id.swn_expanded_laps, VISIBLE);
- } else {
- collapsed.setViewVisibility(R.id.swn_collapsed_laps, GONE);
- expanded.setViewVisibility(R.id.swn_expanded_laps, GONE);
- }
- } else {
- // Left button: Start
- expanded.setTextViewText(leftButtonId, res.getText(R.string.sw_start_button));
- setTextViewDrawable(expanded, leftButtonId, R.drawable.ic_start_24dp);
- final Intent start = new Intent(mContext, StopwatchService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_START_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
- expanded.setOnClickPendingIntent(leftButtonId, pendingServiceIntent(start));
-
- // Right button: Reset (HandleDeskClockApiCalls will also bring forward the app)
- expanded.setViewVisibility(rightButtonId, VISIBLE);
- expanded.setTextViewText(rightButtonId, res.getText(R.string.sw_reset_button));
- setTextViewDrawable(expanded, rightButtonId, R.drawable.ic_reset_24dp);
- final Intent reset = new Intent(mContext, HandleDeskClockApiCalls.class)
- .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
- expanded.setOnClickPendingIntent(rightButtonId, pendingActivityIntent(reset));
-
- // Indicate the stopwatch is paused.
- collapsed.setTextViewText(R.id.swn_collapsed_laps, res.getString(R.string.swn_paused));
- collapsed.setViewVisibility(R.id.swn_collapsed_laps, VISIBLE);
- expanded.setTextViewText(R.id.swn_expanded_laps, res.getString(R.string.swn_paused));
- expanded.setViewVisibility(R.id.swn_expanded_laps, VISIBLE);
- }
-
- // Swipe away will reset the stopwatch without bringing forward the app.
- final Intent reset = new Intent(mContext, StopwatchService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
-
- final Notification notification = new NotificationCompat.Builder(mContext)
- .setLocalOnly(true)
- .setOngoing(running)
- .setContent(collapsed)
- .setAutoCancel(stopwatch.isPaused())
- .setPriority(Notification.PRIORITY_MAX)
- .setDeleteIntent(pendingServiceIntent(reset))
- .setSmallIcon(R.drawable.ic_tab_stopwatch_activated)
- .build();
- notification.bigContentView = expanded;
+ // Otherwise build and post a notification reflecting the latest stopwatch state.
+ final Notification notification = getNotificationBuilder().build(mContext, stopwatch);
mNotificationManager.notify(mNotificationModel.getStopwatchNotificationId(), notification);
}
- private PendingIntent pendingServiceIntent(Intent intent) {
- return PendingIntent.getService(mContext, 0, intent, FLAG_UPDATE_CURRENT);
- }
-
- private PendingIntent pendingActivityIntent(Intent intent) {
- return PendingIntent.getActivity(mContext, 0, intent, FLAG_UPDATE_CURRENT);
- }
-
- private static void setTextViewDrawable(RemoteViews rv, int viewId, int drawableId) {
- rv.setTextViewCompoundDrawablesRelative(viewId, drawableId, 0, 0, 0);
- }
-
private List<Lap> getMutableLaps() {
if (mLaps == null) {
mLaps = StopwatchDAO.getLaps(mContext);
@@ -364,6 +238,18 @@
return mLaps;
}
+ private NotificationBuilder getNotificationBuilder() {
+ if (mNotificationBuilder == null) {
+ if (Utils.isNOrLater()) {
+ mNotificationBuilder = new StopwatchNotificationBuilderN();
+ } else {
+ mNotificationBuilder = new StopwatchNotificationBuilderPreN();
+ }
+ }
+
+ return mNotificationBuilder;
+ }
+
/**
* Update the stopwatch notification in response to a locale change.
*/
@@ -373,4 +259,16 @@
updateNotification();
}
}
+
+ /**
+ * An API for building platform-specific stopwatch notifications.
+ */
+ public interface NotificationBuilder {
+ /**
+ * @param context a context to use for fetching resources
+ * @param stopwatch the stopwatch guaranteed to be running or paused
+ * @return a notification reporting the state of the {@code stopwatch}
+ */
+ Notification build(Context context, Stopwatch stopwatch);
+ }
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/StopwatchNotificationBuilderN.java b/src/com/android/deskclock/data/StopwatchNotificationBuilderN.java
new file mode 100644
index 0000000..2d1c9c1
--- /dev/null
+++ b/src/com/android/deskclock/data/StopwatchNotificationBuilderN.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock.data;
+
+import android.annotation.TargetApi;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.drawable.Icon;
+import android.os.Build;
+import android.os.SystemClock;
+import android.support.annotation.StringRes;
+import android.widget.RemoteViews;
+
+import com.android.deskclock.HandleDeskClockApiCalls;
+import com.android.deskclock.R;
+import com.android.deskclock.Utils;
+import com.android.deskclock.stopwatch.StopwatchService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+/**
+ * Builds N-style notification to reflect the latest state of the stopwatch and recorded laps.
+ */
+@TargetApi(Build.VERSION_CODES.N)
+class StopwatchNotificationBuilderN implements StopwatchModel.NotificationBuilder {
+
+ @Override
+ public Notification build(Context context, Stopwatch stopwatch) {
+ @StringRes final int eventLabel = R.string.label_notification;
+
+ // Intent to load the app when the notification is tapped.
+ final Intent showApp = new Intent(context, HandleDeskClockApiCalls.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .setAction(HandleDeskClockApiCalls.ACTION_SHOW_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final PendingIntent pendingShowApp = PendingIntent.getActivity(context, 0, showApp,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
+
+ // Compute some values required below.
+ final boolean running = stopwatch.isRunning();
+ final String pname = context.getPackageName();
+ final Resources res = context.getResources();
+ final long base = SystemClock.elapsedRealtime() - stopwatch.getTotalTime();
+
+ final RemoteViews content = new RemoteViews(pname, R.layout.chronometer_notif_content);
+ content.setChronometer(R.id.chronometer, base, null, running);
+
+ final List<Notification.Action> actions = new ArrayList<>(2);
+
+ if (running) {
+ // Left button: Pause
+ final Intent pause = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final Icon icon1 = Icon.createWithResource(context, R.drawable.ic_pause_24dp);
+ final CharSequence title1 = res.getText(R.string.sw_pause_button);
+ final PendingIntent intent1 = Utils.pendingServiceIntent(context, pause);
+ actions.add(new Notification.Action.Builder(icon1, title1, intent1).build());
+
+ // Right button: Add Lap
+ if (DataModel.getDataModel().canAddMoreLaps()) {
+ final Intent lap = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_LAP_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final Icon icon2 = Icon.createWithResource(context, R.drawable.ic_sw_lap_24dp);
+ final CharSequence title2 = res.getText(R.string.sw_lap_button);
+ final PendingIntent intent2 = Utils.pendingServiceIntent(context, lap);
+ actions.add(new Notification.Action.Builder(icon2, title2, intent2).build());
+ }
+
+ // Show the current lap number if any laps have been recorded.
+ final int lapCount = DataModel.getDataModel().getLaps().size();
+ if (lapCount > 0) {
+ final int lapNumber = lapCount + 1;
+ final String lap = res.getString(R.string.sw_notification_lap_number, lapNumber);
+ content.setTextViewText(R.id.state, lap);
+ content.setViewVisibility(R.id.state, VISIBLE);
+ } else {
+ content.setViewVisibility(R.id.state, GONE);
+ }
+ } else {
+ // Left button: Start
+ final Intent start = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_START_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final Icon icon1 = Icon.createWithResource(context, R.drawable.ic_start_24dp);
+ final CharSequence title1 = res.getText(R.string.sw_start_button);
+ final PendingIntent intent1 = Utils.pendingServiceIntent(context, start);
+ actions.add(new Notification.Action.Builder(icon1, title1, intent1).build());
+
+ // Right button: Reset (dismisses notification and resets stopwatch)
+ final Intent reset = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final Icon icon2 = Icon.createWithResource(context, R.drawable.ic_reset_24dp);
+ final CharSequence title2 = res.getText(R.string.sw_reset_button);
+ final PendingIntent intent2 = Utils.pendingServiceIntent(context, reset);
+ actions.add(new Notification.Action.Builder(icon2, title2, intent2).build());
+
+ // Indicate the stopwatch is paused.
+ content.setTextViewText(R.id.state, res.getString(R.string.swn_paused));
+ content.setViewVisibility(R.id.state, VISIBLE);
+ }
+
+ // Swipe away will reset the stopwatch without bringing forward the app.
+ final Intent reset = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ return new Notification.Builder(context)
+ .setLocalOnly(true)
+ .setOngoing(running)
+ .setCustomContentView(content)
+ .setContentIntent(pendingShowApp)
+ .setAutoCancel(stopwatch.isPaused())
+ .setPriority(Notification.PRIORITY_MAX)
+ .setSmallIcon(R.drawable.ic_tab_stopwatch_activated)
+ .setStyle(new Notification.DecoratedCustomViewStyle())
+ .setDeleteIntent(Utils.pendingServiceIntent(context, reset))
+ .setActions(actions.toArray(new Notification.Action[actions.size()]))
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/StopwatchNotificationBuilderPreN.java b/src/com/android/deskclock/data/StopwatchNotificationBuilderPreN.java
new file mode 100644
index 0000000..d1a81e3
--- /dev/null
+++ b/src/com/android/deskclock/data/StopwatchNotificationBuilderPreN.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock.data;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.SystemClock;
+import android.support.annotation.IdRes;
+import android.support.annotation.StringRes;
+import android.support.v4.app.NotificationCompat;
+import android.widget.RemoteViews;
+
+import com.android.deskclock.HandleDeskClockApiCalls;
+import com.android.deskclock.R;
+import com.android.deskclock.Utils;
+import com.android.deskclock.stopwatch.StopwatchService;
+
+import static android.view.View.GONE;
+import static android.view.View.INVISIBLE;
+import static android.view.View.VISIBLE;
+
+/**
+ * Builds KK, L, or M-style notifications to reflect the latest state of the stopwatch and
+ * recorded laps.
+ */
+class StopwatchNotificationBuilderPreN implements StopwatchModel.NotificationBuilder {
+
+ @Override
+ public Notification build(Context context, Stopwatch stopwatch) {
+ @StringRes final int eventLabel = R.string.label_notification;
+
+ // Intent to load the app when the notification is tapped.
+ final Intent showApp = new Intent(context, HandleDeskClockApiCalls.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .setAction(HandleDeskClockApiCalls.ACTION_SHOW_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final PendingIntent pendingShowApp = PendingIntent.getActivity(context, 0, showApp,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
+
+ // Compute some values required below.
+ final boolean running = stopwatch.isRunning();
+ final String pname = context.getPackageName();
+ final Resources res = context.getResources();
+ final long base = SystemClock.elapsedRealtime() - stopwatch.getTotalTime();
+
+ final RemoteViews collapsed = new RemoteViews(pname, R.layout.stopwatch_notif_collapsed);
+ collapsed.setChronometer(R.id.swn_collapsed_chronometer, base, null, running);
+ collapsed.setOnClickPendingIntent(R.id.swn_collapsed_hitspace, pendingShowApp);
+ collapsed.setImageViewResource(R.id.notification_icon, R.drawable.stat_notify_stopwatch);
+
+ final RemoteViews expanded = new RemoteViews(pname, R.layout.stopwatch_notif_expanded);
+ expanded.setChronometer(R.id.swn_expanded_chronometer, base, null, running);
+ expanded.setOnClickPendingIntent(R.id.swn_expanded_hitspace, pendingShowApp);
+ expanded.setImageViewResource(R.id.notification_icon, R.drawable.stat_notify_stopwatch);
+
+ @IdRes final int leftButtonId = R.id.swn_left_button;
+ @IdRes final int rightButtonId = R.id.swn_right_button;
+ if (running) {
+ // Left button: Pause
+ expanded.setTextViewText(leftButtonId, res.getText(R.string.sw_pause_button));
+ setTextViewDrawable(expanded, leftButtonId, R.drawable.ic_pause_24dp);
+ final Intent pause = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+ final PendingIntent pendingPause = Utils.pendingServiceIntent(context, pause);
+ expanded.setOnClickPendingIntent(leftButtonId, pendingPause);
+
+ // Right button: Add Lap
+ if (DataModel.getDataModel().canAddMoreLaps()) {
+ expanded.setTextViewText(rightButtonId, res.getText(R.string.sw_lap_button));
+ setTextViewDrawable(expanded, rightButtonId, R.drawable.ic_sw_lap_24dp);
+
+ final Intent lap = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_LAP_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+ final PendingIntent pendingLap = Utils.pendingServiceIntent(context, lap);
+ expanded.setOnClickPendingIntent(rightButtonId, pendingLap);
+ expanded.setViewVisibility(rightButtonId, VISIBLE);
+ } else {
+ expanded.setViewVisibility(rightButtonId, INVISIBLE);
+ }
+
+ // Show the current lap number if any laps have been recorded.
+ final int lapCount = DataModel.getDataModel().getLaps().size();
+ if (lapCount > 0) {
+ final int lapNumber = lapCount + 1;
+ final String lap = res.getString(R.string.sw_notification_lap_number, lapNumber);
+ collapsed.setTextViewText(R.id.swn_collapsed_laps, lap);
+ collapsed.setViewVisibility(R.id.swn_collapsed_laps, VISIBLE);
+ expanded.setTextViewText(R.id.swn_expanded_laps, lap);
+ expanded.setViewVisibility(R.id.swn_expanded_laps, VISIBLE);
+ } else {
+ collapsed.setViewVisibility(R.id.swn_collapsed_laps, GONE);
+ expanded.setViewVisibility(R.id.swn_expanded_laps, GONE);
+ }
+ } else {
+ // Left button: Start
+ expanded.setTextViewText(leftButtonId, res.getText(R.string.sw_start_button));
+ setTextViewDrawable(expanded, leftButtonId, R.drawable.ic_start_24dp);
+ final Intent start = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_START_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+ final PendingIntent pendingStart = Utils.pendingServiceIntent(context, start);
+ expanded.setOnClickPendingIntent(leftButtonId, pendingStart);
+
+ // Right button: Reset (dismisses notification and resets stopwatch)
+ expanded.setViewVisibility(rightButtonId, VISIBLE);
+ expanded.setTextViewText(rightButtonId, res.getText(R.string.sw_reset_button));
+ setTextViewDrawable(expanded, rightButtonId, R.drawable.ic_reset_24dp);
+ final Intent reset = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+ final PendingIntent pendingReset = Utils.pendingServiceIntent(context, reset);
+ expanded.setOnClickPendingIntent(rightButtonId, pendingReset);
+
+ // Indicate the stopwatch is paused.
+ collapsed.setTextViewText(R.id.swn_collapsed_laps, res.getString(R.string.swn_paused));
+ collapsed.setViewVisibility(R.id.swn_collapsed_laps, VISIBLE);
+ expanded.setTextViewText(R.id.swn_expanded_laps, res.getString(R.string.swn_paused));
+ expanded.setViewVisibility(R.id.swn_expanded_laps, VISIBLE);
+ }
+
+ // Swipe away will reset the stopwatch without bringing forward the app.
+ final Intent reset = new Intent(context, StopwatchService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_STOPWATCH)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, eventLabel);
+
+ final Notification notification = new NotificationCompat.Builder(context)
+ .setLocalOnly(true)
+ .setOngoing(running)
+ .setContent(collapsed)
+ .setAutoCancel(stopwatch.isPaused())
+ .setPriority(NotificationCompat.PRIORITY_MAX)
+ .setDeleteIntent(Utils.pendingServiceIntent(context, reset))
+ .setSmallIcon(R.drawable.ic_tab_stopwatch_activated)
+ .build();
+ notification.bigContentView = expanded;
+ return notification;
+ }
+
+ private static void setTextViewDrawable(RemoteViews rv, int viewId, int drawableId) {
+ rv.setTextViewCompoundDrawablesRelative(viewId, drawableId, 0, 0, 0);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/Timer.java b/src/com/android/deskclock/data/Timer.java
index 4ef6951..27c944d 100644
--- a/src/com/android/deskclock/data/Timer.java
+++ b/src/com/android/deskclock/data/Timer.java
@@ -16,9 +16,13 @@
package com.android.deskclock.data;
+import android.content.ContentUris;
+import android.net.Uri;
import android.os.SystemClock;
import android.text.TextUtils;
+import com.android.deskclock.provider.ClockContract;
+
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
@@ -67,6 +71,12 @@
}
}
+ /**
+ * The content:// style URI for timers.
+ */
+ public static final Uri CONTENT_URI =
+ Uri.parse("content://" + ClockContract.AUTHORITY + "/timers");
+
/** The minimum duration of a timer. */
public static final long MIN_LENGTH = SECOND_IN_MILLIS;
@@ -122,6 +132,20 @@
public boolean isExpired() { return mState == EXPIRED; }
/**
+ * @return the {@link Uri} identifying the timer instance.
+ */
+ public Uri getContentUri() {
+ return ContentUris.withAppendedId(CONTENT_URI, mId);
+ }
+
+ /**
+ * @return the amount of remaining time when the timer was last started or paused.
+ */
+ public long getLastRemainingTime() {
+ return mRemainingTime;
+ }
+
+ /**
* @return the total amount of time remaining up to this moment; expired timers will return a
* negative amount
*/
diff --git a/src/com/android/deskclock/data/TimerDAO.java b/src/com/android/deskclock/data/TimerDAO.java
index cf2d37d..2ea6fd8 100644
--- a/src/com/android/deskclock/data/TimerDAO.java
+++ b/src/com/android/deskclock/data/TimerDAO.java
@@ -18,8 +18,8 @@
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
+import com.android.deskclock.Utils;
import com.android.deskclock.data.Timer.State;
import java.util.ArrayList;
@@ -36,43 +36,40 @@
*/
final class TimerDAO {
- // Key to a preference that stores the set of timer ids.
+ /** Key to a preference that stores the set of timer ids. */
private static final String TIMER_IDS = "timers_list";
- // Key to a preference that stores the id to assign to the next timer.
+ /** Key to a preference that stores the id to assign to the next timer. */
private static final String NEXT_TIMER_ID = "next_timer_id";
- // Prefix for a key to a preference that stores the state of the timer.
+ /** Prefix for a key to a preference that stores the state of the timer. */
private static final String STATE = "timer_state_";
- // Prefix for a key to a preference that stores the length of the timer when it was created.
+ /** Prefix for a key to a preference that stores the original timer length at creation. */
private static final String LENGTH = "timer_setup_timet_";
- // Prefix for a key to a preference that stores the total length of the timer with additions.
+ /** Prefix for a key to a preference that stores the total timer length with additions. */
private static final String TOTAL_LENGTH = "timer_original_timet_";
- // Prefix for a key to a preference that stores the last start time of the timer.
+ /** Prefix for a key to a preference that stores the last start time of the timer. */
private static final String LAST_START_TIME = "timer_start_time_";
- // Prefix for a key to a preference that stores the remaining time before expiry.
+ /** Prefix for a key to a preference that stores the remaining time before expiry. */
private static final String REMAINING_TIME = "timer_time_left_";
- // Prefix for a key to a preference that stores the label of the timer.
+ /** Prefix for a key to a preference that stores the label of the timer. */
private static final String LABEL = "timer_label_";
- // Prefix for a key to a preference that signals the timer should be deleted on first reset.
+ /** Prefix for a key to a preference that signals the timer should be deleted on first reset. */
private static final String DELETE_AFTER_USE = "delete_after_use_";
- // Lazily instantiated and cached for the life of the application.
- private static SharedPreferences sPrefs;
-
private TimerDAO() {}
/**
* @return the timers from permanent storage
*/
- public static List<Timer> getTimers(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static List<Timer> getTimers(Context context) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
// Read the set of timer ids.
final Set<String> timerIds = prefs.getStringSet(TIMER_IDS, Collections.<String>emptySet());
@@ -104,8 +101,8 @@
/**
* @param timer the timer to be added
*/
- public static Timer addTimer(Context context, Timer timer) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static Timer addTimer(Context context, Timer timer) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
// Fetch the next timer id.
@@ -137,8 +134,8 @@
/**
* @param timer the timer to be updated
*/
- public static void updateTimer(Context context, Timer timer) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static void updateTimer(Context context, Timer timer) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
// Record the fields of the timer.
@@ -157,8 +154,8 @@
/**
* @param timer the timer to be removed
*/
- public static void removeTimer(Context context, Timer timer) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ static void removeTimer(Context context, Timer timer) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
final int id = timer.getId();
@@ -186,15 +183,7 @@
}
private static Set<String> getTimerIds(Context context) {
- final SharedPreferences prefs = getSharedPreferences(context);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
return prefs.getStringSet(TIMER_IDS, Collections.<String>emptySet());
}
-
- private static SharedPreferences getSharedPreferences(Context context) {
- if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- }
-
- return sPrefs;
- }
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/TimerModel.java b/src/com/android/deskclock/data/TimerModel.java
index b1e01bb..b64ac39 100644
--- a/src/com/android/deskclock/data/TimerModel.java
+++ b/src/com/android/deskclock/data/TimerModel.java
@@ -16,6 +16,7 @@
package com.android.deskclock.data;
+import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.PendingIntent;
@@ -29,18 +30,13 @@
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
-import android.os.SystemClock;
-import android.preference.PreferenceManager;
-import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.text.TextUtils;
import android.util.ArraySet;
import com.android.deskclock.AlarmAlertWakeLock;
-import com.android.deskclock.HandleDeskClockApiCalls;
import com.android.deskclock.LogUtils;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
@@ -56,8 +52,6 @@
import java.util.Set;
import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP;
-import static android.text.format.DateUtils.HOUR_IN_MILLIS;
-import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
import static com.android.deskclock.data.Timer.State.EXPIRED;
import static com.android.deskclock.data.Timer.State.RESET;
@@ -97,6 +91,7 @@
* ids in this collection. If a timer was already expired when the app was started its id will
* be absent from this collection.
*/
+ @SuppressLint("NewApi")
private final Set<Integer> mRingingIds = new ArraySet<>();
/** The uri of the ringtone to play for timers. */
@@ -111,6 +106,9 @@
/** A mutable copy of the expired timers. */
private List<Timer> mExpiredTimers;
+ /** Delegate that builds platform-specific timer notifications. */
+ private NotificationBuilder mNotificationBuilder;
+
/**
* The service that keeps this application in the foreground while a heads-up timer
* notification is displayed. Marking the service as foreground prevents the operating system
@@ -127,7 +125,7 @@
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
// Clear caches affected by preferences when preferences change.
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(mContext);
prefs.registerOnSharedPreferenceChangeListener(mPreferenceListener);
// Update stopwatch notification when locale changes.
@@ -578,7 +576,7 @@
// Update the existing timer expiration callback.
final PendingIntent pi = PendingIntent.getService(mContext,
0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
- schedulePendingIntent(nextExpiringTimer.getExpirationTime(), pi);
+ schedulePendingIntent(mAlarmManager, nextExpiringTimer.getExpirationTime(), pi);
}
}
@@ -638,130 +636,11 @@
// Sort the unexpired timers to locate the next one scheduled to expire.
Collections.sort(unexpired, Timer.EXPIRY_COMPARATOR);
- final Timer timer = unexpired.get(0);
- final long remainingTime = timer.getRemainingTime();
- // Generate some descriptive text, a title, and some actions based on timer states.
- final String contentText;
- final String contentTitle;
- @DrawableRes int firstActionIconId, secondActionIconId = 0;
- @StringRes int firstActionTitleId, secondActionTitleId = 0;
- Intent firstActionIntent, secondActionIntent = null;
-
- if (unexpired.size() == 1) {
- contentText = formatElapsedTimeUntilExpiry(remainingTime);
-
- if (timer.isRunning()) {
- // Single timer is running.
- if (TextUtils.isEmpty(timer.getLabel())) {
- contentTitle = mContext.getString(R.string.timer_notification_label);
- } else {
- contentTitle = timer.getLabel();
- }
-
- firstActionIconId = R.drawable.ic_pause_24dp;
- firstActionTitleId = R.string.timer_pause;
- firstActionIntent = new Intent(mContext, TimerService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_TIMER)
- .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
-
- secondActionIconId = R.drawable.ic_add_24dp;
- secondActionTitleId = R.string.timer_plus_1_min;
- secondActionIntent = new Intent(mContext, TimerService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_ADD_MINUTE_TIMER)
- .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
- } else {
- // Single timer is paused.
- contentTitle = mContext.getString(R.string.timer_paused);
-
- firstActionIconId = R.drawable.ic_start_24dp;
- firstActionTitleId = R.string.sw_resume_button;
- firstActionIntent = new Intent(mContext, TimerService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_START_TIMER)
- .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
-
- secondActionIconId = R.drawable.ic_reset_24dp;
- secondActionTitleId = R.string.sw_reset_button;
- secondActionIntent = new Intent(mContext, TimerService.class)
- .setAction(HandleDeskClockApiCalls.ACTION_RESET_TIMER)
- .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
- }
- } else {
- if (timer.isRunning()) {
- // At least one timer is running.
- final String timeRemaining = formatElapsedTimeUntilExpiry(remainingTime);
- contentText = mContext.getString(R.string.next_timer_notif, timeRemaining);
- contentTitle = mContext.getString(R.string.timers_in_use, unexpired.size());
- } else {
- // All timers are paused.
- contentText = mContext.getString(R.string.all_timers_stopped_notif);
- contentTitle = mContext.getString(R.string.timers_stopped, unexpired.size());
- }
-
- firstActionIconId = R.drawable.ic_reset_24dp;
- firstActionTitleId = R.string.timer_reset_all;
- firstActionIntent = TimerService.createResetUnexpiredTimersIntent(mContext);
- }
-
- // Intent to load the app and show the timer when the notification is tapped.
- final Intent showApp = new Intent(mContext, HandleDeskClockApiCalls.class)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setAction(HandleDeskClockApiCalls.ACTION_SHOW_TIMERS)
- .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId())
- .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, R.string.label_notification);
-
- final PendingIntent pendingShowApp = PendingIntent.getActivity(mContext, 0, showApp,
- PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
-
- final NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext)
- .setOngoing(true)
- .setLocalOnly(true)
- .setShowWhen(false)
- .setAutoCancel(false)
- .setContentText(contentText)
- .setContentTitle(contentTitle)
- .setContentIntent(pendingShowApp)
- .setSmallIcon(R.drawable.stat_notify_timer)
- .setPriority(NotificationCompat.PRIORITY_HIGH)
- .setCategory(NotificationCompat.CATEGORY_ALARM)
- .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
-
- final PendingIntent firstAction = PendingIntent.getService(mContext, 0,
- firstActionIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- final String firstActionTitle = mContext.getString(firstActionTitleId);
- builder.addAction(firstActionIconId, firstActionTitle, firstAction);
-
- if (secondActionIntent != null) {
- final PendingIntent secondAction = PendingIntent.getService(mContext, 0,
- secondActionIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- final String secondActionTitle = mContext.getString(secondActionTitleId);
- builder.addAction(secondActionIconId, secondActionTitle, secondAction);
- }
-
- // Update the notification.
- final Notification notification = builder.build();
+ // Otherwise build and post a notification reflecting the latest unexpired timers.
+ final Notification notification = getNotificationBuilder().build(mContext, unexpired);
final int notificationId = mNotificationModel.getUnexpiredTimerNotificationId();
mNotificationManager.notify(notificationId, notification);
-
- final Intent updateNotification = TimerService.createUpdateNotificationIntent(mContext);
- if (timer.isRunning() && remainingTime > MINUTE_IN_MILLIS) {
- // Schedule a callback to update the time-sensitive information of the running timer.
- final PendingIntent pi = PendingIntent.getService(mContext, 0, updateNotification,
- PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
-
- final long nextMinuteChange = remainingTime % MINUTE_IN_MILLIS;
- final long triggerTime = SystemClock.elapsedRealtime() + nextMinuteChange;
-
- schedulePendingIntent(triggerTime, pi);
- } else {
- // Cancel the update notification callback.
- final PendingIntent pi = PendingIntent.getService(mContext, 0, updateNotification,
- PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_NO_CREATE);
- if (pi != null) {
- mAlarmManager.cancel(pi);
- pi.cancel();
- }
- }
}
/**
@@ -809,19 +688,16 @@
// Content intent shows the timer full screen when clicked.
final Intent content = new Intent(mContext, ExpiredTimersActivity.class);
- final PendingIntent pendingContent = PendingIntent.getActivity(mContext, 0, content,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ final PendingIntent pendingContent = Utils.pendingActivityIntent(mContext, content);
// Full screen intent has flags so it is different than the content intent.
final Intent fullScreen = new Intent(mContext, ExpiredTimersActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
- final PendingIntent pendingFullScreen = PendingIntent.getActivity(mContext, 0, fullScreen,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ final PendingIntent pendingFullScreen = Utils.pendingActivityIntent(mContext, fullScreen);
// First action intent is either reset single timer or reset all timers.
final Intent reset = TimerService.createResetExpiredTimersIntent(mContext);
- final PendingIntent pendingReset = PendingIntent.getService(mContext, 0, reset,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ final PendingIntent pendingReset = Utils.pendingServiceIntent(mContext, reset);
final NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext)
.setWhen(0)
@@ -841,8 +717,7 @@
if (expired.size() == 1) {
// Second action intent adds a minute to a single timer.
final Intent addMinute = TimerService.createAddMinuteTimerIntent(mContext, timerId);
- final PendingIntent pendingAddMinute = PendingIntent.getService(mContext, 0, addMinute,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ final PendingIntent pendingAddMinute = Utils.pendingServiceIntent(mContext, addMinute);
final String addMinuteTitle = mContext.getString(R.string.timer_plus_1_min);
builder.addAction(R.drawable.ic_add_24dp, addMinuteTitle, pendingAddMinute);
}
@@ -853,47 +728,16 @@
mService.startForeground(notificationId, notification);
}
- /**
- * Format "7 hours 52 minutes remaining"
- */
- @VisibleForTesting
- String formatElapsedTimeUntilExpiry(long remainingTime) {
- final int hours = (int) remainingTime / (int) HOUR_IN_MILLIS;
- final int minutes = (int) remainingTime / ((int) MINUTE_IN_MILLIS) % 60;
-
- String minSeq = Utils.getNumberFormattedQuantityString(mContext, R.plurals.minutes, minutes);
- String hourSeq = Utils.getNumberFormattedQuantityString(mContext, R.plurals.hours, hours);
-
- // The verb "remaining" may have to change tense for singular subjects in some languages.
- final String verb = mContext.getString((minutes > 1 || hours > 1)
- ? R.string.timer_remaining_multiple
- : R.string.timer_remaining_single);
-
- final boolean showHours = hours > 0;
- final boolean showMinutes = minutes > 0;
-
- int formatStringId;
- if (showHours) {
- if (showMinutes) {
- formatStringId = R.string.timer_notifications_hours_minutes;
+ private NotificationBuilder getNotificationBuilder() {
+ if (mNotificationBuilder == null) {
+ if (Utils.isNOrLater()) {
+ mNotificationBuilder = new TimerNotificationBuilderN();
} else {
- formatStringId = R.string.timer_notifications_hours;
+ mNotificationBuilder = new TimerNotificationBuilderPreN();
}
- } else if (showMinutes) {
- formatStringId = R.string.timer_notifications_minutes;
- } else {
- formatStringId = R.string.timer_notifications_less_min;
}
- return String.format(mContext.getString(formatStringId), hourSeq, minSeq, verb);
- }
- private void schedulePendingIntent(long triggerTime, PendingIntent pi) {
- if (Utils.isMOrLater()) {
- // Ensure the timer fires even if the device is dozing.
- mAlarmManager.setExactAndAllowWhileIdle(ELAPSED_REALTIME_WAKEUP, triggerTime, pi);
- } else {
- mAlarmManager.setExact(ELAPSED_REALTIME_WAKEUP, triggerTime, pi);
- }
+ return mNotificationBuilder;
}
/**
@@ -922,4 +766,25 @@
}
}
}
-}
+
+ static void schedulePendingIntent(AlarmManager am, long triggerTime, PendingIntent pi) {
+ if (Utils.isMOrLater()) {
+ // Ensure the timer fires even if the device is dozing.
+ am.setExactAndAllowWhileIdle(ELAPSED_REALTIME_WAKEUP, triggerTime, pi);
+ } else {
+ am.setExact(ELAPSED_REALTIME_WAKEUP, triggerTime, pi);
+ }
+ }
+
+ /**
+ * An API for building platform-specific timer notifications.
+ */
+ public interface NotificationBuilder {
+ /**
+ * @param context a context to use for fetching resources
+ * @param unexpiredTimers all running and paused timers
+ * @return a notification reporting the state of the {@code unexpiredTimers}
+ */
+ Notification build(Context context, List<Timer> unexpiredTimers);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/TimerNotificationBuilderN.java b/src/com/android/deskclock/data/TimerNotificationBuilderN.java
new file mode 100644
index 0000000..b8b52d9
--- /dev/null
+++ b/src/com/android/deskclock/data/TimerNotificationBuilderN.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock.data;
+
+import android.annotation.TargetApi;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.drawable.Icon;
+import android.os.Build;
+import android.os.SystemClock;
+import android.text.TextUtils;
+import android.widget.RemoteViews;
+
+import com.android.deskclock.HandleDeskClockApiCalls;
+import com.android.deskclock.R;
+import com.android.deskclock.Utils;
+import com.android.deskclock.timer.TimerService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static android.text.format.DateUtils.SECOND_IN_MILLIS;
+
+/**
+ * Builds N-style notification to reflect the latest state of the unexpired timers.
+ */
+@TargetApi(Build.VERSION_CODES.N)
+class TimerNotificationBuilderN implements TimerModel.NotificationBuilder {
+
+ @Override
+ public Notification build(Context context, List<Timer> unexpired) {
+ final Timer timer = unexpired.get(0);
+ final int count = unexpired.size();
+
+ // Compute some values required below.
+ final boolean running = timer.isRunning();
+ final String pname = context.getPackageName();
+ final Resources res = context.getResources();
+
+ // The in-app timer display rounds *up* to the next second. To mirror that behavior in the
+ // notification's Chronometer, pad in an extra second.
+ final long remainingTime = timer.getRemainingTime() + SECOND_IN_MILLIS;
+
+ // Chronometer will reach 0:00 at remainingTime milliseconds in the future.
+ final long base = SystemClock.elapsedRealtime() + remainingTime;
+
+ final RemoteViews content = new RemoteViews(pname, R.layout.chronometer_notif_content);
+ content.setChronometerCountDown(R.id.chronometer, true);
+ content.setChronometer(R.id.chronometer, base, null, running);
+
+ final List<Notification.Action> actions = new ArrayList<>(2);
+
+ if (count == 1) {
+ if (running) {
+ // Single timer is running.
+ if (TextUtils.isEmpty(timer.getLabel())) {
+ content.setTextViewText(R.id.state, res.getString(R.string.timer_notification_label));
+ } else {
+ content.setTextViewText(R.id.state, timer.getLabel());
+ }
+
+ // Left button: Pause
+ final Intent pause = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ final Icon icon1 = Icon.createWithResource(context, R.drawable.ic_pause_24dp);
+ final CharSequence title1 = res.getText(R.string.timer_pause);
+ final PendingIntent intent1 = Utils.pendingServiceIntent(context, pause);
+ actions.add(new Notification.Action.Builder(icon1, title1, intent1).build());
+
+ // Right Button: +1 Minute
+ final Intent addMinute = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_ADD_MINUTE_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ final Icon icon2 = Icon.createWithResource(context, R.drawable.ic_add_24dp);
+ final CharSequence title2 = res.getText(R.string.timer_plus_1_min);
+ final PendingIntent intent2 = Utils.pendingServiceIntent(context, addMinute);
+ actions.add(new Notification.Action.Builder(icon2, title2, intent2).build());
+
+ } else {
+ // Single timer is paused.
+ content.setTextViewText(R.id.state, res.getString(R.string.timer_paused));
+
+ // Left button: Start
+ final Intent start = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_START_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ final Icon icon1 = Icon.createWithResource(context, R.drawable.ic_start_24dp);
+ final CharSequence title1 = res.getText(R.string.sw_resume_button);
+ final PendingIntent intent1 = Utils.pendingServiceIntent(context, start);
+ actions.add(new Notification.Action.Builder(icon1, title1, intent1).build());
+
+ // Right Button: Reset
+ final Intent reset = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ final Icon icon2 = Icon.createWithResource(context, R.drawable.ic_reset_24dp);
+ final CharSequence title2 = res.getText(R.string.sw_reset_button);
+ final PendingIntent intent2 = Utils.pendingServiceIntent(context, reset);
+ actions.add(new Notification.Action.Builder(icon2, title2, intent2).build());
+ }
+ } else {
+ if (running) {
+ // At least one timer is running.
+ content.setTextViewText(R.id.state, res.getString(R.string.timers_in_use, count));
+ } else {
+ // All timers are paused.
+ content.setTextViewText(R.id.state, res.getString(R.string.timers_stopped, count));
+ }
+
+ final Intent reset = TimerService.createResetUnexpiredTimersIntent(context);
+
+ final Icon icon1 = Icon.createWithResource(context, R.drawable.ic_reset_24dp);
+ final CharSequence title1 = res.getText(R.string.timer_reset_all);
+ final PendingIntent intent1 = Utils.pendingServiceIntent(context, reset);
+ actions.add(new Notification.Action.Builder(icon1, title1, intent1).build());
+ }
+
+ // Intent to load the app and show the timer when the notification is tapped.
+ final Intent showApp = new Intent(context, HandleDeskClockApiCalls.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .setAction(HandleDeskClockApiCalls.ACTION_SHOW_TIMERS)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId())
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, R.string.label_notification);
+
+ final PendingIntent pendingShowApp = PendingIntent.getActivity(context, 0, showApp,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
+
+ return new Notification.Builder(context)
+ .setOngoing(true)
+ .setLocalOnly(true)
+ .setShowWhen(false)
+ .setAutoCancel(false)
+ .setCustomContentView(content)
+ .setContentIntent(pendingShowApp)
+ .setPriority(Notification.PRIORITY_HIGH)
+ .setCategory(Notification.CATEGORY_ALARM)
+ .setSmallIcon(R.drawable.stat_notify_timer)
+ .setVisibility(Notification.VISIBILITY_PUBLIC)
+ .setStyle(new Notification.DecoratedCustomViewStyle())
+ .setActions(actions.toArray(new Notification.Action[actions.size()]))
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java b/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java
new file mode 100644
index 0000000..82ddfec
--- /dev/null
+++ b/src/com/android/deskclock/data/TimerNotificationBuilderPreN.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+package com.android.deskclock.data;
+
+import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.SystemClock;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+import android.support.annotation.VisibleForTesting;
+import android.support.v4.app.NotificationCompat;
+import android.text.TextUtils;
+
+import com.android.deskclock.HandleDeskClockApiCalls;
+import com.android.deskclock.R;
+import com.android.deskclock.Utils;
+import com.android.deskclock.timer.TimerService;
+
+import java.util.List;
+
+import static android.text.format.DateUtils.HOUR_IN_MILLIS;
+import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
+
+/**
+ * Builds KK, L, or M-style notifications to reflect the latest state of the unexpired timers.
+ */
+class TimerNotificationBuilderPreN implements TimerModel.NotificationBuilder {
+
+ @Override
+ public Notification build(Context context, List<Timer> unexpired) {
+ final Timer timer = unexpired.get(0);
+ final long remainingTime = timer.getRemainingTime();
+
+ // Generate some descriptive text, a title, and some actions based on timer states.
+ final String contentText;
+ final String contentTitle;
+ @DrawableRes int firstActionIconId, secondActionIconId = 0;
+ @StringRes int firstActionTitleId, secondActionTitleId = 0;
+ Intent firstActionIntent, secondActionIntent = null;
+
+ if (unexpired.size() == 1) {
+ contentText = formatElapsedTimeUntilExpiry(context, remainingTime);
+
+ if (timer.isRunning()) {
+ // Single timer is running.
+ if (TextUtils.isEmpty(timer.getLabel())) {
+ contentTitle = context.getString(R.string.timer_notification_label);
+ } else {
+ contentTitle = timer.getLabel();
+ }
+
+ firstActionIconId = R.drawable.ic_pause_24dp;
+ firstActionTitleId = R.string.timer_pause;
+ firstActionIntent = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_PAUSE_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ secondActionIconId = R.drawable.ic_add_24dp;
+ secondActionTitleId = R.string.timer_plus_1_min;
+ secondActionIntent = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_ADD_MINUTE_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+ } else {
+ // Single timer is paused.
+ contentTitle = context.getString(R.string.timer_paused);
+
+ firstActionIconId = R.drawable.ic_start_24dp;
+ firstActionTitleId = R.string.sw_resume_button;
+ firstActionIntent = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_START_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+
+ secondActionIconId = R.drawable.ic_reset_24dp;
+ secondActionTitleId = R.string.sw_reset_button;
+ secondActionIntent = new Intent(context, TimerService.class)
+ .setAction(HandleDeskClockApiCalls.ACTION_RESET_TIMER)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId());
+ }
+ } else {
+ if (timer.isRunning()) {
+ // At least one timer is running.
+ final String timeRemaining = formatElapsedTimeUntilExpiry(context, remainingTime);
+ contentText = context.getString(R.string.next_timer_notif, timeRemaining);
+ contentTitle = context.getString(R.string.timers_in_use, unexpired.size());
+ } else {
+ // All timers are paused.
+ contentText = context.getString(R.string.all_timers_stopped_notif);
+ contentTitle = context.getString(R.string.timers_stopped, unexpired.size());
+ }
+
+ firstActionIconId = R.drawable.ic_reset_24dp;
+ firstActionTitleId = R.string.timer_reset_all;
+ firstActionIntent = TimerService.createResetUnexpiredTimersIntent(context);
+ }
+
+ // Intent to load the app and show the timer when the notification is tapped.
+ final Intent showApp = new Intent(context, HandleDeskClockApiCalls.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .setAction(HandleDeskClockApiCalls.ACTION_SHOW_TIMERS)
+ .putExtra(HandleDeskClockApiCalls.EXTRA_TIMER_ID, timer.getId())
+ .putExtra(HandleDeskClockApiCalls.EXTRA_EVENT_LABEL, R.string.label_notification);
+
+ final PendingIntent pendingShowApp = PendingIntent.getActivity(context, 0, showApp,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
+
+ final NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
+ .setOngoing(true)
+ .setLocalOnly(true)
+ .setShowWhen(false)
+ .setAutoCancel(false)
+ .setContentText(contentText)
+ .setContentTitle(contentTitle)
+ .setContentIntent(pendingShowApp)
+ .setSmallIcon(R.drawable.stat_notify_timer)
+ .setPriority(NotificationCompat.PRIORITY_HIGH)
+ .setCategory(NotificationCompat.CATEGORY_ALARM)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
+
+ final PendingIntent action1 = Utils.pendingServiceIntent(context, firstActionIntent);
+ final String action1Title = context.getString(firstActionTitleId);
+ builder.addAction(firstActionIconId, action1Title, action1);
+
+ if (secondActionIntent != null) {
+ final PendingIntent action2 = Utils.pendingServiceIntent(context, secondActionIntent);
+ final String action2Title = context.getString(secondActionTitleId);
+ builder.addAction(secondActionIconId, action2Title, action2);
+ }
+
+ final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ final Intent updateNotification = TimerService.createUpdateNotificationIntent(context);
+ if (timer.isRunning() && remainingTime > MINUTE_IN_MILLIS) {
+ // Schedule a callback to update the time-sensitive information of the running timer.
+ final PendingIntent pi = PendingIntent.getService(context, 0, updateNotification,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
+
+ final long nextMinuteChange = remainingTime % MINUTE_IN_MILLIS;
+ final long triggerTime = SystemClock.elapsedRealtime() + nextMinuteChange;
+ TimerModel.schedulePendingIntent(am, triggerTime, pi);
+ } else {
+ // Cancel the update notification callback.
+ final PendingIntent pi = PendingIntent.getService(context, 0, updateNotification,
+ PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_NO_CREATE);
+ if (pi != null) {
+ am.cancel(pi);
+ pi.cancel();
+ }
+ }
+
+ return builder.build();
+ }
+
+ /**
+ * Format "7 hours 52 minutes remaining"
+ */
+ @VisibleForTesting
+ static String formatElapsedTimeUntilExpiry(Context context, long remainingTime) {
+ final int hours = (int) remainingTime / (int) HOUR_IN_MILLIS;
+ final int minutes = (int) remainingTime / ((int) MINUTE_IN_MILLIS) % 60;
+
+ String minSeq = Utils.getNumberFormattedQuantityString(context, R.plurals.minutes, minutes);
+ String hourSeq = Utils.getNumberFormattedQuantityString(context, R.plurals.hours, hours);
+
+ // The verb "remaining" may have to change tense for singular subjects in some languages.
+ final String verb = context.getString((minutes > 1 || hours > 1)
+ ? R.string.timer_remaining_multiple
+ : R.string.timer_remaining_single);
+
+ final boolean showHours = hours > 0;
+ final boolean showMinutes = minutes > 0;
+
+ int formatStringId;
+ if (showHours) {
+ if (showMinutes) {
+ formatStringId = R.string.timer_notifications_hours_minutes;
+ } else {
+ formatStringId = R.string.timer_notifications_hours;
+ }
+ } else if (showMinutes) {
+ formatStringId = R.string.timer_notifications_minutes;
+ } else {
+ formatStringId = R.string.timer_notifications_less_min;
+ }
+ return String.format(context.getString(formatStringId), hourSeq, minSeq, verb);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/data/WidgetDAO.java b/src/com/android/deskclock/data/WidgetDAO.java
index 91479c5..3416055 100644
--- a/src/com/android/deskclock/data/WidgetDAO.java
+++ b/src/com/android/deskclock/data/WidgetDAO.java
@@ -18,7 +18,8 @@
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
+
+import com.android.deskclock.Utils;
/**
* This class encapsulates the transfer of data between widget objects and their permanent storage
@@ -27,10 +28,7 @@
final class WidgetDAO {
/** Suffix for a key to a preference that stores the instance count for a given widget type. */
- private static final String WIDGET_COUNT_SUFFIX = "_widget_count";
-
- /** Lazily instantiated and cached for the life of the application. */
- private static SharedPreferences sPrefs;
+ private static final String WIDGET_COUNT = "_widget_count";
private WidgetDAO() {}
@@ -39,9 +37,9 @@
* @param count the number of widgets of the given type
* @return the delta between the new count and the old count
*/
- public static int updateWidgetCount(Context context, Class widgetProviderClass, int count) {
- final SharedPreferences prefs = getSharedPreferences(context);
- final String key = widgetProviderClass.getSimpleName() + WIDGET_COUNT_SUFFIX;
+ static int updateWidgetCount(Context context, Class widgetProviderClass, int count) {
+ final SharedPreferences prefs = Utils.getDefaultSharedPreferences(context);
+ final String key = widgetProviderClass.getSimpleName() + WIDGET_COUNT;
final int oldCount = prefs.getInt(key, 0);
if (count == 0) {
prefs.edit().remove(key).apply();
@@ -50,12 +48,4 @@
}
return count - oldCount;
}
-
- private static SharedPreferences getSharedPreferences(Context context) {
- if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- }
-
- return sPrefs;
- }
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/provider/Alarm.java b/src/com/android/deskclock/provider/Alarm.java
index 7fac18b..258a50b 100644
--- a/src/com/android/deskclock/provider/Alarm.java
+++ b/src/com/android/deskclock/provider/Alarm.java
@@ -353,7 +353,7 @@
* @return Previous firing time, or null if this is a one-time alarm.
*/
public Calendar getPreviousAlarmTime(Calendar currentTime) {
- Calendar previousInstanceTime = Calendar.getInstance();
+ final Calendar previousInstanceTime = Calendar.getInstance(currentTime.getTimeZone());
previousInstanceTime.set(Calendar.YEAR, currentTime.get(Calendar.YEAR));
previousInstanceTime.set(Calendar.MONTH, currentTime.get(Calendar.MONTH));
previousInstanceTime.set(Calendar.DAY_OF_MONTH, currentTime.get(Calendar.DAY_OF_MONTH));
@@ -372,7 +372,7 @@
}
public Calendar getNextAlarmTime(Calendar currentTime) {
- final Calendar nextInstanceTime = Calendar.getInstance();
+ final Calendar nextInstanceTime = Calendar.getInstance(currentTime.getTimeZone());
nextInstanceTime.set(Calendar.YEAR, currentTime.get(Calendar.YEAR));
nextInstanceTime.set(Calendar.MONTH, currentTime.get(Calendar.MONTH));
nextInstanceTime.set(Calendar.DAY_OF_MONTH, currentTime.get(Calendar.DAY_OF_MONTH));
diff --git a/src/com/android/deskclock/provider/AlarmInstance.java b/src/com/android/deskclock/provider/AlarmInstance.java
index d4542c0..5be3c03 100644
--- a/src/com/android/deskclock/provider/AlarmInstance.java
+++ b/src/com/android/deskclock/provider/AlarmInstance.java
@@ -28,6 +28,7 @@
import com.android.deskclock.LogUtils;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
import com.android.deskclock.alarms.AlarmStateManager;
import com.android.deskclock.settings.SettingsActivity;
@@ -424,7 +425,7 @@
* @return the time when alarm should be silence, or null if never
*/
public Calendar getTimeout(Context context) {
- String timeoutSetting = PreferenceManager.getDefaultSharedPreferences(context)
+ String timeoutSetting = Utils.getDefaultSharedPreferences(context)
.getString(SettingsActivity.KEY_AUTO_SILENCE, DEFAULT_ALARM_TIMEOUT_SETTING);
int timeoutMinutes = Integer.parseInt(timeoutSetting);
diff --git a/src/com/android/deskclock/provider/ClockProvider.java b/src/com/android/deskclock/provider/ClockProvider.java
index c70da36..7b9da87 100644
--- a/src/com/android/deskclock/provider/ClockProvider.java
+++ b/src/com/android/deskclock/provider/ClockProvider.java
@@ -16,19 +16,23 @@
package com.android.deskclock.provider;
+import android.annotation.TargetApi;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
+import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
+import android.os.Build;
import android.text.TextUtils;
import android.util.ArrayMap;
import com.android.deskclock.LogUtils;
+import com.android.deskclock.Utils;
import java.util.Map;
@@ -114,8 +118,23 @@
}
@Override
+ @TargetApi(Build.VERSION_CODES.N)
public boolean onCreate() {
- mOpenHelper = new ClockDatabaseHelper(getContext());
+ final Context context = getContext();
+ final Context storageContext;
+ if (Utils.isNOrLater()) {
+ // All N devices have split storage areas, but we may need to
+ // migrate existing database into the new device encrypted
+ // storage area, which is where our data lives from now on.
+ storageContext = context.createDeviceProtectedStorageContext();
+ if (!storageContext.moveDatabaseFrom(context, ClockDatabaseHelper.DATABASE_NAME)) {
+ LogUtils.wtf("Failed to migrate database: %s", ClockDatabaseHelper.DATABASE_NAME);
+ }
+ } else {
+ storageContext = context;
+ }
+
+ mOpenHelper = new ClockDatabaseHelper(storageContext);
return true;
}
diff --git a/src/com/android/deskclock/settings/ScreensaverSettingsActivity.java b/src/com/android/deskclock/settings/ScreensaverSettingsActivity.java
index 3f64379..3b2b766 100644
--- a/src/com/android/deskclock/settings/ScreensaverSettingsActivity.java
+++ b/src/com/android/deskclock/settings/ScreensaverSettingsActivity.java
@@ -16,6 +16,8 @@
package com.android.deskclock.settings;
+import android.annotation.TargetApi;
+import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -24,9 +26,10 @@
import android.view.MenuItem;
import com.android.deskclock.R;
+import com.android.deskclock.Utils;
/**
- * Settings for Clock Daydream
+ * Settings for Clock screen saver
*/
public final class ScreensaverSettingsActivity extends AppCompatActivity {
@@ -56,9 +59,14 @@
implements Preference.OnPreferenceChangeListener {
@Override
+ @TargetApi(Build.VERSION_CODES.N)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.dream_settings);
+
+ if (Utils.isNOrLater()) {
+ getPreferenceManager().setStorageDeviceProtected();
+ }
+ addPreferencesFromResource(R.xml.screensaver_settings);
}
@Override
diff --git a/src/com/android/deskclock/settings/SettingsActivity.java b/src/com/android/deskclock/settings/SettingsActivity.java
index bdbe5c3..4a01e18 100644
--- a/src/com/android/deskclock/settings/SettingsActivity.java
+++ b/src/com/android/deskclock/settings/SettingsActivity.java
@@ -39,7 +39,7 @@
import com.android.deskclock.R;
import com.android.deskclock.RingtonePickerDialogFragment;
import com.android.deskclock.Utils;
-import com.android.deskclock.actionbarmenu.ActionBarMenuManager;
+import com.android.deskclock.actionbarmenu.OptionsMenuManager;
import com.android.deskclock.actionbarmenu.MenuItemControllerFactory;
import com.android.deskclock.actionbarmenu.NavUpMenuItemController;
import com.android.deskclock.data.DataModel;
@@ -74,7 +74,7 @@
public static final String PREFS_FRAGMENT_TAG = "prefs_fragment";
public static final String PREFERENCE_DIALOG_FRAGMENT_TAG = "preference_dialog";
- private final ActionBarMenuManager mActionBarMenuManager = new ActionBarMenuManager();
+ private final OptionsMenuManager mOptionsMenuManager = new OptionsMenuManager();
/**
* The controller that shows the drop shadow when content is not scrolled to the top.
@@ -85,7 +85,8 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
- mActionBarMenuManager.addMenuItemController(new NavUpMenuItemController(this))
+
+ mOptionsMenuManager.addMenuItemController(new NavUpMenuItemController(this))
.addMenuItemController(MenuItemControllerFactory.getInstance()
.buildMenuItemControllers(this));
@@ -116,19 +117,19 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- mActionBarMenuManager.createOptionsMenu(menu, getMenuInflater());
+ mOptionsMenuManager.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- mActionBarMenuManager.prepareShowMenu(menu);
+ mOptionsMenuManager.onPrepareOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- return mActionBarMenuManager.handleMenuItemClick(item)
+ return mOptionsMenuManager.onOptionsItemSelected(item)
|| super.onOptionsItemSelected(item);
}
@@ -139,6 +140,7 @@
@Override
public void onCreatePreferences(Bundle bundle, String rootKey) {
+ getPreferenceManager().setStorageDeviceProtected();
addPreferencesFromResource(R.xml.settings);
loadTimeZoneList();
}
diff --git a/src/com/android/deskclock/stopwatch/LapsAdapter.java b/src/com/android/deskclock/stopwatch/LapsAdapter.java
index 00141a6..62496bd 100644
--- a/src/com/android/deskclock/stopwatch/LapsAdapter.java
+++ b/src/com/android/deskclock/stopwatch/LapsAdapter.java
@@ -29,6 +29,7 @@
import com.android.deskclock.data.DataModel;
import com.android.deskclock.data.Lap;
import com.android.deskclock.data.Stopwatch;
+import com.android.deskclock.uidata.UiDataModel;
import java.text.DecimalFormatSymbols;
import java.util.List;
@@ -40,6 +41,17 @@
*/
class LapsAdapter extends RecyclerView.Adapter<LapsAdapter.LapItemHolder> {
+ private static final long TEN_MINUTES = 10 * DateUtils.MINUTE_IN_MILLIS;
+ private static final long HOUR = DateUtils.HOUR_IN_MILLIS;
+ private static final long TEN_HOURS = 10 * HOUR;
+ private static final long HUNDRED_HOURS = 100 * HOUR;
+
+ /** A single space preceded by a zero-width LRM; This groups adjacent chars left-to-right. */
+ private static final String LRM_SPACE = "\u200E ";
+
+ /** Reusable StringBuilder that assembles a formatted time; alleviates memory churn. */
+ private static final StringBuilder sTimeBuilder = new StringBuilder(12);
+
private final LayoutInflater mInflater;
private final Context mContext;
@@ -204,7 +216,7 @@
* @return e.g. "# 7" if {@code lapCount} less than 10; "# 07" if {@code lapCount} is 10 or more
*/
@VisibleForTesting
- String formatLapNumber(int lapCount, int lapNumber) {
+ static String formatLapNumber(int lapCount, int lapNumber) {
if (lapCount < 10) {
return String.format(Locale.getDefault(), "# %d", lapNumber);
}
@@ -219,33 +231,48 @@
* @return a formatted version of the time
*/
@VisibleForTesting
- String formatTime(long maxTime, long time, String separator) {
- long hundredths, seconds, minutes, hours;
- seconds = time / 1000;
- hundredths = (time - seconds * 1000) / 10;
- minutes = seconds / 60;
- seconds = seconds - minutes * 60;
- hours = minutes / 60;
- minutes = minutes - hours * 60;
+ static String formatTime(long maxTime, long time, String separator) {
+ final int hours = (int) (time / DateUtils.HOUR_IN_MILLIS);
+ int remainder = (int) (time % DateUtils.HOUR_IN_MILLIS);
+
+ final int minutes = (int) (remainder / DateUtils.MINUTE_IN_MILLIS);
+ remainder = (int) (remainder % DateUtils.MINUTE_IN_MILLIS);
+
+ final int seconds = (int) (remainder / DateUtils.SECOND_IN_MILLIS);
+ remainder = (int) (remainder % DateUtils.SECOND_IN_MILLIS);
+
+ final int hundredths = remainder / 10;
final char decimalSeparator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
- if (maxTime < 10 * DateUtils.MINUTE_IN_MILLIS) {
- return String.format(Locale.getDefault(), "%d%s%02d%s%02d",
- minutes, separator, seconds, decimalSeparator, hundredths);
- } else if (maxTime < 60 * DateUtils.MINUTE_IN_MILLIS) {
- return String.format(Locale.getDefault(), "%02d%s%02d%s%02d",
- minutes, separator, seconds, decimalSeparator, hundredths);
- } else if (maxTime < 10 * DateUtils.HOUR_IN_MILLIS) {
- return String.format(Locale.getDefault(), "%d%s%02d%s%02d%s%02d",
- hours, separator, minutes, separator, seconds, decimalSeparator, hundredths);
- } else if (maxTime < 100 * DateUtils.HOUR_IN_MILLIS) {
- return String.format(Locale.getDefault(), "%02d%s%02d%s%02d%s%02d",
- hours, separator, minutes, separator, seconds, decimalSeparator, hundredths);
+ sTimeBuilder.setLength(0);
+
+ // The display of hours and minutes varies based on maxTime.
+ if (maxTime < TEN_MINUTES) {
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(minutes, 1));
+ } else if (maxTime < HOUR) {
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(minutes, 2));
+ } else if (maxTime < TEN_HOURS) {
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(hours, 1));
+ sTimeBuilder.append(separator);
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(minutes, 2));
+ } else if (maxTime < HUNDRED_HOURS) {
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(hours, 2));
+ sTimeBuilder.append(separator);
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(minutes, 2));
+ } else {
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(hours, 3));
+ sTimeBuilder.append(separator);
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(minutes, 2));
}
- return String.format(Locale.getDefault(), "%03d%s%02d%s%02d%s%02d",
- hours, separator, minutes, separator, seconds, decimalSeparator, hundredths);
+ // The display of seconds and hundredths-of-a-second is constant.
+ sTimeBuilder.append(separator);
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(seconds, 2));
+ sTimeBuilder.append(decimalSeparator);
+ sTimeBuilder.append(UiDataModel.getUiDataModel().getFormattedNumber(hundredths, 2));
+
+ return sTimeBuilder.toString();
}
/**
@@ -257,7 +284,7 @@
private String formatLapTime(long lapTime, boolean isBinding) {
// The longest lap dictates the way the given lapTime must be formatted.
final long longestLapTime = Math.max(DataModel.getDataModel().getLongestLapTime(), lapTime);
- final String formattedTime = formatTime(longestLapTime, lapTime, " ");
+ final String formattedTime = formatTime(longestLapTime, lapTime, LRM_SPACE);
// If the newly formatted lap time has altered the format, refresh all laps.
final int newLength = formattedTime.length();
@@ -278,7 +305,7 @@
private String formatAccumulatedTime(long accumulatedTime, boolean isBinding) {
final long totalTime = getStopwatch().getTotalTime();
final long longestAccumulatedTime = Math.max(totalTime, accumulatedTime);
- final String formattedTime = formatTime(longestAccumulatedTime, accumulatedTime, " ");
+ final String formattedTime = formatTime(longestAccumulatedTime, accumulatedTime, LRM_SPACE);
// If the newly formatted accumulated time has altered the format, refresh all laps.
final int newLength = formattedTime.length();
diff --git a/src/com/android/deskclock/stopwatch/StopwatchFragment.java b/src/com/android/deskclock/stopwatch/StopwatchFragment.java
index ab3268a..333ce42 100644
--- a/src/com/android/deskclock/stopwatch/StopwatchFragment.java
+++ b/src/com/android/deskclock/stopwatch/StopwatchFragment.java
@@ -20,6 +20,7 @@
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
+import android.content.res.Resources;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -33,7 +34,6 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
-import android.view.accessibility.AccessibilityManager;
import android.widget.ImageButton;
import android.widget.ImageView;
@@ -51,7 +51,6 @@
import com.android.deskclock.uidata.UiDataModel;
import com.android.deskclock.uidata.UiDataModel.Tab;
-import static android.content.Context.ACCESSIBILITY_SERVICE;
import static android.view.View.GONE;
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
@@ -63,6 +62,8 @@
* Fragment that shows the stopwatch and recorded laps.
*/
public final class StopwatchFragment extends DeskClockFragment {
+ /** Milliseconds between redraws. */
+ private static final int REDRAW_PERIOD = 25;
/** Keep the screen on when this tab is selected. */
private final TabListener mTabWatcher = new TabWatcher();
@@ -73,9 +74,6 @@
/** Updates the user interface in response to stopwatch changes. */
private final StopwatchListener mStopwatchWatcher = new StopwatchWatcher();
- /** Used to determine when talk back is on in order to lower the time update rate. */
- private AccessibilityManager mAccessibilityManager;
-
/** The data source for {@link #mLapsList}. */
private LapsAdapter mLapsAdapter;
@@ -109,10 +107,19 @@
mLapsList = (RecyclerView) v.findViewById(R.id.laps_list);
((SimpleItemAnimator) mLapsList.getItemAnimator()).setSupportsChangeAnimations(false);
mLapsList.setLayoutManager(mLapsLayoutManager);
+
+ // In landscape layouts, the laps list can reach the top of the screen and thus can cause
+ // a drop shadow to appear. The same is not true for portrait landscapes.
+ if (Utils.isLandscape(getActivity())) {
+ final ScrollPositionWatcher scrollPositionWatcher = new ScrollPositionWatcher();
+ mLapsList.addOnLayoutChangeListener(scrollPositionWatcher);
+ mLapsList.addOnScrollListener(scrollPositionWatcher);
+ }
mLapsList.setAdapter(mLapsAdapter);
// Timer text serves as a virtual start/stop button.
mTimeText = (CountingTimerView) v.findViewById(R.id.stopwatch_time_text);
+ mTimeText.setShowBoundingCircle(mTime != null);
mTimeText.setVirtualButtonEnabled(true);
mTimeText.registerVirtualButtonAction(new ToggleStopwatchRunnable());
@@ -122,16 +129,8 @@
}
@Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- mAccessibilityManager =
- (AccessibilityManager) getActivity().getSystemService(ACCESSIBILITY_SERVICE);
- }
-
- @Override
- public void onResume() {
- super.onResume();
+ public void onStart() {
+ super.onStart();
// Conservatively assume the data in the adapter has changed while the fragment was paused.
mLapCount = mLapsAdapter.getItemCount();
@@ -145,8 +144,8 @@
}
@Override
- public void onPause() {
- super.onPause();
+ public void onStop() {
+ super.onStop();
// Stop all updates while the fragment is not visible.
stopUpdatingTime();
@@ -361,8 +360,10 @@
// to ensure they aren't seen as the first lap is drawn.
mLapsList.removeAllViewsInLayout();
- // Start animating the reference lap.
- mTime.update();
+ if (mTime != null) {
+ // Start animating the reference lap.
+ mTime.update();
+ }
// Recording the first lap transitions the UI to display the laps list.
showOrHideLaps(false);
@@ -378,6 +379,10 @@
*/
private void showOrHideLaps(boolean clearLaps) {
final ViewGroup sceneRoot = (ViewGroup) getView();
+ if (sceneRoot == null) {
+ return;
+ }
+
TransitionManager.beginDelayedTransition(sceneRoot);
if (clearLaps) {
@@ -386,6 +391,17 @@
final boolean lapsVisible = mLapsAdapter.getItemCount() > 0;
mLapsList.setVisibility(lapsVisible ? VISIBLE : GONE);
+
+ if (Utils.isPortrait(getActivity())) {
+ // When the lap list is visible, it includes the bottom padding. When it is absent the
+ // appropriate bottom padding must be applied to the container.
+ final Resources res = getResources();
+ final int bottom = lapsVisible ? 0 : res.getDimensionPixelSize(R.dimen.fab_height);
+ final int top = sceneRoot.getPaddingTop();
+ final int left = sceneRoot.getPaddingLeft();
+ final int right = sceneRoot.getPaddingRight();
+ sceneRoot.setPadding(left, top, right, bottom);
+ }
}
private void adjustWakeLock() {
@@ -426,14 +442,14 @@
private void startUpdatingTime() {
// Ensure only one copy of the runnable is ever scheduled by first stopping updates.
stopUpdatingTime();
- mTime.post(mTimeUpdateRunnable);
+ mTimeText.post(mTimeUpdateRunnable);
}
/**
* Remove the runnable that updates times within the UI.
*/
private void stopUpdatingTime() {
- mTime.removeCallbacks(mTimeUpdateRunnable);
+ mTimeText.removeCallbacks(mTimeUpdateRunnable);
}
/**
@@ -447,7 +463,7 @@
final long totalTime = stopwatch.getTotalTime();
// Update the total time display.
- mTimeText.setTime(totalTime, true, true);
+ mTimeText.setTime(totalTime, true);
// Update the current lap.
final boolean currentLapIsVisible = mLapsLayoutManager.findFirstVisibleItemPosition() == 0;
@@ -465,7 +481,9 @@
// Draw the latest stopwatch and current lap times.
updateTime();
- mTime.update();
+ if (mTime != null) {
+ mTime.update();
+ }
// Start updates if the stopwatch is running.
final Stopwatch stopwatch = getStopwatch();
@@ -495,17 +513,11 @@
updateTime();
if (getStopwatch().isRunning()) {
- // The stopwatch is still running so execute this runnable again after a delay.
- final boolean talkBackOn = mAccessibilityManager.isTouchExplorationEnabled();
-
- // Grant longer time between redraws when talk-back is on to let it catch up.
- final int period = talkBackOn ? 500 : 25;
-
// Try to maintain a consistent period of time between redraws.
final long endTime = SystemClock.elapsedRealtime();
- final long delay = Math.max(0, startTime + period - endTime);
+ final long delay = Math.max(0, startTime + REDRAW_PERIOD - endTime);
- mTime.postDelayed(this, delay);
+ mTimeText.postDelayed(this, delay);
}
}
}
@@ -548,4 +560,22 @@
public void lapAdded(Lap lap) {
}
}
-}
+
+ /**
+ * Updates the vertical scroll state of this tab in the {@link UiDataModel} as the user scrolls
+ * the recyclerview or when the size/position of elements within the recyclerview changes.
+ */
+ private final class ScrollPositionWatcher extends RecyclerView.OnScrollListener
+ implements View.OnLayoutChangeListener {
+ @Override
+ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
+ setTabScrolledToTop(Utils.isScrolledToTop(mLapsList));
+ }
+
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ setTabScrolledToTop(Utils.isScrolledToTop(mLapsList));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/timer/CountingTimerView.java b/src/com/android/deskclock/timer/CountingTimerView.java
index 7e7cd59..e276543 100644
--- a/src/com/android/deskclock/timer/CountingTimerView.java
+++ b/src/com/android/deskclock/timer/CountingTimerView.java
@@ -22,7 +22,9 @@
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
+import android.support.annotation.PluralsRes;
import android.text.TextUtils;
+import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -31,6 +33,7 @@
import com.android.deskclock.LogUtils;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
+import com.android.deskclock.uidata.UiDataModel;
import java.util.Locale;
@@ -38,13 +41,10 @@
* Class to measure and draw the time in the {@link com.android.deskclock.CircleTimerView}.
* This class manages and sums the work of the four members mBigHours, mBigMinutes,
* mBigSeconds and mMedHundredths. Those members are each tasked with measuring, sizing and
- * drawing digits (and optional label) of the time set in {@link #setTime(long, boolean, boolean)}
+ * drawing digits (and optional label) of the time set in {@link #setTime(long, boolean)}
*/
public class CountingTimerView extends View {
- private static final String TWO_DIGITS = "%02d";
- private static final String ONE_DIGIT = "%01d";
- private static final String NEG_TWO_DIGITS = "-%02d";
- private static final String NEG_ONE_DIGIT = "-%01d";
+
private static final float TEXT_SIZE_TO_WIDTH_RATIO = 0.85f;
// This is the ratio of the font height needed to vertically offset the font for alignment
// from the center.
@@ -53,6 +53,10 @@
private static final float HOURS_MINUTES_SPACING = 0.4f;
// Ratio of the space leading the Hundredths
private static final float HUNDREDTHS_SPACING = 0.5f;
+
+ /** Reusable StringBuilder to assemble talk back announcements when the time is updated. */
+ private static final StringBuilder sTalkBackBuilder = new StringBuilder(50);
+
// Radial offset of the enclosing circle
private final float mRadiusOffset;
@@ -81,6 +85,10 @@
private boolean mVirtualButtonEnabled = false;
private boolean mVirtualButtonPressedOn = false;
+ // Whether or not a bounding circle exists into which the text must be made to fit.
+ // If no such circle exists, the entire width of this component is available for text display.
+ private boolean mShowBoundingCircle;
+
Runnable mBlinkThread = new Runnable() {
private boolean mVisible = true;
@Override
@@ -306,35 +314,43 @@
mPaintMed.setColor(textColor);
}
+ public void setShowBoundingCircle(boolean showBoundingCircle) {
+ mShowBoundingCircle = showBoundingCircle;
+ requestLayout();
+ }
+
/**
* Update the time to display. Separates that time into the hours, minutes, seconds and
* hundredths. If update is true, the view is invalidated so that it will draw again.
*
* @param time new time to display - in milliseconds
* @param showHundredths flag to show hundredths resolution
- * @param update to invalidate the view - otherwise the time is examined to see if it is within
- * 100 milliseconds of zero seconds and when so, invalidate the view.
*/
// TODO:showHundredths S/B attribute or setter - i.e. unchanging over object life
- public void setTime(long time, boolean showHundredths, boolean update) {
- int oldLength = getDigitsLength();
+ public void setTime(long time, boolean showHundredths) {
+ final int oldLength = getDigitsLength();
boolean neg = false, showNeg = false;
- String format;
if (time < 0) {
time = -time;
neg = showNeg = true;
}
- long hundreds, seconds, minutes, hours;
- seconds = time / 1000;
- hundreds = (time - seconds * 1000) / 10;
- minutes = seconds / 60;
- seconds = seconds - minutes * 60;
- hours = minutes / 60;
- minutes = minutes - hours * 60;
+
+ int hours = (int) (time / DateUtils.HOUR_IN_MILLIS);
+ int remainder = (int) (time % DateUtils.HOUR_IN_MILLIS);
+
+ int minutes = (int) (remainder / DateUtils.MINUTE_IN_MILLIS);
+ remainder = (int) (remainder % DateUtils.MINUTE_IN_MILLIS);
+
+ int seconds = (int) (remainder / DateUtils.SECOND_IN_MILLIS);
+ remainder = (int) (remainder % DateUtils.SECOND_IN_MILLIS);
+
+ int hundredths = remainder / 10;
+
if (hours > 999) {
hours = 0;
}
- // The time can be between 0 and -1 seconds, but the "truncated" equivalent time of hours
+
+ // The time can be between 0 and -1 seconds, but the "truncated" equivalent time of hours
// and minutes and seconds could be zero, so since we do not show fractions of seconds
// when counting down, do not show the minus sign.
// TODO:does it matter that we do not look at showHundredths?
@@ -342,9 +358,9 @@
showNeg = false;
}
- // Normalize and check if it is 'time' to invalidate
+ // If not showing hundredths, round up to the next second.
if (!showHundredths) {
- if (!neg && hundreds != 0) {
+ if (!neg && hundredths != 0) {
seconds++;
if (seconds == 60) {
seconds = 0;
@@ -355,37 +371,28 @@
}
}
}
- if (hundreds < 10 || hundreds > 90) {
- update = true;
- }
}
- // Hours may be empty
- if (hours >= 10) {
- format = showNeg ? NEG_TWO_DIGITS : TWO_DIGITS;
- mHours = String.format(format, hours);
- } else if (hours > 0) {
- format = showNeg ? NEG_ONE_DIGIT : ONE_DIGIT;
- mHours = String.format(format, hours);
+ // Hours may be empty.
+ final UiDataModel uiDataModel = UiDataModel.getUiDataModel();
+ if (hours > 0) {
+ final int hoursLength = hours >= 10 ? 2 : 1;
+ mHours = uiDataModel.getFormattedNumber(showNeg, hours, hoursLength);
} else {
mHours = null;
}
- // Minutes are never empty and when hours are non-empty, must be two digits
- if (minutes >= 10 || hours > 0) {
- format = (showNeg && hours == 0) ? NEG_TWO_DIGITS : TWO_DIGITS;
- mMinutes = String.format(format, minutes);
- } else {
- format = (showNeg && hours == 0) ? NEG_ONE_DIGIT : ONE_DIGIT;
- mMinutes = String.format(format, minutes);
- }
+ // Minutes are never empty and forced to two digits when hours exist.
+ final boolean showNegMinutes = showNeg && hours == 0;
+ final int minutesLength = minutes >= 10 || hours > 0 ? 2 : 1;
+ mMinutes = uiDataModel.getFormattedNumber(showNegMinutes, minutes, minutesLength);
// Seconds are always two digits
- mSeconds = String.format(Locale.getDefault(), TWO_DIGITS, seconds);
+ mSeconds = uiDataModel.getFormattedNumber(seconds, 2);
- // Hundredths are optional and then two digits
+ // Hundredths are optional but forced to two digits when displayed.
if (showHundredths) {
- mHundredths = String.format(Locale.getDefault(), TWO_DIGITS, hundreds);
+ mHundredths = uiDataModel.getFormattedNumber(hundredths, 2);
} else {
mHundredths = null;
}
@@ -398,11 +405,9 @@
mRemeasureText = true;
}
- if (update) {
- setContentDescription(getTimeStringForAccessibility((int) hours, (int) minutes,
- (int) seconds, showNeg, getResources()));
- postInvalidateOnAnimation();
- }
+ setContentDescription(getTimeStringForAccessibility(hours, minutes, seconds, showNeg,
+ getResources()));
+ postInvalidateOnAnimation();
}
private int getDigitsLength() {
@@ -424,10 +429,18 @@
*/
private void setTotalTextWidth() {
calcTotalTextWidth();
- // To determine the maximum width, we find the minimum of the height and width (since the
- // circle we are trying to fit the text into has its radius sized to the smaller of the
- // two.
- int width = Math.min(getWidth(), getHeight());
+
+ int width;
+ if (mShowBoundingCircle) {
+ // A bounding circle exists, so the available width in which to fit the timer text is
+ // the smaller of the width or height, which is also equal to the circle's diameter.
+ width = Math.min(getWidth(), getHeight());
+ } else {
+ // A bounding circle does not exist, so pretend that the entire width of this component
+ // is the diameter of a theoretical bounding circle.
+ width = getWidth();
+ }
+
if (width != 0) {
// Shrink 'width' to account for circle stroke and other painted objects.
// Note on the "4 *": (1) To reduce divisions, using the diameter instead of the radius.
@@ -486,40 +499,32 @@
private static String getTimeStringForAccessibility(int hours, int minutes, int seconds,
boolean showNeg, Resources r) {
- StringBuilder s = new StringBuilder();
+ sTalkBackBuilder.setLength(0);
if (showNeg) {
// This must be followed by a non-zero number or it will be audible as "hyphen"
// instead of "minus".
- s.append("-");
+ sTalkBackBuilder.append('-');
}
if (showNeg && hours == 0 && minutes == 0) {
// Non-negative time will always have minutes, eg. "0 minutes 7 seconds", but negative
// time must start with non-zero digit, eg. -0m7s will be audible as just "-7 seconds"
- s.append(String.format(
- r.getQuantityText(R.plurals.Nseconds_description, seconds).toString(),
- seconds));
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nseconds_description, seconds));
} else if (hours == 0) {
- s.append(String.format(
- r.getQuantityText(R.plurals.Nminutes_description, minutes).toString(),
- minutes));
- s.append(" ");
- s.append(String.format(
- r.getQuantityText(R.plurals.Nseconds_description, seconds).toString(),
- seconds));
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nminutes_description, minutes));
+ sTalkBackBuilder.append(' ');
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nseconds_description, seconds));
} else {
- s.append(String.format(
- r.getQuantityText(R.plurals.Nhours_description, hours).toString(),
- hours));
- s.append(" ");
- s.append(String.format(
- r.getQuantityText(R.plurals.Nminutes_description, minutes).toString(),
- minutes));
- s.append(" ");
- s.append(String.format(
- r.getQuantityText(R.plurals.Nseconds_description, seconds).toString(),
- seconds));
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nhours_description, hours));
+ sTalkBackBuilder.append(' ');
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nminutes_description, minutes));
+ sTalkBackBuilder.append(' ');
+ sTalkBackBuilder.append(getQuantityString(r, R.plurals.Nseconds_description, seconds));
}
- return s.toString();
+ return sTalkBackBuilder.toString();
+ }
+
+ private static String getQuantityString(Resources r, @PluralsRes int resId, int quantity) {
+ return r.getQuantityString(resId, quantity, quantity);
}
public void setVirtualButtonEnabled(boolean enabled) {
diff --git a/src/com/android/deskclock/timer/TimerFragment.java b/src/com/android/deskclock/timer/TimerFragment.java
index 481247f..0803936 100644
--- a/src/com/android/deskclock/timer/TimerFragment.java
+++ b/src/com/android/deskclock/timer/TimerFragment.java
@@ -27,6 +27,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.support.v4.view.ViewPager;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -129,8 +130,8 @@
}
@Override
- public void onResume() {
- super.onResume();
+ public void onStart() {
+ super.onStart();
// Initialize the page indicators.
updatePageIndicators();
@@ -348,6 +349,14 @@
animateToView(mCreateTimerView, null);
}
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (mCurrentView == mCreateTimerView) {
+ return mCreateTimerView.onKeyDown(keyCode, event);
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
/**
* Updates the state of the page indicators so they reflect the selected page in the context of
* all pages.
diff --git a/src/com/android/deskclock/timer/TimerItem.java b/src/com/android/deskclock/timer/TimerItem.java
index 9c9b12e..9bf03c8 100644
--- a/src/com/android/deskclock/timer/TimerItem.java
+++ b/src/com/android/deskclock/timer/TimerItem.java
@@ -24,7 +24,6 @@
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.deskclock.CircleButtonsLayout;
import com.android.deskclock.R;
import com.android.deskclock.data.Timer;
@@ -63,10 +62,7 @@
mResetAddButton = (ImageView) findViewById(R.id.reset_add);
mCircleView = (TimerCircleView) findViewById(R.id.timer_time);
mTimerText = (CountingTimerView) findViewById(R.id.timer_time_text);
-
- // This layout positions dynamically positions the label and reset buttons.
- final CircleButtonsLayout cbl = (CircleButtonsLayout) findViewById(R.id.timer_circle);
- cbl.setCircleTimerViewIds(R.id.timer_time, R.id.reset_add, R.id.timer_label);
+ mTimerText.setShowBoundingCircle(mCircleView != null);
}
/**
@@ -74,10 +70,7 @@
*/
void update(Timer timer) {
// Update the time.
- mTimerText.setTime(timer.getRemainingTime(), false, true);
-
- // Update the progress of the circle.
- mCircleView.update(timer);
+ mTimerText.setTime(timer.getRemainingTime(), false);
// Update the label if it changed.
final String label = timer.getLabel();
@@ -87,7 +80,15 @@
// Update visibility of things that may blink.
final boolean blinkOff = SystemClock.elapsedRealtime() % 1000 < 500;
- mCircleView.setVisibility(timer.isExpired() && blinkOff ? INVISIBLE : VISIBLE);
+ if (mCircleView != null) {
+ final boolean hideCircle = timer.isExpired() && blinkOff;
+ mCircleView.setVisibility(hideCircle ? INVISIBLE : VISIBLE);
+
+ if (!hideCircle) {
+ // Update the progress of the circle.
+ mCircleView.update(timer);
+ }
+ }
mTimerText.showTime(!timer.isPaused() || !blinkOff);
// Update some potentially expensive areas of the user interface only on state changes.
@@ -125,4 +126,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/src/com/android/deskclock/timer/TimerSetupView.java b/src/com/android/deskclock/timer/TimerSetupView.java
index 4b43ff6..6bc74be 100644
--- a/src/com/android/deskclock/timer/TimerSetupView.java
+++ b/src/com/android/deskclock/timer/TimerSetupView.java
@@ -22,6 +22,7 @@
import android.support.v4.content.ContextCompat;
import android.text.format.DateUtils;
import android.util.AttributeSet;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
@@ -31,11 +32,13 @@
import com.android.deskclock.FabContainer;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
+import com.android.deskclock.uidata.UiDataModel;
import java.io.Serializable;
import java.util.Arrays;
import static com.android.deskclock.FabContainer.UpdateType.FAB_ONLY_SHRINK_AND_EXPAND;
+import static com.android.deskclock.FabContainer.UpdateType.FAB_REQUESTS_FOCUS;
public class TimerSetupView extends LinearLayout implements Button.OnClickListener,
Button.OnLongClickListener {
@@ -63,7 +66,7 @@
mColorAccent = Utils.obtainStyledColor(context, R.attr.colorAccent, Color.RED);
mColorHairline = ContextCompat.getColor(context, R.color.hairline);
- LayoutInflater.from(context).inflate(R.layout.time_setup_view, this);
+ LayoutInflater.from(context).inflate(R.layout.time_setup_container, this);
}
void setFabContainer(FabContainer fabContainer) {
@@ -101,9 +104,10 @@
v4.findViewById(R.id.key_left).setVisibility(INVISIBLE);
v4.findViewById(R.id.key_right).setVisibility(INVISIBLE);
+ final UiDataModel uiDataModel = UiDataModel.getUiDataModel();
for (int i = 0; i < mNumbers.length; i++) {
mNumbers[i].setOnClickListener(this);
- mNumbers[i].setText(String.valueOf(i));
+ mNumbers[i].setText(uiDataModel.getFormattedNumber(i, 1));
mNumbers[i].setTextColor(Color.WHITE);
mNumbers[i].setTag(R.id.numbers_key, i);
}
@@ -111,6 +115,42 @@
updateTime();
}
+ private boolean clickButton(View button) {
+ button.performClick();
+ mFabContainer.updateFab(FAB_REQUESTS_FOCUS);
+ return true;
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_0:
+ return clickButton(mNumbers[0]);
+ case KeyEvent.KEYCODE_1:
+ return clickButton(mNumbers[1]);
+ case KeyEvent.KEYCODE_2:
+ return clickButton(mNumbers[2]);
+ case KeyEvent.KEYCODE_3:
+ return clickButton(mNumbers[3]);
+ case KeyEvent.KEYCODE_4:
+ return clickButton(mNumbers[4]);
+ case KeyEvent.KEYCODE_5:
+ return clickButton(mNumbers[5]);
+ case KeyEvent.KEYCODE_6:
+ return clickButton(mNumbers[6]);
+ case KeyEvent.KEYCODE_7:
+ return clickButton(mNumbers[7]);
+ case KeyEvent.KEYCODE_8:
+ return clickButton(mNumbers[8]);
+ case KeyEvent.KEYCODE_9:
+ return clickButton(mNumbers[9]);
+ case KeyEvent.KEYCODE_DEL:
+ return clickButton(mDelete);
+ default:
+ return false;
+ }
+ }
+
@Override
public void onClick(View v) {
final boolean validInputBeforeClick = hasValidInput();
diff --git a/src/com/android/deskclock/timer/TimerView.java b/src/com/android/deskclock/timer/TimerView.java
index 6394283..e95ebbe 100644
--- a/src/com/android/deskclock/timer/TimerView.java
+++ b/src/com/android/deskclock/timer/TimerView.java
@@ -24,6 +24,7 @@
import android.widget.TextView;
import com.android.deskclock.R;
+import com.android.deskclock.uidata.UiDataModel;
import java.util.Locale;
@@ -87,11 +88,12 @@
public void setTime(int hoursTensDigit, int hoursOnesDigit, int minutesTensDigit,
int minutesOnesDigit, int seconds) {
+ final UiDataModel uiDataModel = UiDataModel.getUiDataModel();
if (hoursTensDigit == -1) {
mHoursTens.setText("-");
mHoursTens.setTextColor(mGrayColor);
} else {
- mHoursTens.setText(String.valueOf(hoursTensDigit));
+ mHoursTens.setText(uiDataModel.getFormattedNumber(hoursTensDigit, 1));
mHoursTens.setTextColor(mWhiteColor);
}
@@ -99,7 +101,7 @@
mHoursOnes.setText("-");
mHoursOnes.setTextColor(mGrayColor);
} else {
- mHoursOnes.setText(String.valueOf(hoursOnesDigit));
+ mHoursOnes.setText(uiDataModel.getFormattedNumber(hoursOnesDigit, 1));
mHoursOnes.setTextColor(mWhiteColor);
}
@@ -107,7 +109,7 @@
mMinutesTens.setText("-");
mMinutesTens.setTextColor(mGrayColor);
} else {
- mMinutesTens.setText(String.valueOf(minutesTensDigit));
+ mMinutesTens.setText(uiDataModel.getFormattedNumber(minutesTensDigit, 1));
mMinutesTens.setTextColor(mWhiteColor);
}
@@ -115,10 +117,10 @@
mMinutesOnes.setText("-");
mMinutesOnes.setTextColor(mGrayColor);
} else {
- mMinutesOnes.setText(String.valueOf(minutesOnesDigit));
+ mMinutesOnes.setText(uiDataModel.getFormattedNumber(minutesOnesDigit, 1));
mMinutesOnes.setTextColor(mWhiteColor);
}
- mSeconds.setText(String.format(Locale.getDefault(), "%02d", seconds));
+ mSeconds.setText(uiDataModel.getFormattedNumber(seconds, 2));
}
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/uidata/TabDAO.java b/src/com/android/deskclock/uidata/TabDAO.java
index 2b8aba8..429dbea 100644
--- a/src/com/android/deskclock/uidata/TabDAO.java
+++ b/src/com/android/deskclock/uidata/TabDAO.java
@@ -20,6 +20,8 @@
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import com.android.deskclock.Utils;
+
import static com.android.deskclock.uidata.UiDataModel.Tab;
/**
@@ -52,9 +54,9 @@
private static SharedPreferences getSharedPreferences(Context context) {
if (sPrefs == null) {
- sPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
+ sPrefs = Utils.getDefaultSharedPreferences(context.getApplicationContext());
}
return sPrefs;
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/deskclock/uidata/UiDataModel.java b/src/com/android/deskclock/uidata/UiDataModel.java
index 921a419..8aeb512 100644
--- a/src/com/android/deskclock/uidata/UiDataModel.java
+++ b/src/com/android/deskclock/uidata/UiDataModel.java
@@ -16,9 +16,13 @@
package com.android.deskclock.uidata;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
+import android.util.SparseArray;
import com.android.deskclock.AlarmClockFragment;
import com.android.deskclock.ClockFragment;
@@ -26,6 +30,8 @@
import com.android.deskclock.stopwatch.StopwatchFragment;
import com.android.deskclock.timer.TimerFragment;
+import java.util.Locale;
+
import static com.android.deskclock.Utils.enforceMainLooper;
/**
@@ -62,6 +68,17 @@
return sUiDataModel;
}
+ /** Clears data structures containing data that is locale-sensitive. */
+ @SuppressWarnings("FieldCanBeLocal")
+ private final BroadcastReceiver mLocaleChangedReceiver = new LocaleChangedReceiver();
+
+ /**
+ * Caches formatted numbers in the current locale padded with zeroes to requested lengths.
+ * The first level of the cache maps length to the second level of the cache.
+ * The second level of the cache maps an integer to a formatted String in the current locale.
+ */
+ private final SparseArray<SparseArray<String>> mNumberFormatCache = new SparseArray<>(3);
+
private Context mContext;
/** The model from which tab data are fetched. */
@@ -83,6 +100,67 @@
mTabModel = new TabModel(mContext);
mPeriodicCallbackModel = new PeriodicCallbackModel(mContext);
+
+ // Clear caches affected by locale when locale changes.
+ final IntentFilter localeBroadcastFilter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
+ mContext.registerReceiver(mLocaleChangedReceiver, localeBroadcastFilter);
+ }
+
+ //
+ // Number Formatting
+ //
+
+ /**
+ * This method is intended to be used when formatting numbers occurs in a hotspot such as the
+ * update loop of a timer or stopwatch. It returns cached results when possible in order to
+ * provide speed and limit garbage to be collected by the virtual machine.
+ *
+ * @param value a positive integer to format as a String
+ * @param length the length of the String; zeroes are padded to match this length
+ * @return the {@code value} formatted as a String in the current locale and padded to the
+ * requested {@code length}
+ * @throws IllegalArgumentException if {@code value} is negative
+ */
+ public String getFormattedNumber(int value, int length) {
+ return getFormattedNumber(false, value, length);
+ }
+
+ /**
+ * This method is intended to be used when formatting numbers occurs in a hotspot such as the
+ * update loop of a timer or stopwatch. It returns cached results when possible in order to
+ * provide speed and limit garbage to be collected by the virtual machine.
+ *
+ * @param negative force a minus sign (-) onto the display, even if {@code value} is {@code 0}
+ * @param value a positive integer to format as a String
+ * @param length the length of the String; zeroes are padded to match this length. If
+ * {@code negative} is {@code true} the return value will contain a minus sign and a total
+ * length of {@code length + 1}.
+ * @return the {@code value} formatted as a String in the current locale and padded to the
+ * requested {@code length}
+ * @throws IllegalArgumentException if {@code value} is negative
+ */
+ public String getFormattedNumber(boolean negative, int value, int length) {
+ if (value < 0) {
+ throw new IllegalArgumentException("value may not be negative: " + value);
+ }
+
+ // Look up the value cache using the length; -ve and +ve values are cached separately.
+ final int lengthCacheKey = negative ? -length : length;
+ SparseArray<String> valueCache = mNumberFormatCache.get(lengthCacheKey);
+ if (valueCache == null) {
+ valueCache = new SparseArray<>((int) Math.pow(10, length));
+ mNumberFormatCache.put(lengthCacheKey, valueCache);
+ }
+
+ // Look up the cached formatted value using the value.
+ String formatted = valueCache.get(value);
+ if (formatted == null) {
+ final String sign = negative ? "−" : "";
+ formatted = String.format(Locale.getDefault(), sign + "%0" + length + "d", value);
+ valueCache.put(value, formatted);
+ }
+
+ return formatted;
}
//
@@ -261,4 +339,14 @@
enforceMainLooper();
mPeriodicCallbackModel.removePeriodicCallback(runnable);
}
+
+ /**
+ * Cached information that is locale-sensitive must be cleared in response to locale changes.
+ */
+ private final class LocaleChangedReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mNumberFormatCache.clear();
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/android/deskclock/widget/AlphaSafeImageButton.java b/src/com/android/deskclock/widget/AlphaSafeImageButton.java
deleted file mode 100644
index 9983e27..0000000
--- a/src/com/android/deskclock/widget/AlphaSafeImageButton.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.deskclock.widget;
-
-import android.content.Context;
-import android.graphics.drawable.RippleDrawable;
-import android.support.v7.widget.AppCompatImageButton;
-import android.util.AttributeSet;
-
-import com.android.deskclock.Utils;
-
-/**
- * A lightweight {@code ImageButton} subclass to provide a workaround for bad interactions
- * when animating a View's alpha with a {@link RippleDrawable} background.
- */
-public class AlphaSafeImageButton extends AppCompatImageButton {
-
- public AlphaSafeImageButton(Context context) {
- super(context);
- }
-
- public AlphaSafeImageButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public AlphaSafeImageButton(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- /**
- * Returns {@code false} if the background is a {@link RippleDrawable}.
- */
- @Override
- public boolean hasOverlappingRendering() {
- if (Utils.isLOrLater() && getBackground() instanceof RippleDrawable) {
- return false;
- }
- return super.hasOverlappingRendering();
- }
-}
diff --git a/src/com/android/deskclock/worldclock/CitySelectionActivity.java b/src/com/android/deskclock/worldclock/CitySelectionActivity.java
index 9a09d2d..2fb4eeb 100644
--- a/src/com/android/deskclock/worldclock/CitySelectionActivity.java
+++ b/src/com/android/deskclock/worldclock/CitySelectionActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 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
@@ -39,12 +39,12 @@
import com.android.deskclock.DropShadowController;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
-import com.android.deskclock.actionbarmenu.AbstractMenuItemController;
-import com.android.deskclock.actionbarmenu.ActionBarMenuManager;
+import com.android.deskclock.actionbarmenu.OptionsMenuManager;
+import com.android.deskclock.actionbarmenu.MenuItemController;
import com.android.deskclock.actionbarmenu.MenuItemControllerFactory;
import com.android.deskclock.actionbarmenu.NavUpMenuItemController;
import com.android.deskclock.actionbarmenu.SearchMenuItemController;
-import com.android.deskclock.actionbarmenu.SettingMenuItemController;
+import com.android.deskclock.actionbarmenu.SettingsMenuItemController;
import com.android.deskclock.data.City;
import com.android.deskclock.data.DataModel;
@@ -58,6 +58,8 @@
import java.util.Set;
import java.util.TimeZone;
+import static android.view.Menu.NONE;
+
/**
* This activity allows the user to alter the cities selected for display.
*
@@ -80,7 +82,7 @@
private CityAdapter mCitiesAdapter;
/** Manages all action bar menu display and click handling. */
- private final ActionBarMenuManager mActionBarMenuManager = new ActionBarMenuManager();
+ private final OptionsMenuManager mOptionsMenuManager = new OptionsMenuManager();
/** Menu item controller for search view. */
private SearchMenuItemController mSearchMenuItemController;
@@ -94,7 +96,7 @@
setContentView(R.layout.cities_activity);
mSearchMenuItemController =
- new SearchMenuItemController(new SearchView.OnQueryTextListener() {
+ new SearchMenuItemController(this, new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
@@ -108,10 +110,10 @@
}
}, savedInstanceState);
mCitiesAdapter = new CityAdapter(this, mSearchMenuItemController);
- mActionBarMenuManager.addMenuItemController(new NavUpMenuItemController(this))
+ mOptionsMenuManager.addMenuItemController(new NavUpMenuItemController(this))
.addMenuItemController(mSearchMenuItemController)
.addMenuItemController(new SortOrderMenuItemController())
- .addMenuItemController(new SettingMenuItemController(this))
+ .addMenuItemController(new SettingsMenuItemController(this))
.addMenuItemController(MenuItemControllerFactory.getInstance()
.buildMenuItemControllers(this));
mCitiesList = (ListView) findViewById(R.id.cities_list);
@@ -150,22 +152,20 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- mActionBarMenuManager.createOptionsMenu(menu, getMenuInflater());
+ mOptionsMenuManager.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- mActionBarMenuManager.prepareShowMenu(menu);
+ mOptionsMenuManager.onPrepareOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (mActionBarMenuManager.handleMenuItemClick(item)) {
- return true;
- }
- return super.onOptionsItemSelected(item);
+ return mOptionsMenuManager.onOptionsItemSelected(item)
+ || super.onOptionsItemSelected(item);
}
/**
@@ -568,7 +568,7 @@
}
}
- private final class SortOrderMenuItemController extends AbstractMenuItemController {
+ private final class SortOrderMenuItemController implements MenuItemController {
private static final int SORT_MENU_RES_ID = R.id.menu_item_sort;
@@ -578,20 +578,19 @@
}
@Override
- public void showMenuItem(Menu menu) {
- final MenuItem sortMenuItem = menu.findItem(SORT_MENU_RES_ID);
- final String title;
- if (DataModel.getDataModel().getCitySort() == DataModel.CitySort.NAME) {
- title = getString(R.string.menu_item_sort_by_gmt_offset);
- } else {
- title = getString(R.string.menu_item_sort_by_name);
- }
- sortMenuItem.setTitle(title);
- sortMenuItem.setVisible(true);
+ public void onCreateOptionsItem(Menu menu) {
+ menu.add(NONE, R.id.menu_item_sort, NONE, R.string.menu_item_sort_by_gmt_offset)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
@Override
- public boolean handleMenuItemClick(MenuItem item) {
+ public void onPrepareOptionsItem(MenuItem item) {
+ item.setTitle(DataModel.getDataModel().getCitySort() == DataModel.CitySort.NAME
+ ? R.string.menu_item_sort_by_gmt_offset : R.string.menu_item_sort_by_name);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
// Save the new sort order.
DataModel.getDataModel().toggleCitySort();