Merge branch 'meallink' of https://github.com/nightscout/AndroidAPS into meallink

This commit is contained in:
Milos Kozak 2021-04-11 17:59:02 +02:00
commit dcc0b040df
17 changed files with 154 additions and 53 deletions

View file

@ -32,6 +32,8 @@ import info.nightscout.androidaps.activities.PreferencesActivity
import info.nightscout.androidaps.activities.ProfileHelperActivity import info.nightscout.androidaps.activities.ProfileHelperActivity
import info.nightscout.androidaps.activities.SingleFragmentActivity import info.nightscout.androidaps.activities.SingleFragmentActivity
import info.nightscout.androidaps.activities.StatsActivity import info.nightscout.androidaps.activities.StatsActivity
import info.nightscout.androidaps.database.entities.UserEntry.Action
import info.nightscout.androidaps.database.entities.UserEntry.Sources
import info.nightscout.androidaps.databinding.ActivityMainBinding import info.nightscout.androidaps.databinding.ActivityMainBinding
import info.nightscout.androidaps.events.EventAppExit import info.nightscout.androidaps.events.EventAppExit
import info.nightscout.androidaps.events.EventPreferenceChange import info.nightscout.androidaps.events.EventPreferenceChange
@ -41,6 +43,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.PluginType import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
@ -87,6 +90,7 @@ class MainActivity : NoSplashAppCompatActivity() {
@Inject lateinit var constraintChecker: ConstraintChecker @Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var signatureVerifierPlugin: SignatureVerifierPlugin @Inject lateinit var signatureVerifierPlugin: SignatureVerifierPlugin
@Inject lateinit var config: Config @Inject lateinit var config: Config
@Inject lateinit var uel: UserEntryLogger
private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
private var pluginPreferencesMenuItem: MenuItem? = null private var pluginPreferencesMenuItem: MenuItem? = null
@ -316,6 +320,7 @@ class MainActivity : NoSplashAppCompatActivity() {
R.id.nav_exit -> { R.id.nav_exit -> {
aapsLogger.debug(LTag.CORE, "Exiting") aapsLogger.debug(LTag.CORE, "Exiting")
uel.log(Action.EXIT_AAPS, Sources.Aaps)
rxBus.send(EventAppExit()) rxBus.send(EventAppExit())
finish() finish()
System.runFinalization() System.runFinalization()

View file

@ -11,6 +11,7 @@ import dagger.android.AndroidInjector
import dagger.android.DaggerApplication import dagger.android.DaggerApplication
import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.AppRepository
import info.nightscout.androidaps.database.entities.TherapyEvent import info.nightscout.androidaps.database.entities.TherapyEvent
import info.nightscout.androidaps.database.entities.UserEntry
import info.nightscout.androidaps.database.transactions.InsertIfNewByTimestampTherapyEventTransaction import info.nightscout.androidaps.database.transactions.InsertIfNewByTimestampTherapyEventTransaction
import info.nightscout.androidaps.database.transactions.VersionChangeTransaction import info.nightscout.androidaps.database.transactions.VersionChangeTransaction
import info.nightscout.androidaps.db.CompatDBHelper import info.nightscout.androidaps.db.CompatDBHelper
@ -20,6 +21,7 @@ import info.nightscout.androidaps.dependencyInjection.DaggerAppComponent
import info.nightscout.androidaps.interfaces.PluginBase import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.PluginStore import info.nightscout.androidaps.plugins.configBuilder.PluginStore
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils
@ -54,6 +56,7 @@ class MainApp : DaggerApplication() {
@Inject lateinit var repository: AppRepository @Inject lateinit var repository: AppRepository
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
@Inject lateinit var staticInjector: StaticInjector// TODO avoid , here fake only to initialize @Inject lateinit var staticInjector: StaticInjector// TODO avoid , here fake only to initialize
@Inject lateinit var uel: UserEntryLogger
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -85,6 +88,7 @@ class MainApp : DaggerApplication() {
configBuilderPlugin.initialize() configBuilderPlugin.initialize()
keepAliveManager.setAlarm(this) keepAliveManager.setAlarm(this)
doMigrations() doMigrations()
uel.log(UserEntry.Action.START_AAPS, UserEntry.Sources.Aaps)
} }
private fun doMigrations() { private fun doMigrations() {

View file

@ -167,18 +167,18 @@ class TreatmentDialog : DialogFragmentWithDate() {
{ aapsLogger.error(LTag.DATABASE, "Error while saving carbs", it) } { aapsLogger.error(LTag.DATABASE, "Error while saving carbs", it) }
) )
} else { } else {
if (detailedBolusInfo.insulin > 0) if (detailedBolusInfo.insulin > 0) {
uel.log(action, Sources.TreatmentDialog,
ValueWithUnit.Insulin(insulinAfterConstraints),
ValueWithUnit.Gram(carbsAfterConstraints).takeIf { carbsAfterConstraints != 0 })
commandQueue.bolus(detailedBolusInfo, object : Callback() { commandQueue.bolus(detailedBolusInfo, object : Callback() {
override fun run() { override fun run() {
if (!result.success) { if (!result.success) {
ErrorHelperActivity.runAlarm(ctx, result.comment, resourceHelper.gs(R.string.treatmentdeliveryerror), info.nightscout.androidaps.dana.R.raw.boluserror) ErrorHelperActivity.runAlarm(ctx, result.comment, resourceHelper.gs(R.string.treatmentdeliveryerror), info.nightscout.androidaps.dana.R.raw.boluserror)
} else }
uel.log(action, Sources.TreatmentDialog,
ValueWithUnit.Insulin(insulinAfterConstraints),
ValueWithUnit.Gram(carbsAfterConstraints).takeIf { carbsAfterConstraints != 0 })
} }
}) })
else } else
uel.log(action, Sources.TreatmentDialog, uel.log(action, Sources.TreatmentDialog,
ValueWithUnit.Gram(carbsAfterConstraints).takeIf { carbs != 0 }) ValueWithUnit.Gram(carbsAfterConstraints).takeIf { carbs != 0 })
} }

View file

@ -378,6 +378,8 @@ open class LoopPlugin @Inject constructor(
// mId allows you to update the notification later on. // mId allows you to update the notification later on.
mNotificationManager.notify(Constants.notificationID, builder.build()) mNotificationManager.notify(Constants.notificationID, builder.build())
uel.log(Action.CAREPORTAL, Sources.Loop,
ValueWithUnit.StringResource(info.nightscout.androidaps.core.R.string.carbsreq, listOf(ValueWithUnit.Gram(resultAfterConstraints.carbsReq), ValueWithUnit.Minute(resultAfterConstraints.carbsReqWithin))))
rxBus.send(EventNewOpenLoopNotification()) rxBus.send(EventNewOpenLoopNotification())
//only send to wear if Native notifications are turned off //only send to wear if Native notifications are turned off

View file

@ -5,6 +5,7 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.R
import info.nightscout.androidaps.database.entities.UserEntry.Action import info.nightscout.androidaps.database.entities.UserEntry.Action
import info.nightscout.androidaps.database.entities.UserEntry.Sources import info.nightscout.androidaps.database.entities.UserEntry.Sources
import info.nightscout.androidaps.database.entities.ValueWithUnit
import info.nightscout.androidaps.events.EventAppInitialized import info.nightscout.androidaps.events.EventAppInitialized
import info.nightscout.androidaps.events.EventConfigBuilderChange import info.nightscout.androidaps.events.EventConfigBuilderChange
import info.nightscout.androidaps.events.EventRebuildTabs import info.nightscout.androidaps.events.EventRebuildTabs
@ -147,7 +148,8 @@ class ConfigBuilderPlugin @Inject constructor(
performPluginSwitch(changedPlugin, newState, type) performPluginSwitch(changedPlugin, newState, type)
pumpSync.connectNewPump() pumpSync.connectNewPump()
sp.putBoolean("allow_hardware_pump", true) sp.putBoolean("allow_hardware_pump", true)
uel.log(Action.HW_PUMP_ALLOWED, Sources.ConfigBuilder) uel.log(Action.HW_PUMP_ALLOWED, Sources.ConfigBuilder,
ValueWithUnit.StringResource(changedPlugin.pluginDescription.pluginName))
aapsLogger.debug(LTag.PUMP, "First time HW pump allowed!") aapsLogger.debug(LTag.PUMP, "First time HW pump allowed!")
}, { }, {
rxBus.send(EventConfigBuilderUpdateGui()) rxBus.send(EventConfigBuilderUpdateGui())
@ -157,6 +159,14 @@ class ConfigBuilderPlugin @Inject constructor(
} }
override fun performPluginSwitch(changedPlugin: PluginBase, enabled: Boolean, type: PluginType) { override fun performPluginSwitch(changedPlugin: PluginBase, enabled: Boolean, type: PluginType) {
if(enabled && !changedPlugin.isEnabled()) {
uel.log(Action.PLUGIN_ENABLED, Sources.ConfigBuilder,
ValueWithUnit.StringResource(changedPlugin.pluginDescription.pluginName))
}
else if(!enabled) {
uel.log(Action.PLUGIN_DISABLED, Sources.ConfigBuilder,
ValueWithUnit.StringResource(changedPlugin.pluginDescription.pluginName))
}
changedPlugin.setPluginEnabled(type, enabled) changedPlugin.setPluginEnabled(type, enabled)
changedPlugin.setFragmentVisible(type, enabled) changedPlugin.setFragmentVisible(type, enabled)
processOnEnabledCategoryChanged(changedPlugin, type) processOnEnabledCategoryChanged(changedPlugin, type)

View file

@ -29,6 +29,8 @@ import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.extensions.directionToIcon import info.nightscout.androidaps.extensions.directionToIcon
import info.nightscout.androidaps.extensions.toVisibility import info.nightscout.androidaps.extensions.toVisibility
import info.nightscout.androidaps.extensions.valueToUnitsString import info.nightscout.androidaps.extensions.valueToUnitsString
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.rx.AapsSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -47,6 +49,7 @@ class BGSourceFragment : DaggerFragment() {
@Inject lateinit var repository: AppRepository @Inject lateinit var repository: AppRepository
@Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var aapsSchedulers: AapsSchedulers
@Inject lateinit var uel: UserEntryLogger @Inject lateinit var uel: UserEntryLogger
@Inject lateinit var activePlugin: ActivePluginProvider
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
private val millsToThePast = T.hours(12).msecs() private val millsToThePast = T.hours(12).msecs()
@ -131,8 +134,18 @@ class BGSourceFragment : DaggerFragment() {
activity?.let { activity -> activity?.let { activity ->
val text = dateUtil.dateAndTimeString(glucoseValue.timestamp) + "\n" + glucoseValue.valueToUnitsString(profileFunction.getUnits()) val text = dateUtil.dateAndTimeString(glucoseValue.timestamp) + "\n" + glucoseValue.valueToUnitsString(profileFunction.getUnits())
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable {
//uel.log(Action.BG_REMOVED, XXXValueWithUnit.Timestamp(glucoseValue.timestamp)) val source = when((activePlugin.activeBgSource as PluginBase).pluginDescription.pluginName) {
uel.log(Action.BG_REMOVED, Sources.BG, R.string.dexcom_app_patched -> Sources.Dexcom
R.string.eversense -> Sources.Eversense
R.string.Glimp -> Sources.Glimp
R.string.MM640g -> Sources.MM640g
R.string.nsclientbg -> Sources.NSClientSource
R.string.poctech -> Sources.PocTech
R.string.tomato -> Sources.Tomato
R.string.xdrip -> Sources.Xdrip
else -> Sources.Unknown
}
uel.log(Action.BG_REMOVED, source,
ValueWithUnit.Timestamp(glucoseValue.timestamp)) ValueWithUnit.Timestamp(glucoseValue.timestamp))
disposable += repository.runTransaction(InvalidateGlucoseValueTransaction(glucoseValue.id)).subscribe() disposable += repository.runTransaction(InvalidateGlucoseValueTransaction(glucoseValue.id)).subscribe()
}) })

View file

@ -14,6 +14,9 @@ import info.nightscout.androidaps.activities.RequestDexcomPermissionActivity
import info.nightscout.androidaps.database.AppRepository import info.nightscout.androidaps.database.AppRepository
import info.nightscout.androidaps.database.entities.GlucoseValue import info.nightscout.androidaps.database.entities.GlucoseValue
import info.nightscout.androidaps.database.entities.TherapyEvent import info.nightscout.androidaps.database.entities.TherapyEvent
import info.nightscout.androidaps.database.entities.UserEntry.Action
import info.nightscout.androidaps.database.entities.UserEntry.Sources
import info.nightscout.androidaps.database.entities.ValueWithUnit
import info.nightscout.androidaps.database.transactions.CgmSourceTransaction import info.nightscout.androidaps.database.transactions.CgmSourceTransaction
import info.nightscout.androidaps.interfaces.BgSourceInterface import info.nightscout.androidaps.interfaces.BgSourceInterface
import info.nightscout.androidaps.interfaces.PluginBase import info.nightscout.androidaps.interfaces.PluginBase
@ -21,6 +24,7 @@ import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.receivers.DataWorker import info.nightscout.androidaps.receivers.DataWorker
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.T
@ -84,6 +88,7 @@ class DexcomPlugin @Inject constructor(
@Inject lateinit var dataWorker: DataWorker @Inject lateinit var dataWorker: DataWorker
@Inject lateinit var broadcastToXDrip: XDripBroadcast @Inject lateinit var broadcastToXDrip: XDripBroadcast
@Inject lateinit var repository: AppRepository @Inject lateinit var repository: AppRepository
@Inject lateinit var uel: UserEntryLogger
init { init {
(context.applicationContext as HasAndroidInjector).androidInjector().inject(this) (context.applicationContext as HasAndroidInjector).androidInjector().inject(this)
@ -151,8 +156,20 @@ class DexcomPlugin @Inject constructor(
broadcastToXDrip(it) broadcastToXDrip(it)
aapsLogger.debug(LTag.DATABASE, "Updated bg $it") aapsLogger.debug(LTag.DATABASE, "Updated bg $it")
} }
result.sensorInsertionsInserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted sensor insertion $it") } result.sensorInsertionsInserted.forEach {
result.calibrationsInserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted calibration $it") } uel.log(Action.CAREPORTAL,
Sources.BG,
ValueWithUnit.Timestamp(it.timestamp),
ValueWithUnit.TherapyEventType(it.type))
aapsLogger.debug(LTag.DATABASE, "Inserted sensor insertion $it")
}
result.calibrationsInserted.forEach {
uel.log(Action.CAREPORTAL,
Sources.BG,
ValueWithUnit.Timestamp(it.timestamp),
ValueWithUnit.TherapyEventType(it.type))
aapsLogger.debug(LTag.DATABASE, "Inserted calibration $it")
}
} }
} catch (e: Exception) { } catch (e: Exception) {
aapsLogger.error("Error while processing intent from Dexcom App", e) aapsLogger.error("Error while processing intent from Dexcom App", e)

View file

@ -94,6 +94,10 @@ class Translator @Inject internal constructor(
Action.OTP_RESET -> resourceHelper.gs(R.string.uel_otp_reset) Action.OTP_RESET -> resourceHelper.gs(R.string.uel_otp_reset)
Action.EXPORT_CSV -> resourceHelper.gs(R.string.uel_export_csv) Action.EXPORT_CSV -> resourceHelper.gs(R.string.uel_export_csv)
Action.STOP_SMS -> resourceHelper.gs(R.string.uel_stop_sms) Action.STOP_SMS -> resourceHelper.gs(R.string.uel_stop_sms)
Action.START_AAPS -> resourceHelper.gs(R.string.uel_start_aaps)
Action.EXIT_AAPS -> resourceHelper.gs(R.string.uel_exit_aaps)
Action.PLUGIN_ENABLED -> resourceHelper.gs(R.string.uel_plugin_enabled)
Action.PLUGIN_DISABLED -> resourceHelper.gs(R.string.uel_plugin_disabled)
Action.UNKNOWN -> resourceHelper.gs(R.string.unknown) Action.UNKNOWN -> resourceHelper.gs(R.string.unknown)
} }
@ -233,6 +237,14 @@ class Translator @Inject internal constructor(
Sources.Announcement -> TODO() Sources.Announcement -> TODO()
Sources.Actions -> TODO() Sources.Actions -> TODO()
Sources.BG -> TODO() Sources.BG -> TODO()
Sources.Dexcom -> TODO()
Sources.Eversense -> TODO()
Sources.Glimp -> TODO()
Sources.MM640g -> TODO()
Sources.NSClientSource -> TODO()
Sources.PocTech -> TODO()
Sources.Tomato -> TODO()
Sources.Xdrip -> TODO()
Sources.LocalProfile -> TODO() Sources.LocalProfile -> TODO()
Sources.Maintenance -> TODO() Sources.Maintenance -> TODO()
Sources.NSProfile -> TODO() Sources.NSProfile -> TODO()
@ -255,6 +267,7 @@ class Translator @Inject internal constructor(
Sources.ConfigBuilder -> TODO() Sources.ConfigBuilder -> TODO()
Sources.Overview -> TODO() Sources.Overview -> TODO()
Sources.Stats -> TODO() Sources.Stats -> TODO()
Sources.Aaps -> TODO()
*/ */
Sources.Automation -> resourceHelper.gs(R.string.automation) Sources.Automation -> resourceHelper.gs(R.string.automation)
Sources.Loop -> resourceHelper.gs(R.string.loop) Sources.Loop -> resourceHelper.gs(R.string.loop)

View file

@ -79,6 +79,8 @@ class UserEntryMapper {
STOP_SMS (UserEntry.Action.STOP_SMS), STOP_SMS (UserEntry.Action.STOP_SMS),
FOOD (UserEntry.Action.FOOD), FOOD (UserEntry.Action.FOOD),
EXPORT_CSV (UserEntry.Action.EXPORT_CSV), EXPORT_CSV (UserEntry.Action.EXPORT_CSV),
START_AAPS (UserEntry.Action.START_AAPS),
EXIT_AAPS (UserEntry.Action.EXIT_AAPS),
UNKNOWN (UserEntry.Action.UNKNOWN) UNKNOWN (UserEntry.Action.UNKNOWN)
; ;
} }
@ -106,6 +108,14 @@ class UserEntryMapper {
Actions (UserEntry.Sources.Actions), Actions (UserEntry.Sources.Actions),
Automation (UserEntry.Sources.Automation), Automation (UserEntry.Sources.Automation),
BG (UserEntry.Sources.BG), BG (UserEntry.Sources.BG),
Dexcom (UserEntry.Sources.Dexcom),
Eversense (UserEntry.Sources.Eversense),
Glimp (UserEntry.Sources.Glimp),
MM640g (UserEntry.Sources.MM640g),
NSClientSource (UserEntry.Sources.BG),
PocTech (UserEntry.Sources.PocTech),
Tomato (UserEntry.Sources.Tomato),
Xdrip (UserEntry.Sources.Xdrip),
LocalProfile (UserEntry.Sources.LocalProfile), LocalProfile (UserEntry.Sources.LocalProfile),
Loop (UserEntry.Sources.Loop), Loop (UserEntry.Sources.Loop),
Maintenance (UserEntry.Sources.Maintenance), Maintenance (UserEntry.Sources.Maintenance),
@ -133,6 +143,7 @@ class UserEntryMapper {
ConfigBuilder (UserEntry.Sources.ConfigBuilder), ConfigBuilder (UserEntry.Sources.ConfigBuilder),
Overview (UserEntry.Sources.Overview), Overview (UserEntry.Sources.Overview),
Stats (UserEntry.Sources.Stats), Stats (UserEntry.Sources.Stats),
Aaps (UserEntry.Sources.Aaps),
Unknown(UserEntry.Sources.Unknown) Unknown(UserEntry.Sources.Unknown)
; ;
} }

View file

@ -28,46 +28,54 @@ class UserEntryPresentationHelper @Inject constructor(
fun colorId(colorGroup: ColorGroup): Int = when (colorGroup) { fun colorId(colorGroup: ColorGroup): Int = when (colorGroup) {
ColorGroup.InsulinTreatment -> R.color.iob ColorGroup.InsulinTreatment -> R.color.iob
ColorGroup.BasalTreatment -> R.color.basal ColorGroup.BasalTreatment -> R.color.basal
ColorGroup.CarbTreatment -> R.color.carbs ColorGroup.CarbTreatment -> R.color.carbs
ColorGroup.TT -> R.color.tempTargetConfirmation ColorGroup.TT -> R.color.tempTargetConfirmation
ColorGroup.Profile -> R.color.white ColorGroup.Profile -> R.color.white
ColorGroup.Loop -> R.color.loopClosed ColorGroup.Loop -> R.color.loopClosed
ColorGroup.Careportal -> R.color.high ColorGroup.Careportal -> R.color.high
ColorGroup.Pump -> R.color.loopDisconnected ColorGroup.Pump -> R.color.loopDisconnected
ColorGroup.Aaps -> R.color.defaulttext ColorGroup.Aaps -> R.color.defaulttext
else -> R.color.defaulttext else -> R.color.defaulttext
} }
fun iconId(source: Sources): Int = when (source) { fun iconId(source: Sources): Int = when (source) {
Sources.TreatmentDialog -> R.drawable.icon_insulin_carbs Sources.TreatmentDialog -> R.drawable.icon_insulin_carbs
Sources.InsulinDialog -> R.drawable.ic_bolus Sources.InsulinDialog -> R.drawable.ic_bolus
Sources.CarbDialog -> R.drawable.ic_cp_bolus_carbs Sources.CarbDialog -> R.drawable.ic_cp_bolus_carbs
Sources.WizardDialog -> R.drawable.ic_calculator Sources.WizardDialog -> R.drawable.ic_calculator
Sources.QuickWizard -> R.drawable.ic_quick_wizard Sources.QuickWizard -> R.drawable.ic_quick_wizard
Sources.ExtendedBolusDialog -> R.drawable.ic_actions_startextbolus Sources.ExtendedBolusDialog -> R.drawable.ic_actions_startextbolus
Sources.TTDialog -> R.drawable.ic_temptarget_high Sources.TTDialog -> R.drawable.ic_temptarget_high
Sources.ProfileSwitchDialog -> R.drawable.ic_actions_profileswitch Sources.ProfileSwitchDialog -> R.drawable.ic_actions_profileswitch
Sources.LoopDialog -> R.drawable.ic_loop_closed Sources.LoopDialog -> R.drawable.ic_loop_closed
Sources.TempBasalDialog -> R.drawable.ic_actions_starttempbasal Sources.TempBasalDialog -> R.drawable.ic_actions_starttempbasal
Sources.CalibrationDialog -> R.drawable.ic_calibration Sources.CalibrationDialog -> R.drawable.ic_calibration
Sources.FillDialog -> R.drawable.ic_cp_pump_canula Sources.FillDialog -> R.drawable.ic_cp_pump_canula
Sources.BgCheck -> R.drawable.ic_cp_bgcheck Sources.BgCheck -> R.drawable.ic_cp_bgcheck
Sources.SensorInsert -> R.drawable.ic_cp_cgm_insert Sources.SensorInsert -> R.drawable.ic_cp_cgm_insert
Sources.BatteryChange -> R.drawable.ic_cp_pump_battery Sources.BatteryChange -> R.drawable.ic_cp_pump_battery
Sources.Note -> R.drawable.ic_cp_note Sources.Note -> R.drawable.ic_cp_note
Sources.Exercise -> R.drawable.ic_cp_exercise Sources.Exercise -> R.drawable.ic_cp_exercise
Sources.Question -> R.drawable.ic_cp_question Sources.Question -> R.drawable.ic_cp_question
Sources.Announcement -> R.drawable.ic_cp_announcement Sources.Announcement -> R.drawable.ic_cp_announcement
Sources.Actions -> R.drawable.ic_action Sources.Actions -> R.drawable.ic_action
Sources.Automation -> R.drawable.ic_automation Sources.Automation -> R.drawable.ic_automation
Sources.BG -> R.drawable.ic_generic_cgm Sources.BG -> R.drawable.ic_generic_cgm
Sources.LocalProfile -> R.drawable.ic_local_profile Sources.Dexcom -> R.drawable.ic_dexcom_g6
Sources.Loop -> R.drawable.ic_loop_closed_white Sources.Eversense -> R.drawable.ic_eversense
Sources.Maintenance -> R.drawable.ic_maintenance Sources.Glimp -> R.drawable.ic_glimp
Sources.NSClient -> R.drawable.ic_nightscout_syncs Sources.MM640g -> R.drawable.ic_generic_cgm
Sources.NSProfile -> R.drawable.ic_nightscout_profile Sources.NSClientSource -> R.drawable.ic_nsclient_bg
Sources.Objectives -> R.drawable.ic_graduation Sources.PocTech -> R.drawable.ic_poctech
Sources.Pump -> R.drawable.ic_generic_icon Sources.Tomato -> R.drawable.ic_sensor
Sources.Xdrip -> R.drawable.ic_blooddrop_48
Sources.LocalProfile -> R.drawable.ic_local_profile
Sources.Loop -> R.drawable.ic_loop_closed_white
Sources.Maintenance -> R.drawable.ic_maintenance
Sources.NSClient -> R.drawable.ic_nightscout_syncs
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.Dana -> R.drawable.ic_danars_128
Sources.DanaR -> R.drawable.ic_danars_128 Sources.DanaR -> R.drawable.ic_danars_128
Sources.DanaRC -> R.drawable.ic_danars_128 Sources.DanaRC -> R.drawable.ic_danars_128
@ -81,14 +89,15 @@ class UserEntryPresentationHelper @Inject constructor(
Sources.OmnipodDash -> R.drawable.ic_pod_128 Sources.OmnipodDash -> R.drawable.ic_pod_128
Sources.MDI -> R.drawable.ic_ict Sources.MDI -> R.drawable.ic_ict
Sources.VirtualPump -> R.drawable.ic_virtual_pump Sources.VirtualPump -> R.drawable.ic_virtual_pump
Sources.SMS -> R.drawable.ic_sms Sources.SMS -> R.drawable.ic_sms
Sources.Treatments -> R.drawable.ic_treatments Sources.Treatments -> R.drawable.ic_treatments
Sources.Wear -> R.drawable.ic_watch Sources.Wear -> R.drawable.ic_watch
Sources.Food -> R.drawable.ic_food Sources.Food -> R.drawable.ic_food
Sources.Stats -> R.drawable.ic_cp_stats Sources.Stats -> R.drawable.ic_cp_stats
Sources.ConfigBuilder -> R.drawable.ic_generic_icon Sources.ConfigBuilder -> R.drawable.ic_cogs
Sources.Overview -> R.drawable.ic_generic_icon Sources.Overview -> R.drawable.ic_notif_aaps
Sources.Unknown -> R.drawable.ic_generic_icon Sources.Aaps -> R.drawable.ic_notif_aaps
Sources.Unknown -> R.drawable.ic_generic_icon
} }
fun actionToColoredString(action: Action): Spanned = when (action) { fun actionToColoredString(action: Action): Spanned = when (action) {

View file

@ -481,6 +481,10 @@
<string name="uel_otp_reset">OTP RESET</string> <string name="uel_otp_reset">OTP RESET</string>
<string name="uel_stop_sms">STOP SMS</string> <string name="uel_stop_sms">STOP SMS</string>
<string name="uel_export_csv">EXPORT USER ENTRIES</string> <string name="uel_export_csv">EXPORT USER ENTRIES</string>
<string name="uel_start_aaps">START AAPS</string>
<string name="uel_exit_aaps">EXIT AAPS</string>
<string name="uel_plugin_enabled">PLUGIN ENABLED</string>
<string name="uel_plugin_disabled">PLUGIN DISABLED</string>
<string name="uel_unknown">UNKNOWN</string> <string name="uel_unknown">UNKNOWN</string>
<string name="ue_formated_string">Formated string</string> <string name="ue_formated_string">Formated string</string>
<string name="ue_source">Source</string> <string name="ue_source">Source</string>

View file

@ -94,6 +94,10 @@ data class UserEntry(
STOP_SMS (ColorGroup.Aaps), STOP_SMS (ColorGroup.Aaps),
FOOD (ColorGroup.CarbTreatment), FOOD (ColorGroup.CarbTreatment),
EXPORT_CSV (ColorGroup.Aaps), EXPORT_CSV (ColorGroup.Aaps),
START_AAPS (ColorGroup.Aaps),
EXIT_AAPS (ColorGroup.Aaps),
PLUGIN_ENABLED (ColorGroup.Aaps),
PLUGIN_DISABLED (ColorGroup.Aaps),
UNKNOWN (ColorGroup.Aaps) UNKNOWN (ColorGroup.Aaps)
; ;
@ -125,6 +129,14 @@ data class UserEntry(
Actions, //From Actions plugin Actions, //From Actions plugin
Automation, //From Automation plugin Automation, //From Automation plugin
BG, //From BG plugin => Add One Source per BG Source for Calibration or Sensor Change BG, //From BG plugin => Add One Source per BG Source for Calibration or Sensor Change
Dexcom,
Eversense,
Glimp,
MM640g,
NSClientSource,
PocTech,
Tomato,
Xdrip,
LocalProfile, //From LocalProfile plugin LocalProfile, //From LocalProfile plugin
Loop, //From Loop plugin Loop, //From Loop plugin
Maintenance, //From Maintenance plugin Maintenance, //From Maintenance plugin
@ -152,6 +164,7 @@ data class UserEntry(
ConfigBuilder, //From ConfigBuilder Plugin ConfigBuilder, //From ConfigBuilder Plugin
Overview, //From OverViewPlugin Overview, //From OverViewPlugin
Stats, //From Stat Activity Stats, //From Stat Activity
Aaps, // MainApp
Unknown //if necessary Unknown //if necessary
; ;