From 6e0d21a874852c992952aa7fd6d890df21b4a466 Mon Sep 17 00:00:00 2001 From: Philoul Date: Thu, 25 Mar 2021 13:32:11 +0100 Subject: [PATCH] Add Source icon in UserEntryFragment, Update source in uel.log --- .../androidaps/dialogs/CalibrationDialog.kt | 2 +- .../androidaps/dialogs/CarbsDialog.kt | 10 ++-- .../androidaps/dialogs/ExtendedBolusDialog.kt | 2 +- .../androidaps/dialogs/InsulinDialog.kt | 6 +-- .../androidaps/dialogs/LoopDialog.kt | 30 +++++------ .../androidaps/dialogs/ProfileSwitchDialog.kt | 2 +- .../androidaps/dialogs/TempBasalDialog.kt | 4 +- .../androidaps/dialogs/TempTargetDialog.kt | 10 ++-- .../androidaps/dialogs/TreatmentDialog.kt | 7 ++- .../androidaps/plugins/aps/loop/LoopPlugin.kt | 8 +++ .../plugins/general/food/FoodFragment.kt | 5 +- .../nsclient/NSClientAddUpdateWorker.kt | 10 ++-- .../general/nsclient/NSClientRemoveWorker.kt | 4 +- .../smsCommunicator/SmsCommunicatorPlugin.kt | 3 +- .../fragments/TreatmentsUserEntryFragment.kt | 14 ++++-- .../androidaps/utils/wizard/BolusWizard.kt | 11 ++-- .../res/layout/treatments_user_entry_item.xml | 50 +++++++++++-------- .../maintenance/formats/ClassicPrefsFormat.kt | 10 +++- .../nightscout/androidaps/utils/Translator.kt | 7 ++- .../utils/extensions/UserEntryExt.kt | 19 +++++++ .../res/drawable/ic_actions_startextbolus.xml | 0 .../drawable/ic_actions_starttempbasal.xml | 0 .../src/main/res/drawable/ic_automation.xml | 0 .../src/main/res/drawable/ic_calculator.xml | 0 .../src/main/res/drawable/ic_calibration.xml | 0 .../src/main/res/drawable/ic_loop_closed.xml | 0 .../res/drawable/ic_loop_closed_white.xml | 0 .../main/res/drawable/ic_nightscout_syncs.xml | 0 .../src/main/res/drawable/ic_quick_wizard.xml | 0 .../main/res/drawable/icon_insulin_carbs.xml | 0 core/src/main/res/values/strings.xml | 11 ++-- .../androidaps/database/entities/UserEntry.kt | 20 ++++++-- 32 files changed, 159 insertions(+), 86 deletions(-) rename {app => core}/src/main/res/drawable/ic_actions_startextbolus.xml (100%) rename {app => core}/src/main/res/drawable/ic_actions_starttempbasal.xml (100%) rename {automation => core}/src/main/res/drawable/ic_automation.xml (100%) rename {app => core}/src/main/res/drawable/ic_calculator.xml (100%) rename {app => core}/src/main/res/drawable/ic_calibration.xml (100%) rename {app => core}/src/main/res/drawable/ic_loop_closed.xml (100%) rename {app => core}/src/main/res/drawable/ic_loop_closed_white.xml (100%) rename {app => core}/src/main/res/drawable/ic_nightscout_syncs.xml (100%) rename {app => core}/src/main/res/drawable/ic_quick_wizard.xml (100%) rename {app => core}/src/main/res/drawable/icon_insulin_carbs.xml (100%) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt index 52dea0d14e..5fc8c18458 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt @@ -79,7 +79,7 @@ class CalibrationDialog : DialogFragmentWithDate() { if (bg > 0) { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - uel.log(Action.CALIBRATION, ValueWithUnit(bg, units)) + uel.log(Action.CALIBRATION, ValueWithUnit(Sources.CalibrationDialog), ValueWithUnit(bg, units)) xdripCalibrations.sendIntent(bg) }) } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt index 56dfbae96c..da00c6db4c 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt @@ -222,7 +222,7 @@ class CarbsDialog : DialogFragmentWithDate() { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { when { activitySelected -> { - uel.log(Action.TT, ValueWithUnit(TemporaryTarget.Reason.ACTIVITY.text, Units.TherapyEvent), ValueWithUnit(activityTT, units) , ValueWithUnit(activityTTDuration, Units.M)) + uel.log(Action.TT, ValueWithUnit(Sources.CarbDialog), ValueWithUnit(TemporaryTarget.Reason.ACTIVITY.text, Units.TherapyEvent), ValueWithUnit(activityTT, units) , ValueWithUnit(activityTTDuration, Units.M)) disposable += repository.runTransactionForResult(InsertTemporaryTargetAndCancelCurrentTransaction( timestamp = System.currentTimeMillis(), duration = TimeUnit.MINUTES.toMillis(activityTTDuration.toLong()), @@ -238,7 +238,7 @@ class CarbsDialog : DialogFragmentWithDate() { } eatingSoonSelected -> { - uel.log(Action.TT, ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(eatingSoonTT, units) , ValueWithUnit(eatingSoonTTDuration, Units.M)) + uel.log(Action.TT, ValueWithUnit(Sources.CarbDialog), ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(eatingSoonTT, units) , ValueWithUnit(eatingSoonTTDuration, Units.M)) disposable += repository.runTransactionForResult(InsertTemporaryTargetAndCancelCurrentTransaction( timestamp = System.currentTimeMillis(), duration = TimeUnit.MINUTES.toMillis(eatingSoonTTDuration.toLong()), @@ -254,7 +254,7 @@ class CarbsDialog : DialogFragmentWithDate() { } hypoSelected -> { - uel.log(Action.TT, ValueWithUnit(TemporaryTarget.Reason.HYPOGLYCEMIA.text, Units.TherapyEvent), ValueWithUnit(hypoTT, units) , ValueWithUnit(hypoTTDuration, Units.M)) + uel.log(Action.TT, ValueWithUnit(Sources.CarbDialog), ValueWithUnit(TemporaryTarget.Reason.HYPOGLYCEMIA.text, Units.TherapyEvent), ValueWithUnit(hypoTT, units) , ValueWithUnit(hypoTTDuration, Units.M)) disposable += repository.runTransactionForResult(InsertTemporaryTargetAndCancelCurrentTransaction( timestamp = System.currentTimeMillis(), duration = TimeUnit.MINUTES.toMillis(hypoTTDuration.toLong()), @@ -272,11 +272,13 @@ class CarbsDialog : DialogFragmentWithDate() { if (carbsAfterConstraints > 0) { if (duration == 0) { carbsGenerator.createCarb(carbsAfterConstraints, time, TherapyEvent.Type.CARBS_CORRECTION.text, notes) + uel.log(Action.CARBS, notes, ValueWithUnit(Sources.CarbDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(carbsAfterConstraints, Units.G), ValueWithUnit(timeOffset, Units.M, timeOffset != 0)) + } else { carbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes) nsUpload.uploadEvent(TherapyEvent.Type.NOTE.text, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset)) + uel.log(Action.EXTENDED_CARBS, notes, ValueWithUnit(Sources.CarbDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(carbsAfterConstraints, Units.G), ValueWithUnit(timeOffset, Units.M, timeOffset != 0), ValueWithUnit(duration, Units.H)) } - uel.log(Action.CARBS, notes, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(carbsAfterConstraints, Units.G), ValueWithUnit(timeOffset, Units.M, timeOffset != 0), ValueWithUnit(duration, Units.H, duration != 0)) } if (useAlarm && carbs > 0 && timeOffset > 0) { carbTimer.scheduleReminder(dateUtil._now() + T.mins(timeOffset.toLong()).msecs()) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt index 4116091eed..224706769e 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt @@ -88,7 +88,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - uel.log(Action.EXTENDED_BOLUS, ValueWithUnit(insulinAfterConstraint, Units.U), ValueWithUnit(durationInMinutes, Units.M)) + uel.log(Action.EXTENDED_BOLUS, ValueWithUnit(Sources.ExtendedBolusDialog), ValueWithUnit(insulinAfterConstraint, Units.U), ValueWithUnit(durationInMinutes, Units.M)) commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() { override fun run() { if (!result.success) { diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt index b53375c916..0867dc973a 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt @@ -189,7 +189,7 @@ class InsulinDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { if (eatingSoonChecked) { - uel.log(Action.TT, notes, ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(eatingSoonTT, units), ValueWithUnit(eatingSoonTTDuration, Units.M)) + uel.log(Action.TT, notes, ValueWithUnit(Sources.InsulinDialog), ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(eatingSoonTT, units), ValueWithUnit(eatingSoonTTDuration, Units.M)) disposable += repository.runTransactionForResult(InsertTemporaryTargetAndCancelCurrentTransaction( timestamp = System.currentTimeMillis(), duration = TimeUnit.MINUTES.toMillis(eatingSoonTTDuration.toLong()), @@ -211,11 +211,11 @@ class InsulinDialog : DialogFragmentWithDate() { detailedBolusInfo.source = Source.USER detailedBolusInfo.notes = notes if (recordOnlyChecked) { - uel.log(Action.BOLUS, notes, ValueWithUnit(Sources.Record), ValueWithUnit(insulinAfterConstraints, Units.U), ValueWithUnit(timeOffset, Units.M, timeOffset!= 0)) + uel.log(Action.BOLUS, notes, ValueWithUnit(Sources.InsulinDialog), ValueWithUnit(R.string.record, Units.R_String), ValueWithUnit(insulinAfterConstraints, Units.U), ValueWithUnit(timeOffset, Units.M, timeOffset!= 0)) detailedBolusInfo.date = time activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false) } else { - uel.log(Action.BOLUS, notes, ValueWithUnit(insulinAfterConstraints, Units.U)) + uel.log(Action.BOLUS, notes, ValueWithUnit(Sources.InsulinDialog), ValueWithUnit(insulinAfterConstraints, Units.U)) detailedBolusInfo.date = DateUtil.now() commandQueue.bolus(detailedBolusInfo, object : Callback() { override fun run() { diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt index 9b10142c8c..ddaac62629 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt @@ -239,28 +239,28 @@ class LoopDialog : DaggerDialogFragment() { val profile = profileFunction.getProfile() ?: return true when (v.id) { R.id.overview_closeloop -> { - uel.log(Action.CLOSED_LOOP_MODE) + uel.log(Action.CLOSED_LOOP_MODE, ValueWithUnit(Sources.LoopDialog)) sp.putString(R.string.key_aps_mode, "closed") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop))) return true } R.id.overview_lgsloop -> { - uel.log(Action.LGS_LOOP_MODE) + uel.log(Action.LGS_LOOP_MODE, ValueWithUnit(Sources.LoopDialog)) sp.putString(R.string.key_aps_mode, "lgs") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true } R.id.overview_openloop -> { - uel.log(Action.OPEN_LOOP_MODE) + uel.log(Action.OPEN_LOOP_MODE, ValueWithUnit(Sources.LoopDialog)) sp.putString(R.string.key_aps_mode, "open") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true } R.id.overview_disable -> { - uel.log(Action.LOOP_DISABLED) + uel.log(Action.LOOP_DISABLED, ValueWithUnit(Sources.LoopDialog)) loopPlugin.setPluginEnabled(PluginType.LOOP, false) loopPlugin.setFragmentVisible(PluginType.LOOP, false) configBuilderPlugin.storeSettings("DisablingLoop") @@ -277,7 +277,7 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_enable -> { - uel.log(Action.LOOP_ENABLED) + uel.log(Action.LOOP_ENABLED, ValueWithUnit(Sources.LoopDialog)) loopPlugin.setPluginEnabled(PluginType.LOOP, true) loopPlugin.setFragmentVisible(PluginType.LOOP, true) configBuilderPlugin.storeSettings("EnablingLoop") @@ -287,7 +287,7 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_resume, R.id.overview_reconnect -> { - uel.log(if (v.id==R.id.overview_resume) Action.RESUME else Action.RECONNECT ) + uel.log(if (v.id==R.id.overview_resume) Action.RESUME else Action.RECONNECT, ValueWithUnit(Sources.LoopDialog)) loopPlugin.suspendTo(0L) rxBus.send(EventRefreshOverview("suspendmenu")) commandQueue.cancelTempBasal(true, object : Callback() { @@ -303,49 +303,49 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_suspend_1h -> { - uel.log(Action.SUSPEND, ValueWithUnit(1, Units.H)) + uel.log(Action.SUSPEND, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(1, Units.H)) loopPlugin.suspendLoop(60) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_2h -> { - uel.log(Action.SUSPEND, ValueWithUnit(2, Units.H)) + uel.log(Action.SUSPEND, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(2, Units.H)) loopPlugin.suspendLoop(120) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_3h -> { - uel.log(Action.SUSPEND, ValueWithUnit(3, Units.H)) + uel.log(Action.SUSPEND, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(3, Units.H)) loopPlugin.suspendLoop(180) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_suspend_10h -> { - uel.log(Action.SUSPEND, ValueWithUnit(10, Units.H)) + uel.log(Action.SUSPEND, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(10, Units.H)) loopPlugin.suspendLoop(600) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_15m -> { - uel.log(Action.DISCONNECT, ValueWithUnit(15, Units.M)) + uel.log(Action.DISCONNECT, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(15, Units.M)) loopPlugin.disconnectPump(15, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_30m -> { - uel.log(Action.DISCONNECT, ValueWithUnit(30, Units.M)) + uel.log(Action.DISCONNECT, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(30, Units.M)) loopPlugin.disconnectPump(30, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_1h -> { - uel.log(Action.DISCONNECT, ValueWithUnit(1, Units.H)) + uel.log(Action.DISCONNECT, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(1, Units.H)) loopPlugin.disconnectPump(60, profile) sp.putBoolean(R.string.key_objectiveusedisconnect, true) rxBus.send(EventRefreshOverview("suspendmenu")) @@ -353,14 +353,14 @@ class LoopDialog : DaggerDialogFragment() { } R.id.overview_disconnect_2h -> { - uel.log(Action.DISCONNECT, ValueWithUnit(2, Units.H)) + uel.log(Action.DISCONNECT, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(2, Units.H)) loopPlugin.disconnectPump(120, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true } R.id.overview_disconnect_3h -> { - uel.log(Action.DISCONNECT, ValueWithUnit(3, Units.H)) + uel.log(Action.DISCONNECT, ValueWithUnit(Sources.LoopDialog), ValueWithUnit(3, Units.H)) loopPlugin.disconnectPump(180, profile) rxBus.send(EventRefreshOverview("suspendmenu")) return true diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt index 692f3ee431..ae2aeae599 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt @@ -125,7 +125,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - uel.log(Action.PROFILE_SWITCH, notes, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(profile, Units.None), ValueWithUnit(percent, Units.Percent), ValueWithUnit(timeShift, Units.H, timeShift != 0), ValueWithUnit(duration, Units.M, duration != 0)) + uel.log(Action.PROFILE_SWITCH, notes, ValueWithUnit(Sources.ProfileSwitchDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(profile, Units.None), ValueWithUnit(percent, Units.Percent), ValueWithUnit(timeShift, Units.H, timeShift != 0), ValueWithUnit(duration, Units.M, duration != 0)) treatmentsPlugin.doProfileSwitch(profileStore, profile, duration, percent, timeShift, eventTime) }) } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt index 01c9aa8d2a..626a2320d5 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt @@ -126,10 +126,10 @@ class TempBasalDialog : DialogFragmentWithDate() { } } if (isPercentPump) { - uel.log(Action.TEMP_BASAL, ValueWithUnit(percent, Units.Percent), ValueWithUnit(durationInMinutes, Units.M)) + uel.log(Action.TEMP_BASAL, ValueWithUnit(Sources.TempBasalDialog), ValueWithUnit(percent, Units.Percent), ValueWithUnit(durationInMinutes, Units.M)) commandQueue.tempBasalPercent(percent, durationInMinutes, true, profile, callback) } else { - uel.log(Action.TEMP_BASAL, ValueWithUnit(absolute, Units.U), ValueWithUnit(durationInMinutes, Units.M)) + uel.log(Action.TEMP_BASAL, ValueWithUnit(Sources.TempBasalDialog), ValueWithUnit(absolute, Units.U), ValueWithUnit(durationInMinutes, Units.M)) commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback) } }) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt index 7cebd826f0..6366b1b826 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt @@ -181,11 +181,11 @@ class TempTargetDialog : DialogFragmentWithDate() { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { val units = profileFunction.getUnits() when(reason) { - resourceHelper.gs(R.string.eatingsoon) -> uel.log(Action.TT, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) - resourceHelper.gs(R.string.activity) -> uel.log(Action.TT, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.ACTIVITY.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) - resourceHelper.gs(R.string.hypo) -> uel.log(Action.TT, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.HYPOGLYCEMIA.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) - resourceHelper.gs(R.string.manual) -> uel.log(Action.TT, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.CUSTOM.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) - resourceHelper.gs(R.string.stoptemptarget) -> uel.log(Action.CANCEL_TT, ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged)) + resourceHelper.gs(R.string.eatingsoon) -> uel.log(Action.TT, ValueWithUnit(Sources.TTDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.EATING_SOON.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) + resourceHelper.gs(R.string.activity) -> uel.log(Action.TT, ValueWithUnit(Sources.TTDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.ACTIVITY.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) + resourceHelper.gs(R.string.hypo) -> uel.log(Action.TT, ValueWithUnit(Sources.TTDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.HYPOGLYCEMIA.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) + resourceHelper.gs(R.string.manual) -> uel.log(Action.TT, ValueWithUnit(Sources.TTDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged), ValueWithUnit(TemporaryTarget.Reason.CUSTOM.text, Units.TherapyEvent), ValueWithUnit(target, units), ValueWithUnit(duration, Units.M)) + resourceHelper.gs(R.string.stoptemptarget) -> uel.log(Action.CANCEL_TT, ValueWithUnit(Sources.TTDialog), ValueWithUnit(eventTime, Units.Timestamp, eventTimeChanged)) } if (target == 0.0 || duration == 0) { disposable += repository.runTransactionForResult(CancelCurrentTemporaryTargetIfAnyTransaction(eventTime)) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt index 5f421134a3..4b4d150ffd 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt @@ -130,7 +130,12 @@ class TreatmentDialog : DialogFragmentWithDate() { if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), { - uel.log(Action.TREATMENT, ValueWithUnit(insulin, Units.U, insulin != 0.0), ValueWithUnit(carbs, Units.G, carbs != 0)) + val action = when { + insulinAfterConstraints.equals(0.0) -> Action.CARBS + carbsAfterConstraints.equals(0) -> Action.BOLUS + else -> Action.TREATMENT + } + uel.log(action, ValueWithUnit(Sources.TreatmentDialog), ValueWithUnit(insulin, Units.U, insulin != 0.0), ValueWithUnit(carbs, Units.G, carbs != 0)) val detailedBolusInfo = DetailedBolusInfo() if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = TherapyEvent.Type.CARBS_CORRECTION.text if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = TherapyEvent.Type.CORRECTION_BOLUS.text diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.kt index 6abeea43b0..8c2a43ea1b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.kt @@ -17,6 +17,7 @@ import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.data.PumpEnactResult import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.entities.TherapyEvent +import info.nightscout.androidaps.database.entities.UserEntry.* import info.nightscout.androidaps.database.transactions.InsertTherapyEventIfNewTransaction import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.events.EventAcceptOpenLoopChange @@ -27,6 +28,7 @@ import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.interfaces.LoopInterface.LastRun import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag +import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.aps.loop.events.EventLoopSetLastRunGui import info.nightscout.androidaps.plugins.aps.loop.events.EventLoopUpdateGui import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification @@ -78,6 +80,7 @@ open class LoopPlugin @Inject constructor( private val fabricPrivacy: FabricPrivacy, private val nsUpload: NSUpload, private val dateUtil: DateUtil, + private val uel: UserEntryLogger, private val repository: AppRepository ) : PluginBase(PluginDescription() .mainType(PluginType.LOOP) @@ -531,6 +534,7 @@ open class LoopPlugin @Inject constructor( if (request.percent == 100 && request.duration == 0) { if (activeTemp != null) { aapsLogger.debug(LTag.APS, "applyAPSRequest: cancelTempBasal()") + uel.log(Action.CANCEL_TEMP_BASAL, ValueWithUnit(Sources.Loop)) commandQueue.cancelTempBasal(false, callback) } else { aapsLogger.debug(LTag.APS, "applyAPSRequest: Basal set correctly") @@ -544,12 +548,14 @@ open class LoopPlugin @Inject constructor( .comment(R.string.let_temp_basal_run))?.run() } else { aapsLogger.debug(LTag.APS, "applyAPSRequest: tempBasalPercent()") + uel.log(Action.TEMP_BASAL, ValueWithUnit(Sources.Loop), ValueWithUnit(request.percent, Units.Percent), ValueWithUnit(request.duration, Units.M)) commandQueue.tempBasalPercent(request.percent, request.duration, false, profile!!, callback) } } else { if (request.rate == 0.0 && request.duration == 0 || abs(request.rate - pump.baseBasalRate) < pump.pumpDescription.basalStep) { if (activeTemp != null) { aapsLogger.debug(LTag.APS, "applyAPSRequest: cancelTempBasal()") + uel.log(Action.CANCEL_TEMP_BASAL, ValueWithUnit(Sources.Loop)) commandQueue.cancelTempBasal(false, callback) } else { aapsLogger.debug(LTag.APS, "applyAPSRequest: Basal set correctly") @@ -563,6 +569,7 @@ open class LoopPlugin @Inject constructor( .comment(R.string.let_temp_basal_run))?.run() } else { aapsLogger.debug(LTag.APS, "applyAPSRequest: setTempBasalAbsolute()") + uel.log(Action.TEMP_BASAL, ValueWithUnit(Sources.Loop), ValueWithUnit(request.rate, Units.U_H), ValueWithUnit(request.duration, Units.M)) commandQueue.tempBasalAbsolute(request.rate, request.duration, false, profile!!, callback) } } @@ -602,6 +609,7 @@ open class LoopPlugin @Inject constructor( detailedBolusInfo.source = Source.USER detailedBolusInfo.deliverAt = request.deliverAt aapsLogger.debug(LTag.APS, "applyAPSRequest: bolus()") + uel.log(Action.SMB, ValueWithUnit(Sources.Loop), ValueWithUnit(detailedBolusInfo.insulin, Units.U)) commandQueue.bolus(detailedBolusInfo, callback) } 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 fcd6e87b0c..f5ab3876ff 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 @@ -16,8 +16,7 @@ import dagger.android.support.DaggerFragment import info.nightscout.androidaps.R import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.entities.Food -import info.nightscout.androidaps.database.entities.UserEntry -import info.nightscout.androidaps.database.entities.UserEntry.Action +import info.nightscout.androidaps.database.entities.UserEntry.* import info.nightscout.androidaps.database.transactions.InvalidateFoodTransaction import info.nightscout.androidaps.databinding.FoodFragmentBinding import info.nightscout.androidaps.databinding.FoodItemBinding @@ -77,7 +76,7 @@ class FoodFragment : DaggerFragment() { binding.refreshFromNightscout.setOnClickListener { context?.let { context -> OKDialog.showConfirmation(context, resourceHelper.gs(R.string.refresheventsfromnightscout) + " ?", { - uel.log(Action.FOOD, UserEntry.ValueWithUnit(UserEntry.Sources.NS)) + uel.log(Action.FOOD, ValueWithUnit(Sources.Food)) disposable += Completable.fromAction { repository.deleteAllFoods() } .subscribeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.main) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientAddUpdateWorker.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientAddUpdateWorker.kt index 197e015db9..77e8b7832b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientAddUpdateWorker.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientAddUpdateWorker.kt @@ -86,7 +86,7 @@ class NSClientAddUpdateWorker( .blockingGet() .also { result -> result.inserted.forEach { - uel.log(UserEntry.Action.TT, ValueWithUnit(UserEntry.Sources.NS), + uel.log(UserEntry.Action.TT, ValueWithUnit(UserEntry.Sources.NSClient), ValueWithUnit(it.reason.text, UserEntry.Units.TherapyEvent), ValueWithUnit(it.lowTarget, UserEntry.Units.Mg_Dl, true), ValueWithUnit(it.highTarget, UserEntry.Units.Mg_Dl, it.lowTarget != it.highTarget), @@ -94,7 +94,7 @@ class NSClientAddUpdateWorker( ) } result.invalidated.forEach { - uel.log(UserEntry.Action.TT_REMOVED, ValueWithUnit(UserEntry.Sources.NS), + uel.log(UserEntry.Action.TT_REMOVED, ValueWithUnit(UserEntry.Sources.NSClient), ValueWithUnit(it.reason.text, UserEntry.Units.TherapyEvent), ValueWithUnit(it.lowTarget, UserEntry.Units.Mg_Dl, true), ValueWithUnit(it.highTarget, UserEntry.Units.Mg_Dl, it.lowTarget != it.highTarget), @@ -102,7 +102,7 @@ class NSClientAddUpdateWorker( ) } result.ended.forEach { - uel.log(UserEntry.Action.CANCEL_TT, ValueWithUnit(UserEntry.Sources.NS), + uel.log(UserEntry.Action.CANCEL_TT, ValueWithUnit(UserEntry.Sources.NSClient), ValueWithUnit(it.reason.text, UserEntry.Units.TherapyEvent), ValueWithUnit(it.lowTarget, UserEntry.Units.Mg_Dl, true), ValueWithUnit(it.highTarget, UserEntry.Units.Mg_Dl, it.lowTarget != it.highTarget), @@ -132,14 +132,14 @@ class NSClientAddUpdateWorker( .also { result -> result.inserted.forEach { uel.log(UserEntry.Action.CAREPORTAL, - it.note ?: "", ValueWithUnit(UserEntry.Sources.NS), + it.note ?: "", ValueWithUnit(UserEntry.Sources.NSClient), ValueWithUnit(it.timestamp, UserEntry.Units.Timestamp, true), ValueWithUnit(it.type.text, UserEntry.Units.TherapyEvent) ) } result.invalidated.forEach { uel.log(UserEntry.Action.CAREPORTAL_REMOVED, - it.note ?: "", ValueWithUnit(UserEntry.Sources.NS), + it.note ?: "", ValueWithUnit(UserEntry.Sources.NSClient), ValueWithUnit(it.timestamp, UserEntry.Units.Timestamp, true), ValueWithUnit(it.type.text, UserEntry.Units.TherapyEvent) ) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientRemoveWorker.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientRemoveWorker.kt index 3bc04267a6..515c733e81 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientRemoveWorker.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientRemoveWorker.kt @@ -68,7 +68,7 @@ class NSClientRemoveWorker( .also { result -> result.invalidated.forEach { uel.log( - Action.TT_REMOVED, ValueWithUnit(Sources.NS), + Action.TT_REMOVED, ValueWithUnit(Sources.NSClient), ValueWithUnit(it.reason.text, Units.TherapyEvent), ValueWithUnit(it.lowTarget, Units.Mg_Dl, true), ValueWithUnit(it.highTarget, Units.Mg_Dl, it.lowTarget != it.highTarget), @@ -88,7 +88,7 @@ class NSClientRemoveWorker( .also { result -> result.invalidated.forEach { uel.log( - Action.CAREPORTAL_REMOVED, (it.note ?: ""), ValueWithUnit(Sources.NS), + Action.CAREPORTAL_REMOVED, (it.note ?: ""), ValueWithUnit(Sources.NSClient), ValueWithUnit(it.timestamp, Units.Timestamp, true), ValueWithUnit(it.type.text, Units.TherapyEvent)) } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt index 94bbb41f5e..0b0355a732 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt @@ -40,7 +40,6 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProv import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.receivers.DataWorker -import info.nightscout.androidaps.receivers.DataReceiver import info.nightscout.androidaps.utils.* import info.nightscout.androidaps.utils.extensions.valueToUnitsString import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -1007,7 +1006,7 @@ class SmsCommunicatorPlugin @Inject constructor( sp.putBoolean(R.string.key_smscommunicator_remotecommandsallowed, false) val replyText = String.format(resourceHelper.gs(R.string.smscommunicator_stoppedsms)) sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, replyText)) - uel.log(Action.SMS_SMS, ValueWithUnit(Sources.SMS), ValueWithUnit(R.string.smscommunicator_stoppedsms, Units.R_String)) + uel.log(Action.STOP_SMS, ValueWithUnit(Sources.SMS), ValueWithUnit(R.string.smscommunicator_stoppedsms, Units.R_String)) } }) } else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat))) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt index 3859f37c83..b31dcfbf6e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsUserEntryFragment.kt @@ -119,8 +119,9 @@ class TreatmentsUserEntryFragment : DaggerFragment() { holder.binding.s.visibility = View.GONE var valuesWithUnitString = "" var rStringParam = 0 + var source = Sources.Unknown val separator = " " - var source = "" + //var source = "" for(v in current.values) { if (rStringParam >0) rStringParam-- @@ -144,13 +145,18 @@ class TreatmentsUserEntryFragment : DaggerFragment() { -> valuesWithUnitString += DecimalFormatter.to2Decimal(v.dValue) + translator.translate(v.unit.name) + separator Units.G, Units.M, Units.H, Units.Percent -> valuesWithUnitString += v.iValue.toString() + translator.translate(v.unit.name) + separator - Units.Source -> source = separator + translator.translate(v.sValue) + Units.Source -> source = Sources.fromText(v.sValue) // = separator + translator.translate(v.sValue) else -> valuesWithUnitString += if (v.iValue != 0 || v.sValue != "") { v.value().toString() + separator } else "" } } + if (source.iconId() > 0) { + holder.binding.iconSource.setImageResource(source.iconId()) + holder.binding.iconSource.visibility = View.VISIBLE + } else + holder.binding.iconSource.visibility = View.INVISIBLE holder.binding.values.text = valuesWithUnitString.trim() - holder.binding.values.visibility = if (current.values.size > 0) View.VISIBLE else View.GONE - holder.binding.action.text = translator.translate(current.action.name) + source + holder.binding.values.visibility = if (holder.binding.values.text != "") View.VISIBLE else View.GONE + holder.binding.action.text = translator.translate(current.action.name) holder.binding.action.setTextColor(resourceHelper.gc(current.action.colorGroup.colorId())) } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt index 05c441b369..f37e9d9f42 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt @@ -349,7 +349,7 @@ class BolusWizard @Inject constructor( boluscalc = nsJSON() source = Source.USER notes = this@BolusWizard.notes - uel.log(Action.BOLUS_ADVISOR, notes, ValueWithUnit(eventType, Units.TherapyEvent), ValueWithUnit(insulinAfterConstraints, Units.U)) + uel.log(Action.BOLUS_ADVISOR, notes, ValueWithUnit(Sources.WizardDialog), ValueWithUnit(eventType, Units.TherapyEvent), ValueWithUnit(insulinAfterConstraints, Units.U)) if (insulin > 0) { commandQueue.bolus(this, object : Callback() { override fun run() { @@ -372,7 +372,7 @@ class BolusWizard @Inject constructor( OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, { if (insulinAfterConstraints > 0 || carbs > 0) { if (useSuperBolus) { - uel.log(Action.SUPERBOLUS_TBR) + uel.log(Action.SUPERBOLUS_TBR, ValueWithUnit(Sources.WizardDialog)) if (loopPlugin.isEnabled(PluginType.LOOP)) { loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000) rxBus.send(EventRefreshOverview("WizardDialog")) @@ -413,7 +413,12 @@ class BolusWizard @Inject constructor( boluscalc = nsJSON() source = Source.USER notes = this@BolusWizard.notes - uel.log(Action.BOLUS, notes, ValueWithUnit(eventType,Units.TherapyEvent), ValueWithUnit(insulinAfterConstraints, Units.U), ValueWithUnit(this@BolusWizard.carbs, Units.G, this@BolusWizard.carbs != 0), ValueWithUnit(carbTime, Units.M, carbTime != 0)) + val action = when { + insulinAfterConstraints.equals(0.0) -> Action.CARBS + carbs.equals(0.0) -> Action.BOLUS + else -> Action.TREATMENT + } + uel.log(action, notes, ValueWithUnit(Sources.WizardDialog), ValueWithUnit(insulinAfterConstraints, Units.U), ValueWithUnit(this@BolusWizard.carbs, Units.G, this@BolusWizard.carbs != 0), ValueWithUnit(carbTime, Units.M, carbTime != 0)) if (insulin > 0 || pump.pumpDescription.storesCarbInfo) { commandQueue.bolus(this, object : Callback() { override fun run() { diff --git a/app/src/main/res/layout/treatments_user_entry_item.xml b/app/src/main/res/layout/treatments_user_entry_item.xml index 31e45fb1d1..551ee2fe88 100644 --- a/app/src/main/res/layout/treatments_user_entry_item.xml +++ b/app/src/main/res/layout/treatments_user_entry_item.xml @@ -1,22 +1,12 @@ - + android:orientation="horizontal" > - - - @@ -33,10 +26,21 @@ android:layout_height="wrap_content" android:paddingStart="10dp" android:text="USER ENTRY" - android:textAppearance="?android:attr/textAppearanceSmall" - tools:ignore="HardcodedText,RtlSymmetry" /> + app:layout_constraintStart_toEndOf="@id/date" + app:layout_constraintTop_toTopOf="@+id/iconSource" + app:layout_constraintBottom_toBottomOf="@+id/iconSource" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + - @@ -54,8 +60,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="20dp" - android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/values" android:textAppearance="?android:attr/textAppearanceSmall" + android:visibility="gone" + android:text="Notes" tools:ignore="HardcodedText,RtlSymmetry" /> - - + diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/formats/ClassicPrefsFormat.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/formats/ClassicPrefsFormat.kt index ea412fce2f..641235fdff 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/formats/ClassicPrefsFormat.kt +++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/formats/ClassicPrefsFormat.kt @@ -89,9 +89,14 @@ class ClassicPrefsFormat @Inject constructor( fun UserEntriesToCsv(userEntries: List): String { val userEntryHeader = resourceHelper.gs(R.string.ue_csv_header, + csvString(R.string.ue_timestamp), csvString(R.string.date), + csvString(R.string.ue_utc_offset), + csvString(R.string.ue_action), csvString(R.string.eventtype), + csvString(R.string.ue_source), csvString(R.string.careportal_note), + csvString(R.string.ue_formated_string), csvString(R.string.event_time_label), csvString(Units.fromText(profileFunction.getUnits())), csvString(Units.G), @@ -99,7 +104,8 @@ class ClassicPrefsFormat @Inject constructor( csvString(Units.U_H), csvString(Units.Percent), csvString(Units.H), - csvString(Units.M) + csvString(Units.M), + csvString(R.string.ue_none) ) + "\n" return userEntryHeader + userEntries.joinToString("\n") { entry -> var timestampRec = "" + entry.timestamp @@ -124,7 +130,7 @@ class ClassicPrefsFormat @Inject constructor( when (v.unit) { Units.Timestamp -> timestamp = dateUtil.dateAndTimeAndSecondsString(v.lValue) Units.TherapyEvent -> therapyEvent = if (therapyEvent == "") translator.translate(v.sValue) else therapyEvent + " / " + translator.translate(v.sValue) - Units.Source -> source = csvString(translator.translate(v.sValue)) + Units.Source -> source = csvString(v.sValue) Units.R_String -> if (v.iValue != 0) { //Formated string lValue is the number of parameters, up to 3 var rStringParam = v.lValue.toInt() var tempString = "" 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 d9768e7452..6c4c527903 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt @@ -52,6 +52,7 @@ class Translator @Inject internal constructor( TemporaryTarget.Reason.WEAR.text -> resourceHelper.gs(R.string.wear) Action.BOLUS.name -> resourceHelper.gs(R.string.uel_bolus) + Action.SMB.name -> resourceHelper.gs(R.string.smb_shortname) Action.BOLUS_ADVISOR.name -> resourceHelper.gs(R.string.uel_bolus_advisor) Action.EXTENDED_BOLUS.name -> resourceHelper.gs(R.string.uel_extended_bolus) Action.SUPERBOLUS_TBR.name -> resourceHelper.gs(R.string.uel_superbolus_tbr) @@ -117,7 +118,7 @@ class Translator @Inject internal constructor( Action.IMPORT_DATABASES.name -> resourceHelper.gs(R.string.uel_import_databases) Action.OTP_EXPORT.name -> resourceHelper.gs(R.string.uel_otp_export) Action.OTP_RESET.name -> resourceHelper.gs(R.string.uel_otp_reset) - Action.SMS_SMS.name -> resourceHelper.gs(R.string.uel_sms_sms) + Action.STOP_SMS.name -> resourceHelper.gs(R.string.uel_stop_sms) Action.EXPORT_CSV.name -> resourceHelper.gs(R.string.uel_export_csv) Units.Mg_Dl.name -> resourceHelper.gs(R.string.mgdl) @@ -130,11 +131,9 @@ class Translator @Inject internal constructor( Units.Percent.name -> resourceHelper.gs(R.string.shortpercent) Units.None.name -> "" - Sources.Manual.text -> resourceHelper.gs(R.string.manual) - Sources.Record.text -> resourceHelper.gs(R.string.record) Sources.Automation.text -> resourceHelper.gs(R.string.automation) Sources.Loop.text -> resourceHelper.gs(R.string.loop) - Sources.NS.text -> resourceHelper.gs(R.string.ns) + Sources.NSClient.text -> resourceHelper.gs(R.string.ns) Sources.Pump.text -> resourceHelper.gs(R.string.pump) Sources.SMS.text -> resourceHelper.gs(R.string.smb_shortname) Sources.Wear.text -> resourceHelper.gs(R.string.wear) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryExt.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryExt.kt index c0ce48e35f..b496afb571 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryExt.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryExt.kt @@ -17,3 +17,22 @@ fun ColorGroup.colorId(): Int { } } +fun Sources.iconId(): Int { + return when (this) { + Sources.TreatmentDialog -> R.drawable.icon_insulin_carbs + Sources.InsulinDialog -> R.drawable.ic_bolus + Sources.CarbDialog -> R.drawable.ic_cp_bolus_carbs + Sources.WizardDialog -> R.drawable.ic_calculator + Sources.QuickWizard -> R.drawable.ic_quick_wizard + Sources.ExtendedBolusDialog -> R.drawable.ic_actions_startextbolus + Sources.TTDialog -> R.drawable.ic_temptarget_high + Sources.ProfileSwitchDialog -> R.drawable.ic_actions_profileswitch + Sources.LoopDialog -> R.drawable.ic_loop_closed + Sources.TempBasalDialog -> R.drawable.ic_actions_starttempbasal + Sources.CalibrationDialog -> R.drawable.ic_calibration + Sources.Automation -> R.drawable.ic_automation + Sources.Loop -> R.drawable.ic_loop_closed_white + Sources.NSClient -> R.drawable.ic_nightscout_syncs + else -> -1 + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_actions_startextbolus.xml b/core/src/main/res/drawable/ic_actions_startextbolus.xml similarity index 100% rename from app/src/main/res/drawable/ic_actions_startextbolus.xml rename to core/src/main/res/drawable/ic_actions_startextbolus.xml diff --git a/app/src/main/res/drawable/ic_actions_starttempbasal.xml b/core/src/main/res/drawable/ic_actions_starttempbasal.xml similarity index 100% rename from app/src/main/res/drawable/ic_actions_starttempbasal.xml rename to core/src/main/res/drawable/ic_actions_starttempbasal.xml diff --git a/automation/src/main/res/drawable/ic_automation.xml b/core/src/main/res/drawable/ic_automation.xml similarity index 100% rename from automation/src/main/res/drawable/ic_automation.xml rename to core/src/main/res/drawable/ic_automation.xml diff --git a/app/src/main/res/drawable/ic_calculator.xml b/core/src/main/res/drawable/ic_calculator.xml similarity index 100% rename from app/src/main/res/drawable/ic_calculator.xml rename to core/src/main/res/drawable/ic_calculator.xml diff --git a/app/src/main/res/drawable/ic_calibration.xml b/core/src/main/res/drawable/ic_calibration.xml similarity index 100% rename from app/src/main/res/drawable/ic_calibration.xml rename to core/src/main/res/drawable/ic_calibration.xml diff --git a/app/src/main/res/drawable/ic_loop_closed.xml b/core/src/main/res/drawable/ic_loop_closed.xml similarity index 100% rename from app/src/main/res/drawable/ic_loop_closed.xml rename to core/src/main/res/drawable/ic_loop_closed.xml diff --git a/app/src/main/res/drawable/ic_loop_closed_white.xml b/core/src/main/res/drawable/ic_loop_closed_white.xml similarity index 100% rename from app/src/main/res/drawable/ic_loop_closed_white.xml rename to core/src/main/res/drawable/ic_loop_closed_white.xml diff --git a/app/src/main/res/drawable/ic_nightscout_syncs.xml b/core/src/main/res/drawable/ic_nightscout_syncs.xml similarity index 100% rename from app/src/main/res/drawable/ic_nightscout_syncs.xml rename to core/src/main/res/drawable/ic_nightscout_syncs.xml diff --git a/app/src/main/res/drawable/ic_quick_wizard.xml b/core/src/main/res/drawable/ic_quick_wizard.xml similarity index 100% rename from app/src/main/res/drawable/ic_quick_wizard.xml rename to core/src/main/res/drawable/ic_quick_wizard.xml diff --git a/app/src/main/res/drawable/icon_insulin_carbs.xml b/core/src/main/res/drawable/icon_insulin_carbs.xml similarity index 100% rename from app/src/main/res/drawable/icon_insulin_carbs.xml rename to core/src/main/res/drawable/icon_insulin_carbs.xml diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 73beededf4..b06b77261c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -469,12 +469,17 @@ IMPORT DATABASES OTP EXPORT OTP RESET - SMS SMS + STOP SMS EXPORT USER ENTRIES UNKNOWN - Formated string + Formated string + Source + UTC Offset + Action + Timestamp + No Unit Export User Entries to Excel (csv) - "Timestamp;%1$s;UTC Offset;Action;%2$s;Source;%3$s;Formated string;%4$s;%5$s;%6$s;%7$s;%8$s;%9$s;%10$s;%11$s;other" + "%1$s;%2$s;%3$s;%4$s;%5$s;%6$s;%7$s;%8$s;%9$s;%10$s;%11$s;%12$s;%13$s;%14$s;%15$s;%16$s;%17$s" %1$d day 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 ef46c63bd0..ee8154edec 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 @@ -20,8 +20,8 @@ data class UserEntry( ) : DBEntry, DBEntryWithTime { enum class Action (val colorGroup: ColorGroup) { @SerializedName("BOLUS") BOLUS (ColorGroup.InsulinTreatment), + @SerializedName("SMB") SMB (ColorGroup.InsulinTreatment), @SerializedName("BOLUS_ADVISOR") BOLUS_ADVISOR (ColorGroup.InsulinTreatment), - @SerializedName("BOLUS_RECORD") BOLUS_RECORD (ColorGroup.InsulinTreatment), @SerializedName("EXTENDED_BOLUS") EXTENDED_BOLUS (ColorGroup.InsulinTreatment), @SerializedName("SUPERBOLUS_TBR") SUPERBOLUS_TBR (ColorGroup.InsulinTreatment), @SerializedName("CARBS") CARBS (ColorGroup.CarbTreatment), @@ -86,7 +86,7 @@ data class UserEntry( @SerializedName("IMPORT_DATABASES") IMPORT_DATABASES (ColorGroup.Aaps), @SerializedName("OTP_EXPORT") OTP_EXPORT (ColorGroup.Aaps), @SerializedName("OTP_RESET") OTP_RESET (ColorGroup.Aaps), - @SerializedName("SMS_SMS") SMS_SMS (ColorGroup.Aaps), + @SerializedName("STOP_SMS") STOP_SMS (ColorGroup.Aaps), @SerializedName("FOOD") FOOD (ColorGroup.Careportal), @SerializedName("EXPORT_CSV") EXPORT_CSV (ColorGroup.Aaps), @SerializedName("UNKNOWN") UNKNOWN (ColorGroup.Aaps) @@ -134,14 +134,24 @@ data class UserEntry( } } enum class Sources(val text: String) { - @SerializedName("Manual") Manual ("Manual"), //Manual entry by user, given through AAPS (default) - @SerializedName("Record") Record ("Record"), //Manual entry by user, treatment given outside AAPS (for example Bolus with Serynge) + @SerializedName("TreatmentDialog") TreatmentDialog ("TreatmentDialog"), + @SerializedName("InsulinDialog") InsulinDialog ("InsulinDialog"), + @SerializedName("CarbDialog") CarbDialog ("CarbDialog"), + @SerializedName("WizardDialog") WizardDialog ("WizardDialog"), + @SerializedName("QuickWizard") QuickWizard ("QuickWizard"), + @SerializedName("ExtendedBolusDialog") ExtendedBolusDialog ("ExtendedBolusDialog"), + @SerializedName("TTDialog") TTDialog ("TTDialog"), + @SerializedName("ProfileSwitchDialog") ProfileSwitchDialog ("ProfileSwitchDialog"), + @SerializedName("LoopDialog") LoopDialog ("LoopDialog"), + @SerializedName("TempBasalDialog") TempBasalDialog ("TempBasalDialog"), + @SerializedName("CalibrationDialog") CalibrationDialog ("CalibrationDialog"), @SerializedName("Automation") Automation ("Automation"), //From Automation plugin @SerializedName("Loop") Loop ("Loop"), //From Loop plugin - @SerializedName("NS") NS ("NS"), //From NSClient plugin + @SerializedName("NSClient") NSClient ("NSClient"), //From NSClient plugin @SerializedName("Pump") Pump ("Pump"), //From Pump plugin (for example from pump history) @SerializedName("SMS") SMS ("SMS"), //From SMS plugin @SerializedName("Wear") Wear ("Wear"), //From Wear plugin + @SerializedName("Food") Food ("Food"), //From Food plugin @SerializedName("Unknown") Unknown ("Unknown") //if necessary ;