diff options
30 files changed, 1384 insertions, 165 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 295dba8e5..d100c00fc 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -59,6 +59,18 @@ <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> + + <activity + android:name="ColorPicker" + android:label="@string/color_picker" + android:taskAffinity="" + android:excludeFromRecents="true" + android:theme="@android:style/Theme.Dialog"> + <intent-filter> + <action android:name="com.android.alarmclock.ColorPicker" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> <activity android:name="SetAlarm" android:label="@string/set_alarm" android:configChanges="orientation|keyboardHidden|keyboard|navigation" /> diff --git a/res/drawable-hdpi/dialog.9.png b/res/drawable-hdpi/dialog.9.png Binary files differindex 16ca7e608..03175d44f 100644 --- a/res/drawable-hdpi/dialog.9.png +++ b/res/drawable-hdpi/dialog.9.png diff --git a/res/drawable-hdpi/ic_lock_idle_alarm_saver.png b/res/drawable-hdpi/ic_lock_idle_alarm_saver.png Binary files differindex fbc98d884..27e3e371b 100644 --- a/res/drawable-hdpi/ic_lock_idle_alarm_saver.png +++ b/res/drawable-hdpi/ic_lock_idle_alarm_saver.png diff --git a/res/drawable-mdpi/dialog.9.png b/res/drawable-mdpi/dialog.9.png Binary files differindex 2305be464..822b6c632 100644 --- a/res/drawable-mdpi/dialog.9.png +++ b/res/drawable-mdpi/dialog.9.png diff --git a/res/drawable-mdpi/ic_lock_idle_alarm_saver.png b/res/drawable-mdpi/ic_lock_idle_alarm_saver.png Binary files differindex a1815df14..888390a87 100644 --- a/res/drawable-mdpi/ic_lock_idle_alarm_saver.png +++ b/res/drawable-mdpi/ic_lock_idle_alarm_saver.png diff --git a/res/layout-land/color_picker.xml b/res/layout-land/color_picker.xml new file mode 100644 index 000000000..30d1df371 --- /dev/null +++ b/res/layout-land/color_picker.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/colorPickerFrame" + android:layout_width="380dip" + android:layout_height="260dip" > + + + <TextView + android:id="@+id/color_picker_alpha" + android:text="@string/color_picker_alpha" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|left" + android:layout_marginTop="0dip" /> + + <SeekBar + android:id="@+id/a_seekbar" + android:layout_width="150dip" + android:layout_height="30dip" + android:layout_gravity="top|left" + android:layout_marginTop="20dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_red" + android:text="@string/color_picker_red" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|left" + android:layout_marginTop="50dip" /> + + <SeekBar + android:id="@+id/r_seekbar" + android:layout_width="150dip" + android:layout_height="30dip" + android:layout_gravity="top|left" + android:layout_marginTop="70dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_green" + android:text="@string/color_picker_green" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|left" + android:layout_marginTop="100dip" /> + + <SeekBar + android:id="@+id/g_seekbar" + android:layout_width="150dip" + android:layout_height="30dip" + android:layout_gravity="top|left" + android:layout_marginTop="120dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_blue" + android:text="@string/color_picker_blue" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|left" + android:layout_marginTop="150dip" /> + + <SeekBar + android:id="@+id/b_seekbar" + android:layout_width="150dip" + android:layout_height="30dip" + android:layout_gravity="top|left" + android:layout_marginTop="170dip" + android:max="255" + android:progress="0" /> + + <FrameLayout + android:id="@+id/colorsampleLayout" + android:background="#000" + android:layout_width="200dip" + android:layout_height="100dip" + android:layout_gravity="center_horizontal|right" + android:layout_marginTop="50dip" + android:layout_marginRight="10dip"> + + <TextView + android:id="@+id/color_picker_sample" + android:text="@string/color_picker_sample" + android:textSize="60dip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" android:layout_gravity="center"/> + + </FrameLayout> +</FrameLayout> diff --git a/res/layout/alarm_alert.xml b/res/layout/alarm_alert.xml index 2e0601064..e4640ed34 100644 --- a/res/layout/alarm_alert.xml +++ b/res/layout/alarm_alert.xml @@ -81,6 +81,7 @@ <!-- blank stretchable view --> <View + android:id="@+id/spacer" android:layout_width="2dip" android:layout_height="2dip" android:layout_gravity="fill_horizontal" diff --git a/res/layout/color_picker.xml b/res/layout/color_picker.xml new file mode 100644 index 000000000..12bba3cec --- /dev/null +++ b/res/layout/color_picker.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/colorPickerFrame" + android:layout_width="270dip" + android:layout_height="320dip" > + + + <TextView + android:id="@+id/color_picker_alpha" + android:text="@string/color_picker_alpha" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|center" + android:layout_marginTop="0dip" /> + + <SeekBar + android:id="@+id/a_seekbar" + android:layout_width="180dip" + android:layout_height="30dip" + android:layout_gravity="top|center" + android:layout_marginTop="20dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_red" + android:text="@string/color_picker_red" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|center" + android:layout_marginTop="50dip" /> + + <SeekBar + android:id="@+id/r_seekbar" + android:layout_width="180dip" + android:layout_height="30dip" + android:layout_gravity="top|center" + android:layout_marginTop="70dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_green" + android:text="@string/color_picker_green" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|center" + android:layout_marginTop="100dip" /> + + <SeekBar + android:id="@+id/g_seekbar" + android:layout_width="180dip" + android:layout_height="30dip" + android:layout_gravity="top|center" + android:layout_marginTop="120dip" + android:max="255" + android:progress="0" /> + + <TextView + android:id="@+id/color_picker_blue" + android:text="@string/color_picker_blue" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|center" + android:layout_marginTop="150dip" /> + + <SeekBar + android:id="@+id/b_seekbar" + android:layout_width="180dip" + android:layout_height="30dip" + android:layout_gravity="top|center" + android:layout_marginTop="170dip" + android:max="255" + android:progress="0" /> + + <FrameLayout + android:id="@+id/colorsampleLayout" + android:background="#000" + android:layout_width="200dip" + android:layout_height="100dip" + android:layout_gravity="bottom|center" + android:layout_marginBottom="15dip"> + + <TextView + android:id="@+id/color_picker_sample" + android:text="@string/color_picker_sample" + android:textSize="80dip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" /> + + </FrameLayout> +</FrameLayout> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 13103c288..07beada20 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -29,6 +29,20 @@ <string name="hide_clock" msgid="3217727306480505694">"Uhr ausblenden"</string> <string name="label" msgid="162189613902857319">"Label"</string> <string name="default_label" msgid="5590025289805630372">"Wecker"</string> + + <!-- Setting label on Set alarm screen: Application to launch --> + <string name="application">Anwendung</string> + <!-- Title on the application picker --> + <string name="application_title">Diese App starten</string> + <!-- Option to not launch an application --> + <string name="application_none">Keine</string> + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Dialog verbergen</string> + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">Kein Snooze/Verwerfen-Dialog</string> + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">Zeige Snooze/Verwerfen-Dialog</string> + <string name="set_alarm" msgid="9148359866152726808">"Wecker einstellen"</string> <string name="alarm_vibrate" msgid="3476686921490362230">"Vibrieren"</string> <string name="alarm_repeat" msgid="7242985466344233206">"Wiederholen"</string> @@ -36,7 +50,11 @@ <string name="time" msgid="8067216534232296518">"Uhrzeit"</string> <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Ausschalten"</string> <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Der Wecker verstummte nach <xliff:g id="MINUTES">%d</xliff:g> Minuten"</string> - <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Snooze-Funktion"</string> + <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Snooze"</string> + + <!-- Button labels on the alarm dialog: Snooze & dismiss (when dual-mode button enabled) --> + <string name="alarm_alert_snooze_text_dual_mode">Snooze (Halten zum Verwerfen)</string> + <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Snooze-Funktion aktiviert für <xliff:g id="MINUTES">%d</xliff:g> Minuten"</string> <string-array name="alarm_set"> <item msgid="5163476010406761625">"Dieser Wecker klingelt in weniger als 1 Minute."</item> @@ -111,4 +129,54 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"Wetterinformationen derzeit nicht verfügbar"</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"Dock-Einstellungen"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Tonwiedergabedienst für in DeskClock eingestellte Alarme"</string> + + <!-- Setting title for setting alarm time limit --> + <string name="alarm_limit_title">Maximale Alarmdauer</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 Minuten</item> + <item>15 Minuten</item> + <item>30 Minuten</item> + <item>60 Minuten</item> + <item>90 Minuten</item> + <item>120 Minuten</item> + <item>Unendlich</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">Screensaver timeout</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 Minute</item> + <item>5 Minuten</item> + <item>10 Minuten</item> + <item>15 Minuten</item> + <item>30 Minuten</item> + <item>60 Minuten</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">Farbe: Zeit</string> + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">Farbe der Uhrzeit (Bildschirmschoner)</string> + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">Die Farbe der Zeitanzeige beim Bildschirmschoner ändern</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">Transparenz (nur gedimmt)</string> + <string name="color_picker_red">Rot</string> + <string name="color_picker_green">Grün</string> + <string name="color_picker_blue">Blau</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Dual-Mode Snooze</string> + <string name="use_dual_mode_button_on">Snooze-Taste gedrückt halten um den Wecker zu beenden</string> + <string name="use_dual_mode_button_off">Separate Tasten für Snooze und Verwerfen</string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c98225273..6722dc78e 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -29,6 +29,18 @@ <string name="hide_clock" msgid="3217727306480505694">"Masquer l\'horloge"</string> <string name="label" msgid="162189613902857319">"Libellé"</string> <string name="default_label" msgid="5590025289805630372">"Alarme"</string> + <!-- Setting label on Set alarm screen: Application to launch --> + <string name="application">Application</string> + <!-- Title on the application picker --> + <string name="application_title">Application à lancer</string> + <!-- Option to not launch an application --> + <string name="application_none">Aucune</string> + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Cacher Répéter/Désactiver</string> + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">La boîte de dialogue Répéter/Désactiver sera cachée</string> + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">La boîte de dialogue Répéter/Désactiver sera affichée</string> <string name="set_alarm" msgid="9148359866152726808">"Régler l\'alarme"</string> <string name="alarm_vibrate" msgid="3476686921490362230">"Vibreur"</string> <string name="alarm_repeat" msgid="7242985466344233206">"Répéter"</string> @@ -37,6 +49,7 @@ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Quitter"</string> <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Alarme interrompue après <xliff:g id="MINUTES">%d</xliff:g> minutes"</string> <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Répéter"</string> + <string name="alarm_alert_snooze_text_dual_mode">Répéter (Maintenir pour quitter)</string> <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Répétition dans <xliff:g id="MINUTES">%d</xliff:g> minutes."</string> <string-array name="alarm_set"> <item msgid="5163476010406761625">"Prochaine alarme dans moins d\'une minute."</item> @@ -111,4 +124,18 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"La météo n\'est pas disponible pour le moment."</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"Paramètres station d\'accueil"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Lancez le service de lecture pour les alarmes définies via l\'Horloge de bureau."</string> + <string name="alarm_limit_title">Durée alarme maximum</string> + <string name="screensaver_timeout_title">Temps avant veille</string> + <string name="color_picker">Couleur de l\'heure</string> + <string name="color_picker_title">Couleur heure (économiseur)</string> + <string name="color_picker_summary">Changer la couleur de l\'heure affichée en mode économiseur d\'écran</string> + <string name="color_picker_alpha">Transparence (Obscurci uniquement)</string> + <string name="color_picker_red">Rouge</string> + <string name="color_picker_green">Vert</string> + <string name="color_picker_blue">Bleu</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Mode dual Snooze</string> + <string name="use_dual_mode_button_on">Une pression longue sur le bouton Répéter annulera l\'alarme</string> + <string name="use_dual_mode_button_off">Les boutons Répéter et Quitter seront séparés</string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 2893ecde0..2638d78c1 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -29,6 +29,23 @@ <string name="hide_clock" msgid="3217727306480505694">"Nascondi orologio"</string> <string name="label" msgid="162189613902857319">"Etichetta"</string> <string name="default_label" msgid="5590025289805630372">"Allarme"</string> + <!-- Setting label on Set alarm screen: Application to launch --> + <string name="application">Applicazione</string> + + <!-- Title on the application picker --> + <string name="application_title">App da avviare</string> + + <!-- Option to not launch an application --> + <string name="application_none">Nessuna</string> + + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Nascondi finestra</string> + + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">Non verrà visualizzata la finestra di dialogo spegni/posponi</string> + + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">La finestra di dialogo spegni/posponi verrà visualizzata</string> <string name="set_alarm" msgid="9148359866152726808">"Imposta allarme"</string> <string name="alarm_vibrate" msgid="3476686921490362230">"Vibrazione"</string> <string name="alarm_repeat" msgid="7242985466344233206">"Ripeti"</string> @@ -37,6 +54,8 @@ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Spegni"</string> <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Tono allarme disattivato dopo <xliff:g id="MINUTES">%d</xliff:g> minuti"</string> <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Posponi"</string> + <!-- Button labels on the alarm dialog: Snooze & dismiss (when dual-mode button enabled) --> + <string name="alarm_alert_snooze_text_dual_mode">Posponi (tieni premuto per spegnere)</string> <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Sospensione per <xliff:g id="MINUTES">%d</xliff:g> minuti."</string> <string-array name="alarm_set"> <item msgid="5163476010406761625">"L\'allarme sarà attivato fra meno di 1 minuto."</item> @@ -111,4 +130,56 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"Informazioni meteo attualmente non disponibili."</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"Impostazioni dock"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Servizio di riproduzione dei suoni per gli allarmi impostati in DeskClock."</string> + + <!-- Setting title for setting alarm time limit --> + <string name="alarm_limit_title">Durata massima dell\'allarme</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 minuti</item> + <item>15 minuti</item> + <item>30 minuti</item> + <item>60 minuti</item> + <item>90 minuti</item> + <item>120 minuti</item> + <item>Infinito</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">Salvaschermo</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 minuto</item> + <item>5 minuti</item> + <item>10 minuti</item> + <item>15 minuti</item> + <item>30 minuti</item> + <item>60 minuti</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">Colore ora</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">Colore ora (Salvaschermo)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">Cambia il colore dell\'ora visualizzata in modalità salvaschermo</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">Luminosità</string> + <string name="color_picker_red">Rosso</string> + <string name="color_picker_green">Verde</string> + <string name="color_picker_blue">Blu</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Tasto doppio uso</string> + <string name="use_dual_mode_button_on">Tieni premuto il tasto Posponi per spegnere l\'allarme</string> + <string name="use_dual_mode_button_off">I tasti Posponi e Spegni saranno separati</string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index f0a4d5ee6..3eab19040 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -29,6 +29,14 @@ <string name="hide_clock" msgid="3217727306480505694">"時計を隠す"</string> <string name="label" msgid="162189613902857319">"ラベル"</string> <string name="default_label" msgid="5590025289805630372">"アラーム"</string> + + <string name="application">アプリケーション</string> + <string name="application_title">起動するアプリ</string> + <string name="application_none">なし</string> + <string name="no_dialog">ダイアログを隠す</string> + <string name="no_dialog_on">スヌーズ/停止のダイアログを表示しない</string> + <string name="no_dialog_off">スヌーズ/停止のダイアログを表示する</string> + <string name="set_alarm" msgid="9148359866152726808">"アラームを設定"</string> <string name="alarm_vibrate" msgid="3476686921490362230">"バイブレーション"</string> <string name="alarm_repeat" msgid="7242985466344233206">"繰り返し"</string> @@ -111,4 +119,53 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"天気予報は現在ご利用いただけません。"</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"ドックの設定"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"卓上時計で設定したアラーム用のサウンド再生サービスです。"</string> + + <string name="alarm_limit_title">アラームの最大持続時間</string> + <string-array name="alarm_limit_entries"> + <item>5 分</item> + <item>15 分</item> + <item>30 分</item> + <item>60 分</item> + <item>90 分</item> + <item>120 分</item> + <item>無制限</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">スクリーンセーバータイムアウト</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 分</item> + <item>5 分</item> + <item>10 分</item> + <item>15 分</item> + <item>30 分</item> + <item>60 分</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">時刻の色</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">時刻の色(スクリーンセーバー)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">スクリーンセーバーの時刻の色を変更する</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">透明度 (暗転時のみ)</string> + <string name="color_picker_red">赤</string> + <string name="color_picker_green">緑</string> + <string name="color_picker_blue">青</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">デュアルモードスヌーズ</string> + <string name="use_dual_mode_button_on">スヌーズボタンの長押しでアラームを停止します。</string> + <string name="use_dual_mode_button_off">スヌーズボタンと停止ボタンをわけて表示します。</string> + <string name="alarm_alert_snooze_text_dual_mode">スヌーズ(長押しで停止)</string> </resources> diff --git a/res/values-pt-rPT/donottranslate.xml b/res/values-pt-rPT/donottranslate.xml deleted file mode 100644 index ed4559fad..000000000 --- a/res/values-pt-rPT/donottranslate.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- String matching the lock screen format for displaying the date. --> - <string name="full_wday_month_day_no_year">EEE, d \'de\' MMMM</string> -</resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 2fe98e968..fc5722e5e 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2007 The Android Open Source Project +<?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. @@ -12,103 +12,301 @@ 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">"Relógio"</string> - <string name="alarm_list_title" msgid="7589940465292950600">"Alarmes"</string> - <string name="add_alarm" msgid="5976616107390962899">"Adicionar alarme"</string> - <string name="menu_desk_clock" msgid="3241995064554071588">"Relógio de secretária"</string> - <string name="menu_edit_alarm" msgid="7204602994918829751">"Editar alarme"</string> - <string name="delete_alarm" msgid="3457780990646206817">"Eliminar alarme"</string> - <string name="enable_alarm" msgid="1834599140632142536">"Activar alarme"</string> - <string name="disable_alarm" msgid="5889378670229554109">"Desactivar alarme"</string> - <string name="delete_alarm_confirm" msgid="4237696873219106907">"Este alarme será eliminado."</string> - <string name="show_clock" msgid="8358759982675616915">"Mostrar relógio"</string> - <string name="hide_clock" msgid="3217727306480505694">"Ocultar relógio"</string> - <string name="label" msgid="162189613902857319">"Etiqueta"</string> - <string name="default_label" msgid="5590025289805630372">"Alarme"</string> - <string name="set_alarm" msgid="9148359866152726808">"Definir alarme"</string> - <string name="alarm_vibrate" msgid="3476686921490362230">"Vibrar"</string> - <string name="alarm_repeat" msgid="7242985466344233206">"Repetir"</string> - <string name="alert" msgid="6539852766423700221">"Toque"</string> - <string name="time" msgid="8067216534232296518">"Hora"</string> - <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Ignorar"</string> - <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Alarme silenciado após <xliff:g id="MINUTES">%d</xliff:g> minutos."</string> - <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Suspender"</string> - <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Suspenso por <xliff:g id="MINUTES">%d</xliff:g> minutos."</string> - <string-array name="alarm_set"> - <item msgid="5163476010406761625">"Este alarme dispara daqui a menos de um minuto."</item> - <item msgid="7110525731259629055">"Este alarme dispara daqui a <xliff:g id="DAYS">%1$s</xliff:g>."</item> - <item msgid="7003982794086186185">"Este alarme dispara daqui a <xliff:g id="HOURS">%2$s</xliff:g>."</item> - <item msgid="7311021123230077742">"Este alarme dispara daqui a <xliff:g id="DAYS">%1$s</xliff:g> e <xliff:g id="HOURS">%2$s</xliff:g>."</item> - <item msgid="8431715191823114872">"Este alarme dispara daqui a <xliff:g id="MINUTES">%3$s</xliff:g>."</item> - <item msgid="3244151088673185428">"Este alarme dispara daqui a <xliff:g id="DAYS">%1$s</xliff:g> e <xliff:g id="MINUTES">%3$s</xliff:g>."</item> - <item msgid="3663661342600168814">"Este alarme dispara daqui a <xliff:g id="HOURS">%2$s</xliff:g> e <xliff:g id="MINUTES">%3$s</xliff:g>."</item> - <item msgid="7779544127785487304">"Este alarme dispara daqui a <xliff:g id="DAYS">%1$s</xliff:g>, <xliff:g id="HOURS">%2$s</xliff:g> e <xliff:g id="MINUTES">%3$s</xliff:g>."</item> - </string-array> - <string name="day" msgid="7984755014526510295">"1 dia"</string> - <string name="days" msgid="2070509222727852210">"<xliff:g id="DAYS">%s</xliff:g> dias"</string> - <string name="hour" msgid="2546819039651509323">"1 hora"</string> - <string name="hours" msgid="2071487018566991613">"<xliff:g id="HOURS">%s</xliff:g> horas"</string> - <string name="minute" msgid="2486157997434653710">"1 minuto"</string> - <string name="minutes" msgid="6115838729146292526">"<xliff:g id="MINUTES">%s</xliff:g> minutos"</string> - <string name="every_day" msgid="1058994798884544691">"todos os dias"</string> - <string name="never" msgid="54104287800571769">"Nunca"</string> - <string name="day_concat" msgid="971998564991636532">", "</string> - <string name="clock_instructions" msgid="3118560284915857690">"Seleccione um relógio para visualizar."</string> - <string name="analog_gadget" msgid="1670505720837152766">"Relógio analógico"</string> - <string name="settings" msgid="5849739030579520686">"Definições"</string> - <string name="alarm_in_silent_mode_title" msgid="3892612644543516705">"Alarme em modo silencioso"</string> - <string name="alarm_in_silent_mode_summary" msgid="6042500263899922832">"Fazer soar o alarme mesmo com o telefone em modo silencioso"</string> - <string name="snooze_duration_title" msgid="1471249885139952670">"Duração da suspensão"</string> - <string-array name="snooze_duration_entries"> - <item msgid="8337408933053603125">"5 minutos"</item> - <item msgid="5294206441496024610">"10 minutos"</item> - <item msgid="2165904039211935470">"15 minutos"</item> - <item msgid="7248236967714374250">"20 minutos"</item> - <item msgid="738394723625179423">"25 minutos"</item> - <item msgid="1180222611308391616">"30 minutos"</item> - </string-array> - <string-array name="snooze_duration_values"> - <item msgid="3655014754453084122">"5"</item> - <item msgid="8939029597449573449">"10"</item> - <item msgid="3922647341176353315">"15"</item> - <item msgid="5821804105985044459">"20"</item> - <item msgid="6048861883552402852">"25"</item> - <item msgid="2740866721232379791">"30"</item> - </string-array> - <string name="done" msgid="6509722361933858451">"Concluído"</string> - <string name="revert" msgid="9100911171235162926">"Reverter"</string> - <string name="delete" msgid="5732434972457000541">"Eliminar"</string> - <string name="alarm_volume_title" msgid="8506245173912428522">"Volume do alarme"</string> - <string name="alarm_volume_summary" msgid="8957440373896242438">"Definir o volume dos alarmes"</string> - <string name="silent_alarm_summary" msgid="8605302849408279221">"Silencioso"</string> - <string name="alarm_notify_text" msgid="4146350965933990093">"Seleccionar suspender ou ignorar este alarme."</string> - <string name="alarm_notify_snooze_label" msgid="5404083762646377829">"<xliff:g id="LABEL">%s</xliff:g> (suspenso)"</string> - <string name="alarm_notify_snooze_text" msgid="8004830999152609519">"Alarme definido para a(s) <xliff:g id="TIME">%s</xliff:g>. Seleccione para cancelar."</string> - <string name="volume_button_setting_title" msgid="8155275533660105161">"Volume e câmara"</string> - <string name="volume_button_dialog_title" msgid="8768042543750036853">"Efeito do botão"</string> - <string name="volume_button_setting_summary" msgid="4776447991226047070">"Defina o que estes botões fazem quando forem premidos durante um alarme"</string> - <string-array name="volume_button_setting_entries"> - <item msgid="4520420953175098625">"Nenhum"</item> - <item msgid="7111908302622811168">"Suspender"</item> - <item msgid="8573552194573068996">"Ignorar"</item> - </string-array> - <string-array name="volume_button_setting_values"> - <item msgid="4851033050639608752">"0"</item> - <item msgid="3204893476515513084">"1"</item> - <item msgid="7687709558968154577">"2"</item> - </string-array> - <string name="alarm_button_description" msgid="740283647046258651">"Alarmes"</string> - <string name="gallery_button_description" msgid="1151743663255257668">"Galeria"</string> - <string name="music_button_description" msgid="1626593420810117999">"Música"</string> - <string name="nightmode_button_description" msgid="990894208217576381">"Esbater"</string> - <string name="home_button_description" msgid="3383859096809056157">"Launcher"</string> - <string name="desk_clock_button_description" msgid="968868045496561043">"Apresentação do relógio"</string> - <string name="battery_charging_level" msgid="4391767951302394083">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string> - <string name="weather_fetch_failure" msgid="7517010911981312358">"Informações meteorológicas actualmente indisponíveis."</string> - <string name="menu_item_dock_settings" msgid="3524235151132971114">"Definições da estação de ancoragem"</string> - <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Serviço de reprodução de som para alarmes definidos no DeskClock."</string> -</resources> +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- --> + <!-- Label shown on launcher icon --> + <string name="app_label">Relógio</string> + + <!-- Title for AlarmClock activity --> + <string name="alarm_list_title">Alarmes</string> + + <!-- Menu item on Alarm Clock screen: Add alarm --> + <string name="add_alarm">Adicionar alarme</string> + + <!-- Menu item on Alarm Clock screen: Desk clock --> + <string name="menu_desk_clock">Relógio de Secretária</string> + + <!-- Menu item on Alarm Clock screen: Edit alarm --> + <string name="menu_edit_alarm">Alterar alarme</string> + + <!-- Context Menu Item on Alarm Settings screen: Delete alarm --> + <string name="delete_alarm">Apagar alarme</string> + + <!-- Context Menu Item on Alarm Settings screen: Enable alarm --> + <string name="enable_alarm">Ligar alarme</string> + + <!-- Context Menu Item on Alarm Settings screen: Disable alarm --> + <string name="disable_alarm">Desligar alarme</string> + + <!-- Delete alarm confirmation dialog message. --> + <string name="delete_alarm_confirm">Este alarme será apagado.</string> + + <!-- Menu item on Alarm Clock screen: Show clock --> + <string name="show_clock">Mostrar relógio</string> + + <!-- Menu item on Alarm Clock screen: Hide clock --> + <string name="hide_clock">Esconder relógio</string> + + <!-- Setting label on Set alarm screen: Label --> + <string name="label">Descrição</string> + + <!-- Default label to display for an alarm --> + <string name="default_label">Alarme</string> + + <!-- Setting label on Set alarm screen: Application to launch --> + <string name="application">Aplicação</string> + + <!-- Title on the application picker --> + <string name="application_title">Aplicação a iniciar</string> + + <!-- Option to not launch an application --> + <string name="application_none">Nenhuma</string> + + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Esconder opções</string> + + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">Sem opção de snooze/desligar</string> + + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">Opção de snooze/desligar será mostrada</string> + + <!-- Preference category on Alarm Settings screen: Set alarm --> + <string name="set_alarm">Ajustar alarme</string> + + <!-- Setting labels on Set alarm screen: Vibration on or off --> + <string name="alarm_vibrate">Vibrar</string> + + <!-- Setting labels on Set alarm screen: Repeat --> + <string name="alarm_repeat">Repetir</string> + + <!-- Setting labels on Set alarm screen: Select alarm ringtone --> + <string name="alert">Toque</string> + + <!-- Setting labels on Set alarm screen: Set time --> + <string name="time">Hora</string> + + <!-- Button labels on the alarm dialog: Dismiss --> + <string name="alarm_alert_dismiss_text">Desligar</string> + + <!-- Alarm Alert screen: this message is shown after an alarm rung + unattended for a number of minutes. It tells the user that + the alarm has been silenced.--> + <string name="alarm_alert_alert_silenced">Alarme desligado após <xliff:g id="minutes">%d</xliff:g> minutos</string> + + <!-- Button labels on the alarm dialog: Snooze --> + <string name="alarm_alert_snooze_text">Snooze</string> + + <!-- Button labels on the alarm dialog: Snooze & dismiss (when dual-mode button enabled) --> + <string name="alarm_alert_snooze_text_dual_mode">Snooze (prima para desligar)</string> + + <!-- Toast that appears after Alarm is snoozed from the Alarm + dialog. Says the alarm will snooze for xxx minutes. --> + <string name="alarm_alert_snooze_set">Snoozing durante <xliff:g id="minutes">%d</xliff:g> minutos.</string> + + <!-- 0: nothing + 1: days + 2: hours + 3: days hours + 4: minutes + 5: days minutes + 6: hours minutes + 7: days hours minutes + --><skip /> + + <!-- Alarm confirmation toast: Describes how long from now until + alarm fires --> + <string-array name="alarm_set"> + <item>O alarme tocará em menos de 1 minuto.</item> + <item>O alarme tocará daqui a <xliff:g id="DAYS" example="2 days">%1$s</xliff:g> .</item> + <item>O alarme tocará daqui a <xliff:g id="HOURS" example="2 hours">%2$s</xliff:g> .</item> + <item>O alarme tocará daqui a <xliff:g id="DAYS" example="2 days">%1$s</xliff:g> e <xliff:g id="HOURS" example="2 hours">%2$s</xliff:g> .</item> + <item>O alarme tocará daqui a <xliff:g id="MINUTES" example="2 minutes">%3$s</xliff:g> from now.</item> + <item>O alarme tocará daqui a <xliff:g id="DAYS" example="2 days">%1$s</xliff:g> e <xliff:g id="MINUTES" example="2 minutes">%3$s</xliff:g> .</item> + <item>O alarme tocará daqui a <xliff:g id="HOURS" example="2 hours">%2$s</xliff:g> e <xliff:g id="MINUTES" example="2 minutes">%3$s</xliff:g> .</item> + <item>O alarme tocará daqui a <xliff:g id="DAYS" example="2 days">%1$s</xliff:g>, <xliff:g id="HOURS" example="2 hours">%2$s</xliff:g>, e <xliff:g id="MINUTES" example="2 minutes">%3$s</xliff:g> .</item> + </string-array> + + <!-- Alarm confirmation toast: singular day --> + <string name="day">"1 dia"</string> + + <!-- Alarm confirmation toast: plural days --> + <string name="days">"<xliff:g id="days">%s</xliff:g> dias"</string> + + <!-- Alarm confirmation toast: singular hour --> + <string name="hour">1 hora</string> + + <!-- Alarm confirmation toast: plural hours --> + <string name="hours"><xliff:g id="hours">%s</xliff:g> horas</string> + + <!-- Alarm confirmation toast: singular minute --> + <string name="minute">"1 minuto"</string> + + <!-- Alarm confirmation toast: plural minutes --> + <string name="minutes">"<xliff:g id="minutes">%s</xliff:g> minutos"</string> + + <!-- Repeat options that appear under an alarm on main Alarm Clock + screen to identify repetition schedule: special case for when + the alarm is set to repeat every day --> + <string name="every_day">todos os dias</string> + + <!-- Repeat options that appear under an alarm on main Alarm Clock + screen to identify repetition schedule: special case for when + the alarm is set to never repeat --> + <string name="never">Nunca</string> + + <!-- Repeat options that appear under an alarm on main Alarm Clock + screen to identify repetition schedule: concatenate days with + this character, i.e. "Mon, Tue, Wed" --> + <string name="day_concat">", "</string> + + <!-- Appears at the top of the Clock Picker screen: Tell user to + select a clock to display --> + <string name="clock_instructions">Seleccione o relógio a mostrar.</string> + + <!-- Label for analog clock gadget, shown in list of all gadgets --> + <string name="analog_gadget">Relógio analógico</string> + + <!-- Menu item title for general Alarm Clock Settings --> + <string name="settings">Definições</string> + + <!-- Setting title for whether the alarm should play in silent mode. + Usually, silent mode only affects the ringer, but this setting + will make the alarms respect silent mode too. --> + <string name="alarm_in_silent_mode_title">Alarme em modo silencioso</string> + + <!-- Setting summary for whether the alarm should play in silent mode. --> + <string name="alarm_in_silent_mode_summary">Tocar alarme mesmo com o telefone em modo silencioso</string> + + <!-- Setting title for changing the snooze duration. --> + <string name="snooze_duration_title">Duração do Snooze</string> + + <!-- Entries listed in the ListPreference when invoking the snooze duration + preference. --> + <string-array name="snooze_duration_entries"> + <item>5 minutos</item> + <item>10 minutos</item> + <item>15 minutos</item> + <item>20 minutos</item> + <item>25 minutos</item> + <item>30 minutos</item> + </string-array> + + <!-- Done button when editing an alarm. --> + <string name="done">Concluído</string> + + <!-- Revert button when editing an alarm. --> + <string name="revert">Reverter</string> + + <!-- Delete button when editing an alarm. --> + <string name="delete">Apagar</string> + + <!-- Setting title for changing the alarm volume. --> + <string name="alarm_volume_title">Volume do alarme</string> + + <!-- Setting summary for changing the alarm volume. --> + <string name="alarm_volume_summary">Definir volume dos alarmes</string> + + <!-- Summary for the alarm preference when silent is chosen. --> + <string name="silent_alarm_summary">Silencioso</string> + + <!-- Text to display in the small text of the notification --> + <string name="alarm_notify_text">Seleccione para snooze ou desligar este alarme.</string> + + <!-- Text to display in the notification ticker and label --> + <string name="alarm_notify_snooze_label"><xliff:g id="label">%s</xliff:g> (snoozed)</string> + + <!-- Text to display in the notification when the alarm has been snoozed --> + <string name="alarm_notify_snooze_text">Alarm definido para <xliff:g id="time">%s</xliff:g>. Seleccione para cancelar.</string> + + <!-- Title of the setting to change the volume/camera button behavior. --> + <string name="volume_button_setting_title">Volume e Camera</string> + + <!-- Dialog title of the volume and power setting. --> + <string name="volume_button_dialog_title">Efeito do botão</string> + + <!-- The summary of the side button setting. --> + <string name="volume_button_setting_summary">Defina a função destes botões ao serem primidos durante um alarme</string> + + <!-- Entries listed in the setting for the side-button action. --> + <string-array name="volume_button_setting_entries"> + <item>Nenhuma</item> + <item>Snooze</item> + <item>Desligar</item> + </string-array> + + <!-- Accessibility labels for Clock activity buttons --><skip/> + <string name="alarm_button_description">Alarmes</string> + <string name="gallery_button_description">Galeria</string> + <string name="music_button_description">Música</string> + <string name="nightmode_button_description">Brilho</string> + <string name="home_button_description">Launcher</string> + <string name="desk_clock_button_description">Mostrar Relógio</string> + + <!-- A short representation of charging information, e.g "34%" --> + <string name="battery_charging_level"><xliff:g id="number">%d</xliff:g><xliff:g id="percent">%%</xliff:g></string> + + <!-- What to show the user if the weather widget exists but fails to + respond. This is a sign of an error; if the weather widget is not + present on the device, we show nothing at all. --> + <string name="weather_fetch_failure">Informação meteorológica indisponível.</string> + + <string name="menu_item_dock_settings" msgid="9161438664257429372">Definições da dock</string> + + <!-- Setting title for setting alarm time limit --> + <string name="alarm_limit_title">Duração máxima do alarme</string> + + <string name="alarm_klaxon_service_desc">Tocar sons de serviço para alarmes definidos no DeskClock.</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 minutos</item> + <item>15 minutos</item> + <item>30 minutos</item> + <item>60 minutos</item> + <item>90 minutos</item> + <item>120 minutos</item> + <item>Infinito</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">Tempo limite do protector de ecrã</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 minuto</item> + <item>5 minutos</item> + <item>10 minutos</item> + <item>15 minutos</item> + <item>30 minutos</item> + <item>60 minutos</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">Cor das Horas</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">Cor das Horas (Protector de Ecrã)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">Mudar a cor das horas usadas no modo de protector de ecrã</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">Transparência (Menos brilho)</string> + <string name="color_picker_red">Vermelho</string> + <string name="color_picker_green">Verde</string> + <string name="color_picker_blue">Azul</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Snooze de modo duplo</string> + <string name="use_dual_mode_button_on">Premir continuamente no botão snooze para desligar o alarme</string> + <string name="use_dual_mode_button_off">Separar botões snooze e desligar</string> + +</resources>
\ No newline at end of file diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 4b9312fc7..b6f58477e 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -36,8 +36,8 @@ <string name="time" msgid="8067216534232296518">"Horário"</string> <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Encerrar"</string> <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Alarme silenciado após <xliff:g id="MINUTES">%d</xliff:g> minutos"</string> - <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Colocar em modo de espera"</string> - <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Em espera por <xliff:g id="MINUTES">%d</xliff:g> minutos."</string> + <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Colocar em modo de cochilo"</string> + <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Em cochilo por <xliff:g id="MINUTES">%d</xliff:g> minutos."</string> <string-array name="alarm_set"> <item msgid="5163476010406761625">"Este alarme está definido para menos de um minuto a partir de agora."</item> <item msgid="7110525731259629055">"Este alarme está definido para <xliff:g id="DAYS">%1$s</xliff:g> a partir de agora."</item> @@ -62,7 +62,7 @@ <string name="settings" msgid="5849739030579520686">"Configurações"</string> <string name="alarm_in_silent_mode_title" msgid="3892612644543516705">"Modo silencioso"</string> <string name="alarm_in_silent_mode_summary" msgid="6042500263899922832">"Tocar o alarme mesmo quando o telefone estiver no modo silencioso"</string> - <string name="snooze_duration_title" msgid="1471249885139952670">"Modo de espera"</string> + <string name="snooze_duration_title" msgid="1471249885139952670">"Modo de cochilo"</string> <string-array name="snooze_duration_entries"> <item msgid="8337408933053603125">"5 minutos"</item> <item msgid="5294206441496024610">"10 minutos"</item> @@ -85,15 +85,15 @@ <string name="alarm_volume_title" msgid="8506245173912428522">"Volume do alarme"</string> <string name="alarm_volume_summary" msgid="8957440373896242438">"Definir o volume dos alarmes"</string> <string name="silent_alarm_summary" msgid="8605302849408279221">"Silencioso"</string> - <string name="alarm_notify_text" msgid="4146350965933990093">"Selecione para colocar esse alarme em modo de espera ou descartá-lo."</string> - <string name="alarm_notify_snooze_label" msgid="5404083762646377829">"<xliff:g id="LABEL">%s</xliff:g> (em modo de espera)"</string> + <string name="alarm_notify_text" msgid="4146350965933990093">"Selecione para colocar esse alarme em modo de cochilo ou descartá-lo."</string> + <string name="alarm_notify_snooze_label" msgid="5404083762646377829">"<xliff:g id="LABEL">%s</xliff:g> (em modo de cochilo)"</string> <string name="alarm_notify_snooze_text" msgid="8004830999152609519">"Alarme definido para <xliff:g id="TIME">%s</xliff:g>. Selecione para cancelar."</string> <string name="volume_button_setting_title" msgid="8155275533660105161">"Volume e câmera"</string> <string name="volume_button_dialog_title" msgid="8768042543750036853">"Efeito do botão"</string> <string name="volume_button_setting_summary" msgid="4776447991226047070">"Define a ação desses botões quando pressionados durante um alarme"</string> <string-array name="volume_button_setting_entries"> <item msgid="4520420953175098625">"Nenhum"</item> - <item msgid="7111908302622811168">"Colocar em modo de espera"</item> + <item msgid="7111908302622811168">"Colocar em modo de cochilo"</item> <item msgid="8573552194573068996">"Descartar"</item> </string-array> <string-array name="volume_button_setting_values"> @@ -111,4 +111,59 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"Informações metereológicas indisponíveis no momento"</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"Configurações de dock"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Serviço de reprodução de sons para alarmes definidos no DeskClock."</string> + + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Esconder caixa de diálogo</string> + + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">Sem caixa de diálogo cochilo/encerrar</string> + + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">Caixa de diálogo cochilo/encerrar vai ser mostrado</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 minutos</item> + <item>15 minutos</item> + <item>30 minutos</item> + <item>60 minutos</item> + <item>90 minutos</item> + <item>120 minutos</item> + <item>Infinitamente</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">Tempo limite do protetor de tela</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 minuto</item> + <item>5 minutos</item> + <item>10 minutos</item> + <item>15 minutos</item> + <item>30 minutos</item> + <item>60 minutos</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">Cor da Hora</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">Cor da Hora (Protetor de Tela)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">Trocar a cor da hora usada no modo protetor de tela</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">Transparente (Apenas escurecido)</string> + <string name="color_picker_red">Vermelho</string> + <string name="color_picker_green">Verde</string> + <string name="color_picker_blue">Azul</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Modo duplo de tempo de cochilo</string> + <string name="use_dual_mode_button_on">Aperto longo para botão de cochilo encerrar o alarme</string> + <string name="use_dual_mode_button_off">Separar botões de cochilo e encerrar</string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 54120bca1..1dd0edfe3 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -29,6 +29,12 @@ <string name="hide_clock" msgid="3217727306480505694">"Спрятать часы"</string> <string name="label" msgid="162189613902857319">"Описание"</string> <string name="default_label" msgid="5590025289805630372">"Будильник"</string> + <string name="application">Приложение</string> + <string name="application_title">Приложение для запуска</string> + <string name="application_none">Ничего</string> + <string name="no_dialog">Скрыть диалог</string> + <string name="no_dialog_on">Выбор отложить/отключить не показывается</string> + <string name="no_dialog_off">Выбор отложить/отключить показывается</string> <string name="set_alarm" msgid="9148359866152726808">"Установить будильник"</string> <string name="alarm_vibrate" msgid="3476686921490362230">"Вибросигнал"</string> <string name="alarm_repeat" msgid="7242985466344233206">"Дни недели"</string> @@ -37,6 +43,7 @@ <string name="alarm_alert_dismiss_text" msgid="4942914605480888820">"Отключить"</string> <string name="alarm_alert_alert_silenced" msgid="7918075929961104202">"Будильник звонил <xliff:g id="MINUTES">%d</xliff:g> мин."</string> <string name="alarm_alert_snooze_text" msgid="1774416052207651584">"Отложить"</string> + <string name="alarm_alert_snooze_text_dual_mode">Отложить (удержание для Отключения)</string> <string name="alarm_alert_snooze_set" msgid="656470966696912087">"Повтор сигнала через <xliff:g id="MINUTES">%d</xliff:g> мин."</string> <string-array name="alarm_set"> <item msgid="5163476010406761625">"До срабатывания будильника осталось меньше одной минуты."</item> @@ -111,4 +118,33 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"Сейчас информация о погоде недоступна."</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"Настройки док-станции"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"Служба воспроизведения сигналов в DeskClock."</string> + <string name="alarm_limit_title">Максимальная длительность сигнала</string> + <string-array name="alarm_limit_entries"> + <item>5 минут</item> + <item>15 минут</item> + <item>30 минут</item> + <item>60 минут</item> + <item>90 минут</item> + <item>120 минут</item> + <item>Бесконечно</item> + </string-array> + <string name="screensaver_timeout_title">Задержка заставки</string> + <string-array name="screensaver_timeout_entries"> + <item>1 минута</item> + <item>5 минут</item> + <item>10 минут</item> + <item>15 минут</item> + <item>30 минут</item> + <item>60 минут</item> + </string-array> + <string name="color_picker">Цвет времени</string> + <string name="color_picker_title">Цвет времени (Заставка)</string> + <string name="color_picker_summary">Измените цвет времени на заставке</string> + <string name="color_picker_alpha">Прозрачность (Затемнение)</string> + <string name="color_picker_red">Красный</string> + <string name="color_picker_green">Зелёный</string> + <string name="color_picker_blue">Синий</string> + <string name="use_dual_mode_button">Одна кнопка</string> + <string name="use_dual_mode_button_on">Долгое нажатие на кнопке \"Отложить\", будет отключать будильник.</string> + <string name="use_dual_mode_button_off">Разные кнопки \"Отложить\" и \"Отключить\".</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index de17124c8..7a690fa1a 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -111,4 +111,56 @@ <string name="weather_fetch_failure" msgid="7517010911981312358">"目前无法提供天气信息。"</string> <string name="menu_item_dock_settings" msgid="3524235151132971114">"底座设置"</string> <string name="alarm_klaxon_service_desc" msgid="2153290655559916468">"在 DeskClock 中设置的闹钟铃声播放服务。"</string> + + <!-- Setting title for setting alarm time limit --> + <string name="alarm_limit_title">最大闹铃时长</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 分钟</item> + <item>15 分钟</item> + <item>30 分钟</item> + <item>60 分钟</item> + <item>90 分钟</item> + <item>120 分钟</item> + <item>无限</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">屏保超时</string> + + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 分钟</item> + <item>5 分钟</item> + <item>10 分钟</item> + <item>15 分钟</item> + <item>30 分钟</item> + <item>60 分钟</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">时钟颜色</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">时钟颜色 (屏保)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">在屏保模式下更改时钟使用的颜色</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">透明度 (仅变暗)</string> + <string name="color_picker_red">红</string> + <string name="color_picker_green">绿</string> + <string name="color_picker_blue">蓝</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">懒人模式</string> + <string name="use_dual_mode_button_on">长按打盹按键解除闹铃</string> + <string name="use_dual_mode_button_off">分离打盹和解除按键</string> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 83c2cb170..507fa5f1e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -55,6 +55,24 @@ <!-- Default label to display for an alarm --> <string name="default_label">Alarm</string> + <!-- Setting label on Set alarm screen: Application to launch --> + <string name="application">Application</string> + + <!-- Title on the application picker --> + <string name="application_title">App to launch</string> + + <!-- Option to not launch an application --> + <string name="application_none">None</string> + + <!-- Setting label on Set alarm screen: Show dialog --> + <string name="no_dialog">Hide dialog</string> + + <!-- Summary when dialog is hidden --> + <string name="no_dialog_on">No snooze/dismiss dialog</string> + + <!-- Summary when dialog will be shown --> + <string name="no_dialog_off">Snooze/dismiss dialog will be shown</string> + <!-- Preference category on Alarm Settings screen: Set alarm --> <string name="set_alarm">Set alarm</string> @@ -81,6 +99,9 @@ <!-- Button labels on the alarm dialog: Snooze --> <string name="alarm_alert_snooze_text">Snooze</string> + <!-- Button labels on the alarm dialog: Snooze & dismiss (when dual-mode button enabled) --> + <string name="alarm_alert_snooze_text_dual_mode">Snooze (hold to dismiss)</string> + <!-- Toast that appears after Alarm is snoozed from the Alarm dialog. Says the alarm will snooze for xxx minutes. --> <string name="alarm_alert_snooze_set">Snoozing for <xliff:g id="minutes">%d</xliff:g> minutes.</string> @@ -252,8 +273,81 @@ <string name="menu_item_dock_settings" msgid="9161438664257429372">Dock settings</string> + <!-- Setting title for setting alarm time limit --> + <string name="alarm_limit_title">Maximum alarm duration</string> + <string name="alarm_klaxon_service_desc">Sound playback service for alarms set in DeskClock.</string> -</resources> + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="alarm_limit_entries"> + <item>5 minutes</item> + <item>15 minutes</item> + <item>30 minutes</item> + <item>60 minutes</item> + <item>90 minutes</item> + <item>120 minutes</item> + <item>Infinite</item> + </string-array> + + <!-- Values that are retrieved from the ListPreference. These must match + the alarm_limit_entries above. --> + <string-array name="alarm_limit_values"> + <item>5</item> + <item>15</item> + <item>30</item> + <item>60</item> + <item>90</item> + <item>120</item> + <item>-1</item> + </string-array> + + <!-- Setting title for setting alarm time limit --> + <string name="screensaver_timeout_title">Screensaver timeout</string> + <!-- Entries listed in the ListPreference when invoking the max alarm duration + preference. --> + <string-array name="screensaver_timeout_entries"> + <item>1 minute</item> + <item>5 minutes</item> + <item>10 minutes</item> + <item>15 minutes</item> + <item>30 minutes</item> + <item>60 minutes</item> + </string-array> + <!-- Values that are retrieved from the ListPreference. These must match + the alarm_limit_entries above. --> + <string-array name="screensaver_timeout_values"> + <item>1</item> + <item>5</item> + <item>10</item> + <item>15</item> + <item>30</item> + <item>60</item> + </string-array> + + <!-- Setting title for screensaver time color picker general title--> + <string name="color_picker">Time Color</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_title">Time Color (Screensaver)</string> + + <!-- Setting title for screensaver time color picker --> + <string name="color_picker_summary">Change the color of the time used in screensaver mode</string> + + <!-- Sample time used in color picker --> + <string name="color_picker_sample">11:45</string> + + <!-- Labels for colors in color picker --> + <string name="color_picker_alpha">Transparency (Dimmed only)</string> + <string name="color_picker_red">Red</string> + <string name="color_picker_green">Green</string> + <string name="color_picker_blue">Blue</string> + + <!-- Settings strings for dual-mode button --> + <string name="use_dual_mode_button">Dual-mode snooze</string> + <string name="use_dual_mode_button_on">Long-press the snooze button to dismiss the alarm</string> + <string name="use_dual_mode_button_off">Separate snooze and dismiss buttons</string> + +</resources> diff --git a/res/xml/alarm_prefs.xml b/res/xml/alarm_prefs.xml index 3ca8ed050..a76049d3b 100644 --- a/res/xml/alarm_prefs.xml +++ b/res/xml/alarm_prefs.xml @@ -40,4 +40,13 @@ android:persistent="false" android:title="@string/label" android:dialogTitle="@string/label" /> + <Preference android:key="intent" + android:persistent="false" + android:title="@string/application" /> + <CheckBoxPreference android:key="no_dialog" + android:persistent="true" + android:title="@string/no_dialog" + android:defaultValue="false" + android:summaryOn="@string/no_dialog_on" + android:summaryOff="@string/no_dialog_off" /> </PreferenceScreen> diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 3a7b775df..924085fbd 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -45,6 +45,38 @@ android:entries="@array/volume_button_setting_entries" android:entryValues="@array/volume_button_setting_values" android:summary="@string/volume_button_setting_summary" - android:defaultValue="2" /> + android:defaultValue="0" /> + + <ListPreference + android:key="alarm_limit" + android:title="@string/alarm_limit_title" + android:entries="@array/alarm_limit_entries" + android:entryValues="@array/alarm_limit_values" + android:defaultValue="30" + android:dialogTitle="@string/alarm_limit_title"/> + + <ListPreference + android:key="screensaver_timeout" + android:title="@string/screensaver_timeout_title" + android:entries="@array/screensaver_timeout_entries" + android:entryValues="@array/screensaver_timeout_values" + android:defaultValue="5" + android:dialogTitle="@string/screensaver_timeout_title"/> + + <PreferenceScreen + android:key="color_picker" + android:title="@string/color_picker_title" + android:summary="@string/color_picker_summary"> + <intent + android:action="com.android.alarmclock.ColorPicker" + android:targetPackage="com.android.alarmclock" + android.targetClass="com.android.alarmclock.ColorPicker"/> + </PreferenceScreen> + + <CheckBoxPreference + android:key="use_dual_mode_button" + android:title="@string/use_dual_mode_button" + android:summaryOn="@string/use_dual_mode_button_on" + android:summaryOff="@string/use_dual_mode_button_off" /> </PreferenceScreen> diff --git a/src/com/android/deskclock/Alarm.java b/src/com/android/deskclock/Alarm.java index dedc0d848..23d4b9541 100644 --- a/src/com/android/deskclock/Alarm.java +++ b/src/com/android/deskclock/Alarm.java @@ -17,14 +17,16 @@ package com.android.deskclock; import android.content.Context; +import android.content.Intent; import android.database.Cursor; import android.media.RingtoneManager; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import android.provider.BaseColumns; -import android.text.format.DateFormat; +import android.text.TextUtils; +import java.net.URISyntaxException; import java.text.DateFormatSymbols; import java.util.Calendar; @@ -59,6 +61,8 @@ public final class Alarm implements Parcelable { p.writeString(label); p.writeParcelable(alert, flags); p.writeInt(silent ? 1 : 0); + p.writeString(intent); + p.writeInt(noDialog ? 1 : 0); } ////////////////////////////// // end Parcelable apis @@ -124,6 +128,18 @@ public final class Alarm implements Parcelable { public static final String ALERT = "alert"; /** + * Intent to fire when alarm triggers + * <P>Type: STRING</P> + */ + public static final String INTENT = "intent"; + + /** + * Option to show dialog or not + * <P>Type: BOOLEAN</P> + */ + public static final String NO_DIALOG = "no_dialog"; + + /** * The default sort order for this table */ public static final String DEFAULT_SORT_ORDER = @@ -134,7 +150,7 @@ public final class Alarm implements Parcelable { static final String[] ALARM_QUERY_COLUMNS = { _ID, HOUR, MINUTES, DAYS_OF_WEEK, ALARM_TIME, - ENABLED, VIBRATE, MESSAGE, ALERT }; + ENABLED, VIBRATE, MESSAGE, ALERT, INTENT, NO_DIALOG }; /** * These save calls to cursor.getColumnIndexOrThrow() @@ -149,6 +165,8 @@ public final class Alarm implements Parcelable { public static final int ALARM_VIBRATE_INDEX = 6; public static final int ALARM_MESSAGE_INDEX = 7; public static final int ALARM_ALERT_INDEX = 8; + public static final int ALARM_INTENT_INDEX = 9; + public static final int ALARM_NO_DIALOG_INDEX = 10; } ////////////////////////////// // End column definitions @@ -165,6 +183,8 @@ public final class Alarm implements Parcelable { public String label; public Uri alert; public boolean silent; + public String intent; + public boolean noDialog; public Alarm(Cursor c) { id = c.getInt(Columns.ALARM_ID_INDEX); @@ -193,6 +213,18 @@ public final class Alarm implements Parcelable { RingtoneManager.TYPE_ALARM); } } + String intentString = c.getString(Columns.ALARM_INTENT_INDEX); + if (!TextUtils.isEmpty(intentString)) { + try { + // Try and parse the URI, see if it breaks. + Intent.parseUri(intentString, Intent.URI_INTENT_SCHEME); + // If it's an invalid URI, the exception will short-circuit. + intent = intentString; + } catch (URISyntaxException e) { + intent = null; + } + } + noDialog = c.getInt(Columns.ALARM_NO_DIALOG_INDEX) == 1; } public Alarm(Parcel p) { @@ -206,6 +238,8 @@ public final class Alarm implements Parcelable { label = p.readString(); alert = (Uri) p.readParcelable(null); silent = p.readInt() == 1; + intent = p.readString(); + noDialog = p.readInt() == 1; } // Creates a default alarm at the current time. diff --git a/src/com/android/deskclock/AlarmAlertFullScreen.java b/src/com/android/deskclock/AlarmAlertFullScreen.java index 56fc177d8..bfc488508 100644 --- a/src/com/android/deskclock/AlarmAlertFullScreen.java +++ b/src/com/android/deskclock/AlarmAlertFullScreen.java @@ -28,10 +28,12 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; import android.preference.PreferenceManager; +import android.view.HapticFeedbackConstants; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater; +import android.view.ViewStub; import android.view.Window; import android.view.WindowManager; import android.widget.Button; @@ -49,9 +51,11 @@ public class AlarmAlertFullScreen extends Activity { // These defaults must match the values in res/xml/settings.xml private static final String DEFAULT_SNOOZE = "10"; - private static final String DEFAULT_VOLUME_BEHAVIOR = "2"; + private static final String DEFAULT_VOLUME_BEHAVIOR = "0"; protected static final String SCREEN_OFF = "screen_off"; + private static final String KEY_DUAL_MODE_BUTTON = "use_dual_mode_button"; + protected Alarm mAlarm; private int mVolumeBehavior; @@ -118,7 +122,8 @@ public class AlarmAlertFullScreen extends Activity { private void updateLayout() { LayoutInflater inflater = LayoutInflater.from(this); - setContentView(inflater.inflate(R.layout.alarm_alert, null)); + View contentView = inflater.inflate(R.layout.alarm_alert, null); + setContentView(contentView); /* snooze behavior: pop a snooze confirmation view, kick alarm manager. */ @@ -130,13 +135,32 @@ public class AlarmAlertFullScreen extends Activity { } }); - /* dismiss button: close notification */ - findViewById(R.id.dismiss).setOnClickListener( - new Button.OnClickListener() { - public void onClick(View v) { - dismiss(false); - } - }); + boolean dualModeButtonEnabled = PreferenceManager.getDefaultSharedPreferences(this) + .getBoolean(KEY_DUAL_MODE_BUTTON, false); + + View dismiss = findViewById(R.id.dismiss); + + if (dualModeButtonEnabled) { + snooze.setOnLongClickListener(new Button.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + dismiss(false); + v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + return true; + } + }); + snooze.setText(R.string.alarm_alert_snooze_text_dual_mode); + dismiss.setVisibility(View.GONE); + findViewById(R.id.spacer).setVisibility(View.GONE); + } else { + /* dismiss button: close notification */ + dismiss.setOnClickListener( + new Button.OnClickListener() { + public void onClick(View v) { + dismiss(false); + } + }); + } /* Set the title from the passed in alarm */ setTitle(); diff --git a/src/com/android/deskclock/AlarmKlaxon.java b/src/com/android/deskclock/AlarmKlaxon.java index 38098c8f5..9575df53d 100644 --- a/src/com/android/deskclock/AlarmKlaxon.java +++ b/src/com/android/deskclock/AlarmKlaxon.java @@ -31,6 +31,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Vibrator; +import android.preference.PreferenceManager; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; @@ -40,9 +41,9 @@ import android.telephony.TelephonyManager; */ public class AlarmKlaxon extends Service { - /** Play alarm up to 10 minutes before silencing */ - private static final int ALARM_TIMEOUT_SECONDS = 10 * 60; - + + private static final String DEFAULT_ALARM_LIMIT = "30"; + private static final long[] sVibratePattern = new long[] { 500, 500 }; private boolean mPlaying = false; @@ -283,8 +284,19 @@ public class AlarmKlaxon extends Service { * popped, so the user will know that the alarm tripped. */ private void enableKiller(Alarm alarm) { - mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER, alarm), - 1000 * ALARM_TIMEOUT_SECONDS); + + final String alarmdur = + PreferenceManager.getDefaultSharedPreferences(this) + .getString(SettingsActivity.KEY_ALARM_LIMIT, DEFAULT_ALARM_LIMIT); + + int alarmtimeout = Integer.parseInt(alarmdur); + + if (alarmtimeout > 0) { + final int ALARM_TIMEOUT_SECONDS = alarmtimeout * 60; + + mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER, alarm), + 1000 * ALARM_TIMEOUT_SECONDS); + } } private void disableKiller() { diff --git a/src/com/android/deskclock/AlarmProvider.java b/src/com/android/deskclock/AlarmProvider.java index 133e79abf..34f05a4b8 100644 --- a/src/com/android/deskclock/AlarmProvider.java +++ b/src/com/android/deskclock/AlarmProvider.java @@ -44,7 +44,7 @@ public class AlarmProvider extends ContentProvider { private static class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "alarms.db"; - private static final int DATABASE_VERSION = 5; + private static final int DATABASE_VERSION = 7; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); @@ -61,14 +61,17 @@ public class AlarmProvider extends ContentProvider { "enabled INTEGER, " + "vibrate INTEGER, " + "message TEXT, " + - "alert TEXT);"); + "alert TEXT, " + + "intent TEXT," + + "no_dialog INTEGER);"); // insert default alarms - String insertMe = "INSERT INTO alarms " + - "(hour, minutes, daysofweek, alarmtime, enabled, vibrate, message, alert) " + - "VALUES "; - db.execSQL(insertMe + "(8, 30, 31, 0, 0, 1, '', '');"); - db.execSQL(insertMe + "(9, 00, 96, 0, 0, 1, '', '');"); + String insertMe = "INSERT INTO alarms " + + "(hour, minutes, daysofweek, alarmtime, enabled, vibrate, " + + "message, alert, intent, no_dialog) " + + "VALUES "; + db.execSQL(insertMe + "(8, 30, 31, 0, 0, 1, '', '', '', 0);"); + db.execSQL(insertMe + "(9, 00, 96, 0, 0, 1, '', '', '', 0);"); } @Override diff --git a/src/com/android/deskclock/AlarmReceiver.java b/src/com/android/deskclock/AlarmReceiver.java index 242f865b5..2bacada09 100644 --- a/src/com/android/deskclock/AlarmReceiver.java +++ b/src/com/android/deskclock/AlarmReceiver.java @@ -26,6 +26,11 @@ import android.content.Intent; import android.content.BroadcastReceiver; import android.database.Cursor; import android.os.Parcel; +import android.text.TextUtils; + +import java.net.URISyntaxException; +import java.text.SimpleDateFormat; +import java.util.Date; /** * Glue class: connects AlarmAlert IntentReceiver to AlarmAlert @@ -112,6 +117,19 @@ public class AlarmReceiver extends BroadcastReceiver { c = AlarmAlertFullScreen.class; } + // If there's an intent specified, start that activity. + if (!TextUtils.isEmpty(alarm.intent)) { + try { + Intent alarmActivity = Intent.parseUri(alarm.intent, Intent.URI_INTENT_SCHEME); + alarmActivity.setFlags(alarmActivity.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(alarmActivity); + } catch (URISyntaxException e) { + // Silently fail since the intent failed to parse. + } + } else { + Log.i("Empty or null intent!"); + } + // Play the alarm alert and vibrate the device. Intent playAlarm = new Intent(Alarms.ALARM_ALERT_ACTION); playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm); diff --git a/src/com/android/deskclock/Alarms.java b/src/com/android/deskclock/Alarms.java index 63b68c96e..9a1b4b9c2 100644 --- a/src/com/android/deskclock/Alarms.java +++ b/src/com/android/deskclock/Alarms.java @@ -29,6 +29,7 @@ import android.database.Cursor; import android.net.Uri; import android.os.Parcel; import android.provider.Settings; +import android.text.TextUtils; import android.text.format.DateFormat; import java.util.Calendar; @@ -167,6 +168,11 @@ public class Alarms { values.put(Alarm.Columns.ALERT, alarm.alert == null ? ALARM_ALERT_SILENT : alarm.alert.toString()); + // A null (or blank) intent Uri indicates no app launch + values.put(Alarm.Columns.INTENT, TextUtils.isEmpty(alarm.intent) ? "" : alarm.intent); + + values.put(Alarm.Columns.NO_DIALOG, alarm.noDialog); + return values; } diff --git a/src/com/android/deskclock/ColorPicker.java b/src/com/android/deskclock/ColorPicker.java new file mode 100644 index 000000000..d9ece0a06 --- /dev/null +++ b/src/com/android/deskclock/ColorPicker.java @@ -0,0 +1,114 @@ +package com.android.deskclock; + +import android.app.Activity; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.FrameLayout; +import android.widget.SeekBar; +import android.widget.TextView; + +public class ColorPicker extends Activity implements SeekBar.OnSeekBarChangeListener +{ + private static final String LOG_TAG = "DeskClock"; + + private int aColor; + private int rColor; + private int gColor; + private int bColor; + + SeekBar aSeekBar; + SeekBar rSeekBar; + SeekBar gSeekBar; + SeekBar bSeekBar; + FrameLayout sampleLayout; + TextView sampleText; + + SharedPreferences mPrefs; + + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.color_picker); + + mPrefs = PreferenceManager.getDefaultSharedPreferences(this); + loadPreferences(); + + sampleText = (TextView)findViewById(R.id.color_picker_sample); + sampleLayout = (FrameLayout)findViewById(R.id.colorsampleLayout); + + aSeekBar = (SeekBar)findViewById(R.id.a_seekbar); + aSeekBar.setProgress(aColor); + aSeekBar.setOnSeekBarChangeListener(this); + + rSeekBar = (SeekBar)findViewById(R.id.r_seekbar); + rSeekBar.setProgress(rColor); + rSeekBar.setOnSeekBarChangeListener(this); + + gSeekBar = (SeekBar)findViewById(R.id.g_seekbar); + gSeekBar.setProgress(gColor); + gSeekBar.setOnSeekBarChangeListener(this); + + bSeekBar = (SeekBar)findViewById(R.id.b_seekbar); + bSeekBar.setProgress(bColor); + bSeekBar.setOnSeekBarChangeListener(this); + + updateColorInSample(); + } + + @Override + public void onStop() + { + super.onStop(); + saveColors(); + } + + private void updateColorInSample() + { + sampleText.setTextColor(Color.argb(aColor, rColor, gColor, bColor)); + } + + private void loadPreferences() + { + aColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_ALPHA, DeskClock.DEFAULT_SCREENSAVER_COLOR_ALPHA)); + rColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_RED, DeskClock.DEFAULT_SCREENSAVER_COLOR_RED)); + gColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_GREEN, DeskClock.DEFAULT_SCREENSAVER_COLOR_GREEN)); + bColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_BLUE, DeskClock.DEFAULT_SCREENSAVER_COLOR_BLUE)); + } + + private void saveColors() + { + SharedPreferences.Editor editor = mPrefs.edit(); + editor.putInt(SettingsActivity.SCREENSAVER_COLOR_ALPHA, aColor); + editor.putInt(SettingsActivity.SCREENSAVER_COLOR_RED, rColor); + editor.putInt(SettingsActivity.SCREENSAVER_COLOR_GREEN, gColor); + editor.putInt(SettingsActivity.SCREENSAVER_COLOR_BLUE, bColor); + editor.commit(); + } + + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) + { + if (seekBar == aSeekBar) + aColor = progress; + else if (seekBar == rSeekBar) + rColor = progress; + else if (seekBar == gSeekBar) + gColor = progress; + else if (seekBar == bSeekBar) + bColor = progress; + else + Log.d(LOG_TAG, "seekbar not found"); + + updateColorInSample(); + } + + public void onStartTrackingTouch(SeekBar seekBar) { } + + public void onStopTrackingTouch(SeekBar seekBar) { } +} diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java index 7460e7ddf..3206e38a2 100644 --- a/src/com/android/deskclock/DeskClock.java +++ b/src/com/android/deskclock/DeskClock.java @@ -33,6 +33,10 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; @@ -44,6 +48,7 @@ import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.os.PowerManager; +import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.MediaStore; import android.text.TextUtils; @@ -106,15 +111,19 @@ public class DeskClock extends Activity { // Intent to broadcast for dock settings. private static final String DOCK_SETTINGS_ACTION = "com.android.settings.DOCK_SETTINGS"; - // Delay before engaging the burn-in protection mode (green-on-black). - private final long SCREEN_SAVER_TIMEOUT = 5 * 60 * 1000; // 5 min + // Default delay before engaging the burn-in protection mode (can be changed on settings) + private final String SCREEN_SAVER_TIMEOUT_DEFAULT = "5"; // Repositioning delay in screen saver. private final long SCREEN_SAVER_MOVE_DELAY = 60 * 1000; // 1 min // Color to use for text & graphics in screen saver mode. - private final int SCREEN_SAVER_COLOR = 0xFF308030; - private final int SCREEN_SAVER_COLOR_DIM = 0xFF183018; +// private final int SCREEN_SAVER_COLOR = 0xFF00C0FF; +// private final int SCREEN_SAVER_COLOR_DIM = 0xFF004880; + static final int DEFAULT_SCREENSAVER_COLOR_ALPHA = 130; + static final int DEFAULT_SCREENSAVER_COLOR_RED = 0; + static final int DEFAULT_SCREENSAVER_COLOR_GREEN = 192; + static final int DEFAULT_SCREENSAVER_COLOR_BLUE = 255; // Opacity of black layer between clock display and wallpaper. private final float DIM_BEHIND_AMOUNT_NORMAL = 0.4f; @@ -274,11 +283,15 @@ public class DeskClock extends Activity { } private void scheduleScreenSaver() { + String screensaver_timeout = PreferenceManager.getDefaultSharedPreferences(this) + .getString(SettingsActivity.SCREENSAVER_TIMEOUT, SCREEN_SAVER_TIMEOUT_DEFAULT); + Long timeout = (Long.parseLong(screensaver_timeout)) * 60 * 1000; + // reschedule screen saver mHandy.removeMessages(SCREEN_SAVER_TIMEOUT_MSG); mHandy.sendMessageDelayed( Message.obtain(mHandy, SCREEN_SAVER_TIMEOUT_MSG), - SCREEN_SAVER_TIMEOUT); + timeout); } private void restoreScreen() { @@ -320,17 +333,33 @@ public class DeskClock extends Activity { mTime = (DigitalClock) findViewById(R.id.time); mDate = (TextView) findViewById(R.id.date); mNextAlarm = (TextView) findViewById(R.id.nextAlarm); - + + SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this); + + int aColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_ALPHA, DeskClock.DEFAULT_SCREENSAVER_COLOR_ALPHA)); + int rColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_RED, DeskClock.DEFAULT_SCREENSAVER_COLOR_RED)); + int gColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_GREEN, DeskClock.DEFAULT_SCREENSAVER_COLOR_GREEN)); + int bColor = new Integer(mPrefs.getInt( + SettingsActivity.SCREENSAVER_COLOR_BLUE, DeskClock.DEFAULT_SCREENSAVER_COLOR_BLUE)); + + int SCREEN_SAVER_COLOR_DIM = Color.argb(aColor, rColor, gColor, bColor); + int SCREEN_SAVER_COLOR = Color.argb(255, rColor, gColor, bColor); + final int color = mDimmed ? SCREEN_SAVER_COLOR_DIM : SCREEN_SAVER_COLOR; ((TextView)findViewById(R.id.timeDisplay)).setTextColor(color); ((TextView)findViewById(R.id.am_pm)).setTextColor(color); mDate.setTextColor(color); mNextAlarm.setTextColor(color); + + //color alarm icon to match chosen color + Drawable alarmIcon = getResources().getDrawable(R.drawable.ic_lock_idle_alarm_saver); + alarmIcon.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY)); mNextAlarm.setCompoundDrawablesWithIntrinsicBounds( - getResources().getDrawable(mDimmed - ? R.drawable.ic_lock_idle_alarm_saver_dim - : R.drawable.ic_lock_idle_alarm_saver), + alarmIcon, null, null, null); mBatteryDisplay = @@ -345,7 +374,7 @@ public class DeskClock extends Activity { moveScreenSaverTo(oldLoc[0], oldLoc[1]); } - + @Override public void onUserInteraction() { if (mScreenSaverMode) diff --git a/src/com/android/deskclock/SetAlarm.java b/src/com/android/deskclock/SetAlarm.java index ebe6e5054..db0ced7e7 100644 --- a/src/com/android/deskclock/SetAlarm.java +++ b/src/com/android/deskclock/SetAlarm.java @@ -16,11 +16,14 @@ package com.android.deskclock; +import java.util.ArrayList; + import android.app.AlertDialog; import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.Intent.ShortcutIconResource; import android.os.Bundle; import android.os.Handler; import android.preference.CheckBoxPreference; @@ -48,6 +51,8 @@ public class SetAlarm extends PreferenceActivity implements TimePickerDialog.OnTimeSetListener, Preference.OnPreferenceChangeListener { + private static final int CODE_PICK_APP = 1; + private EditTextPreference mLabel; private CheckBoxPreference mEnabledPref; private Preference mTimePref; @@ -55,6 +60,8 @@ public class SetAlarm extends PreferenceActivity private CheckBoxPreference mVibratePref; private RepeatPreference mRepeatPref; private MenuItem mTestAlarmItem; + private Preference mIntentPref; + private CheckBoxPreference mNoDialogPref; private int mId; private int mHour; @@ -112,6 +119,9 @@ public class SetAlarm extends PreferenceActivity mVibratePref.setOnPreferenceChangeListener(this); mRepeatPref = (RepeatPreference) findPreference("setRepeat"); mRepeatPref.setOnPreferenceChangeListener(this); + mNoDialogPref = (CheckBoxPreference) findPreference("no_dialog"); + mNoDialogPref.setOnPreferenceChangeListener(this); + mIntentPref = findPreference("intent"); Intent i = getIntent(); mId = i.getIntExtra(Alarms.ALARM_ID, -1); @@ -211,7 +221,9 @@ public class SetAlarm extends PreferenceActivity mVibratePref.setChecked(alarm.vibrate); // Give the alert uri to the preference. mAlarmPref.setAlert(alarm.alert); + mIntentPref.setSummary(alarm.intent); updateTime(); + updateNoDialog(alarm); } @Override @@ -219,6 +231,8 @@ public class SetAlarm extends PreferenceActivity Preference preference) { if (preference == mTimePref) { showTimePicker(); + } else if (preference == mIntentPref) { + showAppPicker(); } return super.onPreferenceTreeClick(preferenceScreen, preference); @@ -240,6 +254,48 @@ public class SetAlarm extends PreferenceActivity DateFormat.is24HourFormat(this)).show(); } + private void showAppPicker() { + Bundle bundle = new Bundle(); + + ArrayList<String> shortcutNames = new ArrayList<String>(); + shortcutNames.add(getString(R.string.application_none)); + bundle.putStringArrayList(Intent.EXTRA_SHORTCUT_NAME, shortcutNames); + + ArrayList<ShortcutIconResource> shortcutIcons = new ArrayList<ShortcutIconResource>(); + shortcutIcons + .add(ShortcutIconResource.fromContext(this, android.R.drawable.ic_menu_delete)); + bundle.putParcelableArrayList(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, shortcutIcons); + + Intent appIntent = new Intent(Intent.ACTION_PICK_ACTIVITY); + Intent filterIntent = new Intent(Intent.ACTION_MAIN); + filterIntent.addCategory(Intent.CATEGORY_LAUNCHER); + appIntent.putExtra(Intent.EXTRA_INTENT, filterIntent); + appIntent.putExtra(Intent.EXTRA_TITLE, getText(R.string.application_title)); + appIntent.putExtras(bundle); + startActivityForResult(appIntent, CODE_PICK_APP); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + switch (requestCode) { + case CODE_PICK_APP: + setAlarmIntent(resultCode, data); + default: + super.onActivityResult(requestCode, resultCode, data); + } + } + + private void setAlarmIntent(int resultCode, Intent data) { + if (resultCode == RESULT_CANCELED || data == null) return; + + String none = getString(R.string.application_none); + if (none.equals(data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME))) { + mIntentPref.setSummary(""); + } else { + mIntentPref.setSummary(data.toUri(Intent.URI_INTENT_SCHEME)); + } + } + public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // onTimeSet is called when the user clicks "Set" mTimePickerCancelled = false; @@ -259,6 +315,20 @@ public class SetAlarm extends PreferenceActivity mTimePref.setSummary(Alarms.formatTime(this, mHour, mMinutes, mRepeatPref.getDaysOfWeek())); } + + private void updateNoDialog(Alarm alarm) { + // If the alarm has vibration or sound, the dialog must be shown. + boolean silent = alarm.silent + || (alarm.alert == null || Alarms.ALARM_ALERT_SILENT.equals(alarm.alert)); + if (!silent || alarm.vibrate) { + mNoDialogPref.setEnabled(false); + alarm.noDialog = false; + } else { + mNoDialogPref.setEnabled(true); + } + + mNoDialogPref.setChecked(alarm.noDialog); + } private long saveAlarmAndEnableRevert() { // Enable "Revert" to go back to the original Alarm. @@ -277,6 +347,10 @@ public class SetAlarm extends PreferenceActivity alarm.vibrate = mVibratePref.isChecked(); alarm.label = mLabel.getText(); alarm.alert = mAlarmPref.getAlert(); + CharSequence intent = mIntentPref.getSummary(); + alarm.intent = intent == null ? "" : intent.toString(); + alarm.noDialog = mNoDialogPref.isChecked(); + updateNoDialog(alarm); long time; if (alarm.id == -1) { diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java index f28d1e73b..620e4a816 100644 --- a/src/com/android/deskclock/SettingsActivity.java +++ b/src/com/android/deskclock/SettingsActivity.java @@ -40,7 +40,21 @@ public class SettingsActivity extends PreferenceActivity "snooze_duration"; static final String KEY_VOLUME_BEHAVIOR = "volume_button_setting"; - + static final String KEY_ALARM_LIMIT = + "alarm_limit"; + static final String SCREENSAVER_TIMEOUT = + "screensaver_timeout"; + static final String SCREENSAVER_COLOR = + "screensaver_color"; + static final String SCREENSAVER_COLOR_ALPHA = + "screensaver_color_alpha"; + static final String SCREENSAVER_COLOR_RED = + "screensaver_color_red"; + static final String SCREENSAVER_COLOR_GREEN = + "screensaver_color_green"; + static final String SCREENSAVER_COLOR_BLUE = + "screensaver_color_blue"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -98,6 +112,17 @@ public class SettingsActivity extends PreferenceActivity (ListPreference) findPreference(KEY_ALARM_SNOOZE); snooze.setSummary(snooze.getEntry()); snooze.setOnPreferenceChangeListener(this); + + final ListPreference alarmlimit = + (ListPreference) findPreference(KEY_ALARM_LIMIT); + alarmlimit.setSummary(alarmlimit.getEntry()); + alarmlimit.setOnPreferenceChangeListener(this); + + final ListPreference screensaver_timeout = + (ListPreference) findPreference(SCREENSAVER_TIMEOUT); + screensaver_timeout.setSummary(screensaver_timeout.getEntry()); + screensaver_timeout.setOnPreferenceChangeListener(this); + } } |