From a809cb8d8b0b26c5f961d898367e482fc3b4ae05 Mon Sep 17 00:00:00 2001 From: Jason Chen Date: Mon, 15 Oct 2012 15:20:00 -0700 Subject: Fixed up launcher icon Previous version was 143x144. This makes it square. Bug: 6718166 Bug: 7347547 Change-Id: Ieef1bfa73a5c4346edbc1f09a090d9814327af80 --- res/mipmap-xxhdpi/ic_launcher_alarmclock.png | Bin 27515 -> 27697 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/res/mipmap-xxhdpi/ic_launcher_alarmclock.png b/res/mipmap-xxhdpi/ic_launcher_alarmclock.png index b928f5e0a..817392194 100644 Binary files a/res/mipmap-xxhdpi/ic_launcher_alarmclock.png and b/res/mipmap-xxhdpi/ic_launcher_alarmclock.png differ -- cgit v1.2.3 From 7afa628a1ad06dba559331853749affd078da2c8 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 12 Nov 2012 07:09:28 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I646b2c1338cc43bfd50b62a9a4649b53ea74347e Auto-generated-cl: translation import --- res/values-af/strings.xml | 1 - res/values-am/strings.xml | 1 - res/values-ar/strings.xml | 1 - res/values-be/strings.xml | 1 - res/values-bg/strings.xml | 1 - res/values-ca/strings.xml | 1 - res/values-cs/strings.xml | 1 - res/values-da/strings.xml | 1 - res/values-de/strings.xml | 1 - res/values-el/strings.xml | 1 - res/values-en-rGB/strings.xml | 1 - res/values-es-rUS/strings.xml | 1 - res/values-es/strings.xml | 1 - res/values-et/strings.xml | 1 - res/values-fa/strings.xml | 1 - res/values-fi/strings.xml | 1 - res/values-fr/strings.xml | 1 - res/values-hi/strings.xml | 1 - res/values-hr/strings.xml | 1 - res/values-hu/strings.xml | 1 - res/values-in/strings.xml | 1 - res/values-it/strings.xml | 1 - res/values-iw/strings.xml | 1 - res/values-ja/strings.xml | 5 ++--- res/values-ko/strings.xml | 1 - res/values-lt/strings.xml | 1 - res/values-lv/strings.xml | 1 - res/values-ms/strings.xml | 1 - res/values-nb/strings.xml | 1 - res/values-nl/strings.xml | 1 - res/values-pl/strings.xml | 1 - res/values-pt-rPT/strings.xml | 1 - res/values-pt/strings.xml | 1 - res/values-rm/strings.xml | 2 -- res/values-ro/strings.xml | 1 - res/values-ru/strings.xml | 1 - res/values-sk/strings.xml | 1 - res/values-sl/strings.xml | 1 - res/values-sr/strings.xml | 1 - res/values-sv/strings.xml | 1 - res/values-sw/strings.xml | 1 - res/values-th/strings.xml | 1 - res/values-tl/strings.xml | 1 - res/values-tr/strings.xml | 1 - res/values-uk/strings.xml | 3 +-- res/values-vi/strings.xml | 1 - res/values-zh-rCN/strings.xml | 1 - res/values-zh-rTW/strings.xml | 1 - res/values-zu/strings.xml | 1 - 49 files changed, 3 insertions(+), 53 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 6609922db..9f986dd34 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -322,6 +322,5 @@ "Moet hierdie tydhouer uitgevee word?" "Moet hierdie stad verwyder word?" - "Laai tans" "Digitale horlosie" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 3c16de43f..06b8dd21d 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -322,6 +322,5 @@ "ይህ የሰዓት ቆጣሪ ይሰረዝ?" "ይህ ከተማ ይወገድ?" - "በመጫን ላይ" "ዲጂታል ሰዓት" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index efbb7d707..c63c3d545 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -322,6 +322,5 @@ "هل تريد حذف هذا المؤقت؟" "هل تريد إزالة هذه المدينة؟" - "جارٍ التحميل" "ساعة رقمية" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 4dabf1ab4..c0b039244 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -322,6 +322,5 @@ "Выдаліць гэты таймер?" "Выдаліць гэты горад?" - "Загрузка" "Лічбавы гадзіннік" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 8538cfdb6..5239c15e4 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -322,6 +322,5 @@ "Да се изтрие ли този таймер?" "Да се премахне ли този град?" - "Зарежда се" "Цифров часовник" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index f95dca4d0..ee3e8f88c 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -322,6 +322,5 @@ "Vols suprimir aquest temporitzador?" "Vols eliminar aquesta ciutat?" - "S’està carregant" "Rellotge digital" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 66d3a53b8..7c31bad50 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -322,6 +322,5 @@ "Chcete tento časovač smazat?" "Chcete toto město odebrat?" - "Načítání" "Digitální hodiny" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 62f0fcf12..9e24fc701 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -322,6 +322,5 @@ "Vil du slette denne timer?" "Vil du fjerne denne by?" - "Indlæser" "Digitalur" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e02461d82..b88a06a6b 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -322,6 +322,5 @@ "Diesen Timer löschen?" "Diese Stadt entfernen?" - "Wird geladen..." "Digitaluhr" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 941b143a1..8ae17011f 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -322,6 +322,5 @@ "Διαγραφή αυτού του ξυπνητηριού;" "Να διαγραφεί αυτή η πόλη;" - "Φόρτωση" "Ψηφιακό ρολόι" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 4356f0add..63ddd3f93 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -322,6 +322,5 @@ "Delete this timer?" "Remove this city?" - "Loading" "Digital clock" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index ed1cfeadc..9e36077aa 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -322,6 +322,5 @@ "¿Eliminar este temporizador?" "¿Eliminar esta ciudad?" - "Cargando" "Reloj digital" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index d6322c24e..9abd1b060 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -322,6 +322,5 @@ "¿Eliminar este temporizador?" "¿Eliminar esta ciudad?" - "Cargando..." "Reloj digital" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 790585579..940bd62a2 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -322,6 +322,5 @@ "Kas kustutada see taimer?" "Kas eemalda see linn?" - "Laadimine" "Digitaalkell" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index ba2b4221e..c412a15d2 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -322,6 +322,5 @@ "این تایمر حذف شود؟" "این شهر حذف شود؟" - "در حال بارگیری" "ساعت دیجیتال" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index f2fb1272a..f61d7f066 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -322,6 +322,5 @@ "Poistetaanko tämä ajastin?" "Poistetaanko tämä kaupunki?" - "Ladataan" "Digitaalinen kello" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 042338210..ebb9619cd 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -322,6 +322,5 @@ "Supprimer ce minuteur ?" "Supprimer cette ville ?" - "Chargement en cours…" "Horloge numérique" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 3b9dded28..21445fd61 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -322,6 +322,5 @@ "यह टाइमर हटाएं?" "यह शहर निकालें?" - "लोड हो रहा है" "डिजिटल घड़ी" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 288cd484e..a9a1f9e5e 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -322,6 +322,5 @@ "Izbrisati ovaj mjerač vremena?" "Ukloniti ovaj grad?" - "Učitavanje" "Digitalni sat" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 6a1ab1d45..f9551044d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -322,6 +322,5 @@ "Törli ezt az időzítőt?" "Eltávolítja ezt a várost?" - "Betöltés" "Digitális óra" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index ce500f4eb..e4da03578 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -322,6 +322,5 @@ "Hapus pewaktu ini?" "Hapus kota ini?" - "Memuat" "Jam digital" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 17fefa20a..69e1562a9 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -322,6 +322,5 @@ "Eliminare questo timer?" "Rimuovere questa città?" - "Caricamento" "Orologio digitale" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 8984970b3..de87a46df 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -322,6 +322,5 @@ "האם למחוק את הטיימר הזה?" "האם להסיר את העיר הזאת?" - "טוען" "שעון דיגיטלי" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index dcae0fb70..9619cf0c1 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -126,7 +126,7 @@ "時計" "ストップウォッチ" "アラーム" - "都市" + "世界時計" "その他のオプション" "設定" "ヘルプ" @@ -185,7 +185,7 @@ "%d件のタイマー" "ホーム" - "都市" + "世界時計" "ON" "OFF" "時刻" @@ -322,6 +322,5 @@ "このタイマーを削除しますか?" "この都市を削除しますか?" - "読み込み中" "デジタルクロック" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 2e1f9458d..04da8c15e 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -322,6 +322,5 @@ "이 타이머를 삭제하시겠습니까?" "이 도시를 삭제하시겠습니까?" - "로드 중" "디지털 시계" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index a81687abb..27a88e251 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -322,6 +322,5 @@ "Ištrinti šį laikmatį?" "Pašalinti šį miestą?" - "Įkeliama" "Skaitmeninis laikrodis" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 8ce3ddf7f..36f14bcf4 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -322,6 +322,5 @@ "Vai dzēst šo taimeri?" "Vai noņemt šo pilsētu?" - "Notiek ielāde" "Digitālais pulkstenis" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index f193314c9..3bd3e1f06 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -322,6 +322,5 @@ "Padam pemasa ini?" "Alih keluar kota ini?" - "Memuatkan" "Jam digital" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 354494909..bdacdcc30 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -322,6 +322,5 @@ "Vil du slette denne tidtakeren?" "Vil du fjerne denne byen?" - "Laster inn" "Digital klokke" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index a5f198a0f..4523298ef 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -322,6 +322,5 @@ "Deze timer verwijderen?" "Deze stad verwijderen?" - "Laden" "Digitale klok" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index d805358ce..5b477aa2a 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -322,6 +322,5 @@ "Usunąć ten minutnik?" "Usunąć to miasto?" - "Wczytuję" "Zegar cyfrowy" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 5fdf8d90c..ab36f7fb0 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -322,6 +322,5 @@ "Eliminar este temporizador?" "Remover esta cidade?" - "A carregar" "Relógio digital" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 822493c7c..de403b9e4 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -322,6 +322,5 @@ "Excluir este temporizador?" "Remover esta cidade?" - "Carregando" "Relógio digital" diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml index fe34274c7..dbb89ba64 100644 --- a/res/values-rm/strings.xml +++ b/res/values-rm/strings.xml @@ -395,8 +395,6 @@ - - diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 8ccd7d66b..c58e49165 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -322,6 +322,5 @@ "Ştergeţi acest contor?" "Eliminaţi acest oraş?" - "Se încarcă" "Ceas digital" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 33196adcf..d04d989cb 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -322,6 +322,5 @@ "Удалить этот таймер?" "Удалить этот город?" - "Загрузка…" "Часы" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index e95b00ddf..68888ba10 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -322,6 +322,5 @@ "Chcete odstrániť tento časovač?" "Chcete odstrániť toto mesto?" - "Načítava sa" "Digitálne hodiny" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 796156262..05b5ea6e5 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -322,6 +322,5 @@ "Želite izbrisati ta časovnik?" "Želite odstraniti ta kraj?" - "Nalaganje" "Digitalna ura" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index d396bd855..70f0367d8 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -322,6 +322,5 @@ "Желите ли да избришете овај тајмер?" "Желите ли да уклоните овај град?" - "Учитавање" "Дигитални сат" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 8c4c864b2..6b4156bd2 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -322,6 +322,5 @@ "Vill du ta bort denna timer?" "Vill du ta bort den här staden?" - "Läser in" "Digital klocka" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index fdd885038..d8e55bf09 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -322,6 +322,5 @@ "Futa kipima wakati hiki?" "Iondoe mji huu?" - "Inapakia" "Saa dijitali" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 795f7b36a..1551ee099 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -322,6 +322,5 @@ "ลบตัวจับเวลานี้หรือไม่" "ลบเมืองนี้หรือไม่" - "กำลังโหลด" "นาฬิกาดิจิทัล" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 625305dd5..b4788d351 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -322,6 +322,5 @@ "Tanggalin ang timer na ito?" "Alisin ang lungsod na ito?" - "Naglo-load" "Digital na orasan" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index e8baaa5eb..869aeba85 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -322,6 +322,5 @@ "Bu zamanlayıcı silinsin mi?" "Bu şehir kaldırılsın mı?" - "Yükleniyor" "Dijital saat" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index d283765c4..0f1a6679f 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -68,7 +68,7 @@ "Виберіть годинник" "Аналог. годинник" "довідка" - "Налаштув-ня" + "Налаштування" "Відкласти на" "1 хвилина" @@ -322,6 +322,5 @@ "Видалити цей таймер?" "Вилучити це місто?" - "Завантаження" "Цифровий годинник" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index ddea233e4..9223d4193 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -322,6 +322,5 @@ "Xóa bộ hẹn giờ này?" "Xóa thành phố này?" - "Đang tải" "Đồng hồ số" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index d24ddbb9e..6e7ca367a 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -322,6 +322,5 @@ "是否删除此计时器?" "是否删除此城市?" - "正在加载" "数字时钟" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index a9edd728b..902b99f7f 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -322,6 +322,5 @@ "刪除這個計時器?" "移除這個城市?" - "載入中" "數位時鐘" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 4bad07460..6fa1d5778 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -322,6 +322,5 @@ "Susa lesi sikali sesikhathi?" "Susa leli dolobha?" - "Iyalayisha" "Iwashi elidijithali" -- cgit v1.2.3 From c1d293908f835285f87d6c5dd07df76fe3127519 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Wed, 7 Nov 2012 17:24:44 -0800 Subject: Update widget with home time changes Bug: 7498378 Added an update broadcast when Home TZ is turn on/off or the time zone is changed. Change-Id: Id447a5b12df49fbc494850af3f8a879e64c3458f --- src/com/android/alarmclock/DigitalWidgetViewsFactory.java | 4 ++++ src/com/android/deskclock/SettingsActivity.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index 92d798bcf..22ff28078 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -224,6 +224,10 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo refreshAlarm(context, widget); widgetManager.partiallyUpdateAppWidget(mId, widget); } else { + if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) { + // refresh the list to make sure home time zone is displayed / removed. + mReloadCitiesList = true; + } // For any time change or locale change, refresh all widgetManager.notifyAppWidgetViewDataChanged(mId, R.id.digital_appwidget_listview); RemoteViews widget = diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java index 2e5a2fecf..ffdf1afaa 100644 --- a/src/com/android/deskclock/SettingsActivity.java +++ b/src/com/android/deskclock/SettingsActivity.java @@ -17,6 +17,7 @@ package com.android.deskclock; import android.app.ActionBar; +import android.content.Intent; import android.content.res.Resources; import android.media.AudioManager; import android.os.Bundle; @@ -30,6 +31,8 @@ import android.text.format.DateUtils; import android.view.Menu; import android.view.MenuItem; +import com.android.deskclock.worldclock.Cities; + import java.util.TimeZone; /** @@ -156,10 +159,12 @@ public class SettingsActivity extends PreferenceActivity final ListPreference listPref = (ListPreference) pref; final int idx = listPref.findIndexOfValue((String) newValue); listPref.setSummary(listPref.getEntries()[idx]); + notifyHomeTimeZoneChanged(); } else if (KEY_AUTO_HOME_CLOCK.equals(pref.getKey())) { boolean state =((CheckBoxPreference) pref).isChecked(); Preference homeTimeZone = findPreference(KEY_HOME_TZ); homeTimeZone.setEnabled(!state); + notifyHomeTimeZoneChanged(); } else if (KEY_VOLUME_BUTTONS.equals(pref.getKey())) { final ListPreference listPref = (ListPreference) pref; final int idx = listPref.findIndexOfValue((String) newValue); @@ -178,6 +183,12 @@ public class SettingsActivity extends PreferenceActivity } } + private void notifyHomeTimeZoneChanged() { + Intent i = new Intent(Cities.WORLDCLOCK_UPDATE_INTENT); + sendBroadcast(i); + } + + private void refresh() { ListPreference listPref = (ListPreference) findPreference(KEY_AUTO_SILENCE); String delay = listPref.getValue(); -- cgit v1.2.3 From a2b0a7e1da2538c6a11e336c56c5ec9b8a428ab2 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Wed, 7 Nov 2012 16:12:03 -0800 Subject: Make Clock dream default to "dim" Bug: 7485798 Change-Id: Ibd8a65c45f798aa2c9d7b1fd8cd5c2b008255578 --- res/xml/dream_settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xml/dream_settings.xml b/res/xml/dream_settings.xml index 063143488..5c7a3e135 100644 --- a/res/xml/dream_settings.xml +++ b/res/xml/dream_settings.xml @@ -26,5 +26,5 @@ android:key="screensaver_night_mode" android:title="@string/night_mode_title" android:summary="@string/night_mode_summary" - android:defaultValue="false" /> + android:defaultValue="true" /> -- cgit v1.2.3 From 60f175e2a226653bb240104c3cac6fc7d5043659 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Thu, 25 Oct 2012 11:37:32 -0700 Subject: Read cities names for DB and not from list Bug: 7413861 The list of user selected cities in world clock was using the name from the usr's list and not from the DB. When a change of locale is done on the device, the cities name were not changed. Changed the WorldClock adapter to use the DB name and timezone if available. Added suport in both app and widget. Change-Id: I029581f9fd6cf245ac980c1d1352e0d777924ccd --- .../alarmclock/DigitalWidgetViewsFactory.java | 24 ++++++++-- src/com/android/deskclock/ClockFragment.java | 24 ++++++---- src/com/android/deskclock/Utils.java | 31 +++++++++++++ src/com/android/deskclock/worldclock/Cities.java | 49 ++++++++++---------- .../deskclock/worldclock/CitiesActivity.java | 53 +++++++--------------- .../deskclock/worldclock/WorldClockAdapter.java | 39 +++++++++++++--- 6 files changed, 140 insertions(+), 80 deletions(-) diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index 22ff28078..dea9aab19 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -47,6 +47,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo private int mId = AppWidgetManager.INVALID_APPWIDGET_ID; private RemoteWorldClockAdapter mAdapter; private boolean mReloadCitiesList = true; + private boolean mReloadCitiesDb = true; private float mFontScale = 1; // An adapter to provide the view for the list of cities in the world clock. @@ -89,14 +90,23 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo final Calendar now = Calendar.getInstance(); now.setTimeInMillis(System.currentTimeMillis()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); - now.setTimeZone(TimeZone.getTimeZone(cityObj.mTimeZone)); + CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); + String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; + now.setTimeZone(TimeZone.getTimeZone(cityTZ)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); clock.setTextViewTextSize(clockId1, TypedValue.COMPLEX_UNIT_PX, mFontSize * mFontScale); clock.setTextViewTextSize(clockId2, TypedValue.COMPLEX_UNIT_PX, mFontSize * mFontScale); clock.setString(clockId1, "setTimeZone", cityObj.mTimeZone); clock.setString(clockId2, "setTimeZone", cityObj.mTimeZone); - clock.setTextViewText(labelId, cityObj.mCityName); + + // Home city or city not in DB , use data from the save selected cities list + if (cityObj.mCityId == null || cityInDb == null) { + clock.setTextViewText(labelId, cityObj.mCityName); + }else { + clock.setTextViewText(labelId, cityInDb.mCityName); + } + if (myDayOfWeek != cityDayOfWeek) { clock.setTextViewText(dayId, mContext.getString( R.string.world_day_of_week_label, now.getDisplayName( @@ -190,6 +200,11 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo mAdapter.loadData(mContext); mReloadCitiesList = false; } + if (mReloadCitiesDb) { + mAdapter.loadCitiesDb(mContext); + mReloadCitiesDb = false; + } + mFontScale = WidgetUtils.getScaleRatio(mContext, null, mId); } @@ -225,8 +240,11 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo widgetManager.partiallyUpdateAppWidget(mId, widget); } else { if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) { - // refresh the list to make sure home time zone is displayed / removed. + // refresh the list to make sure home time zone is displayed / removed mReloadCitiesList = true; + } else if (action.equals(Intent.ACTION_LOCALE_CHANGED)) { + // reload the cities DB to pick up the cities name in the new language + mReloadCitiesDb = true; } // For any time change or locale change, refresh all widgetManager.notifyAppWidgetViewDataChanged(mId, R.id.digital_appwidget_listview); diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java index db3bc8ee8..9dd649ccf 100644 --- a/src/com/android/deskclock/ClockFragment.java +++ b/src/com/android/deskclock/ClockFragment.java @@ -27,7 +27,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; -import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -63,21 +62,28 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - boolean changed = intent.getAction().equals(Intent.ACTION_TIME_CHANGED) - || intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED); - if (changed || intent.getAction().equals(Utils.ACTION_ON_QUARTER_HOUR)) { + String action = intent.getAction(); + boolean changed = action.equals(Intent.ACTION_TIME_CHANGED) + || action.equals(Intent.ACTION_TIMEZONE_CHANGED) + || action.equals(Intent.ACTION_LOCALE_CHANGED); + if (changed || action.equals(Utils.ACTION_ON_QUARTER_HOUR)) { Utils.updateDate(mDateFormat, mDateFormatForAccessibility,mClockFrame); if (mAdapter != null) { // *CHANGED may modify the need for showing the Home City if (changed && (mAdapter.hasHomeCity() != mAdapter.needHomeCity())) { - mAdapter.loadData(context); + mAdapter.reloadData(context); } else { mAdapter.notifyDataSetChanged(); } + // Reloading the cities list with new localized names + if (action.equals(Intent.ACTION_LOCALE_CHANGED)) { + mAdapter.loadCitiesDb(context); + mAdapter.notifyDataSetChanged(); + } } } - if (changed || intent.getAction().equals(Alarms.ALARM_DONE_ACTION) - || intent.getAction().equals(Alarms.ALARM_SNOOZE_CANCELLED)) { + if (changed || action.equals(Alarms.ALARM_DONE_ACTION) + || action.equals(Alarms.ALARM_SNOOZE_CANCELLED)) { Utils.refreshAlarm(getActivity(), mClockFrame); } } @@ -166,12 +172,14 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen filter.addAction(Alarms.ALARM_SNOOZE_CANCELLED); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); + filter.addAction(Intent.ACTION_LOCALE_CHANGED); getActivity().registerReceiver(mIntentReceiver, filter); mButtons.setAlpha(mButtonsHidden ? 0 : 1); - // Resume can invoked after changing the cities list. + // Resume can invoked after changing the cities list or a change in locale if (mAdapter != null) { + mAdapter.loadCitiesDb(getActivity()); mAdapter.reloadData(getActivity()); } // Resume can invoked after changing the clock style. diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java index fcc2c7f22..688f3b773 100644 --- a/src/com/android/deskclock/Utils.java +++ b/src/com/android/deskclock/Utils.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Resources; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; @@ -44,8 +45,12 @@ import android.widget.TextView; import com.android.deskclock.stopwatch.Stopwatches; import com.android.deskclock.timer.Timers; +import com.android.deskclock.worldclock.CityObj; +import java.text.Collator; +import java.util.Arrays; import java.util.Calendar; +import java.util.Comparator; import java.util.Locale; @@ -390,4 +395,30 @@ public class Utils { } } + public static CityObj[] loadCitiesDataBase(Context c) { + final Collator collator = Collator.getInstance(); + Resources r = c.getResources(); + // Read strings array of name,timezone, id + // make sure the list are the same length + String [] cities = r.getStringArray(R.array.cities_names); + String [] timezones = r.getStringArray(R.array.cities_tz); + String [] ids = r.getStringArray(R.array.cities_id); + if (cities.length != timezones.length || ids.length != cities.length) { + Log.wtf("City lists sizes are not the same, cannot use the data"); + return null; + } + CityObj[] tempList = new CityObj [cities.length]; + for (int i = 0; i < cities.length; i++) { + tempList[i] = new CityObj(cities[i], timezones[i], ids[i]); + } + // Sort alphabetically + Arrays.sort(tempList, new Comparator () { + @Override + public int compare(CityObj c1, CityObj c2) { + Comparator mCollator; + return collator.compare(c1.mCityName, c2.mCityName); + } + }); + return tempList; + } } diff --git a/src/com/android/deskclock/worldclock/Cities.java b/src/com/android/deskclock/worldclock/Cities.java index c91eaeb52..dbd017d82 100644 --- a/src/com/android/deskclock/worldclock/Cities.java +++ b/src/com/android/deskclock/worldclock/Cities.java @@ -28,46 +28,45 @@ public class Cities { public static final String WORLDCLOCK_UPDATE_INTENT = "com.android.deskclock.worldclock.update"; private static final String NUMBER_OF_CITIES = "number_of_cities"; - public static void saveCitiesToSharedPrefs( SharedPreferences prefs, HashMap cities) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(NUMBER_OF_CITIES, cities.size()); - Collection col = cities.values(); - Iterator i = col.iterator(); - int count = 0; - while(i.hasNext()) { - CityObj c = i.next(); - c.saveCityToSharedPrefs(editor, count); - count ++; - } - editor.apply(); + SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(NUMBER_OF_CITIES, cities.size()); + Collection col = cities.values(); + Iterator i = col.iterator(); + int count = 0; + while (i.hasNext()) { + CityObj c = i.next(); + c.saveCityToSharedPrefs(editor, count); + count++; + } + editor.apply(); } public static HashMap readCitiesFromSharedPrefs(SharedPreferences prefs) { - int size = prefs.getInt(NUMBER_OF_CITIES, -1); - HashMap c = new HashMap (); - if (size > 0) { - for (int i = 0; i < size; i++) { - CityObj o = new CityObj(prefs, i); - if (o.mCityName != null && o.mTimeZone != null) { - c.put(o.mCityId, o); - } + int size = prefs.getInt(NUMBER_OF_CITIES, -1); + HashMap c = new HashMap(); + if (size > 0) { + for (int i = 0; i < size; i++) { + CityObj o = new CityObj(prefs, i); + if (o.mCityName != null && o.mTimeZone != null) { + c.put(o.mCityId, o); } } - return c; + } + return c; } private static void dumpCities(SharedPreferences prefs, String title) { int size = prefs.getInt(NUMBER_OF_CITIES, -1); - Log.d("Cities","Selected Cities List " + title); - Log.d("Cities","Number of cities " + size); - HashMap c = new HashMap (); + Log.d("Cities", "Selected Cities List " + title); + Log.d("Cities", "Number of cities " + size); + HashMap c = new HashMap(); if (size > 0) { for (int i = 0; i < size; i++) { CityObj o = new CityObj(prefs, i); if (o.mCityName != null && o.mTimeZone != null) { - Log.d("Cities","Name " + o.mCityName + " tz " + o.mTimeZone); + Log.d("Cities", "Name " + o.mCityName + " tz " + o.mTimeZone); } } } diff --git a/src/com/android/deskclock/worldclock/CitiesActivity.java b/src/com/android/deskclock/worldclock/CitiesActivity.java index ffabc76fb..76a9b4b87 100644 --- a/src/com/android/deskclock/worldclock/CitiesActivity.java +++ b/src/com/android/deskclock/worldclock/CitiesActivity.java @@ -21,7 +21,6 @@ import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.format.DateFormat; @@ -40,16 +39,13 @@ import android.widget.TextView; import com.android.deskclock.Alarms; import com.android.deskclock.DeskClock; -import com.android.deskclock.Log; import com.android.deskclock.R; import com.android.deskclock.SettingsActivity; import com.android.deskclock.Utils; import java.text.Collator; import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; -import java.util.Comparator; import java.util.HashMap; import java.util.TimeZone; @@ -68,8 +64,6 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, private CityAdapter mAdapter; private HashMap mUserSelectedCities; private Calendar mCalendar; - private final Collator mCollator = Collator.getInstance(); - /*** * Adapter for a list of cities with the respected time zone. @@ -98,12 +92,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public int getCount() { - return mAllTheCitiesList.length; + return (mAllTheCitiesList != null) ? mAllTheCitiesList.length: 0; } @Override public Object getItem(int p) { - if (p >=0 && p < mAllTheCitiesList.length) { + if (mAllTheCitiesList != null && p >=0 && p < mAllTheCitiesList.length) { return mAllTheCitiesList [p]; } return null; @@ -116,12 +110,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public boolean isEnabled(int p) { - return ((CityObj)mAllTheCitiesList[p]).mCityId != null; + return mAllTheCitiesList != null && ((CityObj)mAllTheCitiesList[p]).mCityId != null; } @Override public View getView(int position, View view, ViewGroup parent) { - if (position < 0 || position >= mAllTheCitiesList.length) { + if (mAllTheCitiesList == null || position < 0 || position >= mAllTheCitiesList.length) { return null; } CityObj c = (CityObj)mAllTheCitiesList [position]; @@ -157,27 +151,10 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, } private void loadCitiesDataBase(Context c) { - Resources r = c.getResources(); - // Read strings array of name,timezone, id - // make sure the list are the same length - String [] cities = r.getStringArray(R.array.cities_names); - String [] timezones = r.getStringArray(R.array.cities_tz); - String [] ids = r.getStringArray(R.array.cities_id); - if (cities.length != timezones.length || ids.length != cities.length) { - Log.wtf("City lists sizes are not the same, cannot use the data"); + CityObj[] tempList = Utils.loadCitiesDataBase(c); + if (tempList == null) { return; - } - CityObj[] tempList = new CityObj [cities.length]; - for (int i = 0; i < cities.length; i++) { - tempList[i] = new CityObj(cities[i], timezones[i], ids[i]); - } - // Sort alphabetically - Arrays.sort(tempList, new Comparator () { - @Override - public int compare(CityObj c1, CityObj c2) { - return mCollator.compare(c1.mCityName, c2.mCityName); - } - }); + } //Create section indexer and add headers to the cities list String val = null; ArrayList sections = new ArrayList (); @@ -207,18 +184,20 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public int getPositionForSection(int section) { - return (Integer) mSectionPositions[section]; + return (mSectionPositions != null) ? (Integer) mSectionPositions[section] : 0; } @Override public int getSectionForPosition(int p) { - for (int i = 0; i < mSectionPositions.length - 1; i++) { - if (p >= (Integer)mSectionPositions[i] && p < (Integer)mSectionPositions[i + 1]) { - return i; + if (mSectionPositions != null) { + for (int i = 0; i < mSectionPositions.length - 1; i++) { + if (p >= (Integer)mSectionPositions[i] && p < (Integer)mSectionPositions[i + 1]) { + return i; + } + } + if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) { + return mSectionPositions.length - 1; } - } - if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) { - return mSectionPositions.length - 1; } return 0; } diff --git a/src/com/android/deskclock/worldclock/WorldClockAdapter.java b/src/com/android/deskclock/worldclock/WorldClockAdapter.java index c76407d60..7f3574f2a 100644 --- a/src/com/android/deskclock/worldclock/WorldClockAdapter.java +++ b/src/com/android/deskclock/worldclock/WorldClockAdapter.java @@ -25,30 +25,34 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; +import com.android.deskclock.AnalogClock; +import com.android.deskclock.DigitalClock; +import com.android.deskclock.R; +import com.android.deskclock.SettingsActivity; +import com.android.deskclock.Utils; + import java.text.Collator; import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.Locale; import java.util.TimeZone; -import com.android.deskclock.AnalogClock; -import com.android.deskclock.DigitalClock; -import com.android.deskclock.R; -import com.android.deskclock.SettingsActivity; - public class WorldClockAdapter extends BaseAdapter { protected Object [] mCitiesList; private final LayoutInflater mInflater; private final Context mContext; private String mClockStyle; private final Collator mCollator = Collator.getInstance(); + protected HashMap mCitiesDb = new HashMap(); public WorldClockAdapter(Context context) { super(); mContext = context; loadData(context); + loadCitiesDb(context); mInflater = LayoutInflater.from(context); } @@ -66,6 +70,19 @@ public class WorldClockAdapter extends BaseAdapter { mCitiesList = addHomeCity(); } + public void loadCitiesDb(Context context) { + mCitiesDb.clear(); + // Read the cities DB so that the names and timezones will be taken from the DB + // and not from the selected list so that change of locale or changes in the DB will + // be reflected. + CityObj [] cities = Utils.loadCitiesDataBase(context); + if (cities != null) { + for (int i = 0; i < cities.length; i ++) { + mCitiesDb.put(cities[i].mCityId, cities [i]); + } + } + } + /*** * Adds the home city as the first item of the adapter if the feature is on and the device time * zone is different from the home time zone that was set by the user. @@ -220,11 +237,19 @@ public class WorldClockAdapter extends BaseAdapter { aclock.setVisibility(View.GONE); dclock.setTimeZone(cityObj.mTimeZone); } - name.setText(cityObj.mCityName); + CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); + // Home city or city not in DB , use data from the save selected cities list + if (cityObj.mCityId == null || cityInDb == null) { + name.setText(cityObj.mCityName); + }else { + name.setText(cityInDb.mCityName); + } final Calendar now = Calendar.getInstance(); now.setTimeZone(TimeZone.getDefault()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); - now.setTimeZone(TimeZone.getTimeZone(cityObj.mTimeZone)); + // Get timezone from cities DB if available + String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; + now.setTimeZone(TimeZone.getTimeZone(cityTZ)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); if (myDayOfWeek != cityDayOfWeek) { dayOfWeek.setText(mContext.getString(R.string.world_day_of_week_label, -- cgit v1.2.3 From 7842f9bd91091b3db9f31c5f31c312c97dbe1c16 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Thu, 15 Nov 2012 10:06:07 -0800 Subject: Move SDK version to 17 Bug: 7551129 Change-Id: Idb4a62ceece91d4c77d78362aae5e97a077be33c --- Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android.mk b/Android.mk index f19bc8142..a0d1b191a 100644 --- a/Android.mk +++ b/Android.mk @@ -12,7 +12,7 @@ LOCAL_PACKAGE_NAME := DeskClock LOCAL_OVERRIDES_PACKAGES := AlarmClock -LOCAL_SDK_VERSION := current +LOCAL_SDK_VERSION := 17 LOCAL_PROGUARD_FLAG_FILES := proguard.flags -- cgit v1.2.3 From 3f6589776cf7463fd1eb0a4c151ffa28455590d9 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Thu, 15 Nov 2012 15:51:19 -0800 Subject: Code formatting fixes. Bug: 7413861 Change-Id: Ia5207e830c8bddf47469ed6b9769cdc98c82b1a2 --- .../alarmclock/DigitalWidgetViewsFactory.java | 8 ++------ src/com/android/deskclock/Utils.java | 20 ++++++++++++-------- .../android/deskclock/worldclock/CitiesActivity.java | 5 +++-- .../deskclock/worldclock/WorldClockAdapter.java | 11 ++++------- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index dea9aab19..5522122c4 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -91,7 +91,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo now.setTimeInMillis(System.currentTimeMillis()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); - String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; + String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone : cityObj.mTimeZone; now.setTimeZone(TimeZone.getTimeZone(cityTZ)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); @@ -101,11 +101,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo clock.setString(clockId2, "setTimeZone", cityObj.mTimeZone); // Home city or city not in DB , use data from the save selected cities list - if (cityObj.mCityId == null || cityInDb == null) { - clock.setTextViewText(labelId, cityObj.mCityName); - }else { - clock.setTextViewText(labelId, cityInDb.mCityName); - } + clock.setTextViewText(labelId, Utils.getCityName(cityObj, cityInDb)); if (myDayOfWeek != cityDayOfWeek) { clock.setTextViewText(dayId, mContext.getString( diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java index 688f3b773..d922cdadb 100644 --- a/src/com/android/deskclock/Utils.java +++ b/src/com/android/deskclock/Utils.java @@ -400,18 +400,18 @@ public class Utils { Resources r = c.getResources(); // Read strings array of name,timezone, id // make sure the list are the same length - String [] cities = r.getStringArray(R.array.cities_names); - String [] timezones = r.getStringArray(R.array.cities_tz); - String [] ids = r.getStringArray(R.array.cities_id); + String[] cities = r.getStringArray(R.array.cities_names); + String[] timezones = r.getStringArray(R.array.cities_tz); + String[] ids = r.getStringArray(R.array.cities_id); if (cities.length != timezones.length || ids.length != cities.length) { Log.wtf("City lists sizes are not the same, cannot use the data"); return null; - } - CityObj[] tempList = new CityObj [cities.length]; - for (int i = 0; i < cities.length; i++) { + } + CityObj[] tempList = new CityObj[cities.length]; + for (int i = 0; i < cities.length; i++) { tempList[i] = new CityObj(cities[i], timezones[i], ids[i]); - } - // Sort alphabetically + } + // Sort alphabetically Arrays.sort(tempList, new Comparator () { @Override public int compare(CityObj c1, CityObj c2) { @@ -421,4 +421,8 @@ public class Utils { }); return tempList; } + + public static String getCityName(CityObj city, CityObj dbCity) { + return (city.mCityId == null || dbCity == null) ? city.mCityName : dbCity.mCityName; + } } diff --git a/src/com/android/deskclock/worldclock/CitiesActivity.java b/src/com/android/deskclock/worldclock/CitiesActivity.java index 76a9b4b87..02423b5a1 100644 --- a/src/com/android/deskclock/worldclock/CitiesActivity.java +++ b/src/com/android/deskclock/worldclock/CitiesActivity.java @@ -92,7 +92,7 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public int getCount() { - return (mAllTheCitiesList != null) ? mAllTheCitiesList.length: 0; + return (mAllTheCitiesList != null) ? mAllTheCitiesList.length : 0; } @Override @@ -191,7 +191,8 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, public int getSectionForPosition(int p) { if (mSectionPositions != null) { for (int i = 0; i < mSectionPositions.length - 1; i++) { - if (p >= (Integer)mSectionPositions[i] && p < (Integer)mSectionPositions[i + 1]) { + if (p >= (Integer) mSectionPositions[i] + && p < (Integer) mSectionPositions[i + 1]) { return i; } } diff --git a/src/com/android/deskclock/worldclock/WorldClockAdapter.java b/src/com/android/deskclock/worldclock/WorldClockAdapter.java index 7f3574f2a..ac94d481c 100644 --- a/src/com/android/deskclock/worldclock/WorldClockAdapter.java +++ b/src/com/android/deskclock/worldclock/WorldClockAdapter.java @@ -75,7 +75,7 @@ public class WorldClockAdapter extends BaseAdapter { // Read the cities DB so that the names and timezones will be taken from the DB // and not from the selected list so that change of locale or changes in the DB will // be reflected. - CityObj [] cities = Utils.loadCitiesDataBase(context); + CityObj[] cities = Utils.loadCitiesDataBase(context); if (cities != null) { for (int i = 0; i < cities.length; i ++) { mCitiesDb.put(cities[i].mCityId, cities [i]); @@ -239,16 +239,13 @@ public class WorldClockAdapter extends BaseAdapter { } CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); // Home city or city not in DB , use data from the save selected cities list - if (cityObj.mCityId == null || cityInDb == null) { - name.setText(cityObj.mCityName); - }else { - name.setText(cityInDb.mCityName); - } + name.setText(Utils.getCityName(cityObj, cityInDb)); + final Calendar now = Calendar.getInstance(); now.setTimeZone(TimeZone.getDefault()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); // Get timezone from cities DB if available - String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; + String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone : cityObj.mTimeZone; now.setTimeZone(TimeZone.getTimeZone(cityTZ)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); if (myDayOfWeek != cityDayOfWeek) { -- cgit v1.2.3 From e9a8a46030b76afe2fde52069fc3a92f7980517b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 16 Nov 2012 13:06:15 -0800 Subject: Import translations. DO NOT MERGE Change-Id: Icb6fd1d11727f1819c8b20c454971650c2b51ead Auto-generated-cl: translation import --- res/values-de/strings.xml | 2 +- res/values-el/strings.xml | 2 +- res/values-fa/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index b88a06a6b..bfa600e44 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -138,7 +138,7 @@ "Reset" "Teilen" "h" - "min" + "Min" "s" "Stunden" "Minuten" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 8ae17011f..6920cbc6f 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -101,7 +101,7 @@ "Κουμπί έντασης" "Εφέ κουμπιού" - "Αφύπνιση" + "Αναβολή αφύπνισης" "Παράβλεψη" "Να μη γίνει καμία ενέργεια" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index c412a15d2..8958e02ea 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -138,7 +138,7 @@ "بازنشانی" "اشتراک‏‌گذاری" "ساعت" - "متر" + "دقیقه" "ثانیه" "ساعت" "دقیقه" -- cgit v1.2.3 From 966f776e127fb3c47325a8275b8444060a836d53 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 16 Nov 2012 13:07:02 -0800 Subject: Import translations. DO NOT MERGE Change-Id: Ibc73159fa3e2064526461a344def4712aabf1e48 Auto-generated-cl: translation import --- res/values-de/strings.xml | 2 +- res/values-el/strings.xml | 2 +- res/values-fa/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index b88a06a6b..bfa600e44 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -138,7 +138,7 @@ "Reset" "Teilen" "h" - "min" + "Min" "s" "Stunden" "Minuten" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 8ae17011f..6920cbc6f 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -101,7 +101,7 @@ "Κουμπί έντασης" "Εφέ κουμπιού" - "Αφύπνιση" + "Αναβολή αφύπνισης" "Παράβλεψη" "Να μη γίνει καμία ενέργεια" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index c412a15d2..8958e02ea 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -138,7 +138,7 @@ "بازنشانی" "اشتراک‏‌گذاری" "ساعت" - "متر" + "دقیقه" "ثانیه" "ساعت" "دقیقه" -- cgit v1.2.3 From 9722dd0b2b040337ec22f4fa9dfa72a1ea83e42c Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 16 Nov 2012 10:33:53 -0800 Subject: Make on/off switch more visible Bug:7555181, 7536599 Changed the dimming effect of an alarm item in alarm settings. When the alarm is off the alpha if the view is reduced except for the on/off switch. Disable on/off switch when in CAB mode Change-Id: I89173ca5124b12fe04a92783d2cc870cfda481c8 --- src/com/android/deskclock/AlarmClock.java | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/com/android/deskclock/AlarmClock.java b/src/com/android/deskclock/AlarmClock.java index ab92228d6..10b0a784c 100644 --- a/src/com/android/deskclock/AlarmClock.java +++ b/src/com/android/deskclock/AlarmClock.java @@ -465,6 +465,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback CheckBox vibrate; ViewGroup collapse; TextView ringtone; + View hairLine; // Other states Alarm alarm; @@ -574,6 +575,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback holder.infoArea = view.findViewById(R.id.info_area); holder.repeat = (CheckBox) view.findViewById(R.id.repeat_onoff); holder.clickableLabel = (TextView) view.findViewById(R.id.edit_label); + holder.hairLine = view.findViewById(R.id.hairline); holder.repeatDays = (LinearLayout) view.findViewById(R.id.repeat_days); // Build button for each day. @@ -610,14 +612,12 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback itemHolder.onoff.setChecked(alarm.enabled); if (mSelectedAlarms.contains(itemHolder.alarm.id)) { itemHolder.alarmItem.setBackgroundColor(mBackgroundColorSelected); - itemHolder.alarmItem.setAlpha(1f); + setItemAlpha(itemHolder, true); + itemHolder.onoff.setEnabled(false); } else { + itemHolder.onoff.setEnabled(true); itemHolder.alarmItem.setBackgroundColor(mBackgroundColor); - if (itemHolder.onoff.isChecked()) { - itemHolder.alarmItem.setAlpha(1f); - } else { - itemHolder.alarmItem.setAlpha(0.5f); - } + setItemAlpha(itemHolder, itemHolder.onoff.isChecked()); } final CompoundButton.OnCheckedChangeListener onOffListener = new CompoundButton.OnCheckedChangeListener() { @@ -629,11 +629,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback return; } if (checked != alarm.enabled) { - if (checked) { - itemHolder.alarmItem.setAlpha(1f); - } else { - itemHolder.alarmItem.setAlpha(0.5f); - } + setItemAlpha(itemHolder, checked); alarm.enabled = checked; asyncUpdateAlarm(alarm, alarm.enabled); } @@ -912,6 +908,16 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback itemHolder.ringtone.setOnLongClickListener(mLongClickListener); } + // Sets the alpha of the item except the on/off switch. This gives a visual effect + // for enabled/disabled alarm while leaving the on/off switch more visible + private void setItemAlpha(ItemHolder holder, boolean enabled) { + float alpha = enabled ? 1f : 0.5f; + holder.clock.setAlpha(alpha); + holder.infoArea.setAlpha(alpha); + holder.expandArea.setAlpha(alpha); + holder.hairLine.setAlpha(alpha); + } + private void updateDaysOfWeekButtons(ItemHolder holder, Alarm.DaysOfWeek daysOfWeek) { HashSet setDays = daysOfWeek.getSetDays(); for (int i = 0; i < 7; i++) { -- cgit v1.2.3 From 38d343af414de746f9831e09390d892f9a28aca3 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 16 Nov 2012 15:35:01 -0800 Subject: Revert "Fix flickers in numeric pad of time picker" Bug: 7407383 Cannot reporoduce the problem described in the bug after reverting the workaround in builds JOP40C and JDP45 on any device. Reverting the workaround. This reverts commit 3060c5130336909deebf61d6c025be6d62bb3f55 Change-Id: Ie3b7285dc712a105cda8d32088ed0cd42098be36 --- src/com/android/deskclock/timer/TimerView.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/com/android/deskclock/timer/TimerView.java b/src/com/android/deskclock/timer/TimerView.java index 5ce38ec9e..310a957cc 100644 --- a/src/com/android/deskclock/timer/TimerView.java +++ b/src/com/android/deskclock/timer/TimerView.java @@ -33,6 +33,7 @@ public class TimerView extends LinearLayout { private ZeroTopPaddingTextView mHoursTens, mMinutesTens; private TextView mSeconds; private final Typeface mAndroidClockMonoThin; + private Typeface mOriginalHoursTypeface; private final int mWhiteColor, mGrayColor; public TimerView(Context context) { @@ -57,15 +58,8 @@ public class TimerView extends LinearLayout { mHoursOnes = (ZeroTopPaddingTextView)findViewById(R.id.hours_ones); mMinutesOnes = (ZeroTopPaddingTextView)findViewById(R.id.minutes_ones); mSeconds = (TextView)findViewById(R.id.seconds); - // If we have hours tens, we are in the alarm time picker, set the hours font to thin - // to prevent the need to set the top paddings (see b/7407383). - if (mHoursTens != null) { - mHoursTens.setTypeface(mAndroidClockMonoThin); - mHoursTens.updatePadding(); - if (mHoursOnes != null) { - mHoursOnes.setTypeface(mAndroidClockMonoThin); - mHoursOnes.updatePadding(); - } + if (mHoursOnes != null) { + mOriginalHoursTypeface = mHoursOnes.getTypeface(); } // Set the lowest time unit with thin font (excluding hundredths) if (mSeconds != null) { @@ -91,21 +85,29 @@ public class TimerView extends LinearLayout { mHoursTens.setVisibility(View.INVISIBLE); } else if (hoursTensDigit == -1) { mHoursTens.setText("-"); + mHoursTens.setTypeface(mAndroidClockMonoThin); mHoursTens.setTextColor(mGrayColor); + mHoursTens.updatePadding(); mHoursTens.setVisibility(View.VISIBLE); } else { mHoursTens.setText(String.format("%d",hoursTensDigit)); + mHoursTens.setTypeface(mOriginalHoursTypeface); mHoursTens.setTextColor(mWhiteColor); + mHoursTens.updatePadding(); mHoursTens.setVisibility(View.VISIBLE); } } if (mHoursOnes != null) { if (hoursOnesDigit == -1) { mHoursOnes.setText("-"); + mHoursOnes.setTypeface(mAndroidClockMonoThin); mHoursOnes.setTextColor(mGrayColor); + mHoursOnes.updatePadding(); } else { mHoursOnes.setText(String.format("%d",hoursOnesDigit)); + mHoursOnes.setTypeface(mOriginalHoursTypeface); mHoursOnes.setTextColor(mWhiteColor); + mHoursOnes.updatePadding(); } } if (mMinutesTens != null) { -- cgit v1.2.3 From e2692e01ee1cce2feae19b70d918df928a9d8f69 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 16 Nov 2012 16:29:14 -0800 Subject: Expand top margin for digital clock Bug: 7429201 Change-Id: I9621bac26f357f22d61f9340089bb44961b7a540 --- res/values-land/dimens.xml | 2 +- res/values-sw600dp-land/dimens.xml | 2 +- res/values-sw600dp/dimens.xml | 2 +- res/values/dimens.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml index 4cc714e57..7967c3f8e 100644 --- a/res/values-land/dimens.xml +++ b/res/values-land/dimens.xml @@ -26,7 +26,7 @@ 15sp 8dip 14dip - 8dip + 24dip 16dip 8dip -5dip diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml index 15fc265d5..822e1d992 100644 --- a/res/values-sw600dp-land/dimens.xml +++ b/res/values-sw600dp-land/dimens.xml @@ -27,7 +27,7 @@ 8dip 8dip 14dip - 16dip + 32dip 28dip 8dip -5dip diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index 9ff029259..8eedd00d8 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -27,7 +27,7 @@ 8dip 8dip 14dip - 32dip + 48dip 15dip 8dip -5dip diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 470ef08cf..dde688862 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -27,7 +27,7 @@ 8dip 8dip 8dip - 16dip + 32dip 16dip 8dip 4dip -- cgit v1.2.3 From 872c29e9aeb5ff1aa71f28b533573b7a53210a67 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 19 Oct 2012 17:44:45 -0700 Subject: Alarm delete confirmation Change-Id: I591c959efb051d800f6279701d84186aab9ecaae --- src/com/android/deskclock/AlarmClock.java | 46 +++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/com/android/deskclock/AlarmClock.java b/src/com/android/deskclock/AlarmClock.java index 10b0a784c..14868c02a 100644 --- a/src/com/android/deskclock/AlarmClock.java +++ b/src/com/android/deskclock/AlarmClock.java @@ -18,10 +18,12 @@ package com.android.deskclock; import android.app.ActionBar; import android.app.Activity; +import android.app.AlertDialog; import android.app.Fragment; import android.app.FragmentTransaction; import android.app.LoaderManager; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.Loader; import android.content.res.Resources; @@ -65,7 +67,7 @@ import java.util.HashSet; public class AlarmClock extends Activity implements LoaderManager.LoaderCallbacks, AlarmTimePickerDialogFragment.AlarmTimePickerDialogHandler, LabelDialogFragment.AlarmLabelDialogHandler, - OnLongClickListener, Callback { + OnLongClickListener, Callback, DialogInterface.OnClickListener { private static final String KEY_EXPANDED_IDS = "expandedIds"; private static final String KEY_REPEAT_CHECKED_IDS = "repeatCheckedIds"; @@ -75,6 +77,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback private static final String KEY_UNDO_SHOWING = "undoShowing"; private static final String KEY_PREVIOUS_DAY_MAP = "previousDayMap"; private static final String KEY_SELECTED_ALARM = "selectedAlarm"; + private static final String KEY_DELETE_CONFIRMATION = "deleteConfirmation"; private static final int REQUEST_CODE_RINGTONE = 1; @@ -86,6 +89,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback private Alarm mSelectedAlarm; private int mScrollToAlarmId = -1; + private boolean mInDeleteConfirmation = false; // This flag relies on the activity having a "standard" launchMode and a new instance of this // activity being created when launched. @@ -118,6 +122,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback selectedAlarms = savedState.getIntArray(KEY_SELECTED_ALARMS); previousDayMap = savedState.getBundle(KEY_PREVIOUS_DAY_MAP); mSelectedAlarm = savedState.getParcelable(KEY_SELECTED_ALARM); + mInDeleteConfirmation = savedState.getBoolean(KEY_DELETE_CONFIRMATION, false); } mAlarmsList = (SwipeableListView) findViewById(R.id.alarms_list); @@ -174,6 +179,13 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback } + @Override + public void onResume() { + super.onResume(); + if (mInDeleteConfirmation) { + showConfirmationDialog(); + } + } private void hideUndoBar(boolean animate, MotionEvent event) { if (mUndoBar != null) { if (event != null && mUndoBar.isEventInToastBar(event)) { @@ -197,6 +209,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback outState.putBoolean(KEY_UNDO_SHOWING, mUndoShowing); outState.putBundle(KEY_PREVIOUS_DAY_MAP, mAdapter.getPreviousDaysOfWeekMap()); outState.putParcelable(KEY_SELECTED_ALARM, mSelectedAlarm); + outState.putBoolean(KEY_DELETE_CONFIRMATION, mInDeleteConfirmation); } private void updateLayout() { @@ -1217,10 +1230,7 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback switch (item.getItemId()) { // Delete selected items and close CAB. case R.id.menu_item_delete_alarm: - if (mAdapter != null) { - mAdapter.deleteSelectedAlarms(); - mode.finish(); - } + showConfirmationDialog(); break; default: break; @@ -1247,4 +1257,30 @@ public class AlarmClock extends Activity implements LoaderManager.LoaderCallback return false; } + /*** + * Handle the delete alarms confirmation dialog + */ + + private void showConfirmationDialog() { + AlertDialog.Builder b = new AlertDialog.Builder(this); + Resources res = getResources(); + String msg = String.format(res.getQuantityText(R.plurals.alarm_delete_confirmation, + mAdapter.getSelectedItemsNum()).toString()); + b.setCancelable(true).setMessage(msg) + .setNegativeButton(res.getString(android.R.string.cancel), this) + .setPositiveButton(res.getString(android.R.string.ok), this).show(); + mInDeleteConfirmation = true; + } + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == -1) { + if (mAdapter != null) { + mAdapter.deleteSelectedAlarms(); + mActionMode.finish(); + } + } + dialog.dismiss(); + mInDeleteConfirmation = false; + } + } -- cgit v1.2.3 From 93d3ba1d94697ac6b37b394421e3758a22838d9d Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 22 Nov 2012 21:21:06 -0800 Subject: Import translations. DO NOT MERGE Change-Id: Ic06173d792c87a0cdc0dd45816fb44dc0e925ec0 Auto-generated-cl: translation import --- res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index d04d989cb..0b91de2ea 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -31,7 +31,7 @@ "Будильник" "Установить будильник" "Вибросигнал" - "Дни недели" + "Повторять" "Звонок будильника" "Рингтон" "Время" -- cgit v1.2.3 From 0f0e905dbe8a03bb43f8801e93e96ad031a70f09 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 22 Nov 2012 21:21:27 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I814f8e9ca89dbdfc3d0d852f8c9862f178a4573f Auto-generated-cl: translation import --- res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index d04d989cb..0b91de2ea 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -31,7 +31,7 @@ "Будильник" "Установить будильник" "Вибросигнал" - "Дни недели" + "Повторять" "Звонок будильника" "Рингтон" "Время" -- cgit v1.2.3 From 6add973eb288c3321b7a4609bf8472fafe11cca0 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Tue, 20 Nov 2012 11:43:49 -0800 Subject: Put the seconds hand on top in the analog clock Bug: 7555265 Change-Id: I4be90e5960492b0c8d38d7d2c52bd0dd18f0c6e0 --- src/com/android/deskclock/AnalogClock.java | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/com/android/deskclock/AnalogClock.java b/src/com/android/deskclock/AnalogClock.java index 8b1bf9a57..ba63e787f 100644 --- a/src/com/android/deskclock/AnalogClock.java +++ b/src/com/android/deskclock/AnalogClock.java @@ -61,8 +61,8 @@ public class AnalogClock extends View { private String mTimeZoneId; private boolean mNoSeconds = false; - private float mDotRadius; - private float mDotOffset; + private final float mDotRadius; + private final float mDotOffset; private Paint mDotPaint; public AnalogClock(Context context) { @@ -218,6 +218,18 @@ public class AnalogClock extends View { hourHand.draw(canvas); canvas.restore(); + canvas.save(); + canvas.rotate(mMinutes / 60.0f * 360.0f, x, y); + + final Drawable minuteHand = mMinuteHand; + if (changed) { + w = minuteHand.getIntrinsicWidth(); + h = minuteHand.getIntrinsicHeight(); + minuteHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); + } + minuteHand.draw(canvas); + canvas.restore(); + if (!mNoSeconds) { canvas.save(); canvas.rotate(mSeconds / 60.0f * 360.0f, x, y); @@ -231,17 +243,6 @@ public class AnalogClock extends View { secondHand.draw(canvas); canvas.restore(); } - canvas.save(); - canvas.rotate(mMinutes / 60.0f * 360.0f, x, y); - - final Drawable minuteHand = mMinuteHand; - if (changed) { - w = minuteHand.getIntrinsicWidth(); - h = minuteHand.getIntrinsicHeight(); - minuteHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); - } - minuteHand.draw(canvas); - canvas.restore(); if (scaled) { canvas.restore(); -- cgit v1.2.3 From e06d867375f0d64f35c229b04f07d4cd374fa6f0 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Mon, 26 Nov 2012 12:09:23 -0800 Subject: Sort timezones in timezone picker Bug: 7596888 Change-Id: Ia122cf85c36f402008b5cbf6249481cb9605126b --- src/com/android/deskclock/SettingsActivity.java | 95 +++++++++++++++---------- 1 file changed, 59 insertions(+), 36 deletions(-) diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java index ffdf1afaa..ef2243f2a 100644 --- a/src/com/android/deskclock/SettingsActivity.java +++ b/src/com/android/deskclock/SettingsActivity.java @@ -33,6 +33,9 @@ import android.view.MenuItem; import com.android.deskclock.worldclock.Cities; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.TimeZone; /** @@ -64,7 +67,6 @@ public class SettingsActivity extends PreferenceActivity private static CharSequence[][] mTimezones; private long mTime; - private static final boolean SHOW_DAYLIGHT_SAVINGS_INDICATOR = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -214,6 +216,52 @@ public class SettingsActivity extends PreferenceActivity SnoozeLengthDialog snoozePref = (SnoozeLengthDialog) findPreference(KEY_ALARM_SNOOZE); snoozePref.setSummary(); } + + private class TimeZoneRow implements Comparable { + private static final boolean SHOW_DAYLIGHT_SAVINGS_INDICATOR = false; + + public final String mId; + public final String mDisplayName; + public final int mOffset; + + public TimeZoneRow(String id, String name) { + mId = id; + TimeZone tz = TimeZone.getTimeZone(id); + boolean useDaylightTime = tz.useDaylightTime(); + mOffset = tz.getOffset(mTime); + mDisplayName = buildGmtDisplayName(id, name, useDaylightTime); + } + + @Override + public int compareTo(TimeZoneRow another) { + return mOffset - another.mOffset; + } + + public String buildGmtDisplayName(String id, String displayName, boolean useDaylightTime) { + int p = Math.abs(mOffset); + StringBuilder name = new StringBuilder("(GMT"); + name.append(mOffset < 0 ? '-' : '+'); + + name.append(p / DateUtils.HOUR_IN_MILLIS); + name.append(':'); + + int min = p / 60000; + min %= 60; + + if (min < 10) { + name.append('0'); + } + name.append(min); + name.append(") "); + name.append(displayName); + if (useDaylightTime && SHOW_DAYLIGHT_SAVINGS_INDICATOR) { + name.append(" \u2600"); // Sun symbol + } + return name.toString(); + } + } + + /** * Returns an array of ids/time zones. This returns a double indexed array * of ids and time zones for Calendar. It is an inefficient method and @@ -229,44 +277,19 @@ public class SettingsActivity extends PreferenceActivity if (ids.length != labels.length) { Log.wtf("Timezone ids and labels have different length!"); } - CharSequence[][] timeZones = new CharSequence[2][ids.length]; + List timezones = new ArrayList(); for (int i = 0; i < ids.length; i++) { - timeZones[0][i] = ids[i]; - timeZones[1][i] = buildGmtDisplayName(ids[i], labels[i]); + timezones.add(new TimeZoneRow(ids[i], labels[i])); } - return timeZones; - } + Collections.sort(timezones); - public String buildGmtDisplayName(String id, String displayName) { - TimeZone tz = TimeZone.getTimeZone(id); - boolean mUseDaylightTime = tz.useDaylightTime(); - int mOffset = tz.getOffset(mTime); - int p = Math.abs(mOffset); - StringBuilder name = new StringBuilder(); - name.append("GMT"); - - if (mOffset < 0) { - name.append('-'); - } else { - name.append('+'); + CharSequence[][] timeZones = new CharSequence[2][timezones.size()]; + int i = 0; + for (TimeZoneRow row : timezones) { + timeZones[0][i] = row.mId; + timeZones[1][i++] = row.mDisplayName; } - - name.append(p / (DateUtils.HOUR_IN_MILLIS)); - name.append(':'); - - int min = p / 60000; - min %= 60; - - if (min < 10) { - name.append('0'); - } - name.append(min); - name.insert(0, "("); - name.append(") "); - name.append(displayName); - if (mUseDaylightTime && SHOW_DAYLIGHT_SAVINGS_INDICATOR) { - name.append(" \u2600"); // Sun symbol - } - return name.toString(); + return timeZones; } + } -- cgit v1.2.3 From 94830db6555083e48f68d727921952a116ff7b18 Mon Sep 17 00:00:00 2001 From: Attila Bodis Date: Mon, 26 Nov 2012 15:24:25 -0800 Subject: Extract boilerplate code into drawHand() utility method, for make benefit glorious readability. Change-Id: I67c92f3f0518fe98e703c5dc5afdf2f33603ff4d --- src/com/android/deskclock/AnalogClock.java | 50 ++++++++++-------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/com/android/deskclock/AnalogClock.java b/src/com/android/deskclock/AnalogClock.java index ba63e787f..55fff90a8 100644 --- a/src/com/android/deskclock/AnalogClock.java +++ b/src/com/android/deskclock/AnalogClock.java @@ -207,41 +207,10 @@ public class AnalogClock extends View { canvas.drawCircle(x, y - (h / 2) + mDotOffset, mDotRadius, mDotPaint); } - canvas.save(); - canvas.rotate(mHour / 12.0f * 360.0f, x, y); - final Drawable hourHand = mHourHand; - if (changed) { - w = hourHand.getIntrinsicWidth(); - h = hourHand.getIntrinsicHeight(); - hourHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); - } - hourHand.draw(canvas); - canvas.restore(); - - canvas.save(); - canvas.rotate(mMinutes / 60.0f * 360.0f, x, y); - - final Drawable minuteHand = mMinuteHand; - if (changed) { - w = minuteHand.getIntrinsicWidth(); - h = minuteHand.getIntrinsicHeight(); - minuteHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); - } - minuteHand.draw(canvas); - canvas.restore(); - + drawHand(canvas, mHourHand, x, y, mHour / 12.0f * 360.0f, changed); + drawHand(canvas, mMinuteHand, x, y, mMinutes / 60.0f * 360.0f, changed); if (!mNoSeconds) { - canvas.save(); - canvas.rotate(mSeconds / 60.0f * 360.0f, x, y); - - final Drawable secondHand = mSecondHand; - if (changed) { - w = secondHand.getIntrinsicWidth(); - h = secondHand.getIntrinsicHeight(); - secondHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); - } - secondHand.draw(canvas); - canvas.restore(); + drawHand(canvas, mSecondHand, x, y, mSeconds / 60.0f * 360.0f, changed); } if (scaled) { @@ -249,6 +218,19 @@ public class AnalogClock extends View { } } + private void drawHand(Canvas canvas, Drawable hand, int x, int y, float angle, + boolean changed) { + canvas.save(); + canvas.rotate(angle, x, y); + if (changed) { + final int w = hand.getIntrinsicWidth(); + final int h = hand.getIntrinsicHeight(); + hand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2)); + } + hand.draw(canvas); + canvas.restore(); + } + private void onTimeChanged() { mCalendar.setToNow(); -- cgit v1.2.3 From 5b46dd97251a76d22883661734f3712418373886 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Wed, 21 Nov 2012 15:32:23 -0800 Subject: Timer Setup layout change for i18n BUG: 7533146 split layout for landscape; removed padding on portrait then centered time text instead Change-Id: I0793afb5c7e814df4fe0e0a4e75275bbb806583f --- res/layout-land/time_setup_view.xml | 138 ++++++++++++++++++++++++++++++++++++ res/layout/time_setup_view.xml | 4 +- res/layout/timer_fragment.xml | 2 - 3 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 res/layout-land/time_setup_view.xml diff --git a/res/layout-land/time_setup_view.xml b/res/layout-land/time_setup_view.xml new file mode 100644 index 000000000..8badd96c7 --- /dev/null +++ b/res/layout-land/time_setup_view.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/layout/time_setup_view.xml b/res/layout/time_setup_view.xml index 8badd96c7..c0ab9bceb 100644 --- a/res/layout/time_setup_view.xml +++ b/res/layout/time_setup_view.xml @@ -27,9 +27,7 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/medium_font_padding" android:paddingBottom="@dimen/medium_font_padding" - android:paddingLeft="@dimen/timer_padding_left" - android:layout_gravity="center" - android:gravity="top" + android:gravity="top|center_horizontal" android:baselineAligned="false"> -- cgit v1.2.3 From 66258da1ec77ac2368227deb594c27308d11a5cb Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 27 Nov 2012 12:07:58 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I09a41b0f6a95b6115f4d36fa03b130705bc5e061 Auto-generated-cl: translation import --- res/values-de/strings.xml | 4 ++-- res/values-ru/strings.xml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index bfa600e44..0d5c0db09 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -160,7 +160,7 @@ "%d Sekunden" "Timer hinzufügen" - "Start" + "Starten" "Löschen" "1 Minute hinzufügen" "Anhalten" @@ -226,7 +226,7 @@ "Manaus" "Santiago" "Neufundland" - "Brasilia" + "Brasília" "Buenos Aires" "Grönland" "Montevideo" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 0b91de2ea..4a7b75962 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -41,10 +41,10 @@ "Повтор сигнала через %d мин." "Повтор в %s" - "Осталось меньше минуты" - "Осталось %1$s" - "Осталось %2$s" - "Осталось %1$s %2$s" + "Осталось: меньше минуты" + "Осталось: %1$s" + "Осталось: %2$s" + "Осталось: %1$s %2$s" "Будильник зазвонит менее чем через минуту." @@ -58,9 +58,9 @@ "1 день" "%s дн." - "1 час" + "1 ч." "%s ч." - "1 минуту" + "1 мин." "%s мин." "Каждый день" "Не выбрано" -- cgit v1.2.3 From 6b3d62943ed768e7c79f5e9866719ce2d4fe8f71 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 27 Nov 2012 12:08:21 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I169d5201a8c361cf74464693b1edfeeb645310af Auto-generated-cl: translation import --- res/values-de/strings.xml | 4 ++-- res/values-ru/strings.xml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index bfa600e44..0d5c0db09 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -160,7 +160,7 @@ "%d Sekunden" "Timer hinzufügen" - "Start" + "Starten" "Löschen" "1 Minute hinzufügen" "Anhalten" @@ -226,7 +226,7 @@ "Manaus" "Santiago" "Neufundland" - "Brasilia" + "Brasília" "Buenos Aires" "Grönland" "Montevideo" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 0b91de2ea..4a7b75962 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -41,10 +41,10 @@ "Повтор сигнала через %d мин." "Повтор в %s" - "Осталось меньше минуты" - "Осталось %1$s" - "Осталось %2$s" - "Осталось %1$s %2$s" + "Осталось: меньше минуты" + "Осталось: %1$s" + "Осталось: %2$s" + "Осталось: %1$s %2$s" "Будильник зазвонит менее чем через минуту." @@ -58,9 +58,9 @@ "1 день" "%s дн." - "1 час" + "1 ч." "%s ч." - "1 минуту" + "1 мин." "%s мин." "Каждый день" "Не выбрано" -- cgit v1.2.3 From b69f408433c5b8ee184d6527b63616b29efba429 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Tue, 20 Nov 2012 14:36:31 -0800 Subject: ACTION_ON_QUARTER_HOUR replaces ACTION_TIME_TICK BUG: 7522888 Consolidated common code for this alarm into Utils refresh quarter-hour-alarm when time changes Change-Id: I96645d07db942a9030485cd71bd2a27a04475672 --- .../alarmclock/DigitalWidgetViewsFactory.java | 7 ++++- src/com/android/deskclock/ClockFragment.java | 14 ++++------ src/com/android/deskclock/ScreensaverActivity.java | 32 +++------------------- src/com/android/deskclock/Utils.java | 31 ++++++++++++++++++++- 4 files changed, 45 insertions(+), 39 deletions(-) diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index 5522122c4..d6d2b5d51 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -16,6 +16,7 @@ package com.android.alarmclock; +import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.BroadcastReceiver; import android.content.Context; @@ -49,6 +50,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo private boolean mReloadCitiesList = true; private boolean mReloadCitiesDb = true; private float mFontScale = 1; + private PendingIntent mQuarterlyIntent; // An adapter to provide the view for the list of cities in the world clock. private class RemoteWorldClockAdapter extends WorldClockAdapter { @@ -176,13 +178,14 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo @Override public void onCreate() { + mQuarterlyIntent = Utils.startAlarmOnQuarterHour(mContext); // Do intent listening registration here since doing it in the manifest creates a new // new factory IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_DATE_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); filter.addAction(Intent.ACTION_SCREEN_ON); - filter.addAction(Intent.ACTION_TIME_TICK); + filter.addAction(Utils.ACTION_ON_QUARTER_HOUR); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_LOCALE_CHANGED); filter.addAction("com.android.deskclock.NEXT_ALARM_TIME_SET"); @@ -206,6 +209,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo @Override public void onDestroy() { + Utils.cancelAlarmOnQuarterHour(mContext, mQuarterlyIntent); mContext.unregisterReceiver(this); } @@ -250,6 +254,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo WidgetUtils.setClockSize(context, widget, ratio); refreshAlarm(context, widget); widgetManager.partiallyUpdateAppWidget(mId, widget); + mQuarterlyIntent = Utils.refreshAlarmOnQuarterHour(context, mQuarterlyIntent); } } diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java index 9dd649ccf..bd1b581c8 100644 --- a/src/com/android/deskclock/ClockFragment.java +++ b/src/com/android/deskclock/ClockFragment.java @@ -16,7 +16,6 @@ package com.android.deskclock; -import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; @@ -86,6 +85,9 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen || action.equals(Alarms.ALARM_SNOOZE_CANCELLED)) { Utils.refreshAlarm(getActivity(), mClockFrame); } + if (changed) { + mQuarterlyIntent = Utils.refreshAlarmOnQuarterHour(getActivity(), mQuarterlyIntent); + } } }; @@ -159,12 +161,7 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen mDateFormat = getString(R.string.abbrev_wday_month_day_no_year); mDateFormatForAccessibility = getString(R.string.full_wday_month_day_no_year); - long alarmOnQuarterHour = Utils.getAlarmOnQuarterHour(); - mQuarterlyIntent = PendingIntent.getBroadcast( - getActivity(), 0, new Intent(Utils.ACTION_ON_QUARTER_HOUR), 0); - ((AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE)).setRepeating( - AlarmManager.RTC, alarmOnQuarterHour, AlarmManager.INTERVAL_FIFTEEN_MINUTES, - mQuarterlyIntent); + mQuarterlyIntent = Utils.startAlarmOnQuarterHour(getActivity()); // Besides monitoring when quarter-hour changes, monitor other actions that // effect clock time IntentFilter filter = new IntentFilter(Utils.ACTION_ON_QUARTER_HOUR); @@ -197,8 +194,7 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen public void onPause() { super.onPause(); mPrefs.unregisterOnSharedPreferenceChangeListener(this); - ((AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE)).cancel( - mQuarterlyIntent); + Utils.cancelAlarmOnQuarterHour(getActivity(), mQuarterlyIntent); getActivity().unregisterReceiver(mIntentReceiver); } diff --git a/src/com/android/deskclock/ScreensaverActivity.java b/src/com/android/deskclock/ScreensaverActivity.java index 814888a9d..c75e1fc2a 100644 --- a/src/com/android/deskclock/ScreensaverActivity.java +++ b/src/com/android/deskclock/ScreensaverActivity.java @@ -16,44 +16,23 @@ package com.android.deskclock; -import android.animation.Animator; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.animation.TimeInterpolator; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; -import android.app.UiModeManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.content.res.Configuration; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; import android.os.BatteryManager; -import android.os.Bundle; import android.os.Handler; -import android.preference.PreferenceManager; -import android.provider.Settings; -import android.service.dreams.DreamService; -import android.text.TextUtils; -import android.text.format.DateFormat; import android.util.Log; import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.view.animation.AccelerateInterpolator; -import android.view.animation.DecelerateInterpolator; -import android.widget.TextView; import com.android.deskclock.Utils.ScreensaverMoveSaverRunnable; -import java.util.Calendar; - public class ScreensaverActivity extends Activity { static final boolean DEBUG = false; static final String TAG = "DeskClock/ScreensaverActivity"; @@ -96,6 +75,8 @@ public class ScreensaverActivity extends Activity { if (changed) { Utils.refreshAlarm(ScreensaverActivity.this, mContentView); + mQuarterlyIntent = Utils.refreshAlarmOnQuarterHour( + ScreensaverActivity.this, mQuarterlyIntent); } } @@ -136,18 +117,13 @@ public class ScreensaverActivity extends Activity { layoutClockSaver(); mHandler.post(mMoveSaverRunnable); - long alarmOnQuarterHour = Utils.getAlarmOnQuarterHour(); - mQuarterlyIntent = PendingIntent.getBroadcast( - this, 0, new Intent(Utils.ACTION_ON_QUARTER_HOUR), 0); - ((AlarmManager) getSystemService(Context.ALARM_SERVICE)).setRepeating( - AlarmManager.RTC, alarmOnQuarterHour, AlarmManager.INTERVAL_FIFTEEN_MINUTES, - mQuarterlyIntent); + mQuarterlyIntent = Utils.startAlarmOnQuarterHour(this); } @Override public void onPause() { mHandler.removeCallbacks(mMoveSaverRunnable); - ((AlarmManager) getSystemService(Context.ALARM_SERVICE)).cancel(mQuarterlyIntent); + Utils.cancelAlarmOnQuarterHour(this, mQuarterlyIntent); finish(); super.onPause(); } diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java index d922cdadb..ff05d2638 100644 --- a/src/com/android/deskclock/Utils.java +++ b/src/com/android/deskclock/Utils.java @@ -20,6 +20,8 @@ import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.TimeInterpolator; +import android.app.AlarmManager; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -313,7 +315,7 @@ public class Utils { } /** Setup to find out when the quarter-hour changes (e.g. Kathmandu is GMT+5:45) **/ - public static long getAlarmOnQuarterHour() { + private static long getAlarmOnQuarterHour() { Calendar nextQuarter = Calendar.getInstance(); // Set 1 second to ensure quarter-hour threshold passed. nextQuarter.set(Calendar.SECOND, 1); @@ -327,6 +329,33 @@ public class Utils { return alarmOnQuarterHour; } + /** Setup alarm refresh when the quarter-hour changes **/ + public static PendingIntent startAlarmOnQuarterHour(Context context) { + if (context != null) { + PendingIntent quarterlyIntent = PendingIntent.getBroadcast( + context, 0, new Intent(Utils.ACTION_ON_QUARTER_HOUR), 0); + ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setRepeating( + AlarmManager.RTC, getAlarmOnQuarterHour(), + AlarmManager.INTERVAL_FIFTEEN_MINUTES, quarterlyIntent); + return quarterlyIntent; + } else { + return null; + } + } + + public static void cancelAlarmOnQuarterHour(Context context, PendingIntent quarterlyIntent) { + if (quarterlyIntent != null && context != null) { + ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).cancel( + quarterlyIntent); + } + } + + public static PendingIntent refreshAlarmOnQuarterHour( + Context context, PendingIntent quarterlyIntent) { + cancelAlarmOnQuarterHour(context, quarterlyIntent); + return startAlarmOnQuarterHour(context); + } + /** * For screensavers to set whether the digital or analog clock should be displayed. * Returns the view to be displayed. -- cgit v1.2.3 From 0548712a944f298d0d785373056c83ad460fe5d0 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Wed, 28 Nov 2012 12:23:34 -0800 Subject: Keep screen on when running stopwatch Bug: 7538100 Added a wakelock to keep the screen on when stopwatch is running, the clock app in running and it is in the stopwatch view. Added a callback and a listener to track the current view in the clock app. Change-Id: Ib2af1dcd510321afc805c54d4155346eeca7fffa --- src/com/android/deskclock/DeskClock.java | 60 ++++++++++++++++++---- src/com/android/deskclock/DeskClockFragment.java | 13 +---- .../deskclock/stopwatch/StopwatchFragment.java | 53 +++++++++++++++---- 3 files changed, 94 insertions(+), 32 deletions(-) diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java index 159fffe38..0cc0d281a 100644 --- a/src/com/android/deskclock/DeskClock.java +++ b/src/com/android/deskclock/DeskClock.java @@ -20,15 +20,13 @@ import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; +import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.preference.PreferenceManager; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; @@ -38,10 +36,6 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; -import android.view.animation.Animation; -import android.view.animation.Animation.AnimationListener; -import android.view.animation.AnimationUtils; -import android.view.animation.TranslateAnimation; import android.widget.PopupMenu; import android.widget.TextView; @@ -54,6 +48,7 @@ import com.android.deskclock.timer.Timers; import com.android.deskclock.worldclock.CitiesActivity; import java.util.ArrayList; +import java.util.HashSet; import java.util.TimeZone; /** @@ -134,6 +129,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe mStopwatchTab.setContentDescription(R.string.menu_stopwatch); mTabsAdapter.addTab(mStopwatchTab, StopwatchFragment.class,STOPWATCH_TAB_INDEX); mActionBar.setSelectedNavigationItem(selectedIndex); + mTabsAdapter.notifySelectedPage(selectedIndex); } } @@ -268,10 +264,19 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe Log.v(LOG_TAG, "Setting home time zone to " + homeTimeZone); } - public boolean isClockTab() { - return mViewPager.getCurrentItem() == CLOCK_TAB_INDEX; + public void registerPageChangedListener(DeskClockFragment frag) { + if (mTabsAdapter != null) { + mTabsAdapter.registerPageChangedListener(frag); + } + } + + public void unregisterPageChangedListener(DeskClockFragment frag) { + if (mTabsAdapter != null) { + mTabsAdapter.unregisterPageChangedListener(frag); + } } + /*** * Adapter for wrapping together the ActionBar's tab with the ViewPager */ @@ -300,6 +305,8 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe ActionBar mMainActionBar; Context mContext; ViewPager mPager; + // Used for doing callbacks to fragments. + HashSet mFragmentTags = new HashSet(); public TabsAdapter(Activity activity, ViewPager pager) { super(activity.getFragmentManager()); @@ -340,6 +347,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe @Override public void onPageSelected(int position) { mMainActionBar.setSelectedNavigationItem(position); + notifyPageChanged(position); } @Override @@ -363,14 +371,44 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe // Do nothing } + + public void notifySelectedPage(int page) { + notifyPageChanged(page); + } + + private void notifyPageChanged(int newPage) { + for (String tag : mFragmentTags) { + final FragmentManager fm = getFragmentManager(); + DeskClockFragment f = (DeskClockFragment) fm.findFragmentByTag(tag); + if (f != null) { + f.onPageChanged(newPage); + } + } + } + + public void registerPageChangedListener(DeskClockFragment frag) { + String tag = frag.getTag(); + if (mFragmentTags.contains(tag)) { + Log.wtf(LOG_TAG, "Trying to add an existing fragment " + tag); + } else { + mFragmentTags.add(frag.getTag()); + } + // Since registering a listener by the fragment is done sometimes after the page + // was already changed, make sure the fragment gets the current page + frag.onPageChanged(mMainActionBar.getSelectedNavigationIndex()); + } + + public void unregisterPageChangedListener(DeskClockFragment frag) { + mFragmentTags.remove(frag.getTag()); + } } public static abstract class OnTapListener implements OnTouchListener { private float mLastTouchX; private float mLastTouchY; private long mLastTouchTime; - private TextView mMakePressedTextView; - private int mPressedColor, mGrayColor; + private final TextView mMakePressedTextView; + private final int mPressedColor, mGrayColor; private final float MAX_MOVEMENT_ALLOWED = 20; private final long MAX_TIME_ALLOWED = 500; diff --git a/src/com/android/deskclock/DeskClockFragment.java b/src/com/android/deskclock/DeskClockFragment.java index 4df2fccd2..dcf7f7c3a 100644 --- a/src/com/android/deskclock/DeskClockFragment.java +++ b/src/com/android/deskclock/DeskClockFragment.java @@ -17,19 +17,10 @@ package com.android.deskclock; import android.app.Fragment; -import android.content.Context; public class DeskClockFragment extends Fragment { - protected Context mContext; - private boolean mButtonClicked = false; - protected void buttonClicked(boolean state) { - mButtonClicked = state; - } - - public boolean isButtonClicked() { - boolean res = mButtonClicked; - mButtonClicked = false; - return res; + public void onPageChanged(int page) { + // Do nothing here , only in derived classes } } diff --git a/src/com/android/deskclock/stopwatch/StopwatchFragment.java b/src/com/android/deskclock/stopwatch/StopwatchFragment.java index b751cc048..fd71f4c6f 100644 --- a/src/com/android/deskclock/stopwatch/StopwatchFragment.java +++ b/src/com/android/deskclock/stopwatch/StopwatchFragment.java @@ -9,6 +9,8 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; @@ -17,7 +19,6 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; -import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListPopupWindow; @@ -28,7 +29,6 @@ import android.widget.TextView; import com.android.deskclock.CircleButtonsLinearLayout; import com.android.deskclock.CircleTimerView; import com.android.deskclock.DeskClock; -import com.android.deskclock.DeskClock.OnTapListener; import com.android.deskclock.DeskClockFragment; import com.android.deskclock.Log; import com.android.deskclock.R; @@ -38,10 +38,10 @@ import com.android.deskclock.timer.CountingTimerView; import java.util.ArrayList; import java.util.List; -/** - * TODO: Insert description here. (generated by isaackatz) - */ -public class StopwatchFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener{ +public class StopwatchFragment extends DeskClockFragment + implements OnSharedPreferenceChangeListener { + + private static final String TAG = "StopwatchFragment"; int mState = Stopwatches.STOPWATCH_RESET; // Stopwatch views that are accessed by the activity @@ -52,6 +52,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref private ListView mLapsList; private ImageButton mShareButton; private ListPopupWindow mSharePopup; + private WakeLock mWakeLock; // Used for calculating the time from the start taking into account the pause times long mStartTime = 0; @@ -185,7 +186,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); - buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // do stop @@ -194,6 +194,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStop(); intent.setAction(Stopwatches.STOP_STOPWATCH); context.startService(intent); + releaseWakeLock(); break; case Stopwatches.STOPWATCH_RESET: case Stopwatches.STOPWATCH_STOPPED: @@ -201,6 +202,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStart(time); intent.setAction(Stopwatches.START_STOPWATCH); context.startService(intent); + acquireWakeLock(); break; default: Log.wtf("Illegal state " + mState @@ -224,7 +226,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); - buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // Save lap time @@ -238,6 +239,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doReset(); intent.setAction(Stopwatches.RESET_STOPWATCH); context.startService(intent); + releaseWakeLock(); break; default: Log.wtf("Illegal state " + mState @@ -300,12 +302,13 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref setButtons(mState); mTimeText.setTime(mAccumulatedTime, true, true); if (mState == Stopwatches.STOPWATCH_RUNNING) { + acquireWakeLock(); startUpdateThread(); } else if (mState == Stopwatches.STOPWATCH_STOPPED && mAccumulatedTime != 0) { mTimeText.blinkTimeStr(true); } showLaps(); - + ((DeskClock)getActivity()).registerPageChangedListener(this); super.onResume(); } @@ -325,10 +328,20 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref mSharePopup.dismiss(); mSharePopup = null; } - + ((DeskClock)getActivity()).unregisterPageChangedListener(this); + releaseWakeLock(); super.onPause(); } + @Override + public void onPageChanged(int page) { + if (page == DeskClock.STOPWATCH_TAB_INDEX && mState == Stopwatches.STOPWATCH_RUNNING) { + acquireWakeLock(); + } else { + releaseWakeLock(); + } + } + private void doStop() { stopUpdateThread(); mTime.pauseIntervalAnimation(); @@ -743,4 +756,24 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref } } } + + // Used to keeps screen on when stopwatch is running. + + private void acquireWakeLock() { + if (mWakeLock == null) { + final PowerManager pm = + (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); + mWakeLock = pm.newWakeLock( + PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG); + mWakeLock.setReferenceCounted(false); + } + mWakeLock.acquire(); + } + + private void releaseWakeLock() { + if (mWakeLock != null && mWakeLock.isHeld()) { + mWakeLock.release(); + } + } + } -- cgit v1.2.3 From 316228fa41d5e7f51c1fd2b919e66ab5b8a42a31 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Wed, 28 Nov 2012 17:54:54 -0800 Subject: Padding between date and digital clock BUG: 7615514 New margin to use between digital and date in ClockFragment and ScreenSaver New left/right/bottom margin for floating portion of the SaverSaver too. Change-Id: I96babc7c1418e38b93d79d44b52ad4481f2aca2e --- res/layout/desk_clock_saver.xml | 5 ++++- res/layout/main_clock_frame.xml | 2 +- res/values-sw600dp/dimens.xml | 2 ++ res/values/dimens.xml | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/res/layout/desk_clock_saver.xml b/res/layout/desk_clock_saver.xml index 7fae38054..2cddbd635 100644 --- a/res/layout/desk_clock_saver.xml +++ b/res/layout/desk_clock_saver.xml @@ -29,8 +29,10 @@ android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/screensaver_margin" + android:layout_marginRight="@dimen/screensaver_margin" android:layout_marginTop="@dimen/time_margin_top" - android:layout_marginBottom="@dimen/time_margin_bottom"> + android:layout_marginBottom="@dimen/screensaver_margin"> 8dip 14dip 48dip + 36dip + 32dip 15dip 8dip -5dip diff --git a/res/values/dimens.xml b/res/values/dimens.xml index dde688862..51fd102b8 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -28,7 +28,9 @@ 8dip 8dip 32dip + 24dip 16dip + 16dip 8dip 4dip -4dip -- cgit v1.2.3 From e41a1a5c11e75f36c5f1d1ec7e7cc332e2ec7836 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Wed, 3 Oct 2012 17:27:34 -0700 Subject: Timers: Sort order and auto-scrolling behavior Bug: 7248981 Change-Id: Ie706df490d146c284213962cfde55388726ebf37 --- src/com/android/deskclock/timer/TimerFragment.java | 75 ++++++++++++++++++---- 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/src/com/android/deskclock/timer/TimerFragment.java b/src/com/android/deskclock/timer/TimerFragment.java index a2c6de955..b388da33f 100644 --- a/src/com/android/deskclock/timer/TimerFragment.java +++ b/src/com/android/deskclock/timer/TimerFragment.java @@ -31,10 +31,8 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.AccelerateInterpolator; @@ -43,18 +41,17 @@ import android.widget.BaseAdapter; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageButton; -import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; -import com.android.deskclock.DeskClock; import com.android.deskclock.CircleButtonsLinearLayout; +import com.android.deskclock.DeskClock; +import com.android.deskclock.DeskClock.OnTapListener; import com.android.deskclock.DeskClockFragment; import com.android.deskclock.LabelDialogFragment; import com.android.deskclock.R; import com.android.deskclock.TimerSetupView; import com.android.deskclock.Utils; -import com.android.deskclock.DeskClock.OnTapListener; import java.util.ArrayList; import java.util.Collections; @@ -117,13 +114,11 @@ public class TimerFragment extends DeskClockFragment class TimersListAdapter extends BaseAdapter { ArrayList mTimers = new ArrayList (); - private final LayoutInflater mInflater; Context mContext; SharedPreferences mmPrefs; public TimersListAdapter(Context context, SharedPreferences prefs) { mContext = context; - mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mmPrefs = prefs; } @@ -148,11 +143,11 @@ public class TimerFragment extends DeskClockFragment public void deleteTimer(int id) { for (int i = 0; i < mTimers.size(); i++) { TimerObj t = mTimers.get(i); - + if (t.mTimerId == id) { - if(t.mView != null) { - ((TimerListItem)t.mView).stop(); - } + if (t.mView != null) { + ((TimerListItem) t.mView).stop(); + } t.deleteFromSharedPref(mmPrefs); mTimers.remove(i); notifyDataSetChanged(); @@ -259,7 +254,7 @@ public class TimerFragment extends DeskClockFragment public void addTimer(TimerObj t) { mTimers.add(0, t); - notifyDataSetChanged(); + sort(); } public void onSaveInstanceState(Bundle outState) { @@ -268,12 +263,50 @@ public class TimerFragment extends DeskClockFragment public void onRestoreInstanceState(Bundle outState) { TimerObj.getTimersFromSharedPrefs(mmPrefs, mTimers); - notifyDataSetChanged(); + sort(); } public void saveGlobalState() { TimerObj.putTimersInSharedPrefs(mmPrefs, mTimers); } + + public void sort() { + if (getCount() > 0) { + Collections.sort(mTimers, mTimersCompare); + notifyDataSetChanged(); + } + } + + private final Comparator mTimersCompare = new Comparator() { + static final int BUZZING = 0; + static final int IN_USE = 1; + static final int NOT_USED = 2; + + protected int getSection(TimerObj timerObj) { + switch (timerObj.mState) { + case TimerObj.STATE_TIMESUP: + return BUZZING; + case TimerObj.STATE_RUNNING: + case TimerObj.STATE_STOPPED: + return IN_USE; + default: + return NOT_USED; + } + } + + @Override + public int compare(TimerObj o1, TimerObj o2) { + int section1 = getSection(o1); + int section2 = getSection(o2); + if (section1 != section2) { + return (section1 < section2) ? -1 : 1; + } else if (section1 == BUZZING || section1 == IN_USE) { + return (o1.mTimeLeft < o2.mTimeLeft) ? -1 : 1; + } else { + return (o1.mSetupLength < o2.mSetupLength) ? -1 : 1; + } + } + }; } class TimesUpListAdapter extends TimersListAdapter { @@ -305,7 +338,7 @@ public class TimerFragment extends DeskClockFragment Collections.sort(mTimers, new Comparator() { @Override public int compare(TimerObj o1, TimerObj o2) { - return (int)(o1.mTimeLeft - o2.mTimeLeft); + return (o1.mTimeLeft < o2.mTimeLeft) ? -1 : 1; } }); } @@ -431,6 +464,7 @@ public class TimerFragment extends DeskClockFragment mAdapter.addTimer(t); updateTimersState(t, Timers.START_TIMER); gotoTimersView(); + mTimersList.setSelection(mAdapter.findTimerPositionById(t.mTimerId)); } }); @@ -462,6 +496,9 @@ public class TimerFragment extends DeskClockFragment @Override public void onResume() { + if (getActivity() instanceof DeskClock) { + ((DeskClock)getActivity()).registerPageChangedListener(this); + } super.onResume(); mPrefs.registerOnSharedPreferenceChangeListener(this); @@ -502,6 +539,9 @@ public class TimerFragment extends DeskClockFragment @Override public void onPause() { + if (getActivity() instanceof DeskClock) { + ((DeskClock)getActivity()).unregisterPageChangedListener(this); + } super.onPause(); stopClockTicks(); if (mAdapter != null) { @@ -510,6 +550,13 @@ public class TimerFragment extends DeskClockFragment mPrefs.unregisterOnSharedPreferenceChangeListener(this); } + @Override + public void onPageChanged(int page) { + if (page == DeskClock.TIMER_TAB_INDEX && mAdapter != null) { + mAdapter.sort(); + } + } + @Override public void onSaveInstanceState (Bundle outState) { super.onSaveInstanceState(outState); -- cgit v1.2.3 From 761d99173a2a9d4221845b58b0b7412740807972 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Mon, 29 Oct 2012 15:32:27 -0700 Subject: Fixed scaling on timer/stopwatch time Bug: 7377962 Bug: 7371551 Bug: 7427599 Fixes arabic problem Cleanup - spelling and wide text Change-Id: I470fa71b64b560c239b02f7e7d3d3a221fa5dd71 --- .../android/deskclock/timer/CountingTimerView.java | 336 +++++++++++++++------ 1 file changed, 248 insertions(+), 88 deletions(-) diff --git a/src/com/android/deskclock/timer/CountingTimerView.java b/src/com/android/deskclock/timer/CountingTimerView.java index 14b4afa81..6aeda393b 100644 --- a/src/com/android/deskclock/timer/CountingTimerView.java +++ b/src/com/android/deskclock/timer/CountingTimerView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * 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. @@ -21,13 +21,14 @@ import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Typeface; +import android.text.TextUtils; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityManager; import android.widget.TextView; -import com.android.deskclock.DeskClock; +import com.android.deskclock.Log; import com.android.deskclock.R; import com.android.deskclock.Utils; @@ -42,17 +43,19 @@ public class CountingTimerView extends View { // vertically center. private static final float FONT_VERTICAL_OFFSET = 0.14f; - private String mHours, mMinutes, mSeconds, mHunderdths; - private final String mHoursLabel, mMinutesLabel, mSecondsLabel; - private float mHoursWidth, mMinutesWidth, mSecondsWidth, mHundredthsWidth; - private float mHoursLabelWidth, mMinutesLabelWidth, mSecondsLabelWidth, mHundredthsSepWidth; + private String mHours, mMinutes, mSeconds, mHundredths; private boolean mShowTimeStr = true; - private final Typeface mAndroidClockMonoThin, mAndroidClockMonoBold, mRobotoLabel, mAndroidClockMonoLight; + private final Typeface mAndroidClockMonoThin, mAndroidClockMonoBold, mAndroidClockMonoLight; + private final Typeface mRobotoLabel; private final Paint mPaintBig = new Paint(); private final Paint mPaintBigThin = new Paint(); private final Paint mPaintMed = new Paint(); private final Paint mPaintLabel = new Paint(); + private final float mBigFontSize, mSmallFontSize; + private SignedTime mBigHours, mBigMinutes; + private UnsignedTime mBigThinSeconds; + private Hundredths mMedHundredths; private float mTextHeight = 0; private float mTotalTextWidth; private static final String HUNDREDTH_SEPERATOR = "."; @@ -80,6 +83,151 @@ public class CountingTimerView extends View { }; + class UnsignedTime { + protected Paint mPaint; + protected float mEm; + protected float mWidth = 0; + private String mWidest; + protected String mLabel; + private float mLabelWidth = 0; + + public UnsignedTime(Paint paint, final String label, String allDigits) { + mPaint = paint; + mLabel = label; + + if (TextUtils.isEmpty(allDigits)) { + Log.wtf("Locale digits missing - using English"); + allDigits = "0123456789"; + } + + float widths[] = new float[allDigits.length()]; + int ll = mPaint.getTextWidths(allDigits, widths); + int largest = 0; + for (int ii = 1; ii < ll; ii++) { + if (widths[ii] > widths[largest]) { + largest = ii; + } + } + + mEm = widths[largest]; + mWidest = allDigits.substring(largest, largest + 1); + } + + public UnsignedTime(UnsignedTime unsignedTime, final String label) { + this.mPaint = unsignedTime.mPaint; + this.mEm = unsignedTime.mEm; + this.mWidth = unsignedTime.mWidth; + this.mWidest = unsignedTime.mWidest; + this.mLabel = label; + } + + protected void updateWidth(final String time) { + mEm = mPaint.measureText(mWidest); + mLabelWidth = mLabel == null ? 0 : mPaintLabel.measureText(mLabel); + mWidth = time.length() * mEm; + } + + protected void resetWidth() { + mWidth = mLabelWidth = 0; + } + + public float calcTotalWidth(final String time) { + if (time != null) { + updateWidth(time); + return mWidth + mLabelWidth; + } else { + resetWidth(); + return 0; + } + } + + public float getWidth() { + return mWidth; + } + + public float getLabelWidth() { + return mLabelWidth; + } + + protected float drawTime(Canvas canvas, final String time, int ii, float x, float y) { + float textEm = mEm / 2f; + while (ii < time.length()) { + x += textEm; + canvas.drawText(time.substring(ii, ii + 1), x, y, mPaint); + x += textEm; + ii++; + } + return x; + } + + public float draw(Canvas canvas, final String time, float x, float y, float yLabel) { + x = drawTime(canvas, time, 0, x, y); + if (mLabel != null ) { + canvas.drawText(mLabel, x, yLabel, mPaintLabel); + } + return x + getLabelWidth(); + } + } + + class Hundredths extends UnsignedTime { + public Hundredths(Paint paint, final String label, final String allDigits) { + super(paint, label, allDigits); + } + + @Override + public float draw(Canvas canvas, final String time, float x, float y, float yLabel) { + if (mLabel != null) { + canvas.drawText(mLabel, x, yLabel, mPaintLabel); + } + return drawTime(canvas, time, 0, x + getLabelWidth(), y); + } + } + + class SignedTime extends UnsignedTime { + private float mMinusWidth = 0; + + public SignedTime(Paint paint, final String label, final String allDigits) { + super(paint, label, allDigits); + } + + public SignedTime (SignedTime signedTime, final String label) { + super(signedTime, label); + } + + @Override + protected void updateWidth(final String time) { + super.updateWidth(time); + if (time.contains("-")) { + mMinusWidth = mPaint.measureText("-"); + mWidth += (mMinusWidth - mEm); + } else { + mMinusWidth = 0; + } + } + + @Override + protected void resetWidth() { + super.resetWidth(); + mMinusWidth = 0; + } + + @Override + public float draw(Canvas canvas, final String time, float x, float y, float yLabel) { + int ii = 0; + if (mMinusWidth != 0f) { + float minusWidth = mMinusWidth / 2; + x += minusWidth; + canvas.drawText(time.substring(ii, ii + 1), x, y, mPaint); + x += minusWidth; + ii++; + } + x = drawTime(canvas, time, ii, x, y); + if (mLabel != null) { + canvas.drawText(mLabel, x, yLabel, mPaintLabel); + } + return x + getLabelWidth(); + } + } public CountingTimerView(Context context) { this(context, null); @@ -87,16 +235,16 @@ public class CountingTimerView extends View { public CountingTimerView(Context context, AttributeSet attrs) { super(context, attrs); - mAndroidClockMonoThin = Typeface.createFromAsset(context.getAssets(),"fonts/AndroidClockMono-Thin.ttf"); - mAndroidClockMonoBold = Typeface.createFromAsset(context.getAssets(),"fonts/AndroidClockMono-Bold.ttf"); - mAndroidClockMonoLight = Typeface.createFromAsset(context.getAssets(),"fonts/AndroidClockMono-Light.ttf"); + mAndroidClockMonoThin = Typeface.createFromAsset( + context.getAssets(), "fonts/AndroidClockMono-Thin.ttf"); + mAndroidClockMonoBold = Typeface.createFromAsset( + context.getAssets(), "fonts/AndroidClockMono-Bold.ttf"); + mAndroidClockMonoLight = Typeface.createFromAsset( + context.getAssets(), "fonts/AndroidClockMono-Light.ttf"); mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mRobotoLabel= Typeface.create("sans-serif-condensed", Typeface.BOLD); Resources r = context.getResources(); - mHoursLabel = r.getString(R.string.hours_label).toUpperCase(); - mMinutesLabel = r.getString(R.string.minutes_label).toUpperCase(); - mSecondsLabel = r.getString(R.string.seconds_label).toUpperCase(); mWhiteColor = r.getColor(R.color.clock_white); mDefaultColor = mWhiteColor; mPressedColor = r.getColor(Utils.getPressedColorId()); @@ -104,23 +252,20 @@ public class CountingTimerView extends View { mPaintBig.setAntiAlias(true); mPaintBig.setStyle(Paint.Style.STROKE); - mPaintBig.setTextAlign(Paint.Align.LEFT); + mPaintBig.setTextAlign(Paint.Align.CENTER); mPaintBig.setTypeface(mAndroidClockMonoBold); - float bigFontSize = r.getDimension(R.dimen.big_font_size); - mPaintBig.setTextSize(bigFontSize); - mTextHeight = bigFontSize; + mBigFontSize = r.getDimension(R.dimen.big_font_size); + mSmallFontSize = r.getDimension(R.dimen.small_font_size); mPaintBigThin.setAntiAlias(true); mPaintBigThin.setStyle(Paint.Style.STROKE); - mPaintBigThin.setTextAlign(Paint.Align.LEFT); + mPaintBigThin.setTextAlign(Paint.Align.CENTER); mPaintBigThin.setTypeface(mAndroidClockMonoThin); - mPaintBigThin.setTextSize(r.getDimension(R.dimen.big_font_size)); mPaintMed.setAntiAlias(true); mPaintMed.setStyle(Paint.Style.STROKE); - mPaintMed.setTextAlign(Paint.Align.LEFT); + mPaintMed.setTextAlign(Paint.Align.CENTER); mPaintMed.setTypeface(mAndroidClockMonoLight); - mPaintMed.setTextSize(r.getDimension(R.dimen.small_font_size)); mPaintLabel.setAntiAlias(true); mPaintLabel.setStyle(Paint.Style.STROKE); @@ -128,7 +273,25 @@ public class CountingTimerView extends View { mPaintLabel.setTypeface(mRobotoLabel); mPaintLabel.setTextSize(r.getDimension(R.dimen.label_font_size)); + resetTextSize(); setTextColor(mDefaultColor); + + // allDigits will contain ten digits: "0123456789" in the default locale + final String allDigits = String.format("%010d", 123456789); + mBigHours = new SignedTime(mPaintBig, + r.getString(R.string.hours_label).toUpperCase(), allDigits); + mBigMinutes = new SignedTime(mBigHours, + r.getString(R.string.minutes_label).toUpperCase()); + mBigThinSeconds = new UnsignedTime(mPaintBigThin, + r.getString(R.string.seconds_label).toUpperCase(), allDigits); + mMedHundredths = new Hundredths(mPaintMed, HUNDREDTH_SEPERATOR, allDigits); + } + + protected void resetTextSize() { + mPaintBig.setTextSize(mBigFontSize); + mTextHeight = mBigFontSize; + mPaintBigThin.setTextSize(mBigFontSize); + mPaintMed.setTextSize(mSmallFontSize); } protected void setTextColor(int textColor) { @@ -160,7 +323,7 @@ public class CountingTimerView extends View { if (hours ==0 && minutes == 0 && seconds == 0) { showNeg = false; } - // TODO: must build to account for localization + if (!showHundredths) { if (!neg && hundreds != 0) { seconds++; @@ -178,6 +341,8 @@ public class CountingTimerView extends View { } } + int oldLength = getDigitsLength(); + if (hours >= 10) { format = showNeg ? NEG_TWO_DIGITS : TWO_DIGITS; mHours = String.format(format, hours); @@ -198,11 +363,18 @@ public class CountingTimerView extends View { mSeconds = String.format(TWO_DIGITS, seconds); if (showHundredths) { - mHunderdths = String.format(TWO_DIGITS, hundreds); + mHundredths = String.format(TWO_DIGITS, hundreds); } else { - mHunderdths = null; + mHundredths = null; + } + + int newLength = getDigitsLength(); + if (oldLength != newLength) { + if (oldLength > newLength) { + resetTextSize(); + } + mRemeasureText = true; } - mRemeasureText = true; if (update) { setContentDescription(getTimeStringForAccessibility((int) hours, (int) minutes, @@ -210,56 +382,47 @@ public class CountingTimerView extends View { invalidate(); } } - private void setTotalTextWidth() { - mTotalTextWidth = 0; - if (mHours != null) { - mHoursWidth = mPaintBig.measureText(mHours); - mTotalTextWidth += mHoursWidth; - mHoursLabelWidth = mPaintLabel.measureText(mHoursLabel); - mTotalTextWidth += mHoursLabelWidth; - } - if (mMinutes != null) { - mMinutesWidth = mPaintBig.measureText(mMinutes); - mTotalTextWidth += mMinutesWidth; - mMinutesLabelWidth = mPaintLabel.measureText(mMinutesLabel); - mTotalTextWidth += mMinutesLabelWidth; - } - if (mSeconds != null) { - mSecondsWidth = mPaintBigThin.measureText(mSeconds); - mTotalTextWidth += mSecondsWidth; - mSecondsLabelWidth = mPaintLabel.measureText(mSecondsLabel); - mTotalTextWidth += mSecondsLabelWidth; - } - if (mHunderdths != null) { - mHundredthsWidth = mPaintMed.measureText(mHunderdths); - mTotalTextWidth += mHundredthsWidth; - mHundredthsSepWidth = mPaintLabel.measureText(HUNDREDTH_SEPERATOR); - mTotalTextWidth += mHundredthsSepWidth; - } - // This is a hack: if the text is too wide, reduce all the paint text sizes + private int getDigitsLength() { + return ((mHours == null) ? 0 : mHours.length()) + + ((mMinutes == null) ? 0 : mMinutes.length()) + + ((mSeconds == null) ? 0 : mSeconds.length()) + + ((mHundredths == null) ? 0 : mHundredths.length()); + } + + private void calcTotalTextWidth() { + mTotalTextWidth = mBigHours.calcTotalWidth(mHours) + mBigMinutes.calcTotalWidth(mMinutes) + + mBigThinSeconds.calcTotalWidth(mSeconds) + + mMedHundredths.calcTotalWidth(mHundredths); + } + + 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()); if (width != 0) { - float ratio = mTotalTextWidth / width; - if (ratio > TEXT_SIZE_TO_WIDTH_RATIO) { - float sizeRatio = (TEXT_SIZE_TO_WIDTH_RATIO / ratio); - mPaintBig.setTextSize( mPaintBig.getTextSize() * sizeRatio); - mPaintBigThin.setTextSize( mPaintBigThin.getTextSize() * sizeRatio); - mPaintMed.setTextSize( mPaintMed.getTextSize() * sizeRatio); - mTotalTextWidth *= sizeRatio; - mMinutesWidth *= sizeRatio; - mHoursWidth *= sizeRatio; - mSecondsWidth *= sizeRatio; - mHundredthsWidth *= sizeRatio; - mHundredthsSepWidth *= sizeRatio; + float wantWidth = (int)(TEXT_SIZE_TO_WIDTH_RATIO * width); + // If the text is too wide, reduce all the paint text sizes + while (mTotalTextWidth > wantWidth) { + // Get fixed and variant parts of the total size + float fixedWidths = mBigHours.getLabelWidth() + mBigMinutes.getLabelWidth() + + mBigThinSeconds.getLabelWidth() + mMedHundredths.getLabelWidth(); + float varWidths = mBigHours.getWidth() + mBigMinutes.getWidth() + + mBigThinSeconds.getWidth() + mMedHundredths.getWidth(); + // Avoid divide by zero || sizeRatio == 1 || sizeRatio <= 0 + if (varWidths == 0 || fixedWidths == 0 || fixedWidths >= wantWidth) { + break; + } + // Variant-section reduction + float sizeRatio = (wantWidth - fixedWidths) / varWidths; + mPaintBig.setTextSize(mPaintBig.getTextSize() * sizeRatio); + mPaintBigThin.setTextSize(mPaintBigThin.getTextSize() * sizeRatio); + mPaintMed.setTextSize(mPaintMed.getTextSize() * sizeRatio); //recalculate the new total text width and half text height - mTotalTextWidth = mHoursWidth + mMinutesWidth + mSecondsWidth + - mHundredthsWidth + mHundredthsSepWidth + mHoursLabelWidth + - mMinutesLabelWidth + mSecondsLabelWidth; mTextHeight = mPaintBig.getTextSize(); + calcTotalTextWidth(); } } } @@ -277,7 +440,6 @@ public class CountingTimerView extends View { public void showTime(boolean visible) { mShowTimeStr = visible; invalidate(); - mRemeasureText = true; } public void redTimeStr(boolean red, boolean forceUpdate) { @@ -289,10 +451,17 @@ public class CountingTimerView extends View { } public String getTimeString() { - if (mHours == null) { - return String.format("%s:%s.%s",mMinutes, mSeconds, mHunderdths); + // Though only called from Stopwatch Share, so hundredth are never null, + // protect the future and check for null mHundredths + if (mHundredths == null) { + if (mHours == null) { + return String.format("%s:%s", mMinutes, mSeconds); + } + return String.format("%s:%s:%s", mHours, mMinutes, mSeconds); + } else if (mHours == null) { + return String.format("%s:%s.%s", mMinutes, mSeconds, mHundredths); } - return String.format("%s:%s:%s.%s",mHours, mMinutes, mSeconds, mHunderdths); + return String.format("%s:%s:%s.%s", mHours, mMinutes, mSeconds, mHundredths); } private static String getTimeStringForAccessibility(int hours, int minutes, int seconds, @@ -434,27 +603,18 @@ public class CountingTimerView extends View { mPaintMed.setColor(textColor); if (mHours != null) { - canvas.drawText(mHours, textXstart, textYstart, mPaintBig); - textXstart += mHoursWidth; - canvas.drawText(mHoursLabel, textXstart, labelYStart, mPaintLabel); - textXstart += mHoursLabelWidth; + textXstart = mBigHours.draw(canvas, mHours, textXstart, textYstart, labelYStart); } if (mMinutes != null) { - canvas.drawText(mMinutes, textXstart, textYstart, mPaintBig); - textXstart += mMinutesWidth; - canvas.drawText(mMinutesLabel, textXstart, labelYStart, mPaintLabel); - textXstart += mMinutesLabelWidth; + textXstart = mBigMinutes.draw(canvas, mMinutes, textXstart, textYstart, labelYStart); } if (mSeconds != null) { - canvas.drawText(mSeconds, textXstart, textYstart, mPaintBigThin); - textXstart += mSecondsWidth; - canvas.drawText(mSecondsLabel, textXstart, labelYStart, mPaintLabel); - textXstart += mSecondsLabelWidth; - } - if (mHunderdths != null) { - canvas.drawText(HUNDREDTH_SEPERATOR, textXstart, textYstart, mPaintLabel); - textXstart += mHundredthsSepWidth; - canvas.drawText(mHunderdths, textXstart, textYstart, mPaintMed); + textXstart = mBigThinSeconds.draw(canvas, mSeconds, + textXstart, textYstart, labelYStart); + } + if (mHundredths != null) { + textXstart = mMedHundredths.draw(canvas, mHundredths, + textXstart, textYstart, textYstart); } } -- cgit v1.2.3 From bdd08dc4f3f905f20bd5cee1d6086c1cc28add18 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 30 Nov 2012 11:28:48 -0800 Subject: Translations for lap times Bug: 7282042 Change-Id: I12f4c399e34c722b991c241e7575ab71286e81e2 --- res/values/strings.xml | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index b07685944..94180e455 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -344,11 +344,11 @@ Share - + h - + m - + s hours @@ -362,8 +362,40 @@ My time is %s Lap times: - + Lap %d + + + + %2$dm + %3$02ds.%4$02d + + + %2$02dm + %3$02ds.%4$02d + + + %1$dh + %2$02dm + %3$02ds.%4$02d + + + %1$02dh + %2$02dm + %3$02ds.%4$02d + + + %1$03dh + %2$02dm + %3$02ds.%4$02d + + + + + # %d + # %02d + -- cgit v1.2.3 From 45a2e4b95dafe286ab0fac957d50431124c3427e Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Mon, 12 Nov 2012 17:28:28 -0800 Subject: Aligning columns in stopwatch lap times Bug: 7282042 Bug: 7539981 margin between total and lap times string-array format for lap# and lap,total times lap display centered in portrait optimized landscape layout to give more room for list using '#' instead of 'LAP' removed unneeded margins on world clock; new dimen for timer margins char limit on "Lap" and the hour, minute, second abbreviations sw list handles times up to 1k hours circle handles times up to 1k hours Change-Id: If4e884ffd7b87986024c6d5a5990e529b1d6d736 --- res/layout-land/stopwatch_fragment.xml | 5 +- res/layout-land/timer_list_item.xml | 4 +- res/layout/lap_view.xml | 12 ++--- res/layout/timer_list_item.xml | 4 +- res/layout/world_clock_list_item.xml | 4 +- res/values-land/dimens.xml | 5 +- res/values-sw600dp-land/dimens.xml | 5 +- res/values-sw600dp/dimens.xml | 3 +- res/values/dimens.xml | 6 ++- .../deskclock/stopwatch/StopwatchFragment.java | 60 +++++++++++++++++++--- .../android/deskclock/stopwatch/Stopwatches.java | 20 +++++++- .../android/deskclock/timer/CountingTimerView.java | 2 +- 12 files changed, 102 insertions(+), 28 deletions(-) diff --git a/res/layout-land/stopwatch_fragment.xml b/res/layout-land/stopwatch_fragment.xml index 7f7030277..b35f6dac2 100644 --- a/res/layout-land/stopwatch_fragment.xml +++ b/res/layout-land/stopwatch_fragment.xml @@ -25,7 +25,7 @@ android:layout_height="match_parent" android:layout_marginLeft="@dimen/circle_margin" android:layout_marginRight="@dimen/circle_margin" - android:layout_weight="1" > + android:layout_weight="0.95" > diff --git a/res/layout-land/timer_list_item.xml b/res/layout-land/timer_list_item.xml index 15ddfdf31..854d19d54 100644 --- a/res/layout-land/timer_list_item.xml +++ b/res/layout-land/timer_list_item.xml @@ -27,8 +27,8 @@ android:id="@+id/timer_frame" android:layout_width="@dimen/timer_circle_width" android:layout_height="@dimen/timer_circle_diameter" - android:layout_marginLeft="@dimen/circle_margin" - android:layout_marginRight="@dimen/circle_margin"> + android:layout_marginLeft="@dimen/timer_circle_margin" + android:layout_marginRight="@dimen/timer_circle_margin"> + android:layout_marginLeft="@dimen/timer_circle_margin" + android:layout_marginRight="@dimen/timer_circle_margin"> diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml index 7967c3f8e..7b75074cc 100644 --- a/res/values-land/dimens.xml +++ b/res/values-land/dimens.xml @@ -39,8 +39,11 @@ 8dp - 16dp 200dp + 8dp + + 8dp + 8dp 45dip diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml index 822e1d992..8ecb43dc7 100644 --- a/res/values-sw600dp-land/dimens.xml +++ b/res/values-sw600dp-land/dimens.xml @@ -38,8 +38,11 @@ 16dp 48dp - 36dp 48dp + 48dp + + 48dp + 48dp 23dip diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index 1efd8abac..544aa665e 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -58,14 +58,15 @@ 48dp 96dp - 110dp 96dp + 96dp 550dip 200dip + 96dp 23dip diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 51fd102b8..212dbd328 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -71,6 +71,7 @@ 24dp 8dp 4dip + 16dip 4dp 2dp @@ -88,8 +89,10 @@ 16dp 32dp - 52dp 60dp + 32dp + + 32dp 64dp @@ -107,6 +110,7 @@ 100dip + 32dp 24dip diff --git a/src/com/android/deskclock/stopwatch/StopwatchFragment.java b/src/com/android/deskclock/stopwatch/StopwatchFragment.java index fd71f4c6f..6a8aa5140 100644 --- a/src/com/android/deskclock/stopwatch/StopwatchFragment.java +++ b/src/com/android/deskclock/stopwatch/StopwatchFragment.java @@ -12,6 +12,7 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; +import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -79,10 +80,26 @@ public class StopwatchFragment extends DeskClockFragment ArrayList mLaps = new ArrayList(); private final LayoutInflater mInflater; private final int mBackgroundColor; + private final String[] mFormats; + private final String[] mLapFormatSet; + // Size of this array must match the size of formats + private final long[] mThresholds = { + 10 * DateUtils.MINUTE_IN_MILLIS, // < 10 minutes + DateUtils.HOUR_IN_MILLIS, // < 1 hour + 10 * DateUtils.HOUR_IN_MILLIS, // < 10 hours + 100 * DateUtils.HOUR_IN_MILLIS, // < 100 hours + 1000 * DateUtils.HOUR_IN_MILLIS // < 1000 hours + }; + private int mLapIndex = 0; + private int mTotalIndex = 0; + private String mLapFormat; public LapsListAdapter(Context context) { mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mBackgroundColor = getResources().getColor(R.color.blackish); + mFormats = context.getResources().getStringArray(R.array.stopwatch_format_set); + mLapFormatSet = context.getResources().getStringArray(R.array.sw_lap_number_set); + updateLapFormat(); } @Override @@ -104,10 +121,11 @@ public class StopwatchFragment extends DeskClockFragment TextView count = (TextView)lapInfo.findViewById(R.id.lap_number); TextView lapTime = (TextView)lapInfo.findViewById(R.id.lap_time); TextView toalTime = (TextView)lapInfo.findViewById(R.id.lap_total); - lapTime.setText(Stopwatches.getTimeText(mLaps.get(position).mLapTime)); - toalTime.setText(Stopwatches.getTimeText(mLaps.get(position).mTotalTime)); - count.setText(getString(R.string.sw_notification_lap_number, mLaps.size() - position) - .toUpperCase()); + lapTime.setText(Stopwatches.formatTimeText(mLaps.get(position).mLapTime, + mFormats[mLapIndex])); + toalTime.setText(Stopwatches.formatTimeText(mLaps.get(position).mTotalTime, + mFormats[mTotalIndex])); + count.setText(String.format(mLapFormat, mLaps.size() - position).toUpperCase()); lapInfo.setBackgroundColor(mBackgroundColor); return lapInfo; @@ -126,13 +144,38 @@ public class StopwatchFragment extends DeskClockFragment return mLaps.get(position); } + private void updateLapFormat() { + // Note Stopwatches.MAX_LAPS < 100 + mLapFormat = mLapFormatSet[mLaps.size() < 10 ? 0 : 1]; + } + + private void resetTimeFormats() { + mLapIndex = mTotalIndex = 0; + } + + public boolean updateTimeFormats(Lap lap) { + boolean formatChanged = false; + while (mLapIndex + 1 < mThresholds.length && lap.mLapTime >= mThresholds[mLapIndex]) { + mLapIndex++; + formatChanged = true; + } + while (mTotalIndex + 1 < mThresholds.length && + lap.mTotalTime >= mThresholds[mTotalIndex]) { + mTotalIndex++; + formatChanged = true; + } + return formatChanged; + } + public void addLap(Lap l) { mLaps.add(0, l); - notifyDataSetChanged(); + // for efficiency caller also calls notifyDataSetChanged() } public void clearLaps() { mLaps.clear(); + updateLapFormat(); + resetTimeFormats(); notifyDataSetChanged(); } @@ -164,7 +207,9 @@ public class StopwatchFragment extends DeskClockFragment for (int i = size -1; i >= 0; i --) { totalTime += laps[i]; mLaps.get(i).mTotalTime = totalTime; + updateTimeFormats(mLaps.get(i)); } + updateLapFormat(); notifyDataSetChanged(); } } @@ -568,15 +613,18 @@ public class StopwatchFragment extends DeskClockFragment long curTime = time - mStartTime + mAccumulatedTime; if (size == 0) { // Always show the ending lap and a new one - mLapsAdapter.addLap(new Lap(curTime, curTime)); + Lap firstLap = new Lap(curTime, curTime); + mLapsAdapter.addLap(firstLap); mLapsAdapter.addLap(new Lap(0, curTime)); mTime.setIntervalTime(curTime); + mLapsAdapter.updateTimeFormats(firstLap); } else { long lapTime = curTime - ((Lap) mLapsAdapter.getItem(1)).mTotalTime; ((Lap)mLapsAdapter.getItem(0)).mLapTime = lapTime; ((Lap)mLapsAdapter.getItem(0)).mTotalTime = curTime; mLapsAdapter.addLap(new Lap(0, 0)); mTime.setMarkerTime(lapTime); + mLapsAdapter.updateLapFormat(); // mTime.setIntervalTime(lapTime * 10); } mLapsAdapter.notifyDataSetChanged(); diff --git a/src/com/android/deskclock/stopwatch/Stopwatches.java b/src/com/android/deskclock/stopwatch/Stopwatches.java index d8d0741d5..94af594b4 100644 --- a/src/com/android/deskclock/stopwatch/Stopwatches.java +++ b/src/com/android/deskclock/stopwatch/Stopwatches.java @@ -19,7 +19,6 @@ package com.android.deskclock.stopwatch; import android.content.Context; import com.android.deskclock.R; -import com.android.deskclock.stopwatch.StopwatchFragment.Lap; public class Stopwatches { // Private actions processed by the receiver @@ -107,4 +106,23 @@ public class Stopwatches { return timeStr; } + /*** + * Sets the string of the time running on the stopwatch up to hundred of a second accuracy + * @param time - in hundreds of a second since the stopwatch started + */ + public static String formatTimeText(long time, final String format) { + if (time < 0) { + time = 0; + } + 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; + String timeStr = String.format(format, hours, minutes, seconds, hundreds); + return timeStr; + } + } diff --git a/src/com/android/deskclock/timer/CountingTimerView.java b/src/com/android/deskclock/timer/CountingTimerView.java index 6aeda393b..417e9b18b 100644 --- a/src/com/android/deskclock/timer/CountingTimerView.java +++ b/src/com/android/deskclock/timer/CountingTimerView.java @@ -315,7 +315,7 @@ public class CountingTimerView extends View { seconds = seconds - minutes * 60; hours = minutes / 60; minutes = minutes - hours * 60; - if (hours > 99) { + if (hours > 999) { hours = 0; } // time may less than a second below zero, since we do not show fractions of seconds -- cgit v1.2.3 From f40eb1debfba95dcf4a916e7e9e604cc5021de41 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Tue, 20 Nov 2012 11:04:16 -0800 Subject: Reset timers data instead of deleting it Bug: 7561736 Change-Id: I5039f53fb946e884dcedb772a367b1e1c509f647 --- src/com/android/deskclock/AlarmInitReceiver.java | 4 ++-- src/com/android/deskclock/timer/TimerObj.java | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/com/android/deskclock/AlarmInitReceiver.java b/src/com/android/deskclock/AlarmInitReceiver.java index 83ca4a118..e3a8278d4 100644 --- a/src/com/android/deskclock/AlarmInitReceiver.java +++ b/src/com/android/deskclock/AlarmInitReceiver.java @@ -49,8 +49,8 @@ public class AlarmInitReceiver extends BroadcastReceiver { // Clear stopwatch and timers data SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - Log.v("AlarmInitReceiver - Cleaning old timer and stopwatch data"); - TimerObj.cleanTimersFromSharedPrefs(prefs); + Log.v("AlarmInitReceiver - Reset timers and clear stopwatch data"); + TimerObj.resetTimersInSharedPrefs(prefs); Utils.clearSwSharedPref(prefs); } Alarms.setNextAlert(context); diff --git a/src/com/android/deskclock/timer/TimerObj.java b/src/com/android/deskclock/timer/TimerObj.java index f8e779496..5f18d9ea6 100644 --- a/src/com/android/deskclock/timer/TimerObj.java +++ b/src/com/android/deskclock/timer/TimerObj.java @@ -265,12 +265,15 @@ public class TimerObj implements Parcelable { } } - public static void cleanTimersFromSharedPrefs(SharedPreferences prefs) { + public static void resetTimersInSharedPrefs(SharedPreferences prefs) { ArrayList timers = new ArrayList(); getTimersFromSharedPrefs(prefs, timers); Iterator i = timers.iterator(); while(i.hasNext()) { - i.next().deleteFromSharedPref(prefs); + TimerObj t = i.next(); + t.mState = TimerObj.STATE_RESTART; + t.mTimeLeft = t. mOriginalLength = t.mSetupLength; + t.writeToSharedPref(prefs); } } -- cgit v1.2.3 From be452965e9b8467d2f640ccee1002119bb7d2761 Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Fri, 30 Nov 2012 14:40:45 -0800 Subject: Distinguish replacing alarm from dismiss Bug: 7565654 AlarmAlertFullScreen was doing a finish on the signal from AlarmKlaxon, so the simultaneous new intent from AlarmReceiver was not processed. Change-Id: Ia681dfa2986a98e522ca6f0590a731a03497f9f4 --- src/com/android/deskclock/AlarmAlertFullScreen.java | 17 ++++++++++------- src/com/android/deskclock/AlarmKlaxon.java | 14 ++++++++------ src/com/android/deskclock/AlarmReceiver.java | 2 +- src/com/android/deskclock/Alarms.java | 3 +++ 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/com/android/deskclock/AlarmAlertFullScreen.java b/src/com/android/deskclock/AlarmAlertFullScreen.java index 0cf49f89e..55159303f 100644 --- a/src/com/android/deskclock/AlarmAlertFullScreen.java +++ b/src/com/android/deskclock/AlarmAlertFullScreen.java @@ -80,11 +80,12 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig if (action.equals(Alarms.ALARM_SNOOZE_ACTION)) { snooze(); } else if (action.equals(Alarms.ALARM_DISMISS_ACTION)) { - dismiss(false); + dismiss(false, false); } else { Alarm alarm = intent.getParcelableExtra(Alarms.ALARM_INTENT_EXTRA); + boolean replaced = intent.getBooleanExtra(Alarms.ALARM_REPLACED, false); if (alarm != null && mAlarm.id == alarm.id) { - dismiss(true); + dismiss(true, replaced); } } } @@ -255,12 +256,12 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig } // Dismiss the alarm. - private void dismiss(boolean killed) { + private void dismiss(boolean killed, boolean replaced) { if (LOG) { Log.v("AlarmAlertFullScreen - dismiss"); } - Log.i(killed ? "Alarm killed" : "Alarm dismissed by user"); + Log.i("Alarm id=" + mAlarm.id + (killed ? (replaced ? " replaced" : " killed") : " dismissed by user")); // The service told us that the alarm has been killed, do not modify // the notification or stop the service. if (!killed) { @@ -269,7 +270,9 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig nm.cancel(mAlarm.id); stopService(new Intent(Alarms.ALARM_ALERT_ACTION)); } - finish(); + if (!replaced) { + finish(); + } } /** @@ -345,7 +348,7 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig break; case 2: - dismiss(false); + dismiss(false, false); break; default: @@ -390,7 +393,7 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig break; case R.drawable.ic_alarm_alert_dismiss: - dismiss(false); + dismiss(false, false); break; default: // Code should never reach here. diff --git a/src/com/android/deskclock/AlarmKlaxon.java b/src/com/android/deskclock/AlarmKlaxon.java index 61f35cf38..78346238c 100644 --- a/src/com/android/deskclock/AlarmKlaxon.java +++ b/src/com/android/deskclock/AlarmKlaxon.java @@ -33,6 +33,7 @@ import android.os.Vibrator; import android.preference.PreferenceManager; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; +import android.text.format.DateUtils; /** * Manages alarms and vibe. Runs as a service so that it can continue to play @@ -62,7 +63,7 @@ public class AlarmKlaxon extends Service { if (Log.LOGV) { Log.v("*********** Alarm killer triggered ***********"); } - sendKillBroadcast((Alarm) msg.obj); + sendKillBroadcast((Alarm) msg.obj, false); stopSelf(); break; } @@ -78,7 +79,7 @@ public class AlarmKlaxon extends Service { // we don't kill the alarm during a call. if (state != TelephonyManager.CALL_STATE_IDLE && state != mInitialCallState) { - sendKillBroadcast(mCurrentAlarm); + sendKillBroadcast(mCurrentAlarm, false); stopSelf(); } } @@ -129,7 +130,7 @@ public class AlarmKlaxon extends Service { } if (mCurrentAlarm != null) { - sendKillBroadcast(mCurrentAlarm); + sendKillBroadcast(mCurrentAlarm, true); } play(alarm); @@ -141,12 +142,13 @@ public class AlarmKlaxon extends Service { return START_STICKY; } - private void sendKillBroadcast(Alarm alarm) { + private void sendKillBroadcast(Alarm alarm, boolean replaced) { long millis = System.currentTimeMillis() - mStartTime; - int minutes = (int) Math.round(millis / 60000.0); + int minutes = (int) Math.round(millis / (double)DateUtils.MINUTE_IN_MILLIS); Intent alarmKilled = new Intent(Alarms.ALARM_KILLED); alarmKilled.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm); alarmKilled.putExtra(Alarms.ALARM_KILLED_TIMEOUT, minutes); + alarmKilled.putExtra(Alarms.ALARM_REPLACED, replaced); sendBroadcast(alarmKilled); } @@ -291,7 +293,7 @@ public class AlarmKlaxon extends Service { int autoSnoozeMinutes = Integer.parseInt(autoSnooze); if (autoSnoozeMinutes != -1) { mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER, alarm), - 1000 * autoSnoozeMinutes * 60); + autoSnoozeMinutes * DateUtils.MINUTE_IN_MILLIS); } } diff --git a/src/com/android/deskclock/AlarmReceiver.java b/src/com/android/deskclock/AlarmReceiver.java index 003ee09b0..69f726bbb 100644 --- a/src/com/android/deskclock/AlarmReceiver.java +++ b/src/com/android/deskclock/AlarmReceiver.java @@ -116,7 +116,7 @@ public class AlarmReceiver extends BroadcastReceiver { // Intentionally verbose: always log the alarm time to provide useful // information in bug reports. long now = System.currentTimeMillis(); - Log.v("Received alarm set for " + Log.formatTime(alarm.time)); + Log.v("Received alarm set for id=" + alarm.id + " " + Log.formatTime(alarm.time)); // Always verbose to track down time change problems. if (now > alarm.time + STALE_WINDOW) { diff --git a/src/com/android/deskclock/Alarms.java b/src/com/android/deskclock/Alarms.java index b762388ea..93c1ec9f2 100644 --- a/src/com/android/deskclock/Alarms.java +++ b/src/com/android/deskclock/Alarms.java @@ -76,6 +76,9 @@ public class Alarms { // alarm played before being killed. public static final String ALARM_KILLED_TIMEOUT = "alarm_killed_timeout"; + // Extra in the ALARM_KILLED intent to indicate when alarm was replaced + public static final String ALARM_REPLACED = "alarm_replaced"; + // This string is used to indicate a silent alarm in the db. public static final String ALARM_ALERT_SILENT = "silent"; -- cgit v1.2.3 From 7128d261fe6c8285ff9a0739b69760387c2788ac Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 3 Dec 2012 09:24:02 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I7512fe560ed2e6e602845a76896e305aa49c4ba3 Auto-generated-cl: translation import --- res/values-af/strings.xml | 5 +++++ res/values-am/strings.xml | 5 +++++ res/values-ar/strings.xml | 7 +++++++ res/values-be/strings.xml | 5 +++++ res/values-bg/strings.xml | 5 +++++ res/values-ca/strings.xml | 5 +++++ res/values-cs/strings.xml | 5 +++++ res/values-da/strings.xml | 5 +++++ res/values-de/strings.xml | 5 +++++ res/values-el/strings.xml | 5 +++++ res/values-en-rGB/strings.xml | 5 +++++ res/values-es-rUS/strings.xml | 5 +++++ res/values-es/strings.xml | 5 +++++ res/values-et/strings.xml | 5 +++++ res/values-fa/strings.xml | 7 +++++++ res/values-fi/strings.xml | 5 +++++ res/values-fr/strings.xml | 5 +++++ res/values-hi/strings.xml | 5 +++++ res/values-hr/strings.xml | 5 +++++ res/values-hu/strings.xml | 5 +++++ res/values-in/strings.xml | 7 +++++++ res/values-it/strings.xml | 5 +++++ res/values-iw/strings.xml | 7 +++++++ res/values-ja/strings.xml | 5 +++++ res/values-ko/strings.xml | 5 +++++ res/values-lt/strings.xml | 5 +++++ res/values-lv/strings.xml | 5 +++++ res/values-ms/strings.xml | 5 +++++ res/values-nb/strings.xml | 5 +++++ res/values-nl/strings.xml | 5 +++++ res/values-pl/strings.xml | 5 +++++ res/values-pt-rPT/strings.xml | 5 +++++ res/values-pt/strings.xml | 5 +++++ res/values-rm/strings.xml | 5 +++++ res/values-ro/strings.xml | 5 +++++ res/values-ru/strings.xml | 5 +++++ res/values-sk/strings.xml | 5 +++++ res/values-sl/strings.xml | 5 +++++ res/values-sr/strings.xml | 5 +++++ res/values-sv/strings.xml | 5 +++++ res/values-sw/strings.xml | 5 +++++ res/values-th/strings.xml | 5 +++++ res/values-tl/strings.xml | 5 +++++ res/values-tr/strings.xml | 5 +++++ res/values-uk/strings.xml | 5 +++++ res/values-vi/strings.xml | 5 +++++ res/values-zh-rCN/strings.xml | 5 +++++ res/values-zh-rTW/strings.xml | 5 +++++ res/values-zu/strings.xml | 5 +++++ 49 files changed, 253 insertions(+) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 9f986dd34..0bb6931e6 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -147,6 +147,11 @@ "My tyd is %s" "Rondtetye:" "Rondte %d" + + + + + "1 uur" "%d ure" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 06b8dd21d..aa7157d68 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -147,6 +147,11 @@ "የእኔ ሰዓት %s ነው" "የዙር ሰዓት፦" "ዙር %d" + + + + + "1 ሰዓት" "%d ሰዓታት" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index c63c3d545..b67c11298 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -147,6 +147,13 @@ "وقتي هو %s" "مرات الدوران:" "معمل %d" + + "%2$dد %3$02dث.%4$02d" + "%2$02dد %3$02dث.%4$02d" + "%1$dس %2$02dد %3$02dث.%4$02d" + "%1$02dس %2$02dد %3$02dث.%4$02d" + "%1$03dس %2$02dد %3$02dث.%4$02d" + "ساعة واحدة" "%d من الساعات" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index c0b039244..e696f86ad 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -147,6 +147,11 @@ "Мой час: %s" "Час круга:" "Круг %d" + + + + + "1 гадзіна" "Гадзiн: %d" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 5239c15e4..03ddfb345 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -147,6 +147,11 @@ "Времето ми е %s" "Междинни резултати:" "Междинен резултат %d" + + + + + "1 час" "%d часа" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index ee3e8f88c..57d674972 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -147,6 +147,11 @@ "La meva hora: %s" "Temps per volta:" "Etapa %d" + + + + + "1 hora" "%d hores" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 7c31bad50..4027972fe 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -147,6 +147,11 @@ "Můj čas je %s." "Časy etap:" "Úsek %d" + + + + + "1 hodina" "%d h" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 9e24fc701..3c20884dc 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -147,6 +147,11 @@ "Min tid er %s" "Omgangstider:" "Omgang %d" + + + + + "Én time" "%d timer" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 0d5c0db09..ab8a5e9bc 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -147,6 +147,11 @@ "Meine Zeit: %s" "Rundenzeiten:" "%d. Runde" + + + + + "1 Stunde" "%d Stunden" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 6920cbc6f..52908df2d 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -147,6 +147,11 @@ "Ο χρόνος μου είναι %s" "Χρόνοι γύρων:" "Γύρος %d" + + + + + "1 ώρα" "%d ώρες" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 63ddd3f93..42bd7fac3 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -147,6 +147,11 @@ "My time is %s" "Lap times:" "Lap %d" + + + + + "1 hour" "%d hours" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 9e36077aa..6158e6823 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -147,6 +147,11 @@ "Mi hora es %s" "Duración:" "Duración %d" + + + + + "1 hora" "%d horas" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 9abd1b060..9cb010be4 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -147,6 +147,11 @@ "Hora: %s" "Duración de las vueltas:" "Fase %d" + + + + + "1 hora" "%d horas" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 940bd62a2..4b8ad99d8 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -147,6 +147,11 @@ "Minu aeg on %s" "Ringi ajad:" "%d. ring" + + + + + "1 tund" "%d tundi" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 8958e02ea..ae01b78e4 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -147,6 +147,13 @@ "زمان من %s است" "زمان‌های دور:" "دور %d" + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "۱ ساعت" "%d ساعت" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index f61d7f066..309f35143 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -147,6 +147,11 @@ "Oma aika: %s" "Kierrosajat:" "Kierros %d" + + + + + "1 tunti" "%d tuntia" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index ebb9619cd..9c39d4f87 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -147,6 +147,11 @@ "Mon heure est %s" "Temps de circuit :" "Tour %d" + + + + + "1 heure" "%d heures" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 21445fd61..410f39307 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -147,6 +147,11 @@ "मेरा समय %s है" "लैप अवधियां:" "लैप %d" + + + + + "1 घंटा" "%d घंटे" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index a9a1f9e5e..0ad78a730 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -147,6 +147,11 @@ "Moje je vrijeme %s" "Vremena krugova:" "%d. krug" + + + + + "1 sat" "Broj sati: %d" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index f9551044d..3553a9d78 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -147,6 +147,11 @@ "Az én időm: %s" "Köridők:" "%d. kör" + + + + + "1 óra" "%d óra" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index e4da03578..6c9624dcc 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -147,6 +147,13 @@ "Waktu saya adalah %s" "Waktu putaran:" "Putaran %d" + + "%2$dm %3$02dd.%4$02d" + "%2$02dm %3$02dd.%4$02d" + "%1$dj %2$02dm %3$02dd.%4$02d" + "%1$02dj %2$02dm %3$02dd.%4$02d" + "%1$03dj %2$02dm %3$02dd.%4$02d" + "1 jam" "%d jam" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 69e1562a9..a6b670dea 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -147,6 +147,11 @@ "Il mio tempo è %s" "Tempi sul giro:" "Giro %d" + + + + + "1 ora" "%d ore" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index de87a46df..6e1158233 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -147,6 +147,13 @@ "השעה שלי הוא %s" "זמני הקפה:" "הקפה %d" + + "%2$dד %3$02dש.%4$02d" + "%2$02dד %3$02dש.%4$02d" + "%1$dשע %2$02dד %3$02dש.%4$02d" + "%1$02dשע %2$02dד %3$02dש.%4$02d" + "%1$03dשע %2$02dד %3$02dש.%4$02d" + "שעה אחת" "%d שעות" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 9619cf0c1..422ac5866 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -147,6 +147,11 @@ "私の時間は%sです" "ラップ時間:" "ラップ%d" + + + + + "1時間" "%d時間" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 04da8c15e..45a41df3c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -147,6 +147,11 @@ "내 시간: %s" "랩 타임:" "랩 타임 %d" + + + + + "1시간" "%d시간" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 27a88e251..affb5cd8b 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -147,6 +147,11 @@ "Mano laikas yra %s" "Persidengiantis laikas:" "%d ratas" + + + + + "1 val." "%d val." diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 36f14bcf4..8c47d1103 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -147,6 +147,11 @@ "Mans laiks ir: %s" "Intervāla laiki:" "%d. intervāls" + + + + + "1 stunda" "%d stundas" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 3bd3e1f06..f3ac36510 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -147,6 +147,11 @@ "Masa saya ialah %s" "Masa pusingan:" "Pusingan %d" + + + + + "1 jam" "%d jam" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index bdacdcc30..8b7d6bffd 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -147,6 +147,11 @@ "Tiden min er %s" "Rundetider:" "Runde %d" + + + + + "1 time" "%d timer" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 4523298ef..c013090ec 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -147,6 +147,11 @@ "Mijn tijd is %s" "Rondetijden:" "Ronde %d" + + + + + "1 uur" "%d uur" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 5b477aa2a..b2455b70f 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -147,6 +147,11 @@ "Mój czas to %s" "Czasy okrążeń:" "Okr. %d" + + + + + "1 godz." "%d godz." diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index ab36f7fb0..bc53b7ac0 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -147,6 +147,11 @@ "O meu tempo é %s" "Tempos de volta:" "Volta %d" + + + + + "1 hora" "%d horas" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index de403b9e4..2c50183e8 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -147,6 +147,11 @@ "Meu tempo é %s" "Tempos de volta:" "Volta %d" + + + + + "1 hora" "%d horas" diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml index dbb89ba64..375d9ef0a 100644 --- a/res/values-rm/strings.xml +++ b/res/values-rm/strings.xml @@ -184,6 +184,11 @@ + + + + + diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index c58e49165..9fe337d19 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -147,6 +147,11 @@ "Ora mea este %s" "Timpi circuit:" "Circuitul %d" + + + + + "1 oră" "%d ore" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 4a7b75962..e1114737e 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -147,6 +147,11 @@ "Мое время: %s" "Время круга" "Круг %d" + + + + + "1 ч." "%d ч." diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 68888ba10..4aa972857 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -147,6 +147,11 @@ "Môj čas je %s" "Intervalové časy:" "Kolo č. %d" + + + + + "1 hodina" "%d hod." diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 05b5ea6e5..f25be507a 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -147,6 +147,11 @@ "Moj čas je %s" "Časi kroga:" "%d. krog" + + + + + "1 ura" "%d h" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 70f0367d8..a8f382f62 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -147,6 +147,11 @@ "Моје време је %s" "Пролазна времена:" "%d. круг" + + + + + "1 сат" "%d сата(и)" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 6b4156bd2..7f949cf8c 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -147,6 +147,11 @@ "Min tid är %s" "Varvtider:" "Varv %d" + + + + + "1 timme" "%d timmar" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index d8e55bf09..4c9b268ac 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -147,6 +147,11 @@ "Muda wangu ni %s" "Muda wa mzunguko:" "Mzunguko %d" + + + + + "Saa 1" "Saa %d" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 1551ee099..30cb6938f 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -147,6 +147,11 @@ "เวลาของฉันคือ %s" "เวลาสิ้นสุดรอบ:" "สิ้นสุดรอบที่ %d" + + + + + "1 ชั่วโมง" "%d ชั่วโมง" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index b4788d351..e849d83a0 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -147,6 +147,11 @@ "Ang aking oras ay %s" "Mga lap time:" "Lap %d" + + + + + "1 oras" "%d (na) oras" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 869aeba85..0cd2776ee 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -147,6 +147,11 @@ "Saatim: %s" "Tur süreleri:" "%d. tur" + + + + + "1 saat" "%d saat" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 0f1a6679f..d4af1664a 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -147,6 +147,11 @@ "Мій час – %s" "Час кола:" "Коло %d" + + + + + "1 год." "%d год." diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 9223d4193..30afe228a 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -147,6 +147,11 @@ "Thời gian của tôi là %s" "Số lần bấm giờ:" "%d bấm giờ" + + + + + "1 giờ" "%d giờ" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 6e7ca367a..796faedbf 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -147,6 +147,11 @@ "我的时间:%s" "各圈时间:" "第 %d 圈" + + + + + "1 小时" "%d 小时" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 902b99f7f..82db4a1c6 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -147,6 +147,11 @@ "我的時間:%s" "單圈時間:" "第 %d 圈" + + + + + "1 小時" "%d 小時" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 6fa1d5778..1dc0931b1 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -147,6 +147,11 @@ "Isikhathi sami ngu-%s" "Ukuhluka kwezikhathi:" "Xhapha %d" + + + + + "1 ihora" "%d amahora" -- cgit v1.2.3 From d1f08dc76968141ff1696ec9156808ca19e2b730 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 4 Dec 2012 08:59:17 -0800 Subject: Import translations. DO NOT MERGE Change-Id: Ie784adbabad1b0dfe7c79a68629e9597247347ae Auto-generated-cl: translation import --- res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 0d5c0db09..4c519f70a 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -133,7 +133,7 @@ "Nachtmodus" "Fortsetzen" "Starten" - "Stoppen" + "Anhalten" "Runde" "Reset" "Teilen" -- cgit v1.2.3 From 69a023e87ed2c3360bbab3d4526d7ed7da78605f Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 4 Dec 2012 08:59:43 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I552d66b973775924269c2063d007d546b748641b Auto-generated-cl: translation import --- res/values-af/strings.xml | 12 +++++++----- res/values-am/strings.xml | 12 +++++++----- res/values-be/strings.xml | 12 +++++++----- res/values-bg/strings.xml | 12 +++++++----- res/values-ca/strings.xml | 12 +++++++----- res/values-cs/strings.xml | 12 +++++++----- res/values-da/strings.xml | 12 +++++++----- res/values-de/strings.xml | 14 ++++++++------ res/values-el/strings.xml | 12 +++++++----- res/values-en-rGB/strings.xml | 12 +++++++----- res/values-es-rUS/strings.xml | 12 +++++++----- res/values-es/strings.xml | 12 +++++++----- res/values-et/strings.xml | 12 +++++++----- res/values-fi/strings.xml | 12 +++++++----- res/values-fr/strings.xml | 12 +++++++----- res/values-hi/strings.xml | 12 +++++++----- res/values-hr/strings.xml | 12 +++++++----- res/values-hu/strings.xml | 12 +++++++----- res/values-it/strings.xml | 12 +++++++----- res/values-ja/strings.xml | 12 +++++++----- res/values-ko/strings.xml | 12 +++++++----- res/values-lt/strings.xml | 12 +++++++----- res/values-lv/strings.xml | 12 +++++++----- res/values-ms/strings.xml | 12 +++++++----- res/values-nb/strings.xml | 12 +++++++----- res/values-nl/strings.xml | 12 +++++++----- res/values-pl/strings.xml | 12 +++++++----- res/values-pt-rPT/strings.xml | 12 +++++++----- res/values-pt/strings.xml | 12 +++++++----- res/values-ro/strings.xml | 12 +++++++----- res/values-ru/strings.xml | 12 +++++++----- res/values-sk/strings.xml | 12 +++++++----- res/values-sl/strings.xml | 12 +++++++----- res/values-sr/strings.xml | 12 +++++++----- res/values-sv/strings.xml | 12 +++++++----- res/values-sw/strings.xml | 12 +++++++----- res/values-th/strings.xml | 12 +++++++----- res/values-tl/strings.xml | 12 +++++++----- res/values-tr/strings.xml | 12 +++++++----- res/values-uk/strings.xml | 12 +++++++----- res/values-vi/strings.xml | 12 +++++++----- res/values-zh-rCN/strings.xml | 12 +++++++----- res/values-zh-rTW/strings.xml | 12 +++++++----- res/values-zu/strings.xml | 12 +++++++----- 44 files changed, 309 insertions(+), 221 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 0bb6931e6..de6bbebba 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -147,11 +147,13 @@ "My tyd is %s" "Rondtetye:" "Rondte %d" - - - - - + + "%2$dm. %3$02ds.%4$02d" + "%2$02dm. %3$02ds.%4$02d" + "%1$du. %2$02dm. %3$02ds.%4$02d" + "%1$02du. %2$02dm. %3$02ds.%4$02d" + "%1$03du. %2$02dm. %3$02ds.%4$02d" + "1 uur" "%d ure" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index aa7157d68..97c4f5a0d 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -147,11 +147,13 @@ "የእኔ ሰዓት %s ነው" "የዙር ሰዓት፦" "ዙር %d" - - - - - + + "%2$d%3$02dሴ።%4$02d" + "%2$02d%3$02dሴ።%4$02d" + "%1$d%2$02d%3$02dሴ።%4$02d" + "%1$02d%2$02d%3$02dሴ።%4$02d" + "%1$03d%2$02d%3$02dሴ።%4$02d" + "1 ሰዓት" "%d ሰዓታት" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index e696f86ad..e6c458287 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -147,11 +147,13 @@ "Мой час: %s" "Час круга:" "Круг %d" - - - - - + + "%2$d хв. %3$02d с.%4$02d" + "%2$02d хв. %3$02d с.%4$02d" + "%1$d гадз. %2$02d хв. %3$02d с.%4$02d" + "%1$02d гадз. %2$02d хв. %3$02d с.%4$02d" + "%1$03d гадз. %2$02d хв. %3$02d с.%4$02d" + "1 гадзіна" "Гадзiн: %d" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 03ddfb345..6ac08b597 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -147,11 +147,13 @@ "Времето ми е %s" "Междинни резултати:" "Междинен резултат %d" - - - - - + + "%2$d м %3$02d,%4$02d с" + "%2$02d м %3$02d,%4$02d с" + "%1$d ч %2$02d м %3$02d,%4$02d с" + "%1$02d ч %2$02d м %3$02d,%4$02d с" + "%1$03d ч %2$02d м %3$02d,%4$02d с" + "1 час" "%d часа" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 57d674972..ac02af84e 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -147,11 +147,13 @@ "La meva hora: %s" "Temps per volta:" "Etapa %d" - - - - - + + "%2$d min, %3$02d s, %4$02d" + "%2$02d min, %3$02d s, %4$02d" + "%1$d h, %2$02d m, %3$02d s, %4$02d" + "%1$02d h, %2$02d min, %3$02d s, %4$02d" + "%1$03d h, %2$02d min, %3$02d s, %4$02d" + "1 hora" "%d hores" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 4027972fe..f6a1c2a01 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -147,11 +147,13 @@ "Můj čas je %s." "Časy etap:" "Úsek %d" - - - - - + + "%2$dm %3$02ds,%4$02d" + "%2$02dm %3$02ds,%4$02d" + "%1$dh %2$02dm %3$02ds,%4$02d" + "%1$02dh %2$02dm %3$02ds,%4$02d" + "%1$03dh %2$02dm %3$02ds,%4$02d" + "1 hodina" "%d h" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 3c20884dc..1e22d0441 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -147,11 +147,13 @@ "Min tid er %s" "Omgangstider:" "Omgang %d" - - - - - + + "%2$dm. %3$02ds.%4$02d" + "%2$02dm. %3$02ds.%4$02d" + "%1$dt. %2$02dm. %3$02ds.%4$02d" + "%1$02dt. %2$02dm. %3$02ds.%4$02d" + "%1$03dt. %2$02dm. %3$02ds.%4$02d" + "Én time" "%d timer" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index ab8a5e9bc..f5ec29079 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -133,7 +133,7 @@ "Nachtmodus" "Fortsetzen" "Starten" - "Stoppen" + "Anhalten" "Runde" "Reset" "Teilen" @@ -147,11 +147,13 @@ "Meine Zeit: %s" "Rundenzeiten:" "%d. Runde" - - - - - + + "%2$dm %3$02ds %4$02d" + "%2$02dm %3$02ds %4$02d" + "%1$dh %2$02dm %3$02ds %4$02d" + "%1$02dh %2$02dm %3$02ds %4$02d" + "%1$03dh %2$02dm %3$02ds %4$02d" + "1 Stunde" "%d Stunden" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 52908df2d..6448e111b 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -147,11 +147,13 @@ "Ο χρόνος μου είναι %s" "Χρόνοι γύρων:" "Γύρος %d" - - - - - + + "%2$dλ %3$02dδ.%4$02d" + "%2$02dλ %3$02dδ.%4$02d" + "%1$dω %2$02dλ %3$02dδ.%4$02d" + "%1$02dω %2$02dλ %3$02dδ.%4$02d" + "%1$03dω %2$02dλ %3$02dδ.%4$02d" + "1 ώρα" "%d ώρες" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 42bd7fac3..68a069fc1 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -147,11 +147,13 @@ "My time is %s" "Lap times:" "Lap %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 hour" "%d hours" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 6158e6823..f46fdc1bc 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -147,11 +147,13 @@ "Mi hora es %s" "Duración:" "Duración %d" - - - - - + + "%2$dm %3$02ds,%4$02d" + "%2$02dm %3$02ds,%4$02d" + "%1$dh %2$02dm %3$02ds,%4$02d" + "%1$02dh %2$02dm %3$02ds,%4$02d" + "%1$03dh %2$02dm %3$02ds,%4$02d" + "1 hora" "%d horas" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 9cb010be4..aca9b3315 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -147,11 +147,13 @@ "Hora: %s" "Duración de las vueltas:" "Fase %d" - - - - - + + "%2$d min %3$02d s %4$02d" + "%2$02d min %3$02d s %4$02d" + "%1$d h %2$02d min %3$02d s %4$02d" + "%1$02d h %2$02d min %3$02d s %4$02d" + "%1$03d h %2$02d min %3$02d s %4$02d" + "1 hora" "%d horas" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 4b8ad99d8..777fc31bd 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -147,11 +147,13 @@ "Minu aeg on %s" "Ringi ajad:" "%d. ring" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 tund" "%d tundi" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 309f35143..40c5fe922 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -147,11 +147,13 @@ "Oma aika: %s" "Kierrosajat:" "Kierros %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dt %2$02dm %3$02ds.%4$02d" + "%1$02dt %2$02dm %3$02ds.%4$02d" + "%1$03dt %2$02dm %3$02ds.%4$02d" + "1 tunti" "%d tuntia" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 9c39d4f87..fe7dd0413 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -147,11 +147,13 @@ "Mon heure est %s" "Temps de circuit :" "Tour %d" - - - - - + + "%2$dmin %3$02ds,%4$02d" + "%2$02dmin %3$02ds,%4$02d" + "%1$dh %2$02dmin %3$02ds,%4$02d" + "%1$02dh %2$02dmin %3$02ds,%4$02d" + "%1$03dh %2$02dmin %3$02ds,%4$02d" + "1 heure" "%d heures" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 410f39307..704fdf1b0 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -147,11 +147,13 @@ "मेरा समय %s है" "लैप अवधियां:" "लैप %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 घंटा" "%d घंटे" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 0ad78a730..209e773d4 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -147,11 +147,13 @@ "Moje je vrijeme %s" "Vremena krugova:" "%d. krug" - - - - - + + "%2$d m %3$02d s %4$02d" + "%2$02d m %3$02d s %4$02d" + "%1$d h %2$02d m %3$02d s %4$02d" + "%1$02d h %2$02d m %3$02d s %4$02d" + "%1$03d h %2$02d m %3$02d s %4$02d" + "1 sat" "Broj sati: %d" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 3553a9d78..1c946405b 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -147,11 +147,13 @@ "Az én időm: %s" "Köridők:" "%d. kör" - - - - - + + "%2$dp %3$02d.%4$02dm" + "%2$02dp %3$02d.%4$02dm" + "%1$dó %2$02dp %3$02d.%4$02dm" + "%1$02dó %2$02dp %3$02d.%4$02dm" + "%1$03dó %2$02dp %3$02d.%4$02dm" + "1 óra" "%d óra" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index a6b670dea..140ec6a0c 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -147,11 +147,13 @@ "Il mio tempo è %s" "Tempi sul giro:" "Giro %d" - - - - - + + "%2$d m %3$02d s %4$02d" + "%2$02d m %3$02d s %4$02d" + "%1$d h %2$02d m %3$02d s %4$02d" + "%1$02d h %2$02d m %3$02d s %4$02d" + "%1$03d h %2$02d m %3$02d s %4$02d" + "1 ora" "%d ore" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 422ac5866..a85a15e98 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -147,11 +147,13 @@ "私の時間は%sです" "ラップ時間:" "ラップ%d" - - - - - + + "%2$d%3$02d%4$02d" + "%2$02d%3$02d%4$02d" + "%1$d時間%2$02d%3$02d%4$02d" + "%1$02d時間%2$02d%3$02d%4$02d" + "%1$03d時間%2$02d%3$02d%4$02d" + "1時間" "%d時間" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 45a41df3c..ab79530ab 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -147,11 +147,13 @@ "내 시간: %s" "랩 타임:" "랩 타임 %d" - - - - - + + "%2$d%3$02d초.%4$02d" + "%2$02d%3$02d초.%4$02d" + "%1$d시간%2$02d%3$02d초.%4$02d" + "%1$02d시간%2$02d%3$02d초.%4$02d" + "%1$03d시간%2$02d%3$02d초.%4$02d" + "1시간" "%d시간" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index affb5cd8b..338f2869d 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -147,11 +147,13 @@ "Mano laikas yra %s" "Persidengiantis laikas:" "%d ratas" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 val." "%d val." diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 8c47d1103..cbd9fcf15 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -147,11 +147,13 @@ "Mans laiks ir: %s" "Intervāla laiki:" "%d. intervāls" - - - - - + + "%2$d m %3$02d s,%4$02d" + "%2$02d m %3$02d s,%4$02d" + "%1$d h %2$02d m %3$02d s,%4$02d" + "%1$02d h %2$02d m %3$02d s,%4$02d" + "%1$03d h %2$02d m %3$02d s,%4$02d" + "1 stunda" "%d stundas" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index f3ac36510..dac380659 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -147,11 +147,13 @@ "Masa saya ialah %s" "Masa pusingan:" "Pusingan %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dj %2$02dm %3$02ds.%4$02d" + "%1$02dj %2$02dm %3$02ds.%4$02d" + "%1$03dj %2$02dm %3$02ds.%4$02d" + "1 jam" "%d jam" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 8b7d6bffd..50e7c6624 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -147,11 +147,13 @@ "Tiden min er %s" "Rundetider:" "Runde %d" - - - - - + + "%2$d m %3$02d s.%4$02d" + "%2$02d m %3$02d s.%4$02d" + "%1$d t %2$02d m %3$02d s.%4$02d" + "%1$02d t %2$02d m %3$02d s.%4$02d" + "%1$03d t %2$02d m %3$02d s.%4$02d" + "1 time" "%d timer" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index c013090ec..d6b681f3f 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -147,11 +147,13 @@ "Mijn tijd is %s" "Rondetijden:" "Ronde %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$du %2$02dm %3$02ds.%4$02d" + "%1$02du %2$02dm %3$02ds.%4$02d" + "%1$03du %2$02dm %3$02ds.%4$02d" + "1 uur" "%d uur" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index b2455b70f..fa5fc2426 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -147,11 +147,13 @@ "Mój czas to %s" "Czasy okrążeń:" "Okr. %d" - - - - - + + "%2$dm %3$02d,%4$02ds" + "%2$02dm %3$02d,%4$02ds" + "%1$dg %2$02dm %3$02d,%4$02ds" + "%1$02dg %2$02dm %3$02d,%4$02ds" + "%1$03dg %2$02dm %3$02d,%4$02ds" + "1 godz." "%d godz." diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index bc53b7ac0..a8365517a 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -147,11 +147,13 @@ "O meu tempo é %s" "Tempos de volta:" "Volta %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02d h %2$02d m %3$02d s %4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 hora" "%d horas" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 2c50183e8..80d3dee48 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -147,11 +147,13 @@ "Meu tempo é %s" "Tempos de volta:" "Volta %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 hora" "%d horas" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 9fe337d19..39d30b58e 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -147,11 +147,13 @@ "Ora mea este %s" "Timpi circuit:" "Circuitul %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 oră" "%d ore" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index e1114737e..f5a583348 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -147,11 +147,13 @@ "Мое время: %s" "Время круга" "Круг %d" - - - - - + + "%2$dм %3$02dс%4$02d" + "%2$02dм %3$02dс%4$02d" + "%1$dч %2$02dм %3$02dс%4$02d" + "%1$02dч %2$02dм %3$02dс%4$02d" + "%1$03dч %2$02dм %3$02dс%4$02d" + "1 ч." "%d ч." diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 4aa972857..566e089cf 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -147,11 +147,13 @@ "Môj čas je %s" "Intervalové časy:" "Kolo č. %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 hodina" "%d hod." diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index f25be507a..52d12e2f0 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -147,11 +147,13 @@ "Moj čas je %s" "Časi kroga:" "%d. krog" - - - - - + + "%2$d m %3$02d s. %4$02d" + "%2$02d m %3$02d s. %4$02d" + "%1$d h %2$02d m %3$02d s. %4$02d" + "%1$02d h %2$02d m %3$02d s. %4$02d" + "%1$03d h %2$02d m %3$02d s. %4$02d" + "1 ura" "%d h" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index a8f382f62..d3ea977e0 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -147,11 +147,13 @@ "Моје време је %s" "Пролазна времена:" "%d. круг" - - - - - + + "%2$dм %3$02dс,%4$02d" + "%2$02dм %3$02dс,%4$02d" + "%1$dч %2$02d м %3$02dс,%4$02d" + "%1$02dч %2$02dм %3$02dс,%4$02d" + "%1$03dч %2$02dм %3$02dс,%4$02d" + "1 сат" "%d сата(и)" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 7f949cf8c..946ad418e 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -147,11 +147,13 @@ "Min tid är %s" "Varvtider:" "Varv %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 timme" "%d timmar" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 4c9b268ac..681b9af27 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -147,11 +147,13 @@ "Muda wangu ni %s" "Muda wa mzunguko:" "Mzunguko %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "Saa 1" "Saa %d" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 30cb6938f..3d26d5a6a 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -147,11 +147,13 @@ "เวลาของฉันคือ %s" "เวลาสิ้นสุดรอบ:" "สิ้นสุดรอบที่ %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 ชั่วโมง" "%d ชั่วโมง" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index e849d83a0..cd791172e 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -147,11 +147,13 @@ "Ang aking oras ay %s" "Mga lap time:" "Lap %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 oras" "%d (na) oras" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 0cd2776ee..d6fd55d43 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -147,11 +147,13 @@ "Saatim: %s" "Tur süreleri:" "%d. tur" - - - - - + + "%2$dd %3$02ds.%4$02d" + "%2$02dd %3$02ds.%4$02d" + "%1$ds %2$02dd %3$02ds.%4$02d" + "%1$02ds %2$02dd %3$02ds.%4$02d" + "%1$03ds %2$02dd %3$02ds.%4$02d" + "1 saat" "%d saat" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index d4af1664a..1f485e011 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -147,11 +147,13 @@ "Мій час – %s" "Час кола:" "Коло %d" - - - - - + + "%2$dхв %3$02dс,%4$02d" + "%2$02dхв %3$02dс,%4$02d" + "%1$dгод %2$02dхв %3$02dс,%4$02d" + "%1$02dгод %2$02dхв %3$02dс,%4$02d" + "%1$03dгод %2$02dхв %3$02dс,%4$02d" + "1 год." "%d год." diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 30afe228a..17da5051c 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -147,11 +147,13 @@ "Thời gian của tôi là %s" "Số lần bấm giờ:" "%d bấm giờ" - - - - - + + "%2$dp %3$02dg.%4$02d" + "%2$02dp %3$02dg.%4$02d" + "%1$dh %2$02dp %3$02dg.%4$02d" + "%1$02dh %2$02dp %3$02dg.%4$02d" + "%1$03dh %2$02dp %3$02dg.%4$02d" + "1 giờ" "%d giờ" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 796faedbf..fdecd7f5b 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -147,11 +147,13 @@ "我的时间:%s" "各圈时间:" "第 %d 圈" - - - - - + + "%2$d:%3$02d.%4$02d" + "%2$02d:%3$02d.%4$02d" + "%1$d:%2$02d:%3$02d.%4$02d" + "%1$02d:%2$02d:%3$02d.%4$02d" + "%1$03d:%2$02d:%3$02d.%4$02d" + "1 小时" "%d 小时" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 82db4a1c6..64d18bc5b 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -147,11 +147,13 @@ "我的時間:%s" "單圈時間:" "第 %d 圈" - - - - - + + "%2$d:%3$02d%4$02d" + "%2$02d:%3$02d%4$02d" + "%1$d:%2$02d:%3$02d%4$02d" + "%1$02d:%2$02d:%3$02d%4$02d" + "%1$03d:%2$02d:%3$02d%4$02d" + "1 小時" "%d 小時" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 1dc0931b1..b48e482a0 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -147,11 +147,13 @@ "Isikhathi sami ngu-%s" "Ukuhluka kwezikhathi:" "Xhapha %d" - - - - - + + "%2$dm %3$02ds.%4$02d" + "%2$02dm %3$02ds.%4$02d" + "%1$dh %2$02dm %3$02ds.%4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" + "%1$03dh %2$02dm %3$02ds.%4$02d" + "1 ihora" "%d amahora" -- cgit v1.2.3 From 6e61c1d4bcf40f0cacd55f7874b7a3c2cf8a08bc Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 5 Dec 2012 10:23:56 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I1897c71a7b0b35f87bd2f60696477ddb1bedb3a1 Auto-generated-cl: translation import --- res/values-bg/strings.xml | 10 +++++----- res/values-pt-rPT/strings.xml | 2 +- res/values-ru/strings.xml | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 6ac08b597..0428c1ab2 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -148,11 +148,11 @@ "Междинни резултати:" "Междинен резултат %d" - "%2$d м %3$02d,%4$02d с" - "%2$02d м %3$02d,%4$02d с" - "%1$d ч %2$02d м %3$02d,%4$02d с" - "%1$02d ч %2$02d м %3$02d,%4$02d с" - "%1$03d ч %2$02d м %3$02d,%4$02d с" + "%2$d м %3$02d с,%4$02d" + "%2$02d м %3$02d с,%4$02d" + "%1$d ч %2$02d м %3$02d с,%4$02d" + "%1$02d ч %2$02d м %3$02d с,%4$02d" + "%1$03d ч %2$02d м %3$02d с,%4$02d" "1 час" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index a8365517a..631235160 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -151,7 +151,7 @@ "%2$dm %3$02ds.%4$02d" "%2$02dm %3$02ds.%4$02d" "%1$dh %2$02dm %3$02ds.%4$02d" - "%1$02d h %2$02d m %3$02d s %4$02d" + "%1$02dh %2$02dm %3$02ds.%4$02d" "%1$03dh %2$02dm %3$02ds.%4$02d" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f5a583348..b6c51f7e1 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -148,11 +148,11 @@ "Время круга" "Круг %d" - "%2$dм %3$02dс%4$02d" - "%2$02dм %3$02dс%4$02d" - "%1$dч %2$02dм %3$02dс%4$02d" - "%1$02dч %2$02dм %3$02dс%4$02d" - "%1$03dч %2$02dм %3$02dс%4$02d" + "%2$dм %3$02dс.%4$02d" + "%2$02dм %3$02dс.%4$02d" + "%1$dч %2$02dм %3$02dс.%4$02d" + "%1$02dч %2$02dм %3$02dс.%4$02d" + "%1$03dч %2$02dм %3$02dс.%4$02d" "1 ч." -- cgit v1.2.3 From e236143b0c4392dfc5e5499d64553c1e7462a592 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Wed, 5 Dec 2012 11:40:15 -0800 Subject: Tweak layouts for digital clock widget. Bug: 7500729 Change widget to scale according to height on top of scaling of width. Change-Id: Ia90031d3585178f66ee40490c7bf7f7b93503e41 --- res/values-sw600dp-land/dimens.xml | 4 +++- res/values-sw600dp/dimens.xml | 6 +++--- res/values-sw720dp-land/dimens.xml | 3 ++- res/values-sw720dp/dimens.xml | 2 +- res/values/dimens.xml | 5 +++-- .../alarmclock/DigitalWidgetViewsFactory.java | 9 +++++++-- src/com/android/alarmclock/WidgetUtils.java | 22 +++++++++++++++++++++- 7 files changed, 40 insertions(+), 11 deletions(-) diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml index 8ecb43dc7..311d495a3 100644 --- a/res/values-sw600dp-land/dimens.xml +++ b/res/values-sw600dp-land/dimens.xml @@ -55,5 +55,7 @@ -64dip - 200dip + 370dip + 200dip + 200dip diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index 544aa665e..d14e6c632 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -84,11 +84,11 @@ 0dip - 300dip + 450dip 120dip - 200dip + 450dip 120dip 200dip - 190dip + 190dip diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml index de69a5da1..bee4607c2 100644 --- a/res/values-sw720dp-land/dimens.xml +++ b/res/values-sw720dp-land/dimens.xml @@ -22,6 +22,7 @@ 48dip 128dp - 150dip + 150dip + 370dip diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml index 51ffaf03c..142ff7932 100644 --- a/res/values-sw720dp/dimens.xml +++ b/res/values-sw720dp/dimens.xml @@ -18,5 +18,5 @@ - 145dip + 100dip diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 212dbd328..3c9ffe509 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -153,9 +153,10 @@ 160dip 70dip 160dip - 35dip + 70dip 160dip - 70dip + 130dip + 70dip 12dip diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index d6d2b5d51..29fee52a9 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -50,8 +50,10 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo private boolean mReloadCitiesList = true; private boolean mReloadCitiesDb = true; private float mFontScale = 1; + private float mListScale = 1; private PendingIntent mQuarterlyIntent; + // An adapter to provide the view for the list of cities in the world clock. private class RemoteWorldClockAdapter extends WorldClockAdapter { private final float mFontSize; @@ -97,8 +99,9 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo now.setTimeZone(TimeZone.getTimeZone(cityTZ)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); - clock.setTextViewTextSize(clockId1, TypedValue.COMPLEX_UNIT_PX, mFontSize * mFontScale); - clock.setTextViewTextSize(clockId2, TypedValue.COMPLEX_UNIT_PX, mFontSize * mFontScale); + float scale = Math.min(mFontScale, mListScale); + clock.setTextViewTextSize(clockId1, TypedValue.COMPLEX_UNIT_PX, mFontSize * scale); + clock.setTextViewTextSize(clockId2, TypedValue.COMPLEX_UNIT_PX, mFontSize * scale); clock.setString(clockId1, "setTimeZone", cityObj.mTimeZone); clock.setString(clockId2, "setTimeZone", cityObj.mTimeZone); @@ -205,6 +208,8 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo } mFontScale = WidgetUtils.getScaleRatio(mContext, null, mId); + mListScale = WidgetUtils.getHeightScaleRatio(mContext, null, mId); + } @Override diff --git a/src/com/android/alarmclock/WidgetUtils.java b/src/com/android/alarmclock/WidgetUtils.java index 757e062ad..d4a6b7066 100644 --- a/src/com/android/alarmclock/WidgetUtils.java +++ b/src/com/android/alarmclock/WidgetUtils.java @@ -56,6 +56,26 @@ public class WidgetUtils { return 1; } + // Calculate the scale factor of the fonts in the list of the widget using the widget height + public static float getHeightScaleRatio(Context context, Bundle options, int id) { + AppWidgetManager widgetManager = AppWidgetManager.getInstance(context); + if (options == null) { + options = widgetManager.getAppWidgetOptions(id); + } + if (options != null) { + int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT); + if (minHeight == 0) { + // No data , do no scaling + return 1f; + } + Resources res = context.getResources(); + float ratio = minHeight / res.getDimension(R.dimen.def_digital_widget_height); + return (ratio > 1) ? 1 : ratio; + } + return 1; + } + + // Decide if to show the list of world clock. // Check to see if the widget size is big enough, if it is return true. public static boolean showList(Context context, int id, float scale) { @@ -66,7 +86,7 @@ public class WidgetUtils { } int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT); int neededSize = (int) context.getResources(). - getDimension(R.dimen.def_digital_widget_height); + getDimension(R.dimen.digital_widget_list_min_height); return (minHeight > neededSize); } } -- cgit v1.2.3 From 1e34a1bead76f4c3fa6e2baec327e5846f4c23fd Mon Sep 17 00:00:00 2001 From: Robyn Coultas Date: Wed, 5 Dec 2012 17:12:41 -0800 Subject: Always log the alarm time Bug: 7579100 Bug: 7634943 Intentionally verbose to provide useful information in bug reports. Tuned format of alarm time to include day of week Change-Id: I54fb5ee75c28868adf98c0d9d1f3fb25f55a6af6 --- src/com/android/deskclock/Alarms.java | 9 ++++++--- src/com/android/deskclock/Log.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/com/android/deskclock/Alarms.java b/src/com/android/deskclock/Alarms.java index 93c1ec9f2..637b82454 100644 --- a/src/com/android/deskclock/Alarms.java +++ b/src/com/android/deskclock/Alarms.java @@ -426,9 +426,9 @@ public class Alarms { AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - if (Log.LOGV) { - Log.v("** setAlert id " + alarm.id + " atTime " + atTimeInMillis); - } + // Intentionally verbose: always log the alarm time to provide useful + // information in bug reports. + Log.v("Alarm set for id=" + alarm.id + " " + Log.formatTime(atTimeInMillis)); Intent intent = new Intent(ALARM_ALERT_ACTION); @@ -472,6 +472,9 @@ public class Alarms { PendingIntent.FLAG_CANCEL_CURRENT); am.cancel(sender); setStatusBarIcon(context, false); + // Intentionally verbose: always log the lack of a next alarm to provide useful + // information in bug reports. + Log.v("No next alarm"); saveNextAlarm(context, ""); } diff --git a/src/com/android/deskclock/Log.java b/src/com/android/deskclock/Log.java index 39e7e3491..e075442bf 100644 --- a/src/com/android/deskclock/Log.java +++ b/src/com/android/deskclock/Log.java @@ -55,6 +55,6 @@ public class Log { } public static String formatTime(long millis) { - return new SimpleDateFormat("HH:mm:ss.SSS aaa").format(new Date(millis)); + return new SimpleDateFormat("HH:mm:ss.SSS/E").format(new Date(millis)); } } -- cgit v1.2.3 From 1d529d62b10b98239b503578041d49c4eaf81ed1 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Wed, 5 Dec 2012 17:41:41 -0800 Subject: Add time zone check every 15 minutes Bug: 7629398 Make sure the time zone is updated by checking it every 15 minutes. If it was changed, update the world clock to make sure home time zone clock is added/removed. Change-Id: Iedf3b037095e057f350d0be728661afdf59b3193 --- src/com/android/alarmclock/DigitalWidgetViewsFactory.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java index 29fee52a9..d906b8991 100644 --- a/src/com/android/alarmclock/DigitalWidgetViewsFactory.java +++ b/src/com/android/alarmclock/DigitalWidgetViewsFactory.java @@ -52,6 +52,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo private float mFontScale = 1; private float mListScale = 1; private PendingIntent mQuarterlyIntent; + private String mLastTimeZone; // An adapter to provide the view for the list of cities in the world clock. @@ -136,6 +137,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo mId = intent.getIntExtra( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); mAdapter = new RemoteWorldClockAdapter(c); + mLastTimeZone = TimeZone.getDefault().getID(); } public DigitalWidgetViewsFactory() { @@ -247,10 +249,23 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) { // refresh the list to make sure home time zone is displayed / removed mReloadCitiesList = true; + mLastTimeZone = TimeZone.getDefault().getID(); } else if (action.equals(Intent.ACTION_LOCALE_CHANGED)) { // reload the cities DB to pick up the cities name in the new language mReloadCitiesDb = true; + } else if (action.equals(Utils.ACTION_ON_QUARTER_HOUR)) { + // Since the system may miss or not send time zone changes in all cases + // make sure to update the world clock list if the time zone + // changed in the last 15 minutes + String currentTimeZone = TimeZone.getDefault().getID(); + if (!TextUtils.equals(currentTimeZone, mLastTimeZone)) { + // refresh the list to make sure home time zone is displayed / removed + mReloadCitiesList = true; + mLastTimeZone = currentTimeZone; + Log.v(TAG,"Detected time zone change,updating time zone to " + currentTimeZone); + } } + // For any time change or locale change, refresh all widgetManager.notifyAppWidgetViewDataChanged(mId, R.id.digital_appwidget_listview); RemoteViews widget = -- cgit v1.2.3 From 45f73b863ad14faa6ca63a90db4ff9c78e86473e Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 10 Dec 2012 08:43:05 -0800 Subject: Import translations. DO NOT MERGE Change-Id: I6b531f39ec1ffbf0ce4e8336e524cc10002edd8b Auto-generated-cl: translation import --- res/values-fr/strings.xml | 4 ++-- res/values-in/strings.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index fe7dd0413..177925a45 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -193,8 +193,8 @@ "Domicile" "Villes" - "ACTIVÉE" - "DÉSACTIVÉE" + "OUI" + "NON" "HORLOGE" "Style" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 6c9624dcc..e5079d9bf 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -35,7 +35,7 @@ "Nada Dering Alarm" "Nada Dering" "Waktu" - "Tolak" + "Tutup" "Alarm disenyapkan setelah %d menit." "Tunda" "Menunda selama %d menit." @@ -102,7 +102,7 @@ "Efek tombol" "Tunda" - "Singkirkan" + "Tutup" "Tidak melakukan apa-apa" "Setel nada dering default" -- cgit v1.2.3 From a3458d9448c4131b530361fb87edb28baebb647e Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Thu, 7 Feb 2013 10:41:55 -0800 Subject: Switch volume button default behavior Bug: 8151863 Changed the default to do nothing and added a check to make sure that on the first boot after an upgrade, it will switch "Snooze" to "Do nothing" Change-Id: I778e3eb58f465f2c3fc5be55859874cca8ab8b62 --- res/xml/settings.xml | 2 +- .../android/deskclock/AlarmAlertFullScreen.java | 3 +-- src/com/android/deskclock/AlarmInitReceiver.java | 29 ++++++++++++++++++++++ src/com/android/deskclock/SettingsActivity.java | 4 +++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 50565c888..916b947a5 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -64,6 +64,6 @@ android:dialogTitle="@string/volume_button_setting_title" android:entries="@array/volume_button_setting_entries" android:entryValues="@array/volume_button_setting_values" - android:defaultValue="1" /> + android:defaultValue="0" /> diff --git a/src/com/android/deskclock/AlarmAlertFullScreen.java b/src/com/android/deskclock/AlarmAlertFullScreen.java index 55159303f..8f1582ce1 100644 --- a/src/com/android/deskclock/AlarmAlertFullScreen.java +++ b/src/com/android/deskclock/AlarmAlertFullScreen.java @@ -52,7 +52,6 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig private final boolean LOG = true; // 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"; protected static final String SCREEN_OFF = "screen_off"; protected Alarm mAlarm; @@ -119,7 +118,7 @@ public class AlarmAlertFullScreen extends Activity implements GlowPadView.OnTrig final String vol = PreferenceManager.getDefaultSharedPreferences(this) .getString(SettingsActivity.KEY_VOLUME_BEHAVIOR, - DEFAULT_VOLUME_BEHAVIOR); + SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); mVolumeBehavior = Integer.parseInt(vol); final Window win = getWindow(); diff --git a/src/com/android/deskclock/AlarmInitReceiver.java b/src/com/android/deskclock/AlarmInitReceiver.java index e3a8278d4..1dd7bb397 100644 --- a/src/com/android/deskclock/AlarmInitReceiver.java +++ b/src/com/android/deskclock/AlarmInitReceiver.java @@ -27,6 +27,9 @@ import com.android.deskclock.timer.TimerObj; public class AlarmInitReceiver extends BroadcastReceiver { + // A flag that indicates that switching the volume button default was done + private static final String PREF_VOLUME_DEF_DONE = "vol_def_done"; + /** * Sets alarm on ACTION_BOOT_COMPLETED. Resets alarm on * TIME_SET, TIMEZONE_CHANGED @@ -52,6 +55,12 @@ public class AlarmInitReceiver extends BroadcastReceiver { Log.v("AlarmInitReceiver - Reset timers and clear stopwatch data"); TimerObj.resetTimersInSharedPrefs(prefs); Utils.clearSwSharedPref(prefs); + + if (!prefs.getBoolean(PREF_VOLUME_DEF_DONE, false)) { + // Fix the default + Log.v("AlarmInitReceiver - checking volume button default"); + switchVolumeButtonDefault(prefs); + } } Alarms.setNextAlert(context); result.finish(); @@ -60,4 +69,24 @@ public class AlarmInitReceiver extends BroadcastReceiver { } }); } + + private void switchVolumeButtonDefault(SharedPreferences prefs) { + SharedPreferences.Editor editor = prefs.edit(); + + // Get the volume button behavior setting + final String vol = prefs.getString(SettingsActivity.KEY_VOLUME_BEHAVIOR, + SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); + // If the setting is "Snooze", change it to "Do Nothing" + if (SettingsActivity.OLD_DEFAULT_VOLUME_BEHAVIOR.equals(vol)) { + editor.putString(SettingsActivity.KEY_VOLUME_BEHAVIOR, + SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); + Log.v("AlarmInitReceiver - Reset volume button default"); + } else { + Log.v("AlarmInitReceiver - No need to reset volume button default"); + } + + // Make sure we do it only once + editor.putBoolean(PREF_VOLUME_DEF_DONE, true); + editor.apply(); + } } diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java index ef2243f2a..9465670af 100644 --- a/src/com/android/deskclock/SettingsActivity.java +++ b/src/com/android/deskclock/SettingsActivity.java @@ -64,6 +64,10 @@ public class SettingsActivity extends PreferenceActivity static final String KEY_VOLUME_BUTTONS = "volume_button_setting"; + // Old and new default preferences, needed to switch the default on upgrade + public static final String DEFAULT_VOLUME_BEHAVIOR = "0"; + public static final String OLD_DEFAULT_VOLUME_BEHAVIOR = "1"; + private static CharSequence[][] mTimezones; private long mTime; -- cgit v1.2.3 From 81a0690f93c021e189976a476c20fc5aab4841a5 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Fri, 8 Feb 2013 11:40:57 -0800 Subject: Resseting volume button to "do nothing" on upgrade Bug:8151863 Change-Id: Ic99172767f90d78837f783336309f9a99bfd3ea2 --- src/com/android/deskclock/AlarmInitReceiver.java | 15 +++------------ src/com/android/deskclock/SettingsActivity.java | 2 -- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/com/android/deskclock/AlarmInitReceiver.java b/src/com/android/deskclock/AlarmInitReceiver.java index 1dd7bb397..b2625f195 100644 --- a/src/com/android/deskclock/AlarmInitReceiver.java +++ b/src/com/android/deskclock/AlarmInitReceiver.java @@ -58,7 +58,7 @@ public class AlarmInitReceiver extends BroadcastReceiver { if (!prefs.getBoolean(PREF_VOLUME_DEF_DONE, false)) { // Fix the default - Log.v("AlarmInitReceiver - checking volume button default"); + Log.v("AlarmInitReceiver - resetting volume button default"); switchVolumeButtonDefault(prefs); } } @@ -73,17 +73,8 @@ public class AlarmInitReceiver extends BroadcastReceiver { private void switchVolumeButtonDefault(SharedPreferences prefs) { SharedPreferences.Editor editor = prefs.edit(); - // Get the volume button behavior setting - final String vol = prefs.getString(SettingsActivity.KEY_VOLUME_BEHAVIOR, - SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); - // If the setting is "Snooze", change it to "Do Nothing" - if (SettingsActivity.OLD_DEFAULT_VOLUME_BEHAVIOR.equals(vol)) { - editor.putString(SettingsActivity.KEY_VOLUME_BEHAVIOR, - SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); - Log.v("AlarmInitReceiver - Reset volume button default"); - } else { - Log.v("AlarmInitReceiver - No need to reset volume button default"); - } + editor.putString(SettingsActivity.KEY_VOLUME_BEHAVIOR, + SettingsActivity.DEFAULT_VOLUME_BEHAVIOR); // Make sure we do it only once editor.putBoolean(PREF_VOLUME_DEF_DONE, true); diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java index 9465670af..bafe95f26 100644 --- a/src/com/android/deskclock/SettingsActivity.java +++ b/src/com/android/deskclock/SettingsActivity.java @@ -64,9 +64,7 @@ public class SettingsActivity extends PreferenceActivity static final String KEY_VOLUME_BUTTONS = "volume_button_setting"; - // Old and new default preferences, needed to switch the default on upgrade public static final String DEFAULT_VOLUME_BEHAVIOR = "0"; - public static final String OLD_DEFAULT_VOLUME_BEHAVIOR = "1"; private static CharSequence[][] mTimezones; private long mTime; -- cgit v1.2.3