From 0e05767cce4d1fda9babdfa10b959018762cbd03 Mon Sep 17 00:00:00 2001 From: Sam LaChance Date: Mon, 29 Aug 2022 21:29:43 -0400 Subject: [PATCH 01/52] Fixing a visual glitch in the Home dropdown menu. The highlighting when tapping an item wasn't working correctly. --- app/src/main/java/com/eveningoutpost/dexdrip/Home.java | 1 - app/src/main/res/layout/activity_home.xml | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/Home.java b/app/src/main/java/com/eveningoutpost/dexdrip/Home.java index fbbd88104f..199550e66a 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/Home.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/Home.java @@ -400,7 +400,6 @@ protected void onCreate(Bundle savedInstanceState) { binding.setHome(home); homeShelf.set("arrow_configurator", false); dialog.setContentView(binding.getRoot()); - dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.show(); return false; }); diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 846f08c160..c06eeeaf02 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -48,10 +48,8 @@ + android:minHeight="?attr/actionBarSize" /> Date: Fri, 2 Sep 2022 10:22:57 +0100 Subject: [PATCH 02/52] New translations strings.xml (French) --- app/src/main/res/values-fr/strings-fr.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-fr/strings-fr.xml b/app/src/main/res/values-fr/strings-fr.xml index cb24e4834c..c330a93e0a 100644 --- a/app/src/main/res/values-fr/strings-fr.xml +++ b/app/src/main/res/values-fr/strings-fr.xml @@ -1574,8 +1574,6 @@ Ne plus me le demander Voulez-vous connecter xDrip à ce capteur? Cela empêchera le lecteur Freestyle et l\'application LibreLink de recevoir les alertes. Appuyez sur oui et scannez vous à nouveau pour vous connecter (choisissez de ne pas vous connecter si vous voulez exécuter xDrip avec l\'application patchée) Connexion du capteur Libre au Bluetooth - Réduire FUZZER - Réduire la valeur de FUZZER de 2,5 minutes à 37,5 secondes Impossible de scanner le code-barres sans la permission caméra Rendre les données filtrées si nécessaire Créer les filtrées manquantes From ef6dbb39ad4fdc3ebdadc96e62119a0f3c00e289 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:22:58 +0100 Subject: [PATCH 03/52] New translations strings.xml (Dutch) --- app/src/main/res/values-nl/strings-nl.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-nl/strings-nl.xml b/app/src/main/res/values-nl/strings-nl.xml index 505df57ef2..217f2326a6 100644 --- a/app/src/main/res/values-nl/strings-nl.xml +++ b/app/src/main/res/values-nl/strings-nl.xml @@ -1568,8 +1568,6 @@ Vraag me dat niet nog een keer Wil je xDrip met deze sensor verbinden? Dit zorgt ervoor dat de libre reader en libre link geen waarschuwingen meer ontvangen. Druk op Ja en scan opnieuw om verbinding te maken (kies geen verbinding als u xDrip wilt uitvoeren met de gepatchte app) Libre-sensor verbinden met bluetooth - Verlaag FUZZER - Verlaag de FUZZER waarde van 2.5 minuten naar 37.5 seconden Zonder camera toestemming kan er geen barcode gescand worden Maak gefilterde gegevens indien nodig Ontbrekende gefilterde maken From 826e13444802266ced63a0db50a08564afd6283d Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:04 +0100 Subject: [PATCH 04/52] New translations strings.xml (Turkish) --- app/src/main/res/values-tr/strings-tr.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-tr/strings-tr.xml b/app/src/main/res/values-tr/strings-tr.xml index 8cdb5d4158..b9aac8cd8f 100644 --- a/app/src/main/res/values-tr/strings-tr.xml +++ b/app/src/main/res/values-tr/strings-tr.xml @@ -1573,8 +1573,6 @@ Bunu bir daha sorma Bu sensörle xDrip\'i bağlamak istiyor musunuz? Bu, Libre okuyucunun ve LibreLink\'in uyarı almasını durduracaktır. Evet\'e basın ve bağlanmak için tekrar tarayın (xDrip\'i yamalı uygulamayla çalıştırmak istiyorsanız bağlanmayın) Libre sensörü Bluetooth\'a bağlama - Düşük FUZZER - FUZZER değerini 2,5 dakikadan 37,5 saniyeye düşürün Kamera izni olmadan barkod okunamaz Gerektiğinde filtrelenmiş veriler yapın Eksik okuma filtresi oluştur @@ -1666,5 +1664,8 @@ Düzensizlikleri yumuşatarak grafikleri basitleştirin Grafik Yumuşatma Son Okuma Değeri + Uyarı için Dosya Seçin Depolama izni olmadan dosya seçilemiyor + Saati Seçin + Uyarılar için ton seçin From 59c99ca5b038cd3479ac452eac584b8b59e37413 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:10 +0100 Subject: [PATCH 05/52] New translations strings.xml (Russian) --- app/src/main/res/values-ru/strings-ru.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings-ru.xml b/app/src/main/res/values-ru/strings-ru.xml index a2ae888517..dd8c162a9d 100644 --- a/app/src/main/res/values-ru/strings-ru.xml +++ b/app/src/main/res/values-ru/strings-ru.xml @@ -1573,8 +1573,6 @@ Больше не спрашивать Вы хотите подключить xDrip к этому датчику? Данное действие сделает невозможным получение сигналов тревоги на ридере и в приложении LibreLink. Нажмите \"да\" и просканируйте датчик еще раз, чтобы создать подключение (выберите \"не подключать\", если планируете использовать xDrip с \"пропатченным\" приложением LibreLink) Подключение датчика Libre к Bluetooth - Уменьшить FUZZER - Уменьшить значение Fuzzer с 2,5 минуты до 37,5 секунды Без разрешения на камеру мы не можем сканировать штрихкод По мере необходимости давать отфильтрованные данные Восстанавливать пропущенные фильтрованные данные From 2a3ec1bcfdb1cc4a63e92295abeae4f7969ce218 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:11 +0100 Subject: [PATCH 06/52] New translations strings.xml (Portuguese) --- app/src/main/res/values-pt/strings-pt.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-pt/strings-pt.xml b/app/src/main/res/values-pt/strings-pt.xml index 1d8acd6e17..fcd2e32e92 100644 --- a/app/src/main/res/values-pt/strings-pt.xml +++ b/app/src/main/res/values-pt/strings-pt.xml @@ -1574,8 +1574,6 @@ Não voltar a perguntar Deseja ligar o xDrip com este sensor? Isto impedirá o leitor do Libre e app LibreLink de receber alertas. Pressione sim e faça leitura por NFC novamente para ligar (escolha não ligar se quiser executar o xDrip com a Libre 2 Patched app) A ligar o sensor Libre ao bluetooth - FUZZER baixo - Diminuir o valor do FUZER de 2,5 minutos para 37,5 segundos Sem permissão de câmara não podemos digitalizar um código de barras Criar dados filtrados conforme necessário Criar valores em falta @@ -1667,5 +1665,8 @@ Simplifique os gráficos facilitando irregularidades Suavização do gráfico Última Leitura - Não pode seleccionar ficheiro sem permissão de armazenamento + Selecione o ficheiro de alerta + Não pode selecionar ficheiro sem permissão de armazenamento + Seleccione a hora + Selecione o tom para alertas From 828bad5f86b7f8bbf88417ad21dceee10af28df4 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:14 +0100 Subject: [PATCH 07/52] New translations strings.xml (Estonian) --- app/src/main/res/values-et/strings-et.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-et/strings-et.xml b/app/src/main/res/values-et/strings-et.xml index 1308443249..467357e832 100644 --- a/app/src/main/res/values-et/strings-et.xml +++ b/app/src/main/res/values-et/strings-et.xml @@ -1574,8 +1574,6 @@ Ära küsi seda enam uuesti Kas soovid ühendada xDrip\'i selle sensoriga? See ei lase Libre lugejal ja LibreLink\'il hoiatusi saada. Vajuta \"JAH\" ja skaneeri uuesti ühenduse loomiseks (vali \"ÄRA ÜHENDA\", kui soovid käivitada xDrip\'i muudetud rakendusega) Libre sensori ühendamine Bluetooth\'iga - Vähenda FUZZER\'it - Vähenda FUZZER\'i väärtust 2.5 minutilt 37.5 sekundile Ilma kaamera loata ei saa me vöötkoodi skaneerida Vajadusel tee filtreeritud andmeid Loo puuduolevad väärtused @@ -1667,5 +1665,8 @@ Lihtsusta graafikuid, siludes ebakorrapärasusi Graafiku silumine Viimane näit + Vali fail Alarmi jaoks Ilma salvestamise loata ei saa faili valida + Vali aeg + Vali helin alarmi jaoks From 8e159de045d69c591d3f1187a1e2a79dc3b09a45 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:17 +0100 Subject: [PATCH 08/52] New translations strings.xml (Italian) --- app/src/main/res/values-it/strings-it.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-it/strings-it.xml b/app/src/main/res/values-it/strings-it.xml index 3aa4762235..3e442a52e1 100644 --- a/app/src/main/res/values-it/strings-it.xml +++ b/app/src/main/res/values-it/strings-it.xml @@ -1574,8 +1574,6 @@ Non chiedermelo più Vuoi collegare xDrip con questo sensore? Questo impedirà al lettore Libre e a LibreLink di ricevere allarmi. Premi sì e scansiona di nuovo per connetterti (scegli non connetterti se vuoi eseguire xDrip con l\'app patchata) Connessione del sensore Libre al bluetooth - Abbassa FUZZER - Abbassa il valore FUZZER da 2,5 minuti a 37,5 secondi Senza il permesso di accesso alla fotocamera non si può scansionare un codice a barre Crea i dati filtrati se necessario Crea dati filtrati mancanti From 7f64dbcb8be9f960bcbdaeb6bc6a582dd3aaa94d Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:18 +0100 Subject: [PATCH 09/52] New translations strings.xml (Hungarian) --- app/src/main/res/values-hu/strings-hu.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-hu/strings-hu.xml b/app/src/main/res/values-hu/strings-hu.xml index 63b25f0028..fbf1967d75 100644 --- a/app/src/main/res/values-hu/strings-hu.xml +++ b/app/src/main/res/values-hu/strings-hu.xml @@ -1547,8 +1547,6 @@ Ne kérdezzen rá többet Összekapcsolja az xDripet ezzel a szenzorral? Ezután a Libre olvasó és a LibreLink app nem kap riasztást. Nyomja meg az Igen gombot, olvassa le a szenzort a kapcsolódáshoz (Ha a patch-elt LibreLink-et akarja használni, ne kapcsolja össze őket.) Csatlakozzon Libre szenzorhoz BT-szal - FUZZER csökkentése - A FUZZER értékének csökkentése 2,5 percről 37,5 mp-re Kamerahasználat engedélyezése nélkül nem működik a vonalkód olvasás Alkossa meg a hiányzó szűrt adatokat A grafikon elrejtése a widgeteken (a következő olvasáskor jelenik meg) From f1b4faed09b7ecb35842885a4019218558106015 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:22 +0100 Subject: [PATCH 10/52] New translations strings.xml (German) --- app/src/main/res/values-de/strings-de.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values-de/strings-de.xml b/app/src/main/res/values-de/strings-de.xml index 6980424d8d..a601543e94 100644 --- a/app/src/main/res/values-de/strings-de.xml +++ b/app/src/main/res/values-de/strings-de.xml @@ -1553,7 +1553,6 @@ Nicht erneut fragen Möchtest du xDrip mit diesem Sensor verbinden? Das Libre Lesegerät und die LibreLink App werden dann keine Alarme mehr empfangen. Drücke \"Ja\" und scanne erneut für eine Verbindung (wähle \"nicht verbinden\", wenn du xDrip mit der gepatchten Libre App nutzen möchtest) Verbinde Libre-Sensor mit Bluetooth - Verringere den FUZZER Wert von 2,5 Minuten auf 37,5 Sekunden Ohne Kamera-Berechtigung können wir keinen Barcode scannen Graph auf Widgets ausblenden (wird beim nächsten Wert aktiv) Graph auf Widgets ausblenden From 012a94ff2d672eec7af6500e96652ef623fd02df Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:24 +0100 Subject: [PATCH 11/52] New translations strings.xml (Bulgarian) --- app/src/main/res/values-bg/strings-bg.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-bg/strings-bg.xml b/app/src/main/res/values-bg/strings-bg.xml index 5dc8e79b7b..cead12f3e3 100644 --- a/app/src/main/res/values-bg/strings-bg.xml +++ b/app/src/main/res/values-bg/strings-bg.xml @@ -423,8 +423,6 @@ Не ме питай повече Искате ли да свържите xDrip с този сензор? Това ще преустанови Libre четецът и LibreLink приложението да получават аларми. Натисни да и сканиране отново за да се свържеш (избери не се свързвай, ако искате да свъжите xDrip с кракнатата аппликация на Patched Libre app) Свържи Libre сонзор към Bluetooth - Намалете стойността на FUZZER - Намалете стойността на FUZZER от 2,5 минути на 37,5 секунди Скрии графиката на Widget-а Покажи данни получени отдаличено (само за диагностика) Визуализирай отдаличени данни From 41911e0c3b12937bd9a51a0c893148d02e861ab2 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:26 +0100 Subject: [PATCH 12/52] New translations strings.xml (Spanish) --- app/src/main/res/values-es/strings-es.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/res/values-es/strings-es.xml b/app/src/main/res/values-es/strings-es.xml index 8a0f887685..38bb82d41f 100644 --- a/app/src/main/res/values-es/strings-es.xml +++ b/app/src/main/res/values-es/strings-es.xml @@ -1574,8 +1574,6 @@ No volver a preguntarme ¿Quieres conectar xDrip con este sensor? Esto provocará que el lector Libre y LibreLink dejen de recibir alertas. Pulsa sí y escanea de nuevo para conectar (elige no conectar si quieres ejecutar xDrip con la aplicación modificada) Conectando sensor Libre a Bluetooth - Baja FUZZER - Bajar el valor de FUZZER de 2.5 minutos a 37.5 segundos Sin el permiso de usar la cámara, no podemos escanear un código de barras Make filtered data as needed Crear filtros faltantes From 5e812abec779f339d3243deb993ac9b3e03a95ce Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Fri, 2 Sep 2022 10:23:29 +0100 Subject: [PATCH 13/52] New translations strings.xml (Polish) --- app/src/main/res/values-pl/strings-pl.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/values-pl/strings-pl.xml b/app/src/main/res/values-pl/strings-pl.xml index 648eb5ef2f..37ba0b202e 100644 --- a/app/src/main/res/values-pl/strings-pl.xml +++ b/app/src/main/res/values-pl/strings-pl.xml @@ -1572,5 +1572,8 @@ proszę zaktualizuj OOP2 albo wybierz kalibrację w oparciu o dane surowe Wygładzanie wykresu Ostatni odczyt + Wybierz plik dla alarmu Nie można wybrać pliku bez uprawnień do przechowywania + Wybierz Czas + Wybierz dźwięk dla alarmów From b9bfde379db47e7cd901e027d6e4ef05c10096a8 Mon Sep 17 00:00:00 2001 From: Navid Date: Sat, 3 Sep 2022 00:21:36 -0400 Subject: [PATCH 14/52] Remove debug smoothing from engineering mode --- .../eveningoutpost/dexdrip/UtilityModels/BgGraphBuilder.java | 2 +- app/src/main/res/xml/pref_advanced_settings.xml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/UtilityModels/BgGraphBuilder.java b/app/src/main/java/com/eveningoutpost/dexdrip/UtilityModels/BgGraphBuilder.java index 08dbb125e6..5c4d6fe306 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/UtilityModels/BgGraphBuilder.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/UtilityModels/BgGraphBuilder.java @@ -1077,7 +1077,7 @@ private synchronized void addBgReadingValues(final boolean simple) { smbValues.clear(); if (Pref.getBooleanDefaultFalse("graph_smoothing")) { - if (Home.get_engineering_mode() && Pref.getBooleanDefaultFalse("show-unsmoothed-values-as-plugin")) { + if (Pref.getBooleanDefaultFalse("show-unsmoothed-values-as-plugin")) { showUnSmoothedValues(bgReadings); } SmootherFactory.get(Pref.getString("main-chart-smoothing-alg","")).smoothBgReadings(bgReadings); diff --git a/app/src/main/res/xml/pref_advanced_settings.xml b/app/src/main/res/xml/pref_advanced_settings.xml index aa78c26feb..743b3338ae 100644 --- a/app/src/main/res/xml/pref_advanced_settings.xml +++ b/app/src/main/res/xml/pref_advanced_settings.xml @@ -1479,8 +1479,7 @@ Date: Sat, 3 Sep 2022 10:25:17 +0100 Subject: [PATCH 15/52] New translations strings.xml (French) --- app/src/main/res/values-fr/strings-fr.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr/strings-fr.xml b/app/src/main/res/values-fr/strings-fr.xml index c330a93e0a..c85e14867b 100644 --- a/app/src/main/res/values-fr/strings-fr.xml +++ b/app/src/main/res/values-fr/strings-fr.xml @@ -1666,7 +1666,7 @@ Lissage du graphique Dernière lecture Sélectionner le son pour l\'alerte - Impossible de choisir un fichier sans avoir l\'autorisation de stockage + Impossible de choisir le fichier sans l\'autorisation de stockage Sélectionner l\'horaire Sélectionner le son pour les alertes From 8d1a7ea5247faa043c846a549d0caa01370457d2 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Sat, 3 Sep 2022 10:25:18 +0100 Subject: [PATCH 16/52] New translations strings.xml (Italian) --- app/src/main/res/values-it/strings-it.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/values-it/strings-it.xml b/app/src/main/res/values-it/strings-it.xml index 3e442a52e1..1dcbea460f 100644 --- a/app/src/main/res/values-it/strings-it.xml +++ b/app/src/main/res/values-it/strings-it.xml @@ -1665,5 +1665,8 @@ Semplifica i grafici lisciando le irregolarità Lisciamento del Grafico Ultima lettura + Seleziona Suoneria Allarme Impossibile scegliere il file senza i permessi di accesso alla memoria + Seleziona Orario + Seleziona Tono Allarme From c1b685065c8600a76c079eb028050a2c107309eb Mon Sep 17 00:00:00 2001 From: Navid Date: Sat, 3 Sep 2022 21:41:31 -0400 Subject: [PATCH 17/52] Updated show unsmooted title and summary --- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_advanced_settings.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7d8335ce2..5192a5b70d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1717,4 +1717,6 @@ Cannot choose file without storage permission Select Time Select tone for Alerts + Show unsmoothed + Show unsmoothed data also if Graph Smoothing is enabled. If calibration plugin is used, will show unsmoothed data instead of plugin data. diff --git a/app/src/main/res/xml/pref_advanced_settings.xml b/app/src/main/res/xml/pref_advanced_settings.xml index 743b3338ae..2c3a354416 100644 --- a/app/src/main/res/xml/pref_advanced_settings.xml +++ b/app/src/main/res/xml/pref_advanced_settings.xml @@ -1479,8 +1479,8 @@ + android:summary="@string/show_unsmoothed_summary" + android:title="@string/show_unsmoothed" /> Date: Sun, 4 Sep 2022 10:32:41 +0100 Subject: [PATCH 18/52] New translations strings.xml (French) --- app/src/main/res/values-fr/strings-fr.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr/strings-fr.xml b/app/src/main/res/values-fr/strings-fr.xml index c85e14867b..37def6ecb6 100644 --- a/app/src/main/res/values-fr/strings-fr.xml +++ b/app/src/main/res/values-fr/strings-fr.xml @@ -352,7 +352,7 @@ Télécharger maintenant Vérifier automatiquement les mises à jour Ici, vous pouvez enregistrer les paramètres vers la mémoire interne (Download/xDrip-export/com.eveningoutpost.dexdrip_preferences.xml).\n\nUne fois enregistrés dans le fichier, il est possible pour toute application de lire les paramètres qui pourraient contenir des informations sensibles.\n\nIl est conseillé de supprimer les paramètres une fois que vous les avez importés à nouveau si vous êtes préoccupé par cela. - Enregistrer tous les paramètres à partir du fichier + Enregistrer tous les paramètres dans le fichier Charger tous les paramètres depuis le fichier Supprimer le dossier de paramètres (Download/xDrip-export) Configuration Automatique]]> From 64245e07fd232d7dc967f4e523bade5e0a08d9e1 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Tue, 6 Sep 2022 10:45:37 +0100 Subject: [PATCH 19/52] New translations strings.xml (Hungarian) --- app/src/main/res/values-hu/strings-hu.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-hu/strings-hu.xml b/app/src/main/res/values-hu/strings-hu.xml index fbf1967d75..395af835ed 100644 --- a/app/src/main/res/values-hu/strings-hu.xml +++ b/app/src/main/res/values-hu/strings-hu.xml @@ -1601,6 +1601,8 @@ Bázisinzulin-profil szerkesztő Hangok importálása Hangjelzés fontos adatok pl. profilok importálásakor + Műveleti gombok megjelenítése (pl. szundi) a riasztási értesítésekben + Riasztás gombok Szenzor lejárat mutatása Kollektor állapot muitatása Grafikon előnézet mutatása @@ -1613,5 +1615,8 @@ A grafikon egyszerűsítése a kiugró értékek elsimításával Grafikon simítása Utolsó leolvasás + Válassza ki a riasztás fájlját Tárhelyengedély nélkül nem nyithat meg fájlokat + Időpont kiválasztása + Válassza ki a riasztás hangját From c5132ef189bfa1bc603e266fe7a6378cbebdd9f6 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Tue, 6 Sep 2022 11:46:21 +0000 Subject: [PATCH 20/52] Settings: follower save power default true --- app/src/main/res/xml/xdrip_plus_prefs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/xml/xdrip_plus_prefs.xml b/app/src/main/res/xml/xdrip_plus_prefs.xml index 8a92bcc25a..f36a0e58fd 100644 --- a/app/src/main/res/xml/xdrip_plus_prefs.xml +++ b/app/src/main/res/xml/xdrip_plus_prefs.xml @@ -798,7 +798,7 @@ android:summary="@string/summary_plus_accept_follower_actions" android:title="@string/title_plus_accept_follower_actions" /> From eb5bcabc88f97c2cb5e6628a1cd2a4613a625f25 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:26 +0100 Subject: [PATCH 21/52] New translations strings.xml (French) --- app/src/main/res/values-fr/strings-fr.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-fr/strings-fr.xml b/app/src/main/res/values-fr/strings-fr.xml index 37def6ecb6..f6139c21c0 100644 --- a/app/src/main/res/values-fr/strings-fr.xml +++ b/app/src/main/res/values-fr/strings-fr.xml @@ -1669,4 +1669,6 @@ Impossible de choisir le fichier sans l\'autorisation de stockage Sélectionner l\'horaire Sélectionner le son pour les alertes + Afficher non-lissées + Afficher les données non lissées même si le lissage du graphique est activé. Si le plugin d\'étalonnage est utilisé, les données non lissées (au lieu des données du plugin) seront affichées. From f1317d95506d81eb61f7e847686e22c677d720c0 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:28 +0100 Subject: [PATCH 22/52] New translations strings.xml (Dutch) --- app/src/main/res/values-nl/strings-nl.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-nl/strings-nl.xml b/app/src/main/res/values-nl/strings-nl.xml index 217f2326a6..d09e99e96c 100644 --- a/app/src/main/res/values-nl/strings-nl.xml +++ b/app/src/main/res/values-nl/strings-nl.xml @@ -1655,4 +1655,6 @@ Kan geen bestand kiezen zonder opslagmachtiging Selecteer tijd Selecteer geluid voor waarschuwingen + Toon niet-afgevlakte waarden + Toon niet-afgevlakte waarden ook als grafiekafvlakking is ingeschakeld. Als de kalibratieplugin aanstaat, dan worden niet-afgevlakte waarden getoond in plaats van plugin data. From 79ec55c4eba702a4f165e70c0c654512e2596f11 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:34 +0100 Subject: [PATCH 23/52] New translations strings.xml (Turkish) --- app/src/main/res/values-tr/strings-tr.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-tr/strings-tr.xml b/app/src/main/res/values-tr/strings-tr.xml index b9aac8cd8f..a98480da86 100644 --- a/app/src/main/res/values-tr/strings-tr.xml +++ b/app/src/main/res/values-tr/strings-tr.xml @@ -1668,4 +1668,6 @@ Depolama izni olmadan dosya seçilemiyor Saati Seçin Uyarılar için ton seçin + Pürüzlü verileri göster + Grafik yumuşatma etkinleştirilse bile pürüzlü verileri de gösterir. Kalibrasyon eklentisi kullanılıyorsa, eklenti verileri yerine pürüzlü verileri gösterecektir. From 49332e6a40137d1291590124e138ba7b56254b4c Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:35 +0100 Subject: [PATCH 24/52] New translations strings.xml (Swedish) --- app/src/main/res/values-sv/strings-sv.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-sv/strings-sv.xml b/app/src/main/res/values-sv/strings-sv.xml index ba5178573d..2b2fff250c 100644 --- a/app/src/main/res/values-sv/strings-sv.xml +++ b/app/src/main/res/values-sv/strings-sv.xml @@ -1119,4 +1119,6 @@ Kan inte välja fil utan behörigheter för lagringsutrymme Välj Tid Välj ljud för Larm + Visa ej-utjämnad + Visa icke-utjämnad data om också Grafutjämning är aktiverad. Om kalibreringsplugin används, kommer icke-utjämnade data visas istället för plugindata. From 7ca3c9f5c949b3d274a6744633c89a4bbb23d1a5 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:40 +0100 Subject: [PATCH 25/52] New translations strings.xml (Russian) --- app/src/main/res/values-ru/strings-ru.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-ru/strings-ru.xml b/app/src/main/res/values-ru/strings-ru.xml index dd8c162a9d..99bbe20a39 100644 --- a/app/src/main/res/values-ru/strings-ru.xml +++ b/app/src/main/res/values-ru/strings-ru.xml @@ -1647,4 +1647,6 @@ Упростить графики, сглаживая неровности Сглаживание графика Невозможно установить звук без прав доступа к хранилищу + Показывать несглаженные + Показывать также несглаженные данные, если включено Сглаживание графика. Если используется плагин калибровки, то будут показываться несглаженные данные вместо данных от плагина. From 8b7f1bd804349c8e0c587cfeeed4f1f600c2ef4c Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:41 +0100 Subject: [PATCH 26/52] New translations strings.xml (Portuguese) --- app/src/main/res/values-pt/strings-pt.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pt/strings-pt.xml b/app/src/main/res/values-pt/strings-pt.xml index fcd2e32e92..6984247d09 100644 --- a/app/src/main/res/values-pt/strings-pt.xml +++ b/app/src/main/res/values-pt/strings-pt.xml @@ -1669,4 +1669,6 @@ Não pode selecionar ficheiro sem permissão de armazenamento Seleccione a hora Selecione o tom para alertas + Mostrar sem suavização + Mostra dados não suavizados também se a suavização do gráfico estiver ativada. Se o plugin de calibração for usado, exibirá dados não suavizados em vez de dados do plugin. From f0d8ada75656c4998dd09ca1bc522428817a9142 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:48 +0100 Subject: [PATCH 27/52] New translations strings.xml (Hebrew) --- app/src/main/res/values-he/strings-he.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/values-he/strings-he.xml b/app/src/main/res/values-he/strings-he.xml index b9e3ed9800..81dcfe7d30 100644 --- a/app/src/main/res/values-he/strings-he.xml +++ b/app/src/main/res/values-he/strings-he.xml @@ -1530,4 +1530,7 @@ החלקת הגרף קריאה אחרונה אין אפשרות לבחור קובץ בלי הרשאה לאחסון + הראה לא מוחלק + הראה מידע לא מוחלק גם עם החלקת הגרף מאופשרצ, +אם תוסף הכיול בשימוש יוצג גרף לא מוחלק ולא הגרף מהתוסף. From 44310cd552d90a8358287d051f0fa3926c24465b Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:50 +0100 Subject: [PATCH 28/52] New translations strings.xml (Finnish) --- app/src/main/res/values-fi/strings-fi.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-fi/strings-fi.xml b/app/src/main/res/values-fi/strings-fi.xml index 9c1db7e474..fa3c44612b 100644 --- a/app/src/main/res/values-fi/strings-fi.xml +++ b/app/src/main/res/values-fi/strings-fi.xml @@ -616,6 +616,8 @@ Libren OOP-algoritmi. Kalibroi OOP-tiedot xDripin kalibrointimenetelmillä. OOP-algoritmin kalibrointi + Käytettävä kalibrointimenetelmä + OOP2-algoritmin kalibrointi. Tasoita Libren kuvaajaa laskemalla tulos 5 edellisen lukeman perusteella. Tasoita Libren kuvaajaa. Hae Libren vanhemmat tiedot @@ -1385,6 +1387,7 @@ Käytä jatkuvaa ilmoituskanavaa Valinta ilmoitusten ryhmittelemiseksi. Yhteensopimaton \'Numerokuvake yläreunan ilmoituspalkissa\' -valinnan kanssa Ryhmitä ilmoitukset + Viivästetty nouseva äänenvoimakkuus Anna äänimerkki, kun ensimmäistä kalibrointia pyydetään Aloituskalibroinnin hälytys Paljon häiriölukemia @@ -1512,6 +1515,7 @@ NFC ei ole käytössä Puhelimen NFC:llä on ongelmia! Ei niin nopeasti! Odota 60 sekuntia + Ei niin nopeasti, odota 30 sekuntia NFC lukuajan raja ylittyi NFC lukuajan raja ylittyi NFC tiedot virheelliset - yritä uudelleen @@ -1562,6 +1566,9 @@ Haluatko yhdistää tämän sensorin xDripiin? Tämä estää hälytykset Libren lukijassa ja LibreLinkissä. Paina Kyllä ja skannaa uudelleen yhdistääksesi (valitse Älä yhdistä, jos haluat käyttää xDripiä muokatun LibreLink-sovelluksen kanssa) Yhdistetään Libre-sensori Bluetoothiin Ilman kameran lupaa emme voi skannata viivakoodia + Useita Insuliinityyppejä + Useita Insuliinityyppejä + Käytetäänkö %s kalibrointiin? Ei, Ei Koskaan Tiedostoa ei voida valita ilman tallennustilan käyttöoikeutta From b66ad135c65ba832a469cee64aaa2d2a368edca8 Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:08:58 +0100 Subject: [PATCH 29/52] New translations strings.xml (Spanish) --- app/src/main/res/values-es/strings-es.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-es/strings-es.xml b/app/src/main/res/values-es/strings-es.xml index 38bb82d41f..2685787e14 100644 --- a/app/src/main/res/values-es/strings-es.xml +++ b/app/src/main/res/values-es/strings-es.xml @@ -1665,5 +1665,10 @@ Simplificar los gráficos suavizando las irregularidades Suavizar gráficos Última lectura + Seleccione archivo para alerta No se puede elegir el archivo sin permiso de almacenamiento + Seleccionar el Tiempo + Seleccionar tono de alerta + Mostrar no suavizados + Mostrar datos sin suavizar también si el suavizado gráfico está habilitado. Si se utiliza el plugin de calibración, se mostrarán datos sin suavizar en lugar de datos del plugin. From 6d3ceba28f54e1703cf8b212d42916cd7c59738d Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Wed, 7 Sep 2022 11:09:01 +0100 Subject: [PATCH 30/52] New translations strings.xml (Polish) --- app/src/main/res/values-pl/strings-pl.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pl/strings-pl.xml b/app/src/main/res/values-pl/strings-pl.xml index 37ba0b202e..52a3bc2bc6 100644 --- a/app/src/main/res/values-pl/strings-pl.xml +++ b/app/src/main/res/values-pl/strings-pl.xml @@ -1576,4 +1576,6 @@ Nie można wybrać pliku bez uprawnień do przechowywania Wybierz Czas Wybierz dźwięk dla alarmów + Pokaż niewygładzone + Pokaż niewygładzone dane również, jeśli wygładzanie wykresu jest włączone. Jeśli używana jest wtyczka kalibracyjna, pokaże niewygładzone dane zamiast danych wtyczki. From e1a8488d220156cb9eda59288a3b48c32a5f1d33 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 07:38:24 +0000 Subject: [PATCH 31/52] JoH: add additional utility methods --- .../eveningoutpost/dexdrip/Models/JoH.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/Models/JoH.java b/app/src/main/java/com/eveningoutpost/dexdrip/Models/JoH.java index 92670d769c..c96503b950 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/Models/JoH.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/Models/JoH.java @@ -45,6 +45,7 @@ import android.os.SystemClock; import android.provider.Settings; import android.support.v4.app.NotificationCompat; +import android.support.v4.content.CursorLoader; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.view.ContextThemeWrapper; @@ -79,6 +80,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -89,6 +91,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; @@ -418,6 +421,23 @@ public static String ucFirst(String input) { return input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase(); } + public static String readLine(final InputStream stream) { + try { + val buffer = new byte[512]; + for (int i = 0; i < buffer.length; i++) { + val b = stream.read(); + if (b == -1) return null; + if (b == '\n') { + return new String(buffer, 0, i, StandardCharsets.UTF_8); + } + buffer[i] = (byte) b; + } + } catch (IOException e) { + UserError.Log.e(TAG, "Error reading line: " + e); + } + return null; // too big + } + public static boolean isSamsung() { return Build.MANUFACTURER.toLowerCase().contains("samsung"); } @@ -439,6 +459,22 @@ public static void setBuggySamsungEnabled() { } } + public static String getFieldFromURI(final String column, final Uri contentUri) { + try { + final String[] projection = { column }; + val loader = new CursorLoader(xdrip.getAppContext(), contentUri, projection, null, null, null); + val cursor = loader.loadInBackground(); + val column_index = cursor.getColumnIndexOrThrow(column); + cursor.moveToFirst(); + val result = cursor.getString(column_index); + cursor.close(); + return result; + } catch (Exception e) { + UserError.Log.d(TAG, "Got exception extracting data for uri " + e); + return null; + } + } + public static class DecimalKeyListener extends DigitsKeyListener { private final char[] acceptedCharacters = From 6a5072339bb6b2f504891d03b2b1f104c4a70225 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 08:20:36 +0000 Subject: [PATCH 32/52] Cpref: add port range validation --- .../dexdrip/cgm/webfollow/Cpref.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/cgm/webfollow/Cpref.java b/app/src/main/java/com/eveningoutpost/dexdrip/cgm/webfollow/Cpref.java index 87913de5b5..a221eaaa7a 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/cgm/webfollow/Cpref.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/cgm/webfollow/Cpref.java @@ -6,12 +6,17 @@ import com.eveningoutpost.dexdrip.UtilityModels.Inevitable; import com.eveningoutpost.dexdrip.UtilityModels.Pref; +import lombok.val; + /** * JamOrHam * Preference handling repository */ public class Cpref { + + private static final String DEFAULT_PORT = "8080"; + public static String get(final String which) { switch (which) { @@ -28,7 +33,9 @@ public static String get(final String which) { case "HA": return Pref.getStringTrimmed("webfollow_proxy_address", null); case "HP": - return Pref.getStringTrimmed("webfollow_proxy_port", null); + val p = Pref.getStringTrimmed("webfollow_proxy_port", null); + return (validatePort(p) ? p : DEFAULT_PORT); + } return null; } @@ -55,4 +62,13 @@ static void startWithRefresh(boolean full) { Inevitable.task("webfollow-preference-changed", 2000, () -> JoH.startService(WebFollowService.class, "function", full ? "fullrefresh" : "refresh")); } + private static boolean validatePort(final String p) { + try { + val i = Integer.parseInt(p); + return i >= 1 && i <= 65535; + } catch (NumberFormatException e) { + return false; + } + } + } From 54cb5b48f60fa35de2d265bf6f46872504c0cd0f Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 08:23:10 +0000 Subject: [PATCH 33/52] EditAlertActivity: use utility method for cursor lookup --- .../dexdrip/EditAlertActivity.java | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/EditAlertActivity.java b/app/src/main/java/com/eveningoutpost/dexdrip/EditAlertActivity.java index e3157dab53..ea7776b4e2 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/EditAlertActivity.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/EditAlertActivity.java @@ -20,7 +20,6 @@ import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; -import android.support.v4.content.CursorLoader; import android.text.InputType; import android.text.format.DateFormat; import android.text.method.DigitsKeyListener; @@ -739,29 +738,13 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { } private static String getDisplayNameFromURI(final Uri contentUri) { - val title = getFieldFromURI(MediaStore.Audio.Media.TITLE, contentUri); + val title = JoH.getFieldFromURI(MediaStore.Audio.Media.TITLE, contentUri); if (title == null || contentUri.toString().endsWith(title)) { - return getFieldFromURI(MediaStore.Audio.Media.DISPLAY_NAME, contentUri); + return JoH.getFieldFromURI(MediaStore.Audio.Media.DISPLAY_NAME, contentUri); } return title; } - private static String getFieldFromURI(final String column, final Uri contentUri) { - try { - String[] projection = { column }; - val loader = new CursorLoader(xdrip.getAppContext(), contentUri, projection, null, null, null); - val cursor = loader.loadInBackground(); - val column_index = cursor.getColumnIndexOrThrow(column); - cursor.moveToFirst(); - val result = cursor.getString(column_index); - cursor.close(); - return result; - } catch (Exception e) { - Log.d(TAG, "Got exception extracting data for uri " + e); - return null; - } - } - static public String timeFormatString(Context context, int hour, int minute) { SimpleDateFormat timeFormat24 = new SimpleDateFormat("HH:mm"); From 3ab69a68713926691faa8cd723863d265d92c18a Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 08:39:57 +0000 Subject: [PATCH 34/52] Home: use parent priority for shelf dialog --- app/src/main/java/com/eveningoutpost/dexdrip/Home.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/Home.java b/app/src/main/java/com/eveningoutpost/dexdrip/Home.java index fbbd88104f..deecc5334b 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/Home.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/Home.java @@ -394,13 +394,12 @@ protected void onCreate(Bundle savedInstanceState) { mToolbar.setOnLongClickListener(v -> { // show configurator final ActivityHomeShelfSettingsBinding binding = ActivityHomeShelfSettingsBinding.inflate(getLayoutInflater()); - final Dialog dialog = new Dialog(v.getContext()); + final Dialog dialog = new Dialog(home); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); binding.setVs(homeShelf); binding.setHome(home); homeShelf.set("arrow_configurator", false); dialog.setContentView(binding.getRoot()); - dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.show(); return false; }); @@ -2018,7 +2017,7 @@ private void setupCharts(final String source) { gestureDetector.set(previewChartTouchHandler, new InterceptingGestureHandler(this, previewActiveDetector)); } } catch (NullPointerException | NoSuchFieldException | IllegalAccessException | ClassCastException e) { - e.printStackTrace(); + UserError.Log.d(TAG, "Exception injecting touch handler: " + e); } chart.getChartData().setAxisXTop(null); From 3e88f2f27f193b68354d42d6f9a50cb1f0ffad3d Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 09:45:00 +0000 Subject: [PATCH 35/52] Parakeet: remove map feature --- .../eveningoutpost/dexdrip/MapsActivity.java | 237 +++++++++--------- 1 file changed, 122 insertions(+), 115 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/MapsActivity.java b/app/src/main/java/com/eveningoutpost/dexdrip/MapsActivity.java index efa5edf7ce..30cfd2a1f2 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/MapsActivity.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/MapsActivity.java @@ -10,21 +10,22 @@ import android.util.Log; import android.view.WindowManager; +import com.eveningoutpost.dexdrip.Models.JoH; import com.eveningoutpost.dexdrip.UtilityModels.Pref; -import com.google.android.gms.maps.CameraUpdateFactory; -import com.google.android.gms.maps.GoogleMap; -import com.google.android.gms.maps.OnMapReadyCallback; -import com.google.android.gms.maps.SupportMapFragment; -import com.google.android.gms.maps.model.BitmapDescriptorFactory; -import com.google.android.gms.maps.model.CircleOptions; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.MarkerOptions; -import com.google.android.gms.maps.model.PolylineOptions; +//import com.google.android.gms.maps.CameraUpdateFactory; +//import com.google.android.gms.maps.GoogleMap; +//import com.google.android.gms.maps.OnMapReadyCallback; +//import com.google.android.gms.maps.SupportMapFragment; +//import com.google.android.gms.maps.model.BitmapDescriptorFactory; +//import com.google.android.gms.maps.model.CircleOptions; +//import com.google.android.gms.maps.model.LatLng; +//import com.google.android.gms.maps.model.MarkerOptions; +//import com.google.android.gms.maps.model.PolylineOptions; import java.util.ArrayList; import java.util.List; -public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { +public class MapsActivity extends FragmentActivity { // implements OnMapReadyCallback { private static final String defaultLocation = "-31.988644,115.515637"; // default bogus position private static final String TAG = "jamorham map"; @@ -32,106 +33,106 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback private static List longs = new ArrayList(); private static List lats = new ArrayList(); private static boolean active = false; - private static GoogleMap mMap; + //private static GoogleMap mMap; private static Activity static_activity; // receive updates from elsewhere public static void newMapLocation(String location, long when) { - try { - if ((location != null) && (location.length()>5)) { - Log.d(TAG,"New location: "+location); - try { - lastGeoLocation = location; - String[] splits = lastGeoLocation.split(","); - if (splits.length == 2) { - Double thislat = Double.parseDouble(splits[0]); - Double thislong = Double.parseDouble(splits[1]); - if ((thislat != 0) && (thislong != 0)) { - if (longs.size() > 0) { - if ((longs.get(longs.size() - 1).equals(thislong)) - && (lats.get(lats.size() - 1).equals(thislat))) { - return; // dupe - } - } - longs.add(thislong); - lats.add(thislat); - if (longs.size() > 20) { - longs.remove(0); - lats.remove(0); - } - // relay location - if (Pref.getBooleanDefaultFalse("plus_follow_master") - && Pref.getBooleanDefaultFalse("plus_follow_geolocation") - && (!Home.get_follower())) { - GcmActivity.sendLocation(location); - } - } - } - if (active) { - static_activity.startActivity(new Intent(xdrip.getAppContext(), MapsActivity.class)); - } - } catch (Exception e) - { - Log.e(TAG,"Got exception with new map location: "+e.toString()); - } - } - } catch (Exception e) { - Log.e(TAG, "Got exception in newmaplocation: " + e.toString()); - } +// try { +// if ((location != null) && (location.length()>5)) { +// Log.d(TAG,"New location: "+location); +// try { +// lastGeoLocation = location; +// String[] splits = lastGeoLocation.split(","); +// if (splits.length == 2) { +// Double thislat = Double.parseDouble(splits[0]); +// Double thislong = Double.parseDouble(splits[1]); +// if ((thislat != 0) && (thislong != 0)) { +// if (longs.size() > 0) { +// if ((longs.get(longs.size() - 1).equals(thislong)) +// && (lats.get(lats.size() - 1).equals(thislat))) { +// return; // dupe +// } +// } +// longs.add(thislong); +// lats.add(thislat); +// if (longs.size() > 20) { +// longs.remove(0); +// lats.remove(0); +// } +// // relay location +// if (Pref.getBooleanDefaultFalse("plus_follow_master") +// && Pref.getBooleanDefaultFalse("plus_follow_geolocation") +// && (!Home.get_follower())) { +// GcmActivity.sendLocation(location); +// } +// } +// } +// if (active) { +// static_activity.startActivity(new Intent(xdrip.getAppContext(), MapsActivity.class)); +// } +// } catch (Exception e) +// { +// Log.e(TAG,"Got exception with new map location: "+e.toString()); +// } +// } +// } catch (Exception e) { +// Log.e(TAG, "Got exception in newmaplocation: " + e.toString()); +// } } - private static void redrawmap() { - Log.d(TAG, "Attempting to redraw map: " + lastGeoLocation); - if (mMap == null) return; - mMap.clear(); - - String[] splits = lastGeoLocation.split(","); - // sanity check goes here - LatLng mylocation; - try { - mylocation = new LatLng(Double.parseDouble(splits[0]), Double.parseDouble(splits[1])); - } catch (NumberFormatException e) { - Log.e(TAG, "Mylocation number exception: '" + lastGeoLocation + "'"); - return; - } catch (ArrayIndexOutOfBoundsException e) { - Log.e(TAG, "Mylocation array index exception: '" + lastGeoLocation + "'"); - return; - } - CircleOptions circleOptions = new CircleOptions() - .center(mylocation) - .strokeWidth(2) - .strokeColor(Color.GRAY) - .radius(1500); - - String title = ""; - - if (lastGeoLocation.equals(defaultLocation)) { - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation, 16)); - title = "No location data yet"; - } else { - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation, 13)); - } - - if (lats.size() > 0) { - PolylineOptions mylines = new PolylineOptions(); - for (int c = 0; c < lats.size(); c++) { - mylines.add(new LatLng(lats.get(c), longs.get(c))); - } - mylines.width(1); - mylines.color(Color.parseColor("#2ba367")); - mMap.addPolyline(mylines); - } - - mMap.addCircle(circleOptions); - mMap.addMarker(new MarkerOptions() - .position(mylocation) - .title(title) - .alpha(0.9f) - .icon(BitmapDescriptorFactory.fromResource(R.drawable.jamorham_parakeet_marker))); - - mMap.getUiSettings().setMapToolbarEnabled(false); - mMap.getUiSettings().setMyLocationButtonEnabled(true); - } +// private static void redrawmap() { +// Log.d(TAG, "Attempting to redraw map: " + lastGeoLocation); +// if (mMap == null) return; +// mMap.clear(); +// +// String[] splits = lastGeoLocation.split(","); +// // sanity check goes here +// LatLng mylocation; +// try { +// mylocation = new LatLng(Double.parseDouble(splits[0]), Double.parseDouble(splits[1])); +// } catch (NumberFormatException e) { +// Log.e(TAG, "Mylocation number exception: '" + lastGeoLocation + "'"); +// return; +// } catch (ArrayIndexOutOfBoundsException e) { +// Log.e(TAG, "Mylocation array index exception: '" + lastGeoLocation + "'"); +// return; +// } +// CircleOptions circleOptions = new CircleOptions() +// .center(mylocation) +// .strokeWidth(2) +// .strokeColor(Color.GRAY) +// .radius(1500); +// +// String title = ""; +// +// if (lastGeoLocation.equals(defaultLocation)) { +// mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation, 16)); +// title = "No location data yet"; +// } else { +// mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation, 13)); +// } +// +// if (lats.size() > 0) { +// PolylineOptions mylines = new PolylineOptions(); +// for (int c = 0; c < lats.size(); c++) { +// mylines.add(new LatLng(lats.get(c), longs.get(c))); +// } +// mylines.width(1); +// mylines.color(Color.parseColor("#2ba367")); +// mMap.addPolyline(mylines); +// } +// +// mMap.addCircle(circleOptions); +// mMap.addMarker(new MarkerOptions() +// .position(mylocation) +// .title(title) +// .alpha(0.9f) +// .icon(BitmapDescriptorFactory.fromResource(R.drawable.jamorham_parakeet_marker))); +// +// mMap.getUiSettings().setMapToolbarEnabled(false); +// mMap.getUiSettings().setMyLocationButtonEnabled(true); +// } @Override protected void onCreate(Bundle savedInstanceState) { @@ -139,21 +140,27 @@ protected void onCreate(Bundle savedInstanceState) { active = true; super.onCreate(savedInstanceState); - setContentView(R.layout.activity_maps); +// setContentView(R.layout.activity_maps); getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() - .findFragmentById(R.id.map); - mapFragment.getMapAsync(this); - } +// SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() +// .findFragmentById(R.id.map); +// mapFragment.getMapAsync(this); + + // Sept 2022 - Discontinued Parakeet map feature as believed no longer in use + // Code remains for reference for now. Due for removal Sept 2023 + JoH.static_toast_long("Maps feature discontinued Sept 2022"); + finish(); - @Override - public void onMapReady(GoogleMap googleMap) { - mMap = googleMap; - static_activity = this; - active = true; - redrawmap(); } +// @Override +// public void onMapReady(GoogleMap googleMap) { +// mMap = googleMap; +// static_activity = this; +// active = true; +// redrawmap(); +// } + @Override public void onPause() { active = false; From d3e52c27aeb37b7e571238d586011e8a7ebaddb7 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 09:47:14 +0000 Subject: [PATCH 36/52] UiBased: add filter unit test --- .../Services/UiBasedCollectorTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/src/test/java/com/eveningoutpost/dexdrip/Services/UiBasedCollectorTest.java b/app/src/test/java/com/eveningoutpost/dexdrip/Services/UiBasedCollectorTest.java index 6906a2b796..41c290214b 100644 --- a/app/src/test/java/com/eveningoutpost/dexdrip/Services/UiBasedCollectorTest.java +++ b/app/src/test/java/com/eveningoutpost/dexdrip/Services/UiBasedCollectorTest.java @@ -4,6 +4,8 @@ import org.junit.Test; +import lombok.val; + public class UiBasedCollectorTest { @Test @@ -25,4 +27,21 @@ public void isValidMmolTest() { } + + @Test + public void filterStringTest() { + val i = new UiBasedCollector(); + val spec1 = "non spec"; + val spec2 = "≤5.123"; + val spec2p = "5.123"; + val spec3 = "≥100.123"; + val spec3p = "100.123"; + assertWithMessage("null test pass through 1").that(i.filterString(spec1)).isEqualTo(spec1); + assertWithMessage("null test pass through 2").that(i.filterString(spec2)).isEqualTo(spec2); + assertWithMessage("null test pass through 3").that(i.filterString(spec3)).isEqualTo(spec3); + i.lastPackage = "hello world"; + assertWithMessage("non 1").that(i.filterString(spec1)).isEqualTo(spec1); + assertWithMessage("gte 1").that(i.filterString(spec2)).isEqualTo(spec2p); + assertWithMessage("lte 1").that(i.filterString(spec3)).isEqualTo(spec3p); + } } \ No newline at end of file From 4e2e5ace84abc18c3750fd6188417ea47107dad3 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 09:48:32 +0000 Subject: [PATCH 37/52] SdcardImportExport: increase hard reset timeout --- .../com/eveningoutpost/dexdrip/utils/SdcardImportExport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/utils/SdcardImportExport.java b/app/src/main/java/com/eveningoutpost/dexdrip/utils/SdcardImportExport.java index ae140550e4..509057b582 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/utils/SdcardImportExport.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/utils/SdcardImportExport.java @@ -40,7 +40,7 @@ public class SdcardImportExport extends BaseAppCompatActivity { private final static String TAG = "jamorham sdcard"; private final static int MY_PERMISSIONS_REQUEST_STORAGE = 104; public final static int TRIGGER_RESTORE_PERMISSIONS_REQUEST_STORAGE = 9104; - private final static String PREFERENCES_FILE = "shared_prefs/" + xdrip.getAppContext().getString(R.string.local_target_package) + "_preferences.xml"; + public final static String PREFERENCES_FILE = "shared_prefs/" + xdrip.getAppContext().getString(R.string.local_target_package) + "_preferences.xml"; private final static String EXPORT_FOLDER = "xDrip-export"; private static boolean backupDismissed; //private static Activity activity; @@ -116,7 +116,7 @@ public void savePreferencesToSD(View myview) { } public static void hardReset() { - JoH.wakeUpIntent(xdrip.getAppContext(), 1000, Home.getHomePendingIntent()); + JoH.wakeUpIntent(xdrip.getAppContext(), 4000, Home.getHomePendingIntent()); hardReset_orig(); } From 14ddc6b39d6904b0008198d726e522d873b02c5c Mon Sep 17 00:00:00 2001 From: JamOrHam Date: Thu, 8 Sep 2022 12:01:36 +0100 Subject: [PATCH 38/52] New translations strings.xml (Croatian) --- app/src/main/res/values-hr/strings-hr.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-hr/strings-hr.xml b/app/src/main/res/values-hr/strings-hr.xml index c782c6da8e..317fe4a9a6 100644 --- a/app/src/main/res/values-hr/strings-hr.xml +++ b/app/src/main/res/values-hr/strings-hr.xml @@ -992,4 +992,6 @@ Pojednostavite grafikone izglađivanjem nepravilnosti Izglađivanje grafikona Zadnje očitanje + Prikaži neuglađeno + Prikaži i neizglađene podatke ako je omogućeno izglađivanje grafikona. Ako se koristi dodatak za kalibraciju, prikazat će neizglađene podatke umjesto podataka dodatka. From d90a38ea0c4aee0151c6a5bc9d193858fe2f184b Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 11:50:14 +0000 Subject: [PATCH 39/52] BindingAdapterUtils: add fast off animations --- .../dexdrip/BindingAdapterUtils.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/eveningoutpost/dexdrip/BindingAdapterUtils.java b/app/src/main/java/com/eveningoutpost/dexdrip/BindingAdapterUtils.java index cb8a378103..4e6c393f29 100644 --- a/app/src/main/java/com/eveningoutpost/dexdrip/BindingAdapterUtils.java +++ b/app/src/main/java/com/eveningoutpost/dexdrip/BindingAdapterUtils.java @@ -34,9 +34,21 @@ public static void setShowIfTrueAnimated(@NonNull View view, boolean isVisible) @BindingAdapter(value = {"showIfTrueAnimated"}, requireAll = true) public static void setShowIfTrueAnimatedBoolean(@NonNull View view, Boolean isVisible) { - setShowIfTrueAnimated(view, isVisible != null ? isVisible : false); + setShowIfTrueAnimated(view, isVisible != null ? isVisible : false); } + + @BindingAdapter(value = {"showIfTrueAnimatedFastOff"}, requireAll = true) + public static void setShowIfTrueAnimatedFastOff(@NonNull View view, boolean isVisible) { + setVisibility(view, isVisible ? View.VISIBLE : View.GONE, 50, 600); + } + + @BindingAdapter(value = {"showIfTrueAnimatedFastOff"}, requireAll = true) + public static void setShowIfTrueAnimatedBooleanFastOff(@NonNull View view, Boolean isVisible) { + setVisibility(view, isVisible ? View.VISIBLE : View.GONE, 50, 600); + } + + @BindingAdapter(value = {"showIfTrue"}, requireAll = true) public static void setShowIfTrue(@NonNull View view, boolean isVisible) { view.setVisibility(isVisible ? View.VISIBLE : View.GONE); @@ -96,6 +108,12 @@ public static void buttonIndicate(Button button, boolean set) { @BindingAdapter(value = {"animatedVisibility"}) public static synchronized void setVisibility(@NonNull final View view, final int visibility) { + setVisibility(view, visibility, 600, 600); + } + + public static synchronized void setVisibility(@NonNull final View view, + final int visibility, int offSpeed, int onSpeed) { + // Were we animating before? If so, what was the visibility? Integer endAnimVisibility = (Integer) view.getTag(FINAL_VISIBILITY_ID); int oldVisibility = endAnimVisibility == null @@ -122,8 +140,8 @@ public static synchronized void setVisibility(@NonNull final View view, // Create the animator final ObjectAnimator alpha = ObjectAnimator.ofFloat(view, View.ALPHA, startAlpha, endAlpha); - final long duration = 600; - final long stagger = 150; + final long duration = willBeVisible ? onSpeed : offSpeed; + final long stagger = duration / 4; alpha.setDuration(duration); // Stagger animations keyed at the same moment @@ -160,6 +178,5 @@ public void onAnimationEnd(Animator anim) { }); alpha.start(); } - } From 4aeee42f3dd6a51f4e215078b676682360cc3521 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Thu, 8 Sep 2022 17:23:46 +0000 Subject: [PATCH 40/52] CloudBackup: merge feature branch --- app/build.gradle | 36 +- app/src/main/AndroidManifest.xml | 129 +++-- .../dexdrip/GcmListenerSvc.java | 14 +- .../java/com/eveningoutpost/dexdrip/Home.java | 5 + .../dexdrip/LicenseAgreementActivity.java | 34 +- .../dexdrip/Services/DailyIntentService.java | 7 + .../dexdrip/UtilityModels/Constants.java | 1 + .../dexdrip/UtilityModels/VoiceCommands.java | 3 + .../dexdrip/cloud/backup/Backup.java | 530 ++++++++++++++++++ .../dexdrip/cloud/backup/BackupActivity.java | 324 +++++++++++ .../cloud/backup/BackupBaseActivity.java | 154 +++++ .../dexdrip/cloud/backup/BackupMetaData.java | 98 ++++ .../dexdrip/cloud/backup/BackupStatus.java | 11 + .../dexdrip/cloud/backup/DriveManager.java | 174 ++++++ .../dexdrip/cloud/backup/LogStatus.java | 12 + .../res/layout/activity_backup_picker.xml | 115 ++++ app/src/main/res/layout/bound_status_item.xml | 64 +++ app/src/main/res/menu/menu_home.xml | 9 + app/src/main/res/values/strings.xml | 54 ++ .../dexdrip/ui/TranslationTest.java | 9 +- build.gradle | 1 + 21 files changed, 1680 insertions(+), 104 deletions(-) create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/Backup.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/BackupActivity.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/BackupBaseActivity.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/BackupMetaData.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/BackupStatus.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/DriveManager.java create mode 100644 app/src/main/java/com/eveningoutpost/dexdrip/cloud/backup/LogStatus.java create mode 100644 app/src/main/res/layout/activity_backup_picker.xml create mode 100644 app/src/main/res/layout/bound_status_item.xml diff --git a/app/build.gradle b/app/build.gradle index 153abb8692..e80ed394da 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,6 +23,7 @@ if (getGradle().getStartParameter().getTaskRequests().toString().contains("Relea variantMapsEnabled false uploadMapsForVariant '' }*/ + apply plugin: 'com.google.android.gms.oss-licenses-plugin' } repositories { @@ -137,10 +138,25 @@ android { disable 'ExtraTranslation' } + configurations { + all { + exclude group: 'commons-logging', module: 'commons-logging' + exclude group: 'org.apache.httpcomponents' + } + } + packagingOptions { + exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/INDEX.LIST' exclude 'META-INF/NOTICE.md' exclude 'META-INF/LICENSE.md' + exclude 'META-INF/LICENSE.txt' + exclude 'META-INF/LICENSE' + exclude 'META-INF/NOTICE.txt' + exclude 'META-INF/NOTICE' + exclude 'org/apache/http/version.properties' + exclude 'org/apache/http/client/version.properties' + exclude 'META-INF/ASL2.0' } compileOptions { @@ -235,12 +251,20 @@ dependencies { implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:preference-v7:26.1.0' - //implementation 'com.google.android.gms:play-services-drive:9.4.0' - implementation 'com.google.firebase:firebase-messaging:10.2.1' - implementation 'com.google.android.gms:play-services-maps:10.2.1' - implementation 'com.google.android.gms:play-services-wearable:10.2.1' - implementation 'com.google.android.gms:play-services-location:10.2.1' - implementation "com.google.android.gms:play-services-gcm:10.2.1" + + implementation ('com.google.apis:google-api-services-drive:v3-rev20220815-2.0.0') { + exclude group: 'org.apache.httpcomponents' + } + implementation 'com.google.api-client:google-api-client-android:1.26.0' + + implementation 'com.google.android.gms:play-services-auth:15.0.0' + implementation 'com.google.firebase:firebase-messaging:15.0.0' + // implementation 'com.google.android.gms:play-services-maps:15.0.0' + implementation 'com.google.android.gms:play-services-wearable:15.0.0' + implementation 'com.google.android.gms:play-services-location:15.0.0' + implementation "com.google.android.gms:play-services-gcm:15.0.0" + implementation "com.google.android.gms:play-services-oss-licenses:15.0.0" + implementation 'com.squareup.wire:wire-runtime:2.2.0' implementation 'com.squareup.okhttp:okhttp:2.7.5' implementation 'com.squareup.okhttp3:okhttp:3.12.13' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f23f2d041c..731de956ff 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,9 +1,9 @@ + android:installLocation="internalOnly" + tools:ignore="InnerclassSeparator"> @@ -62,9 +62,14 @@ android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:largeHeap="true" - android:usesCleartextTraffic="true" + android:maxAspectRatio="2.1" android:theme="@style/AppTheme" - android:maxAspectRatio="2.1"> + android:usesCleartextTraffic="true"> + + @@ -87,8 +92,9 @@ android:grantUriPermissions="true"> + android:resource="@xml/provider_paths" /> + + android:foregroundServiceType="connectedDevice|location" /> + android:exported="true" /> @@ -229,11 +234,14 @@ - + + @@ -264,13 +272,12 @@ android:name=".Services.SyncService" android:enabled="true" android:exported="true" /> - - - @@ -369,20 +376,18 @@ android:exported="true" /> + android:enabled="true" + android:foregroundServiceType="connectedDevice|location" /> + android:foregroundServiceType="connectedDevice|location" /> + android:foregroundServiceType="connectedDevice|location" /> + android:foregroundServiceType="connectedDevice|location" /> @@ -494,7 +498,7 @@ - + @@ -529,8 +533,8 @@ - + android:exported="true"> + - + - + - + + - Συγχρονισμός Nightscout (REST-API) From caffc7cbf425d7a2c657c01d63b5899e55c9ac58 Mon Sep 17 00:00:00 2001 From: Jamorham Date: Wed, 14 Sep 2022 07:39:01 +0000 Subject: [PATCH 52/52] Updated contributing document --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 048d7a8855..5e9024e18f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,12 @@ Patches are welcomed! To ensure the best all round results they need be a good f The best way to get patches accepted is to discuss your ideas with project maintainers using [Discussions](https://github.com/NightscoutFoundation/xDrip/discussions) prior to implementation and discuss how to structure things so that they can fit well within the project and also the rationale for the change. +#### Copyright of submitted contributions + +Any submitted patches and pull requests must either be the original work of the submitter or be available under a suitable open source license which is compatible with inclusion in a GPL licensed project. + +This also applies to graphics, sounds or other binary file content. Ideally these should be either the original work of the submitter or be in the public domain. They should not contain trademarks. + #### Project reviewers are likely to use criteria similar to that outlined below: * Does the patch affect any existing functionality? What is the impact of the change?