From 82299e430b91f459262a15bd4e19f78dd19ea016 Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 3 Apr 2021 17:56:19 +0200 Subject: [PATCH 1/4] Move MGDL and MMOL Constants to XXXValueWithUnits --- .../info/nightscout/androidaps/Constants.java | 5 +- .../database/entities/XXXValueWithUnit.kt | 68 ++++++------------- 2 files changed, 24 insertions(+), 49 deletions(-) diff --git a/core/src/main/java/info/nightscout/androidaps/Constants.java b/core/src/main/java/info/nightscout/androidaps/Constants.java index b0daa4fe78..32421893ce 100644 --- a/core/src/main/java/info/nightscout/androidaps/Constants.java +++ b/core/src/main/java/info/nightscout/androidaps/Constants.java @@ -1,13 +1,14 @@ package info.nightscout.androidaps; +import info.nightscout.androidaps.database.entities.XXXValueWithUnit; import info.nightscout.androidaps.utils.T; /** * Created by mike on 07.06.2016. */ public class Constants { - public static final String MGDL = "mg/dl"; // This is Nightscout's representation - public static final String MMOL = "mmol"; + public static final String MGDL = XXXValueWithUnit.MGDL; // This is Nightscout's representation + public static final String MMOL = XXXValueWithUnit.MMOL; public static final double MMOLL_TO_MGDL = 18; // 18.0182; public static final double MGDL_TO_MMOLL = 1 / MMOLL_TO_MGDL; diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt index 5ef5e26aac..d5b8af8c30 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt @@ -38,59 +38,33 @@ sealed class XXXValueWithUnit { fun value(): Any? { return when(this) { - is Gram -> this.value - is Hour -> this.value - is Insulin -> this.value - is Mgdl -> this.value - is Minute -> this.value - is Mmoll -> this.value - is Percent -> this.value - is SimpleInt -> this.value - is SimpleString -> this.value - is StringResource -> this.value + is Gram -> this.value + is Hour -> this.value + is Insulin -> this.value + is Mgdl -> this.value + is Minute -> this.value + is Mmoll -> this.value + is Percent -> this.value + is SimpleInt -> this.value + is SimpleString -> this.value + is StringResource -> this.value is TherapyEventMeterType -> this.value - is TherapyEventTTReason -> this.value - is TherapyEventType -> this.value - is Timestamp -> this.value - is UnitPerHour -> this.value - UNKNOWN -> null + is TherapyEventTTReason -> this.value + is TherapyEventType -> this.value + is Timestamp -> this.value + is UnitPerHour -> this.value + UNKNOWN -> null } } companion object { + const val MGDL = "mg/dl" // This is Nightscout's representation + const val MMOL = "mmol" + fun fromGlucoseUnit(value: Double, string: String): XXXValueWithUnit? = when (string) { - "mg/dl", "mgdl" -> Mgdl(value) - "mmol", "mmol/l" -> Mmoll(value) - else -> null + MGDL, "mgdl" -> Mgdl(value) + MMOL, "mmol/l" -> Mmoll(value) + else -> null } } } - - - -/*** - * Idea: Leverage sealed classes for units - * Advantage: it is clear what type of data a Unit contains. Still we are exhaustive on when - * - * The condition "condition" that is used to check if an item should be logged can be replaced by .takeIf { condition }. - * The value then would not have to be handled but the logging could simply discard null value. - * - * [x] new sealed classes - * [x] use entry type directly, not String - * [ ] database - * [x] generate presentation string - * [ ] update fragment - * [ ] generate csv - * - */ - -// just do develop in this file. Remove when done. -/* -interface Translator { - - fun translate(units: UserEntry.Units): String - fun translate(meterType: TherapyEvent.MeterType): String - fun translate(type: TherapyEvent.Type): String - fun translate(reason: TemporaryTarget.Reason): String -} -*/ From 41ffa873f1b74323bcc0ac7114a8c1c93e80acdd Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 3 Apr 2021 18:13:33 +0200 Subject: [PATCH 2/4] Add a new Color Group for Basal when Loop entries are shown in fragment, it better... --- .../androidaps/utils/UserEntryPresentationHelper.kt | 5 +++-- .../androidaps/database/entities/UserEntry.kt | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt index 9c08465858..45e7e19106 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt @@ -22,13 +22,14 @@ class UserEntryPresentationHelper @Inject constructor( ) { fun colorId(colorGroup: ColorGroup): Int = when (colorGroup) { - ColorGroup.InsulinTreatment -> R.color.basal + ColorGroup.InsulinTreatment -> R.color.iob + ColorGroup.BasalTreatment -> R.color.basal ColorGroup.CarbTreatment -> R.color.carbs ColorGroup.TT -> R.color.tempTargetConfirmation ColorGroup.Profile -> R.color.white ColorGroup.Loop -> R.color.loopClosed ColorGroup.Careportal -> R.color.high - ColorGroup.Pump -> R.color.iob + ColorGroup.Pump -> R.color.loopDisconnected ColorGroup.Aaps -> R.color.defaulttext else -> R.color.defaulttext } diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt index ed7e2a5d33..d097001f8e 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt @@ -26,7 +26,7 @@ data class UserEntry( SUPERBOLUS_TBR (ColorGroup.InsulinTreatment), CARBS (ColorGroup.CarbTreatment), EXTENDED_CARBS (ColorGroup.CarbTreatment), - TEMP_BASAL (ColorGroup.InsulinTreatment), + TEMP_BASAL (ColorGroup.BasalTreatment), TT (ColorGroup.TT), NEW_PROFILE (ColorGroup.Profile), CLONE_PROFILE (ColorGroup.Profile), @@ -44,8 +44,8 @@ data class UserEntry( SUSPEND (ColorGroup.Loop), HW_PUMP_ALLOWED (ColorGroup.Pump), CLEAR_PAIRING_KEYS (ColorGroup.Pump), - ACCEPTS_TEMP_BASAL (ColorGroup.InsulinTreatment), - CANCEL_TEMP_BASAL (ColorGroup.InsulinTreatment), + ACCEPTS_TEMP_BASAL (ColorGroup.BasalTreatment), + CANCEL_TEMP_BASAL (ColorGroup.BasalTreatment), CANCEL_EXTENDED_BOLUS (ColorGroup.InsulinTreatment), CANCEL_TT (ColorGroup.TT), CAREPORTAL (ColorGroup.Careportal), @@ -60,7 +60,7 @@ data class UserEntry( BG_REMOVED (ColorGroup.Careportal), CAREPORTAL_REMOVED (ColorGroup.Careportal), EXTENDED_BOLUS_REMOVED (ColorGroup.InsulinTreatment), - FOOD_REMOVED (ColorGroup.Careportal), + FOOD_REMOVED (ColorGroup.CarbTreatment), PROFILE_REMOVED (ColorGroup.Profile), PROFILE_SWITCH_REMOVED (ColorGroup.Profile), RESTART_EVENTS_REMOVED (ColorGroup.Aaps), @@ -87,7 +87,7 @@ data class UserEntry( OTP_EXPORT (ColorGroup.Aaps), OTP_RESET (ColorGroup.Aaps), STOP_SMS (ColorGroup.Aaps), - FOOD (ColorGroup.Careportal), + FOOD (ColorGroup.CarbTreatment), EXPORT_CSV (ColorGroup.Aaps), UNKNOWN (ColorGroup.Aaps) ; @@ -144,6 +144,7 @@ data class UserEntry( enum class ColorGroup() { InsulinTreatment, + BasalTreatment, CarbTreatment, TT, Profile, From be35597da49c95bd0e55d58adda1f5cbd881a56f Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 3 Apr 2021 18:51:36 +0200 Subject: [PATCH 3/4] Add Pump Sources (only Dana currently has an Entry, but required I think for pump history uploaded in AAPS, or Prime/Fill/ReservoirChange from pump) --- .../nightscout/androidaps/utils/Translator.kt | 43 +++++++++++++++++++ .../utils/UserEntryPresentationHelper.kt | 13 ++++++ .../src/main/res/drawable/ic_combo_128.xml | 0 .../src/main/res/drawable/ic_danars_128.xml | 0 .../src/main/res/drawable/ic_ict.xml | 0 .../src/main/res/drawable/ic_insight_128.xml | 0 .../src/main/res/drawable/ic_pod_128.xml | 0 .../src/main/res/drawable/ic_veo_128.xml | 0 .../src/main/res/drawable/ic_virtual_pump.xml | 0 .../androidaps/dana/DanaFragment.kt | 2 +- .../androidaps/database/entities/UserEntry.kt | 13 ++++++ 11 files changed, 70 insertions(+), 1 deletion(-) rename {combo => core}/src/main/res/drawable/ic_combo_128.xml (100%) rename {dana => core}/src/main/res/drawable/ic_danars_128.xml (100%) rename {app => core}/src/main/res/drawable/ic_ict.xml (100%) rename {insight => core}/src/main/res/drawable/ic_insight_128.xml (100%) rename {omnipod-common => core}/src/main/res/drawable/ic_pod_128.xml (100%) rename {medtronic => core}/src/main/res/drawable/ic_veo_128.xml (100%) rename {app => core}/src/main/res/drawable/ic_virtual_pump.xml (100%) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt b/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt index be2fd0eb25..4895e5e90a 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt @@ -207,6 +207,49 @@ class Translator @Inject internal constructor( Sources.ConfigBuilder -> TODO() Sources.Overview -> TODO() Sources.Stats -> TODO() + Sources.TreatmentDialog -> TODO() + Sources.InsulinDialog -> TODO() + Sources.CarbDialog -> TODO() + Sources.WizardDialog -> TODO() + Sources.QuickWizard -> TODO() + Sources.ExtendedBolusDialog -> TODO() + Sources.TTDialog -> TODO() + Sources.ProfileSwitchDialog -> TODO() + Sources.LoopDialog -> TODO() + Sources.TempBasalDialog -> TODO() + Sources.CalibrationDialog -> TODO() + Sources.FillDialog -> TODO() + Sources.BgCheck -> TODO() + Sources.SensorInsert -> TODO() + Sources.BatteryChange -> TODO() + Sources.Note -> TODO() + Sources.Exercise -> TODO() + Sources.Question -> TODO() + Sources.Announcement -> TODO() + Sources.Actions -> TODO() + Sources.BG -> TODO() + Sources.LocalProfile -> TODO() + Sources.Maintenance -> TODO() + Sources.NSProfile -> TODO() + Sources.Objectives -> TODO() + Sources.Dana -> TODO() + Sources.DanaR -> TODO() + Sources.DanaRC -> TODO() + Sources.DanaRv2 -> TODO() + Sources.DanaRS -> TODO() + Sources.Insight -> TODO() + Sources.Combo -> TODO() + Sources.Medtronic -> TODO() + Sources.Omnipod -> TODO() + Sources.OmnipodEros -> TODO() + Sources.OmnipodDash -> TODO() + Sources.MDI -> TODO() + Sources.VirtualPump -> TODO() + Sources.Treatments -> TODO() + Sources.Food -> TODO() + Sources.ConfigBuilder -> TODO() + Sources.Overview -> TODO() + Sources.Stats -> TODO() */ Sources.Automation -> resourceHelper.gs(R.string.automation) Sources.Loop -> resourceHelper.gs(R.string.loop) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt index 45e7e19106..856b1e59a9 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/UserEntryPresentationHelper.kt @@ -64,6 +64,19 @@ class UserEntryPresentationHelper @Inject constructor( Sources.NSProfile -> R.drawable.ic_nightscout_profile Sources.Objectives -> R.drawable.ic_graduation Sources.Pump -> R.drawable.ic_generic_icon + Sources.Dana -> R.drawable.ic_danars_128 + Sources.DanaR -> R.drawable.ic_danars_128 + Sources.DanaRC -> R.drawable.ic_danars_128 + Sources.DanaRv2 -> R.drawable.ic_danars_128 + Sources.DanaRS -> R.drawable.ic_danars_128 + Sources.Insight -> R.drawable.ic_insight_128 + Sources.Combo -> R.drawable.ic_combo_128 + Sources.Medtronic -> R.drawable.ic_veo_128 + Sources.Omnipod -> R.drawable.ic_pod_128 + Sources.OmnipodEros -> R.drawable.ic_pod_128 + Sources.OmnipodDash -> R.drawable.ic_pod_128 + Sources.MDI -> R.drawable.ic_ict + Sources.VirtualPump -> R.drawable.ic_virtual_pump Sources.SMS -> R.drawable.ic_sms Sources.Treatments -> R.drawable.ic_treatments Sources.Wear -> R.drawable.ic_watch diff --git a/combo/src/main/res/drawable/ic_combo_128.xml b/core/src/main/res/drawable/ic_combo_128.xml similarity index 100% rename from combo/src/main/res/drawable/ic_combo_128.xml rename to core/src/main/res/drawable/ic_combo_128.xml diff --git a/dana/src/main/res/drawable/ic_danars_128.xml b/core/src/main/res/drawable/ic_danars_128.xml similarity index 100% rename from dana/src/main/res/drawable/ic_danars_128.xml rename to core/src/main/res/drawable/ic_danars_128.xml diff --git a/app/src/main/res/drawable/ic_ict.xml b/core/src/main/res/drawable/ic_ict.xml similarity index 100% rename from app/src/main/res/drawable/ic_ict.xml rename to core/src/main/res/drawable/ic_ict.xml diff --git a/insight/src/main/res/drawable/ic_insight_128.xml b/core/src/main/res/drawable/ic_insight_128.xml similarity index 100% rename from insight/src/main/res/drawable/ic_insight_128.xml rename to core/src/main/res/drawable/ic_insight_128.xml diff --git a/omnipod-common/src/main/res/drawable/ic_pod_128.xml b/core/src/main/res/drawable/ic_pod_128.xml similarity index 100% rename from omnipod-common/src/main/res/drawable/ic_pod_128.xml rename to core/src/main/res/drawable/ic_pod_128.xml diff --git a/medtronic/src/main/res/drawable/ic_veo_128.xml b/core/src/main/res/drawable/ic_veo_128.xml similarity index 100% rename from medtronic/src/main/res/drawable/ic_veo_128.xml rename to core/src/main/res/drawable/ic_veo_128.xml diff --git a/app/src/main/res/drawable/ic_virtual_pump.xml b/core/src/main/res/drawable/ic_virtual_pump.xml similarity index 100% rename from app/src/main/res/drawable/ic_virtual_pump.xml rename to core/src/main/res/drawable/ic_virtual_pump.xml diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt index 3bdf9980ba..4189e50da4 100644 --- a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt +++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt @@ -110,7 +110,7 @@ class DanaFragment : DaggerFragment() { binding.btconnection.setOnLongClickListener { activity?.let { OKDialog.showConfirmation(it, resourceHelper.gs(R.string.resetpairing)) { - uel.log(Action.CLEAR_PAIRING_KEYS, Sources.Pump) + uel.log(Action.CLEAR_PAIRING_KEYS, Sources.Dana) (activePlugin.activePump as DanaPumpInterface).clearPairing() } } diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt index d097001f8e..c08aa63119 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt @@ -127,6 +127,19 @@ data class UserEntry( NSProfile, //From NSProfile plugin Objectives, //From Objectives plugin Pump, //To update with one Source per pump + Dana, //Only one UserEntry in Common module Dana + DanaR, //No entry currently + DanaRC, //No entry currently + DanaRv2, //No entry currently + DanaRS, //No entry currently + Insight, //No entry currently + Combo, //No entry currently + Medtronic, //No entry currently + Omnipod, //No entry currently + OmnipodEros, //No entry currently + OmnipodDash, //No entry currently + MDI, //No entry currently + VirtualPump, //No entry currently SMS, //From SMS plugin Treatments, //From Treatments plugin Wear, //From Wear plugin From ae9503dcc04becb6224da71801b45975982f3051 Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 3 Apr 2021 19:04:08 +0200 Subject: [PATCH 4/4] Add StringResource to uel.log Food --- .../androidaps/plugins/general/food/FoodFragment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt index 49d2accce2..c7da926edd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.kt @@ -18,6 +18,7 @@ import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.entities.Food import info.nightscout.androidaps.database.entities.UserEntry.Action import info.nightscout.androidaps.database.entities.UserEntry.Sources +import info.nightscout.androidaps.database.entities.XXXValueWithUnit import info.nightscout.androidaps.database.transactions.InvalidateFoodTransaction import info.nightscout.androidaps.databinding.FoodFragmentBinding import info.nightscout.androidaps.databinding.FoodItemBinding @@ -75,7 +76,8 @@ class FoodFragment : DaggerFragment() { binding.refreshFromNightscout.setOnClickListener { context?.let { context -> OKDialog.showConfirmation(context, resourceHelper.gs(R.string.refresheventsfromnightscout) + " ?", { - uel.log(Action.FOOD, Sources.Food) + uel.log(Action.FOOD, Sources.Food, + XXXValueWithUnit.StringResource(R.string.refresheventsfromnightscout)) disposable += Completable.fromAction { repository.deleteAllFoods() } .subscribeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.main)