More work in progress on moving stuff from omnipod-eros to omnipod-common
This commit is contained in:
parent
b56a3d8132
commit
567c215388
71 changed files with 816 additions and 547 deletions
|
@ -634,7 +634,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
|
||||
pump.isSuspended() -> {
|
||||
binding.infoLayout.apsMode.setImageResource(if (pump.pumpDescription.pumpType == PumpType.Omnipod_Eros) {
|
||||
binding.infoLayout.apsMode.setImageResource(if (pump.model() == PumpType.Omnipod_Eros || pump.model() == PumpType.Omnipod_Dash) {
|
||||
// For Omnipod, indicate the pump as disconnected when it's suspended.
|
||||
// The only way to 'reconnect' it, is through the Omnipod tab
|
||||
R.drawable.ic_loop_disconnected
|
||||
|
|
|
@ -36,11 +36,11 @@ class StatusLightHandler @Inject constructor(
|
|||
handleAge(careportal_cannula_age, CareportalEvent.SITECHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
|
||||
handleAge(careportal_insulin_age, CareportalEvent.INSULINCHANGE, R.string.key_statuslights_iage_warning, 72.0, R.string.key_statuslights_iage_critical, 144.0)
|
||||
handleAge(careportal_sensor_age, CareportalEvent.SENSORCHANGE, R.string.key_statuslights_sage_warning, 216.0, R.string.key_statuslights_sage_critical, 240.0)
|
||||
if (pump.pumpDescription.isBatteryReplaceable) {
|
||||
if (pump.pumpDescription.isBatteryReplaceable || (pump is OmnipodErosPumpPlugin && pump.isUseRileyLinkBatteryLevel && pump.isBatteryChangeLoggingEnabled)) {
|
||||
handleAge(careportal_pb_age, CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0)
|
||||
}
|
||||
if (!config.NSCLIENT) {
|
||||
if (pump.model() == PumpType.Omnipod_Eros) {
|
||||
if (pump.model() == PumpType.Omnipod_Eros || pump.model() == PumpType.Omnipod_Dash) {
|
||||
handleOmnipodReservoirLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
|
||||
} else {
|
||||
handleLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
|
||||
|
@ -52,8 +52,14 @@ class StatusLightHandler @Inject constructor(
|
|||
}
|
||||
|
||||
if (!config.NSCLIENT) {
|
||||
if (pump.model() == PumpType.Omnipod_Eros && pump is OmnipodErosPumpPlugin) { // instance of check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below
|
||||
handleOmnipodBatteryLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%", pump.isUseRileyLinkBatteryLevel)
|
||||
if (pump.model() == PumpType.Omnipod_Dash) {
|
||||
// Omnipod Dash does not report its battery level
|
||||
careportal_battery_level?.text = resourceHelper.gs(R.string.notavailable)
|
||||
careportal_battery_level?.setTextColor(Color.WHITE)
|
||||
} else if (pump.model() == PumpType.Omnipod_Eros && pump is OmnipodErosPumpPlugin) { // instance of check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below
|
||||
// The Omnipod Eros does not report its battery level. However, some RileyLink alternatives do.
|
||||
// Depending on the user's configuration, we will either show the battery level reported by the RileyLink or "n/a"
|
||||
handleOmnipodErosBatteryLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%", pump.isUseRileyLinkBatteryLevel)
|
||||
} else if (pump.model() != PumpType.AccuChekCombo) {
|
||||
handleLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
|
||||
}
|
||||
|
@ -93,7 +99,7 @@ class StatusLightHandler @Inject constructor(
|
|||
}
|
||||
|
||||
@Suppress("SameParameterValue")
|
||||
private fun handleOmnipodBatteryLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String, useRileyLinkBatteryLevel: Boolean) {
|
||||
private fun handleOmnipodErosBatteryLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String, useRileyLinkBatteryLevel: Boolean) {
|
||||
if (useRileyLinkBatteryLevel) {
|
||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||
} else {
|
||||
|
|
|
@ -27,6 +27,7 @@ import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
|||
import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment
|
||||
import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.OmnipodDashPumpPlugin
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin
|
||||
import info.nightscout.androidaps.setupwizard.elements.*
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
|
||||
|
@ -277,14 +278,14 @@ class SWDefinition @Inject constructor(
|
|||
.add(SWInfoText(injector)
|
||||
.label(R.string.setupwizard_pump_pump_not_initialized)
|
||||
.visibility { !isPumpInitialized() })
|
||||
.add( // Omnipod only
|
||||
.add( // Omnipod Eros only
|
||||
SWInfoText(injector)
|
||||
.label(R.string.setupwizard_pump_waiting_for_riley_link_connection)
|
||||
.visibility {
|
||||
val activePump = activePlugin.activePump
|
||||
activePump is OmnipodErosPumpPlugin && !activePump.isRileyLinkReady
|
||||
})
|
||||
.add( // Omnipod only
|
||||
.add( // Omnipod Eros only
|
||||
SWEventListener(injector, EventRileyLinkDeviceStatusChange::class.java)
|
||||
.label(R.string.setupwizard_pump_riley_link_status)
|
||||
.visibility { activePlugin.activePump is OmnipodErosPumpPlugin })
|
||||
|
@ -294,18 +295,21 @@ class SWDefinition @Inject constructor(
|
|||
.visibility {
|
||||
// Hide for Omnipod, because as we don't require a Pod to be paired in the setup wizard,
|
||||
// Getting the status might not be possible
|
||||
activePlugin.activePump !is OmnipodErosPumpPlugin
|
||||
activePlugin.activePump !is OmnipodErosPumpPlugin && activePlugin.activePump !is OmnipodDashPumpPlugin
|
||||
})
|
||||
.add(SWEventListener(injector, EventPumpStatusChanged::class.java)
|
||||
.visibility { activePlugin.activePump !is OmnipodErosPumpPlugin })
|
||||
.visibility { activePlugin.activePump !is OmnipodErosPumpPlugin && activePlugin.activePump !is OmnipodDashPumpPlugin })
|
||||
.validator { isPumpInitialized() }
|
||||
|
||||
private fun isPumpInitialized(): Boolean {
|
||||
val activePump = activePlugin.activePump
|
||||
|
||||
// For Omnipod, consider the pump initialized when a RL has been configured successfully
|
||||
// Users will be prompted to activate a Pod after completing the setup wizard.
|
||||
return activePump.isInitialized() || (activePump is OmnipodErosPumpPlugin && activePump.isRileyLinkReady)
|
||||
// For Omnipod, activating a Pod can be done after setup through the Omnipod fragment
|
||||
// For the Eros model, consider the pump initialized when a RL has been configured successfully
|
||||
// For Dash model, consider the pump setup without any extra conditions
|
||||
return activePump.isInitialized()
|
||||
|| (activePump is OmnipodErosPumpPlugin && activePump.isRileyLinkReady)
|
||||
|| activePump is OmnipodDashPumpPlugin
|
||||
}
|
||||
|
||||
private val screenAps = SWScreen(injector, R.string.configbuilder_aps)
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="info.nightscout.androidaps.plugins.pump.omnipod.common">
|
||||
<manifest package="info.nightscout.androidaps.plugins.pump.omnipod.common">
|
||||
|
||||
<application>
|
||||
<activity android:name=".ui.wizard.activation.PodActivationWizardActivity" />
|
||||
<activity android:name=".ui.wizard.deactivation.PodDeactivationWizardActivity" />
|
||||
</application>
|
||||
<application></application>
|
||||
</manifest>
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.dagger
|
||||
|
||||
import dagger.Module
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.PodActivationWizardActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity
|
||||
|
||||
@Module
|
||||
@Suppress("unused")
|
||||
abstract class OmnipodCommonModule {
|
||||
// ACTIVITIES
|
||||
|
||||
@ActivityScope
|
||||
@ContributesAndroidInjector(modules = [OmnipodWizardModule::class])
|
||||
abstract fun contributesActivationWizardActivity(): PodActivationWizardActivity
|
||||
|
||||
@ActivityScope
|
||||
@ContributesAndroidInjector(modules = [OmnipodWizardModule::class])
|
||||
abstract fun contributesDeactivationWizardActivity(): PodDeactivationWizardActivity
|
||||
}
|
|
@ -15,7 +15,7 @@ annotation class OmnipodPluginQualifier
|
|||
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
|
||||
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
||||
@MapKey
|
||||
internal annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
||||
annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
||||
|
||||
// TODO: These annotations and Factories could be used globally -> move to core or app
|
||||
|
||||
|
|
|
@ -2,23 +2,18 @@ package info.nightscout.androidaps.plugins.pump.omnipod.common.dagger
|
|||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import dagger.multibindings.IntoMap
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.AttachPodInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.FillPodInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.InitializePodActionFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.InsertCannulaActionFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.PodActivatedInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.InitializePodActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.DeactivatePodActionFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.DeactivatePodInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.PodDeactivatedInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.PodDiscardedInfoFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action.InitializePodFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action.InsertCannulaFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.AttachPodFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.PodActivatedFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.StartPodActivationFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.action.DeactivatePodFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.PodDeactivatedFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.PodDiscardedFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.StartPodDeactivationFragment
|
||||
import javax.inject.Provider
|
||||
|
||||
@Module
|
||||
|
@ -33,61 +28,48 @@ abstract class OmnipodWizardModule {
|
|||
}
|
||||
}
|
||||
|
||||
// #### VIEW MODELS ############################################################################
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(InitializePodActionViewModel::class)
|
||||
internal abstract fun initializePodActionViewModel(viewModel: InitializePodActionViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(InsertCannulaActionViewModel::class)
|
||||
internal abstract fun insertCannulaActionViewModel(viewModel: InsertCannulaActionViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(DeactivatePodActionViewModel::class)
|
||||
internal abstract fun deactivatePodActionViewModel(viewModel: DeactivatePodActionViewModel): ViewModel
|
||||
|
||||
// #### FRAGMENTS ##############################################################################
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesDeactivatePodActionFragment(): DeactivatePodActionFragment
|
||||
|
||||
// POD ACTIVATION
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesInsertCannulaActionFragment(): InsertCannulaActionFragment
|
||||
internal abstract fun contributesStartPodActivationFragment(): StartPodActivationFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesInitializePodActionFragment(): InitializePodActionFragment
|
||||
internal abstract fun contributesInitializeActionFragment(): InitializePodFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesAttachPodInfoFragment(): AttachPodInfoFragment
|
||||
internal abstract fun contributesAttachPodFragment(): AttachPodFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesDeactivatePodInfoFragment(): DeactivatePodInfoFragment
|
||||
internal abstract fun contributesInsertCannulaFragment(): InsertCannulaFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesFillPodInfoFragment(): FillPodInfoFragment
|
||||
internal abstract fun contributesPodActivatedFragment(): PodActivatedFragment
|
||||
|
||||
// POD DEACTIVATION
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesPodDeactivatedInfoFragment(): PodDeactivatedInfoFragment
|
||||
internal abstract fun contributesStartPodDeactivationFragment(): StartPodDeactivationFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesPodDiscardedInfoFragment(): PodDiscardedInfoFragment
|
||||
internal abstract fun contributesDeactivatePodFragment(): DeactivatePodFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesPodActivatedInfoFragment(): PodActivatedInfoFragment
|
||||
internal abstract fun contributesPodDeactivatedFragment(): PodDeactivatedFragment
|
||||
|
||||
@FragmentScope
|
||||
@ContributesAndroidInjector
|
||||
internal abstract fun contributesPodDiscardedFragment(): PodDiscardedFragment
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import androidx.annotation.IdRes
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.activity.OmnipodWizardActivityBase
|
||||
|
||||
class PodActivationWizardActivity : OmnipodWizardActivityBase() {
|
||||
abstract class PodActivationWizardActivity : OmnipodWizardActivityBase() {
|
||||
companion object {
|
||||
|
||||
const val KEY_TYPE = "wizardType"
|
||||
|
@ -18,18 +18,18 @@ class PodActivationWizardActivity : OmnipodWizardActivityBase() {
|
|||
}
|
||||
|
||||
@IdRes
|
||||
private var startDestination: Int = R.id.fillPodInfoFragment
|
||||
private var startDestination: Int = R.id.startPodActivationFragment
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContentView(R.layout.omnipod_common_pod_activation_wizard_activity)
|
||||
|
||||
startDestination = savedInstanceState?.getInt(KEY_START_DESTINATION, R.id.fillPodInfoFragment)
|
||||
startDestination = savedInstanceState?.getInt(KEY_START_DESTINATION, R.id.startPodActivationFragment)
|
||||
?: if (intent.getSerializableExtra(KEY_TYPE) as Type == Type.LONG) {
|
||||
R.id.fillPodInfoFragment
|
||||
R.id.startPodActivationFragment
|
||||
} else {
|
||||
R.id.attachPodInfoFragment
|
||||
R.id.attachPodFragment
|
||||
}
|
||||
|
||||
setStartDestination(startDestination)
|
||||
|
@ -52,7 +52,7 @@ class PodActivationWizardActivity : OmnipodWizardActivityBase() {
|
|||
override fun getTotalDefinedNumberOfSteps(): Int = 5
|
||||
|
||||
override fun getActualNumberOfSteps(): Int {
|
||||
if (startDestination == R.id.attachPodInfoFragment) {
|
||||
if (startDestination == R.id.attachPodFragment) {
|
||||
return 3
|
||||
}
|
||||
return 5
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
|
||||
class PodActivatedInfoFragment : InfoFragmentBase() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_pod_activated_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_activation_wizard_pod_activated_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 5
|
||||
}
|
|
@ -1,16 +1,15 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.InitializePodActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InitializePodViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class InitializePodActionFragment : PodActivationActionFragmentBase() {
|
||||
class InitializePodFragment : PodActivationActionFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
|
@ -19,18 +18,12 @@ class InitializePodActionFragment : PodActivationActionFragmentBase() {
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: InitializePodActionViewModel by viewModels { viewModelFactory }
|
||||
val vm: InitializePodViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_initialize_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = (viewModel as InitializePodActionViewModel).getTextId()
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_initializePodActionFragment_to_attachPodInfoFragment
|
||||
override fun getNextPageActionId(): Int = R.id.action_initializePodFragment_to_attachPodFragment
|
||||
|
||||
override fun getIndex(): Int = 2
|
||||
}
|
|
@ -1,16 +1,15 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.InsertCannulaActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InsertCannulaViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class InsertCannulaActionFragment : PodActivationActionFragmentBase() {
|
||||
class InsertCannulaFragment : PodActivationActionFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
|
@ -19,18 +18,12 @@ class InsertCannulaActionFragment : PodActivationActionFragmentBase() {
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: InsertCannulaActionViewModel by viewModels { viewModelFactory }
|
||||
val vm: InsertCannulaViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_insert_cannula_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_activation_wizard_insert_cannula_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_insertCannulaActionFragment_to_PodActivatedInfoFragment
|
||||
override fun getNextPageActionId(): Int = R.id.action_insertCannulaFragment_to_PodActivatedFragment
|
||||
|
||||
override fun getIndex(): Int = 4
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.PodActivationActionViewModelBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.PodActivationActionViewModelBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.ActionFragmentBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity
|
||||
|
||||
|
@ -23,7 +23,7 @@ abstract class PodActivationActionFragmentBase : ActionFragmentBase() {
|
|||
}
|
||||
|
||||
override fun onFailure() {
|
||||
(viewModel as? PodActivationActionViewModelBase)?.let { viewModel ->
|
||||
(actionViewModel as? PodActivationActionViewModelBase)?.let { viewModel ->
|
||||
if (viewModel.isPodDeactivatable() and (viewModel.isPodInAlarm() or viewModel.isPodActivationTimeExceeded())) {
|
||||
view?.let {
|
||||
it.findViewById<Button>(R.id.omnipod_wizard_button_retry)?.visibility = View.GONE
|
|
@ -1,25 +1,34 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.AttachPodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import javax.inject.Inject
|
||||
|
||||
class AttachPodInfoFragment : InfoFragmentBase() {
|
||||
class AttachPodFragment : InfoFragmentBase() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_attach_pod_title
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_activation_wizard_attach_pod_text
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: AttachPodViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_attachPodInfoFragment_to_insertCannulaActionFragment
|
||||
override fun getNextPageActionId(): Int = R.id.action_attachPodFragment_to_insertCannulaFragment
|
||||
|
||||
override fun getIndex(): Int = 3
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.PodActivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import javax.inject.Inject
|
||||
|
||||
class PodActivatedFragment : InfoFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: PodActivatedViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 5
|
||||
}
|
|
@ -1,38 +1,30 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.FillPodInfoViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.StartPodActivationViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import javax.inject.Inject
|
||||
|
||||
class FillPodInfoFragment : InfoFragmentBase() {
|
||||
class StartPodActivationFragment : InfoFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
private lateinit var viewModel: FillPodInfoViewModel
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: FillPodInfoViewModel by viewModels { viewModelFactory }
|
||||
val vm: StartPodActivationViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_fill_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = viewModel.getTextId()
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_fillPodInfoFragment_to_initializePodActionFragment
|
||||
override fun getNextPageActionId(): Int = R.id.action_startPodActivationFragment_to_initializePodFragment
|
||||
|
||||
override fun getIndex(): Int = 1
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.lifecycle.ViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
|
||||
class FillPodInfoViewModel : ViewModel() {
|
||||
|
||||
@StringRes fun getTextId(): Int = R.string.omnipod_pod_activation_wizard_fill_pod_text
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager
|
||||
import javax.inject.Inject
|
||||
|
||||
class InitializePodActionViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodManager, private val podStateManager: AapsPodStateManager) : PodActivationActionViewModelBase() {
|
||||
|
||||
override fun isPodInAlarm(): Boolean = podStateManager.isPodFaulted
|
||||
|
||||
override fun isPodActivationTimeExceeded(): Boolean = podStateManager.isPodActivationTimeExceeded
|
||||
|
||||
override fun isPodDeactivatable(): Boolean = podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
|
||||
override fun doExecuteAction(): PumpEnactResult = aapsOmnipodManager.initializePod()
|
||||
|
||||
@StringRes fun getTextId() = R.string.omnipod_pod_activation_wizard_initialize_pod_text
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel
|
||||
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager
|
||||
import javax.inject.Inject
|
||||
|
||||
class InsertCannulaActionViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodManager, private val podStateManager: AapsPodStateManager, private val profileFunction: ProfileFunction) : PodActivationActionViewModelBase() {
|
||||
|
||||
override fun isPodInAlarm(): Boolean = podStateManager.isPodFaulted
|
||||
|
||||
override fun isPodActivationTimeExceeded(): Boolean = podStateManager.isPodActivationTimeExceeded
|
||||
|
||||
override fun isPodDeactivatable(): Boolean = podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
|
||||
override fun doExecuteAction(): PumpEnactResult = aapsOmnipodManager.insertCannula(profileFunction.getProfile())
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action
|
||||
|
||||
abstract class InitializePodViewModel : PodActivationActionViewModelBase()
|
|
@ -0,0 +1,3 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action
|
||||
|
||||
abstract class InsertCannulaViewModel : PodActivationActionViewModelBase()
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ActionViewModelBase
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class AttachPodViewModel : ViewModelBase()
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class PodActivatedViewModel : ViewModelBase()
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class StartPodActivationViewModel : ViewModelBase()
|
|
@ -4,71 +4,70 @@ import android.annotation.SuppressLint
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ActionViewModelBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.PodActivationActionViewModelBase
|
||||
import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||
|
||||
abstract class ActionFragmentBase : WizardFragmentBase() {
|
||||
|
||||
protected lateinit var viewModel: ActionViewModelBase
|
||||
val actionViewModel: PodActivationActionViewModelBase
|
||||
get() = viewModel as PodActivationActionViewModelBase
|
||||
|
||||
@SuppressLint("CutPasteId")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
binding.navButtonsLayout.buttonNext.isEnabled = false
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_page_text).setText(getTextId())
|
||||
view.findViewById<TextView>(R.id.omnipod_wizard_action_page_text).setText(getTextId())
|
||||
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_retry).setOnClickListener { viewModel.executeAction() }
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_retry).setOnClickListener { actionViewModel.executeAction() }
|
||||
|
||||
viewModel.isActionExecutingLiveData.observe(viewLifecycleOwner, { isExecuting ->
|
||||
actionViewModel.isActionExecutingLiveData.observe(viewLifecycleOwner, { isExecuting ->
|
||||
if (isExecuting) {
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_error).visibility = View.GONE
|
||||
view.findViewById<TextView>(R.id.omnipod_wizard_action_error).visibility = View.GONE
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_deactivate_pod).visibility = View.GONE
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_discard_pod).visibility = View.GONE
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_retry).visibility = View.GONE
|
||||
}
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_progress_indication).visibility = isExecuting.toVisibility()
|
||||
view.findViewById<ProgressBar>(R.id.omnipod_wizard_action_progress_indication).visibility = isExecuting.toVisibility()
|
||||
view.findViewById<Button>(R.id.button_cancel).isEnabled = !isExecuting
|
||||
})
|
||||
|
||||
viewModel.actionResultLiveData.observe(viewLifecycleOwner, { result ->
|
||||
actionViewModel.actionResultLiveData.observe(viewLifecycleOwner, { result ->
|
||||
result?.let {
|
||||
val isExecuting = isActionExecuting()
|
||||
|
||||
view.findViewById<Button>(R.id.button_next).isEnabled = result.success
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_success).visibility = result.success.toVisibility()
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_error).visibility = (!isExecuting && !result.success).toVisibility()
|
||||
view.findViewById<TextView>(R.id.omnipod_wizard_action_success).visibility = result.success.toVisibility()
|
||||
view.findViewById<TextView>(R.id.omnipod_wizard_action_error).visibility = (!isExecuting && !result.success).toVisibility()
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_button_retry).visibility = (!isExecuting && !result.success).toVisibility()
|
||||
|
||||
if (!result.success) {
|
||||
view.findViewById<Button>(R.id.omnipod_wizard_action_error).text = result.comment
|
||||
view.findViewById<TextView>(R.id.omnipod_wizard_action_error).text = result.comment
|
||||
onFailure()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (savedInstanceState == null && !isActionExecuting()) {
|
||||
viewModel.executeAction()
|
||||
actionViewModel.executeAction()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected fun isActionExecuting() = viewModel.isActionExecutingLiveData.value!!
|
||||
protected fun isActionExecuting() = actionViewModel.isActionExecutingLiveData.value!!
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
viewModel.isActionExecutingLiveData.removeObservers(viewLifecycleOwner)
|
||||
viewModel.actionResultLiveData.removeObservers(viewLifecycleOwner)
|
||||
actionViewModel.isActionExecutingLiveData.removeObservers(viewLifecycleOwner)
|
||||
actionViewModel.actionResultLiveData.removeObservers(viewLifecycleOwner)
|
||||
}
|
||||
|
||||
abstract fun onFailure()
|
||||
|
||||
@StringRes
|
||||
abstract fun getTextId(): Int
|
||||
|
||||
@LayoutRes
|
||||
override fun getLayoutId(): Int = R.layout.omnipod_common_wizard_action_page_fragment
|
||||
}
|
|
@ -4,7 +4,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
|
||||
abstract class InfoFragmentBase : WizardFragmentBase() {
|
||||
|
@ -15,9 +14,6 @@ abstract class InfoFragmentBase : WizardFragmentBase() {
|
|||
view.findViewById<TextView>(R.id.omnipod_wizard_info_page_text).setText(getTextId())
|
||||
}
|
||||
|
||||
@StringRes
|
||||
abstract fun getTextId(): Int
|
||||
|
||||
@LayoutRes
|
||||
override fun getLayoutId(): Int = R.layout.omnipod_common_wizard_info_page_fragment
|
||||
}
|
|
@ -13,10 +13,13 @@ import dagger.android.support.DaggerFragment
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonWizardBaseFragmentBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.activity.OmnipodWizardActivityBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
abstract class WizardFragmentBase : DaggerFragment() {
|
||||
|
||||
protected lateinit var viewModel: ViewModelBase
|
||||
|
||||
var _binding: OmnipodCommonWizardBaseFragmentBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
|
@ -84,7 +87,9 @@ abstract class WizardFragmentBase : DaggerFragment() {
|
|||
protected abstract fun getNextPageActionId(): Int?
|
||||
|
||||
@StringRes
|
||||
protected abstract fun getTitleId(): Int
|
||||
protected fun getTitleId(): Int = viewModel.getTitleId()
|
||||
|
||||
@StringRes protected fun getTextId(): Int = viewModel.getTextId()
|
||||
|
||||
protected abstract fun getIndex(): Int
|
||||
}
|
|
@ -2,12 +2,11 @@ package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.
|
|||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import io.reactivex.subjects.SingleSubject
|
||||
|
||||
abstract class ActionViewModelBase : ViewModel() {
|
||||
abstract class ActionViewModelBase : ViewModelBase() {
|
||||
|
||||
private val _isActionExecutingLiveData = MutableLiveData(false)
|
||||
val isActionExecutingLiveData: LiveData<Boolean> = _isActionExecutingLiveData
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
||||
abstract class ViewModelBase : ViewModel() {
|
||||
|
||||
@StringRes abstract fun getTitleId(): Int
|
||||
|
||||
@StringRes abstract fun getTextId(): Int
|
||||
}
|
|
@ -4,7 +4,7 @@ import android.os.Bundle
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.activity.OmnipodWizardActivityBase
|
||||
|
||||
class PodDeactivationWizardActivity : OmnipodWizardActivityBase() {
|
||||
abstract class PodDeactivationWizardActivity : OmnipodWizardActivityBase() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment
|
||||
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
|
||||
class DeactivatePodInfoFragment : InfoFragmentBase() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivate_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivate_pod_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_deactivatePodInfoFragment_to_deactivatePodActionFragment
|
||||
|
||||
override fun getIndex(): Int = 1
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment
|
||||
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
|
||||
class PodDeactivatedInfoFragment : InfoFragmentBase() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_deactivated_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_deactivated_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 3
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment
|
||||
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
|
||||
class PodDiscardedInfoFragment : InfoFragmentBase() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_discarded_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_discarded_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 3
|
||||
}
|
|
@ -1,10 +1,9 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.action
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
|
@ -12,10 +11,10 @@ import androidx.navigation.fragment.findNavController
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.ActionFragmentBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.DeactivatePodActionViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.action.DeactivatePodViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class DeactivatePodActionFragment : ActionFragmentBase() {
|
||||
class DeactivatePodFragment : ActionFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
|
@ -26,7 +25,7 @@ class DeactivatePodActionFragment : ActionFragmentBase() {
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: DeactivatePodActionViewModel by viewModels { viewModelFactory }
|
||||
val vm: DeactivatePodViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
|
@ -39,8 +38,8 @@ class DeactivatePodActionFragment : ActionFragmentBase() {
|
|||
.setTitle(getString(R.string.omnipod_common_pod_deactivation_wizard_discard_pod))
|
||||
.setMessage(getString(R.string.omnipod_common_pod_deactivation_wizard_discard_pod_confirmation))
|
||||
.setPositiveButton(getString(R.string.omnipod_common_yes)) { _, _ ->
|
||||
(viewModel as DeactivatePodActionViewModel).discardPod()
|
||||
findNavController().navigate(R.id.action_deactivatePodActionFragment_to_podDiscardedInfoFragment)
|
||||
(actionViewModel as DeactivatePodViewModel).discardPod()
|
||||
findNavController().navigate(R.id.action_deactivatePodFragment_to_podDiscardedFragment)
|
||||
}
|
||||
.setNegativeButton(getString(R.string.omnipod_common_no), null)
|
||||
.show()
|
||||
|
@ -52,14 +51,8 @@ class DeactivatePodActionFragment : ActionFragmentBase() {
|
|||
buttonDiscardPod.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivating_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivating_pod_text
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_deactivatePodActionFragment_to_podDeactivatedInfoFragment
|
||||
override fun getNextPageActionId(): Int = R.id.action_deactivatePodFragment_to_podDeactivatedFragment
|
||||
|
||||
override fun getIndex(): Int = 2
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDeactivatedViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class PodDeactivatedFragment : InfoFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: PodDeactivatedViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 3
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDiscardedViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class PodDiscardedFragment : InfoFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: PodDiscardedViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int? = null
|
||||
|
||||
override fun getIndex(): Int = 3
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.fragment.InfoFragmentBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.StartPodDeactivationViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
class StartPodDeactivationFragment : InfoFragmentBase() {
|
||||
|
||||
@Inject
|
||||
@OmnipodPluginQualifier
|
||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val vm: StartPodDeactivationViewModel by viewModels { viewModelFactory }
|
||||
this.viewModel = vm
|
||||
}
|
||||
|
||||
@IdRes
|
||||
override fun getNextPageActionId(): Int = R.id.action_startPodDeactivationFragment_to_deactivatePodFragment
|
||||
|
||||
override fun getIndex(): Int = 1
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.action
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ActionViewModelBase
|
||||
|
||||
abstract class DeactivatePodViewModel : ActionViewModelBase() {
|
||||
|
||||
abstract fun discardPod()
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class PodDeactivatedViewModel : ViewModelBase()
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class PodDiscardedViewModel : ViewModelBase()
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ViewModelBase
|
||||
|
||||
abstract class StartPodDeactivationViewModel : ViewModelBase()
|
|
@ -1,41 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
app:startDestination="@id/fillPodInfoFragment">
|
||||
app:startDestination="@id/startPodActivationFragment">
|
||||
<fragment
|
||||
android:id="@+id/fillPodInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.FillPodInfoFragment"
|
||||
android:label="FillPodInfoFragment">
|
||||
android:id="@+id/startPodActivationFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.StartPodActivationFragment"
|
||||
android:label="StartPodActivationFragment">
|
||||
<action
|
||||
android:id="@+id/action_fillPodInfoFragment_to_initializePodActionFragment"
|
||||
app:destination="@id/initializePodActionFragment" />
|
||||
android:id="@+id/action_startPodActivationFragment_to_initializePodFragment"
|
||||
app:destination="@id/initializePodFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/initializePodActionFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.InitializePodActionFragment"
|
||||
android:label="initializePodActionFragment">
|
||||
android:id="@+id/initializePodFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action.InitializePodFragment"
|
||||
android:label="InitializePodFragment">
|
||||
<action
|
||||
android:id="@+id/action_initializePodActionFragment_to_attachPodInfoFragment"
|
||||
app:destination="@id/attachPodInfoFragment" />
|
||||
android:id="@+id/action_initializePodFragment_to_attachPodFragment"
|
||||
app:destination="@id/attachPodFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/attachPodInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.AttachPodInfoFragment"
|
||||
android:label="AttachPodInfoFragment">
|
||||
android:id="@+id/attachPodFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.AttachPodFragment"
|
||||
android:label="AttachPodFragment">
|
||||
<action
|
||||
android:id="@+id/action_attachPodInfoFragment_to_insertCannulaActionFragment"
|
||||
app:destination="@id/insertCannulaActionFragment" />
|
||||
android:id="@+id/action_attachPodFragment_to_insertCannulaFragment"
|
||||
app:destination="@id/insertCannulaFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/insertCannulaActionFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.InsertCannulaActionFragment"
|
||||
android:label="InsertCannulaActionFragment">
|
||||
android:id="@+id/insertCannulaFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.action.InsertCannulaFragment"
|
||||
android:label="InsertCannulaFragment">
|
||||
<action
|
||||
android:id="@+id/action_insertCannulaActionFragment_to_PodActivatedInfoFragment"
|
||||
app:destination="@id/PodActivatedInfoFragment" />
|
||||
android:id="@+id/action_insertCannulaFragment_to_PodActivatedFragment"
|
||||
app:destination="@id/PodActivatedFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/PodActivatedInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.PodActivatedInfoFragment"
|
||||
android:label="PodActivatedInfoFragment" />
|
||||
android:id="@+id/PodActivatedFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.fragment.info.PodActivatedFragment"
|
||||
android:label="PodActivatedFragment" />
|
||||
</navigation>
|
|
@ -1,32 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
app:startDestination="@id/deactivatePodInfoFragment">
|
||||
app:startDestination="@id/startPodDeactivationFragment">
|
||||
<fragment
|
||||
android:id="@+id/deactivatePodInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.DeactivatePodInfoFragment"
|
||||
android:label="DeactivatePodInfoFragment">
|
||||
android:id="@+id/startPodDeactivationFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.StartPodDeactivationFragment"
|
||||
android:label="StartPodDeactivationFragment">
|
||||
<action
|
||||
android:id="@+id/action_deactivatePodInfoFragment_to_deactivatePodActionFragment"
|
||||
app:destination="@id/deactivatePodActionFragment" />
|
||||
android:id="@+id/action_startPodDeactivationFragment_to_deactivatePodFragment"
|
||||
app:destination="@id/deactivatePodFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/deactivatePodActionFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.DeactivatePodActionFragment"
|
||||
android:label="DeactivatePodActionFragment">
|
||||
android:id="@+id/deactivatePodFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.action.DeactivatePodFragment"
|
||||
android:label="DeactivatePodFragment">
|
||||
<action
|
||||
android:id="@+id/action_deactivatePodActionFragment_to_podDeactivatedInfoFragment"
|
||||
app:destination="@id/podDeactivatedInfoFragment" />
|
||||
android:id="@+id/action_deactivatePodFragment_to_podDeactivatedFragment"
|
||||
app:destination="@id/podDeactivatedFragment" />
|
||||
<action
|
||||
android:id="@+id/action_deactivatePodActionFragment_to_podDiscardedInfoFragment"
|
||||
app:destination="@id/podDiscardedInfoFragment" />
|
||||
android:id="@+id/action_deactivatePodFragment_to_podDiscardedFragment"
|
||||
app:destination="@id/podDiscardedFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/podDeactivatedInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.PodDeactivatedInfoFragment"
|
||||
android:label="PodDeactivatedInfoFragment" />
|
||||
android:id="@+id/podDeactivatedFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.PodDeactivatedFragment"
|
||||
android:label="PodDeactivatedFragment" />
|
||||
<fragment
|
||||
android:id="@+id/podDiscardedInfoFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.PodDiscardedInfoFragment"
|
||||
android:label="PodDiscardedInfoFragment" />
|
||||
android:id="@+id/podDiscardedFragment"
|
||||
android:name="info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.fragment.info.PodDiscardedFragment"
|
||||
android:label="PodDiscardedFragment" />
|
||||
</navigation>
|
|
@ -94,7 +94,7 @@
|
|||
<string name="omnipod_common_wizard_exit_confirmation_title">Exit</string>
|
||||
|
||||
<!-- Omnipod - Pod Activation Wizard -->
|
||||
<string name="omnipod_common_pod_activation_wizard_fill_pod_title">Fill Pod</string>
|
||||
<string name="omnipod_common_pod_activation_wizard_start_pod_activation_title">Fill Pod</string>
|
||||
<string name="omnipod_common_pod_activation_wizard_initialize_pod_title">Initialize Pod</string>
|
||||
<string name="omnipod_common_pod_activation_wizard_attach_pod_title">Attach Pod</string>
|
||||
<string name="omnipod_common_pod_activation_wizard_attach_pod_text">Prepare the infusion site. Remove the Pod\'s needle cap and adhesive backing and attach the Pod to the infusion site.\n\nIf the cannula sticks out, please press <b>Cancel</b> and discard your Pod.\n\nPress <b>Next</b> to insert the cannula and begin basal delivery.</string>
|
||||
|
@ -105,8 +105,8 @@
|
|||
<string name="omnipod_common_pod_activation_wizard_pod_activated_text">The new Pod is now active.\n\nYour basal schedule has been programmed and the cannula has been inserted.\n\nPlease verify that the cannula has been inserted correctly and change your Pod if you think it has not.</string>
|
||||
|
||||
<!-- Omnipod - Pod Deactivation Wizard -->
|
||||
<string name="omnipod_common_pod_deactivation_wizard_deactivate_pod_title">Deactivate Pod</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_deactivate_pod_text">Press <b>Next</b> to deactivate the Pod.\n\n<b>Note:</b> This will suspend all insulin delivery and deactivate the Pod.</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_start_pod_deactivation_title">Deactivate Pod</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_start_pod_deactivation_text">Press <b>Next</b> to deactivate the Pod.\n\n<b>Note:</b> This will suspend all insulin delivery and deactivate the Pod.</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_deactivating_pod_title">Deactivating Pod</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_deactivating_pod_text">Deactivating the Pod.\n\nWhen deactivation has completed successfully, you can press <b>Next</b>.</string>
|
||||
<string name="omnipod_common_pod_deactivation_wizard_pod_deactivated_title">Pod Deactivated</string>
|
||||
|
|
|
@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash;
|
|||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.Collections;
|
||||
|
@ -82,11 +83,11 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
|
||||
}
|
||||
|
||||
@Override public void connect(String reason) {
|
||||
@Override public void connect(@NotNull String reason) {
|
||||
|
||||
}
|
||||
|
||||
@Override public void disconnect(String reason) {
|
||||
@Override public void disconnect(@NotNull String reason) {
|
||||
|
||||
}
|
||||
|
||||
|
@ -94,15 +95,15 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
|
||||
}
|
||||
|
||||
@Override public void getPumpStatus(String reason) {
|
||||
@Override public void getPumpStatus(@NotNull String reason) {
|
||||
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult setNewBasalProfile(Profile profile) {
|
||||
@NotNull @Override public PumpEnactResult setNewBasalProfile(@NotNull Profile profile) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public boolean isThisProfileSet(Profile profile) {
|
||||
@Override public boolean isThisProfileSet(@NotNull Profile profile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -122,7 +123,7 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
|
||||
@NotNull @Override public PumpEnactResult deliverTreatment(@NotNull DetailedBolusInfo detailedBolusInfo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -130,47 +131,47 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult setTempBasalAbsolute(Double absoluteRate, Integer durationInMinutes, Profile profile, boolean enforceNew) {
|
||||
@NotNull @Override public PumpEnactResult setTempBasalAbsolute(double absoluteRate, int durationInMinutes, @NotNull Profile profile, boolean enforceNew) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
|
||||
@NotNull @Override public PumpEnactResult setTempBasalPercent(int percent, int durationInMinutes, @NotNull Profile profile, boolean enforceNew) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult setExtendedBolus(Double insulin, Integer durationInMinutes) {
|
||||
@NotNull @Override public PumpEnactResult setExtendedBolus(double insulin, int durationInMinutes) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult cancelTempBasal(boolean enforceNew) {
|
||||
@NotNull @Override public PumpEnactResult cancelTempBasal(boolean enforceNew) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult cancelExtendedBolus() {
|
||||
@NotNull @Override public PumpEnactResult cancelExtendedBolus() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
|
||||
@NotNull @Override public JSONObject getJSONStatus(@NotNull Profile profile, @NotNull String profileName, @NotNull String version) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public ManufacturerType manufacturer() {
|
||||
@NotNull @Override public ManufacturerType manufacturer() {
|
||||
return getPumpDescription().pumpType.getManufacturer();
|
||||
}
|
||||
|
||||
@Override public PumpType model() {
|
||||
@NotNull @Override public PumpType model() {
|
||||
return getPumpDescription().pumpType;
|
||||
}
|
||||
|
||||
@Override public String serialNumber() {
|
||||
@NotNull @Override public String serialNumber() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public PumpDescription getPumpDescription() {
|
||||
@NotNull @Override public PumpDescription getPumpDescription() {
|
||||
return PUMP_DESCRIPTION;
|
||||
}
|
||||
|
||||
@Override public String shortStatus(boolean veryShort) {
|
||||
@NotNull @Override public String shortStatus(boolean veryShort) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -178,7 +179,7 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override public PumpEnactResult loadTDDs() {
|
||||
@NotNull @Override public PumpEnactResult loadTDDs() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -192,15 +193,15 @@ public class OmnipodDashPumpPlugin extends PumpPluginBase implements PumpInterfa
|
|||
}
|
||||
|
||||
@Override
|
||||
public void executeCustomAction(CustomActionType customActionType) {
|
||||
aapsLogger.warn(LTag.PUMP, "Unknown custom action: " + customActionType);
|
||||
public void executeCustomAction(@NotNull CustomActionType customActionType) {
|
||||
aapsLogger.warn(LTag.PUMP, "Unsupported custom action: " + customActionType);
|
||||
}
|
||||
|
||||
@Nullable @Override public PumpEnactResult executeCustomCommand(CustomCommand customCommand) {
|
||||
@Nullable @Override public PumpEnactResult executeCustomCommand(@NotNull CustomCommand customCommand) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public void timezoneOrDSTChanged(TimeChangeType timeChangeType) {
|
||||
@Override public void timezoneOrDSTChanged(@NotNull TimeChangeType timeChangeType) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,16 +5,30 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import dagger.android.support.DaggerFragment
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonOverviewButtonsBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonOverviewPodInfoBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBluetoothStatusBinding
|
||||
|
||||
class OmnipodDashOverviewFragment : DaggerFragment() {
|
||||
|
||||
private var _binding: OmnipodDashOverviewBinding? = null
|
||||
var _binding: OmnipodDashOverviewBinding? = null
|
||||
var _bluetoothStatusBinding: OmnipodDashOverviewBluetoothStatusBinding? = null
|
||||
var _podInfoBinding: OmnipodCommonOverviewPodInfoBinding? = null
|
||||
var _buttonBinding: OmnipodCommonOverviewButtonsBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// These properties are only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
val binding get() = _binding!!
|
||||
val bluetoothStatusBinding get() = _bluetoothStatusBinding!!
|
||||
val podInfoBinding get() = _podInfoBinding!!
|
||||
val buttonBinding get() = _buttonBinding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
|
||||
OmnipodDashOverviewBinding.inflate(inflater, container!!).also { _binding = it }.root
|
||||
OmnipodDashOverviewBinding.inflate(inflater, container, false).also {
|
||||
_buttonBinding = OmnipodCommonOverviewButtonsBinding.bind(it.root)
|
||||
_podInfoBinding = OmnipodCommonOverviewPodInfoBinding.bind(it.root)
|
||||
_bluetoothStatusBinding = OmnipodDashOverviewBluetoothStatusBinding.bind(it.root)
|
||||
_binding = it
|
||||
}.root
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -24,13 +24,9 @@
|
|||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/list_delimiter" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bluetooth_status"
|
||||
layout="@layout/omnipod_dash_overview_bluetooth_status" />
|
||||
<include layout="@layout/omnipod_dash_overview_bluetooth_status" />
|
||||
|
||||
<include
|
||||
android:id="@+id/pod_info"
|
||||
layout="@layout/omnipod_common_overview_pod_info" />
|
||||
<include layout="@layout/omnipod_common_overview_pod_info" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -43,10 +39,8 @@
|
|||
android:layout_alignParentBottom="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<include
|
||||
android:id="@+id/buttons"
|
||||
layout="@layout/omnipod_common_overview_buttons" />
|
||||
<include layout="@layout/omnipod_common_overview_buttons" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</merge>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
<activity android:name=".ui.wizard.activation.ErosPodActivationWizardActivity" />
|
||||
<activity android:name=".ui.wizard.deactivation.ErosPodDeactivationWizardActivity" />
|
||||
<activity android:name=".ui.ErosPodManagementActivity" />
|
||||
<activity android:name=".ui.ErosPodHistoryActivity" />
|
||||
</application>
|
||||
|
|
|
@ -3,27 +3,40 @@ package info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger
|
|||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.ActivityScope
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.data.RLHistoryItemOmnipod
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsErosPodStateManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.rileylink.manager.OmnipodRileyLinkCommunicationManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.ErosPodHistoryActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.ErosPodManagementActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.ErosPodActivationWizardActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.ErosPodDeactivationWizardActivity
|
||||
|
||||
@Module
|
||||
@Suppress("unused")
|
||||
abstract class OmnipodErosModule {
|
||||
|
||||
// Activities
|
||||
// ACTIVITIES
|
||||
@ActivityScope
|
||||
@ContributesAndroidInjector(modules = [OmnipodErosWizardModule::class])
|
||||
abstract fun contributesActivationWizardActivity(): ErosPodActivationWizardActivity
|
||||
|
||||
@ActivityScope
|
||||
@ContributesAndroidInjector(modules = [OmnipodErosWizardModule::class])
|
||||
abstract fun contributesDeactivationWizardActivity(): ErosPodDeactivationWizardActivity
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesPodManagementActivity(): ErosPodManagementActivity
|
||||
@ContributesAndroidInjector abstract fun contributesPodHistoryActivity(): ErosPodHistoryActivity
|
||||
|
||||
// Service
|
||||
// SERVICES
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun omnipodCommunicationManagerProvider(): OmnipodRileyLinkCommunicationManager
|
||||
|
||||
// Data
|
||||
// DATA
|
||||
|
||||
@ContributesAndroidInjector abstract fun rlHistoryItemOmnipod(): RLHistoryItemOmnipod
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.OmnipodPluginQualifier
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.dagger.ViewModelKey
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InitializePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InsertCannulaViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.AttachPodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.PodActivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.action.DeactivatePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDeactivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDiscardedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.StartPodDeactivationViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.action.ErosInitializePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.action.ErosInsertCannulaViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info.ErosAttachPodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info.ErosPodActivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info.ErosStartPodActivationViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.action.ErosDeactivatePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info.ErosPodDeactivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info.ErosPodDiscardedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info.ErosStartPodDeactivationViewModel
|
||||
|
||||
@Module
|
||||
@Suppress("unused")
|
||||
abstract class OmnipodErosWizardModule {
|
||||
// #### VIEW MODELS ############################################################################
|
||||
|
||||
// POD ACTIVATION
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(ErosStartPodActivationViewModel::class)
|
||||
internal abstract fun startPodActivationViewModel(viewModel: ErosStartPodActivationViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(InitializePodViewModel::class)
|
||||
internal abstract fun initializePodViewModel(viewModel: ErosInitializePodViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(AttachPodViewModel::class)
|
||||
internal abstract fun attachPodViewModel(viewModel: ErosAttachPodViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(InsertCannulaViewModel::class)
|
||||
internal abstract fun insertCannulaViewModel(viewModel: ErosInsertCannulaViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(PodActivatedViewModel::class)
|
||||
internal abstract fun podActivatedViewModel(viewModel: ErosPodActivatedViewModel): ViewModel
|
||||
|
||||
// POD DEACTIVATION
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(StartPodDeactivationViewModel::class)
|
||||
internal abstract fun startPodDeactivationViewModel(viewModel: ErosStartPodDeactivationViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(DeactivatePodViewModel::class)
|
||||
internal abstract fun deactivatePodViewModel(viewModel: ErosDeactivatePodViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(PodDeactivatedViewModel::class)
|
||||
internal abstract fun podDeactivatedViewModel(viewModel: ErosPodDeactivatedViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@OmnipodPluginQualifier
|
||||
@ViewModelKey(PodDiscardedViewModel::class)
|
||||
internal abstract fun podDiscardedViewModel(viewModel: ErosPodDiscardedViewModel): ViewModel
|
||||
}
|
|
@ -132,7 +132,7 @@ public class ErosPodHistoryActivity extends NoSplashAppCompatActivity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.omnipod_pod_history_activity);
|
||||
setContentView(R.layout.omnipod_eros_pod_history_activity);
|
||||
|
||||
historyTypeSpinner = findViewById(R.id.omnipod_historytype);
|
||||
statusView = findViewById(R.id.omnipod_historystatus);
|
||||
|
@ -223,7 +223,7 @@ public class ErosPodHistoryActivity extends NoSplashAppCompatActivity {
|
|||
@NotNull
|
||||
@Override
|
||||
public HistoryViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
|
||||
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.omnipod_pod_history_item, //
|
||||
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.omnipod_eros_pod_history_item, //
|
||||
viewGroup, false);
|
||||
return new HistoryViewHolder(v);
|
||||
}
|
||||
|
|
|
@ -15,15 +15,16 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
|||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandPlayTestBeep
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.PodActivationWizardActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodPodManagementBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodErosPodManagementBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.manager.PodStateManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.event.EventOmnipodErosPumpValuesChanged
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodErosManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.queue.command.CommandReadPulseLog
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.ErosPodActivationWizardActivity
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.ErosPodDeactivationWizardActivity
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.queue.events.EventQueueChanged
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
|
@ -54,12 +55,12 @@ class ErosPodManagementActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
private var disposables: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
private lateinit var binding: OmnipodPodManagementBinding
|
||||
private lateinit var binding: OmnipodErosPodManagementBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
binding = OmnipodPodManagementBinding.inflate(layoutInflater)
|
||||
binding = OmnipodErosPodManagementBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
binding.buttonActivatePod.setOnClickListener {
|
||||
|
@ -70,13 +71,13 @@ class ErosPodManagementActivity : NoSplashAppCompatActivity() {
|
|||
PodActivationWizardActivity.Type.LONG
|
||||
}
|
||||
|
||||
val intent = Intent(this, PodActivationWizardActivity::class.java)
|
||||
val intent = Intent(this, ErosPodActivationWizardActivity::class.java)
|
||||
intent.putExtra(PodActivationWizardActivity.KEY_TYPE, type)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
binding.buttonDeactivatePod.setOnClickListener {
|
||||
startActivity(Intent(this, PodDeactivationWizardActivity::class.java))
|
||||
startActivity(Intent(this, ErosPodDeactivationWizardActivity::class.java))
|
||||
}
|
||||
|
||||
binding.buttonDiscardPod.setOnClickListener {
|
||||
|
|
|
@ -22,6 +22,8 @@ import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDevic
|
|||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonOverviewButtonsBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonOverviewPodInfoBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandAcknowledgeAlerts
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandHandleTimeChange
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandResumeDelivery
|
||||
|
@ -29,6 +31,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.Comm
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodErosOverviewBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.databinding.OmnipodErosOverviewRileyLinkStatusBinding
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.OmnipodConstants
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.PodProgressStatus
|
||||
|
@ -94,20 +97,29 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
var _binding: OmnipodErosOverviewBinding? = null
|
||||
var _rileyLinkStatusBinding: OmnipodErosOverviewRileyLinkStatusBinding? = null
|
||||
var _podInfoBinding: OmnipodCommonOverviewPodInfoBinding? = null
|
||||
var _buttonBinding: OmnipodCommonOverviewButtonsBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// These properties are only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
val binding get() = _binding!!
|
||||
val rileyLinkStatusBinding get() = _rileyLinkStatusBinding!!
|
||||
val podInfoBinding get() = _podInfoBinding!!
|
||||
val buttonBinding get() = _buttonBinding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
|
||||
OmnipodErosOverviewBinding.inflate(inflater, container!!).also {
|
||||
OmnipodErosOverviewBinding.inflate(inflater, container, false).also {
|
||||
_buttonBinding = OmnipodCommonOverviewButtonsBinding.bind(it.root)
|
||||
_podInfoBinding = OmnipodCommonOverviewPodInfoBinding.bind(it.root)
|
||||
_rileyLinkStatusBinding = OmnipodErosOverviewRileyLinkStatusBinding.bind(it.root)
|
||||
_binding = it
|
||||
}.root
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
binding.buttons.buttonPodManagement.setOnClickListener {
|
||||
buttonBinding.buttonPodManagement.setOnClickListener {
|
||||
if (omnipodErosPumpPlugin.rileyLinkService?.verifyConfiguration() == true) {
|
||||
activity?.let { activity ->
|
||||
context?.let { context ->
|
||||
|
@ -122,19 +134,19 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
binding.buttons.buttonResumeDelivery.setOnClickListener {
|
||||
buttonBinding.buttonResumeDelivery.setOnClickListener {
|
||||
disablePodActionButtons()
|
||||
commandQueue.customCommand(CommandResumeDelivery(),
|
||||
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_resume_delivery), true).messageOnSuccess(resourceHelper.gs(R.string.omnipod_common_confirmation_delivery_resumed)))
|
||||
}
|
||||
|
||||
binding.buttons.buttonRefreshStatus.setOnClickListener {
|
||||
buttonBinding.buttonRefreshStatus.setOnClickListener {
|
||||
disablePodActionButtons()
|
||||
commandQueue.customCommand(CommandGetPodStatus(),
|
||||
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_refresh_status), false))
|
||||
}
|
||||
|
||||
binding.buttons.buttonSilenceAlerts.setOnClickListener {
|
||||
buttonBinding.buttonSilenceAlerts.setOnClickListener {
|
||||
disablePodActionButtons()
|
||||
commandQueue.customCommand(CommandAcknowledgeAlerts(),
|
||||
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_silence_alerts), false)
|
||||
|
@ -142,14 +154,14 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
.actionOnSuccess { rxBus.send(EventDismissNotification(Notification.OMNIPOD_POD_ALERTS)) })
|
||||
}
|
||||
|
||||
binding.buttons.buttonSuspendDelivery.setOnClickListener {
|
||||
buttonBinding.buttonSuspendDelivery.setOnClickListener {
|
||||
disablePodActionButtons()
|
||||
commandQueue.customCommand(CommandSuspendDelivery(),
|
||||
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_suspend_delivery), true)
|
||||
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_common_confirmation_suspended_delivery)))
|
||||
}
|
||||
|
||||
binding.buttons.buttonSetTime.setOnClickListener {
|
||||
buttonBinding.buttonSetTime.setOnClickListener {
|
||||
disablePodActionButtons()
|
||||
commandQueue.customCommand(CommandHandleTimeChange(true),
|
||||
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_set_time), true)
|
||||
|
@ -216,7 +228,7 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
val resourceId = rileyLinkServiceState.resourceId
|
||||
val rileyLinkError = rileyLinkServiceData.rileyLinkError
|
||||
|
||||
binding.rileyLink.rileyLinkStatus.text =
|
||||
rileyLinkStatusBinding.rileyLinkStatus.text =
|
||||
when {
|
||||
rileyLinkServiceState == RileyLinkServiceState.NotStarted -> resourceHelper.gs(resourceId)
|
||||
rileyLinkServiceState.isConnecting -> "{fa-bluetooth-b spin} " + resourceHelper.gs(resourceId)
|
||||
|
@ -224,7 +236,7 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
rileyLinkServiceState.isError && rileyLinkError != null -> "{fa-bluetooth-b} " + resourceHelper.gs(rileyLinkError.getResourceId(RileyLinkTargetDevice.Omnipod))
|
||||
else -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
|
||||
}
|
||||
binding.rileyLink.rileyLinkStatus.setTextColor(if (rileyLinkServiceState.isError || rileyLinkError != null) Color.RED else Color.WHITE)
|
||||
rileyLinkStatusBinding.rileyLinkStatus.setTextColor(if (rileyLinkServiceState.isError || rileyLinkError != null) Color.RED else Color.WHITE)
|
||||
}
|
||||
|
||||
private fun updateOmnipodStatus() {
|
||||
|
@ -242,41 +254,41 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
if (!podStateManager.hasPodState() || !podStateManager.isPodInitialized) {
|
||||
binding.podInfo.podAddress.text = if (podStateManager.hasPodState()) {
|
||||
podInfoBinding.podAddress.text = if (podStateManager.hasPodState()) {
|
||||
podStateManager.address.toString()
|
||||
} else {
|
||||
PLACEHOLDER
|
||||
}
|
||||
binding.podInfo.podLot.text = PLACEHOLDER
|
||||
binding.podInfo.podTid.text = PLACEHOLDER
|
||||
binding.podInfo.firmwareVersion.text = PLACEHOLDER
|
||||
binding.podInfo.timeOnPod.text = PLACEHOLDER
|
||||
binding.podInfo.podExpiryDate.text = PLACEHOLDER
|
||||
binding.podInfo.podExpiryDate.setTextColor(Color.WHITE)
|
||||
binding.podInfo.baseBasalRate.text = PLACEHOLDER
|
||||
binding.podInfo.totalDelivered.text = PLACEHOLDER
|
||||
binding.podInfo.reservoir.text = PLACEHOLDER
|
||||
binding.podInfo.reservoir.setTextColor(Color.WHITE)
|
||||
binding.podInfo.podActiveAlerts.text = PLACEHOLDER
|
||||
podInfoBinding.podLot.text = PLACEHOLDER
|
||||
podInfoBinding.podTid.text = PLACEHOLDER
|
||||
podInfoBinding.firmwareVersion.text = PLACEHOLDER
|
||||
podInfoBinding.timeOnPod.text = PLACEHOLDER
|
||||
podInfoBinding.podExpiryDate.text = PLACEHOLDER
|
||||
podInfoBinding.podExpiryDate.setTextColor(Color.WHITE)
|
||||
podInfoBinding.baseBasalRate.text = PLACEHOLDER
|
||||
podInfoBinding.totalDelivered.text = PLACEHOLDER
|
||||
podInfoBinding.reservoir.text = PLACEHOLDER
|
||||
podInfoBinding.reservoir.setTextColor(Color.WHITE)
|
||||
podInfoBinding.podActiveAlerts.text = PLACEHOLDER
|
||||
} else {
|
||||
binding.podInfo.podAddress.text = podStateManager.address.toString()
|
||||
binding.podInfo.podLot.text = podStateManager.lot.toString()
|
||||
binding.podInfo.podTid.text = podStateManager.tid.toString()
|
||||
binding.podInfo.firmwareVersion.text = resourceHelper.gs(R.string.omnipod_eros_overview_firmware_version_value, podStateManager.pmVersion.toString(), podStateManager.piVersion.toString())
|
||||
podInfoBinding.podAddress.text = podStateManager.address.toString()
|
||||
podInfoBinding.podLot.text = podStateManager.lot.toString()
|
||||
podInfoBinding.podTid.text = podStateManager.tid.toString()
|
||||
podInfoBinding.firmwareVersion.text = resourceHelper.gs(R.string.omnipod_eros_overview_firmware_version_value, podStateManager.pmVersion.toString(), podStateManager.piVersion.toString())
|
||||
|
||||
binding.podInfo.timeOnPod.text = readableZonedTime(podStateManager.time)
|
||||
binding.podInfo.timeOnPod.setTextColor(if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) {
|
||||
podInfoBinding.timeOnPod.text = readableZonedTime(podStateManager.time)
|
||||
podInfoBinding.timeOnPod.setTextColor(if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) {
|
||||
Color.RED
|
||||
} else {
|
||||
Color.WHITE
|
||||
})
|
||||
val expiresAt = podStateManager.expiresAt
|
||||
if (expiresAt == null) {
|
||||
binding.podInfo.podExpiryDate.text = PLACEHOLDER
|
||||
binding.podInfo.podExpiryDate.setTextColor(Color.WHITE)
|
||||
podInfoBinding.podExpiryDate.text = PLACEHOLDER
|
||||
podInfoBinding.podExpiryDate.setTextColor(Color.WHITE)
|
||||
} else {
|
||||
binding.podInfo.podExpiryDate.text = readableZonedTime(expiresAt)
|
||||
binding.podInfo.podExpiryDate.setTextColor(if (DateTime.now().isAfter(expiresAt)) {
|
||||
podInfoBinding.podExpiryDate.text = readableZonedTime(expiresAt)
|
||||
podInfoBinding.podExpiryDate.setTextColor(if (DateTime.now().isAfter(expiresAt)) {
|
||||
Color.RED
|
||||
} else {
|
||||
Color.WHITE
|
||||
|
@ -289,14 +301,14 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
// base basal rate
|
||||
binding.podInfo.baseBasalRate.text = if (podStateManager.isPodActivationCompleted) {
|
||||
podInfoBinding.baseBasalRate.text = if (podStateManager.isPodActivationCompleted) {
|
||||
resourceHelper.gs(R.string.pump_basebasalrate, omnipodErosPumpPlugin.model().determineCorrectBasalSize(podStateManager.basalSchedule.rateAt(TimeUtil.toDuration(DateTime.now()))))
|
||||
} else {
|
||||
PLACEHOLDER
|
||||
}
|
||||
|
||||
// total delivered
|
||||
binding.podInfo.totalDelivered.text = if (podStateManager.isPodActivationCompleted && podStateManager.totalInsulinDelivered != null) {
|
||||
podInfoBinding.totalDelivered.text = if (podStateManager.isPodActivationCompleted && podStateManager.totalInsulinDelivered != null) {
|
||||
resourceHelper.gs(R.string.omnipod_common_overview_total_delivered_value, podStateManager.totalInsulinDelivered - OmnipodConstants.POD_SETUP_UNITS)
|
||||
} else {
|
||||
PLACEHOLDER
|
||||
|
@ -304,21 +316,21 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
|
||||
// reservoir
|
||||
if (podStateManager.reservoirLevel == null) {
|
||||
binding.podInfo.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value_over50)
|
||||
binding.podInfo.reservoir.setTextColor(Color.WHITE)
|
||||
podInfoBinding.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value_over50)
|
||||
podInfoBinding.reservoir.setTextColor(Color.WHITE)
|
||||
} else {
|
||||
val lowReservoirThreshold = (omnipodAlertUtil.lowReservoirAlertUnits
|
||||
?: OmnipodConstants.DEFAULT_MAX_RESERVOIR_ALERT_THRESHOLD).toDouble()
|
||||
|
||||
binding.podInfo.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value, podStateManager.reservoirLevel)
|
||||
binding.podInfo.reservoir.setTextColor(if (podStateManager.reservoirLevel < lowReservoirThreshold) {
|
||||
podInfoBinding.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value, podStateManager.reservoirLevel)
|
||||
podInfoBinding.reservoir.setTextColor(if (podStateManager.reservoirLevel < lowReservoirThreshold) {
|
||||
Color.RED
|
||||
} else {
|
||||
Color.WHITE
|
||||
})
|
||||
}
|
||||
|
||||
binding.podInfo.podActiveAlerts.text = if (podStateManager.hasActiveAlerts()) {
|
||||
podInfoBinding.podActiveAlerts.text = if (podStateManager.hasActiveAlerts()) {
|
||||
TextUtils.join(System.lineSeparator(), omnipodUtil.getTranslatedActiveAlerts(podStateManager))
|
||||
} else {
|
||||
PLACEHOLDER
|
||||
|
@ -326,27 +338,27 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
if (errors.size == 0) {
|
||||
binding.podInfo.errors.text = PLACEHOLDER
|
||||
binding.podInfo.errors.setTextColor(Color.WHITE)
|
||||
podInfoBinding.errors.text = PLACEHOLDER
|
||||
podInfoBinding.errors.setTextColor(Color.WHITE)
|
||||
} else {
|
||||
binding.podInfo.errors.text = StringUtils.join(errors, System.lineSeparator())
|
||||
binding.podInfo.errors.setTextColor(Color.RED)
|
||||
podInfoBinding.errors.text = StringUtils.join(errors, System.lineSeparator())
|
||||
podInfoBinding.errors.setTextColor(Color.RED)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateLastConnection() {
|
||||
if (podStateManager.isPodInitialized && podStateManager.lastSuccessfulCommunication != null) {
|
||||
binding.podInfo.lastConnection.text = readableDuration(podStateManager.lastSuccessfulCommunication)
|
||||
podInfoBinding.lastConnection.text = readableDuration(podStateManager.lastSuccessfulCommunication)
|
||||
val lastConnectionColor =
|
||||
if (omnipodErosPumpPlugin.isUnreachableAlertTimeoutExceeded(getPumpUnreachableTimeout().millis)) {
|
||||
Color.RED
|
||||
} else {
|
||||
Color.WHITE
|
||||
}
|
||||
binding.podInfo.lastConnection.setTextColor(lastConnectionColor)
|
||||
podInfoBinding.lastConnection.setTextColor(lastConnectionColor)
|
||||
} else {
|
||||
binding.podInfo.lastConnection.setTextColor(Color.WHITE)
|
||||
binding.podInfo.lastConnection.text = if (podStateManager.hasPodState() && podStateManager.lastSuccessfulCommunication != null) {
|
||||
podInfoBinding.lastConnection.setTextColor(Color.WHITE)
|
||||
podInfoBinding.lastConnection.text = if (podStateManager.hasPodState() && podStateManager.lastSuccessfulCommunication != null) {
|
||||
readableDuration(podStateManager.lastSuccessfulCommunication)
|
||||
} else {
|
||||
PLACEHOLDER
|
||||
|
@ -355,7 +367,7 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private fun updatePodStatus() {
|
||||
binding.podInfo.podStatus.text = if (!podStateManager.hasPodState()) {
|
||||
podInfoBinding.podStatus.text = if (!podStateManager.hasPodState()) {
|
||||
resourceHelper.gs(R.string.omnipod_common_pod_status_no_active_pod)
|
||||
} else if (!podStateManager.isPodActivationCompleted) {
|
||||
if (!podStateManager.isPodInitialized) {
|
||||
|
@ -394,7 +406,7 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
} else {
|
||||
Color.WHITE
|
||||
}
|
||||
binding.podInfo.podStatus.setTextColor(podStatusColor)
|
||||
podInfoBinding.podStatus.setTextColor(podStatusColor)
|
||||
}
|
||||
|
||||
private fun updateLastBolus() {
|
||||
|
@ -409,20 +421,20 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
text += " (" + resourceHelper.gs(R.string.omnipod_eros_uncertain) + ")"
|
||||
}
|
||||
|
||||
binding.podInfo.lastBolus.text = text
|
||||
binding.podInfo.lastBolus.setTextColor(textColor)
|
||||
podInfoBinding.lastBolus.text = text
|
||||
podInfoBinding.lastBolus.setTextColor(textColor)
|
||||
|
||||
} else {
|
||||
binding.podInfo.lastBolus.text = PLACEHOLDER
|
||||
binding.podInfo.lastBolus.setTextColor(Color.WHITE)
|
||||
podInfoBinding.lastBolus.text = PLACEHOLDER
|
||||
podInfoBinding.lastBolus.setTextColor(Color.WHITE)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateTempBasal() {
|
||||
if (podStateManager.isPodActivationCompleted && podStateManager.isTempBasalRunning) {
|
||||
if (!podStateManager.hasTempBasal()) {
|
||||
binding.podInfo.tempBasal.text = "???"
|
||||
binding.podInfo.tempBasal.setTextColor(Color.RED)
|
||||
podInfoBinding.tempBasal.text = "???"
|
||||
podInfoBinding.tempBasal.setTextColor(Color.RED)
|
||||
} else {
|
||||
val now = DateTime.now()
|
||||
|
||||
|
@ -442,8 +454,8 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
text += " (" + resourceHelper.gs(R.string.omnipod_eros_uncertain) + ")"
|
||||
}
|
||||
|
||||
binding.podInfo.tempBasal.text = text
|
||||
binding.podInfo.tempBasal.setTextColor(textColor)
|
||||
podInfoBinding.tempBasal.text = text
|
||||
podInfoBinding.tempBasal.setTextColor(textColor)
|
||||
}
|
||||
} else {
|
||||
var text = PLACEHOLDER
|
||||
|
@ -456,17 +468,17 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
text += " (" + resourceHelper.gs(R.string.omnipod_eros_uncertain) + ")"
|
||||
}
|
||||
|
||||
binding.podInfo.tempBasal.text = text
|
||||
binding.podInfo.tempBasal.setTextColor(textColor)
|
||||
podInfoBinding.tempBasal.text = text
|
||||
podInfoBinding.tempBasal.setTextColor(textColor)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateQueueStatus() {
|
||||
if (isQueueEmpty()) {
|
||||
binding.podInfo.queue.visibility = View.GONE
|
||||
podInfoBinding.queue.visibility = View.GONE
|
||||
} else {
|
||||
binding.podInfo.queue.visibility = View.VISIBLE
|
||||
binding.podInfo.queue.text = commandQueue.spannedStatus().toString()
|
||||
podInfoBinding.queue.visibility = View.VISIBLE
|
||||
podInfoBinding.queue.text = commandQueue.spannedStatus().toString()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -479,52 +491,52 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private fun disablePodActionButtons() {
|
||||
binding.buttons.buttonSilenceAlerts.isEnabled = false
|
||||
binding.buttons.buttonResumeDelivery.isEnabled = false
|
||||
binding.buttons.buttonSuspendDelivery.isEnabled = false
|
||||
binding.buttons.buttonSetTime.isEnabled = false
|
||||
binding.buttons.buttonRefreshStatus.isEnabled = false
|
||||
buttonBinding.buttonSilenceAlerts.isEnabled = false
|
||||
buttonBinding.buttonResumeDelivery.isEnabled = false
|
||||
buttonBinding.buttonSuspendDelivery.isEnabled = false
|
||||
buttonBinding.buttonSetTime.isEnabled = false
|
||||
buttonBinding.buttonRefreshStatus.isEnabled = false
|
||||
}
|
||||
|
||||
private fun updateRefreshStatusButton() {
|
||||
binding.buttons.buttonRefreshStatus.isEnabled = podStateManager.isPodInitialized && podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
buttonBinding.buttonRefreshStatus.isEnabled = podStateManager.isPodInitialized && podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
&& rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
}
|
||||
|
||||
private fun updateResumeDeliveryButton() {
|
||||
if (podStateManager.isPodRunning && (podStateManager.isSuspended || commandQueue.isCustomCommandInQueue(CommandResumeDelivery::class.java))) {
|
||||
binding.buttons.buttonResumeDelivery.visibility = View.VISIBLE
|
||||
binding.buttons.buttonResumeDelivery.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
buttonBinding.buttonResumeDelivery.visibility = View.VISIBLE
|
||||
buttonBinding.buttonResumeDelivery.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
} else {
|
||||
binding.buttons.buttonResumeDelivery.visibility = View.GONE
|
||||
buttonBinding.buttonResumeDelivery.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSilenceAlertsButton() {
|
||||
if (!omnipodManager.isAutomaticallyAcknowledgeAlertsEnabled && podStateManager.isPodRunning && (podStateManager.hasActiveAlerts() || commandQueue.isCustomCommandInQueue(CommandAcknowledgeAlerts::class.java))) {
|
||||
binding.buttons.buttonSilenceAlerts.visibility = View.VISIBLE
|
||||
binding.buttons.buttonSilenceAlerts.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
buttonBinding.buttonSilenceAlerts.visibility = View.VISIBLE
|
||||
buttonBinding.buttonSilenceAlerts.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
} else {
|
||||
binding.buttons.buttonSilenceAlerts.visibility = View.GONE
|
||||
buttonBinding.buttonSilenceAlerts.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSuspendDeliveryButton() {
|
||||
// If the Pod is currently suspended, we show the Resume delivery button instead.
|
||||
if (omnipodManager.isSuspendDeliveryButtonEnabled && podStateManager.isPodRunning && (!podStateManager.isSuspended || commandQueue.isCustomCommandInQueue(CommandSuspendDelivery::class.java))) {
|
||||
binding.buttons.buttonSuspendDelivery.visibility = View.VISIBLE
|
||||
binding.buttons.buttonSuspendDelivery.isEnabled = podStateManager.isPodRunning && !podStateManager.isSuspended && rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
buttonBinding.buttonSuspendDelivery.visibility = View.VISIBLE
|
||||
buttonBinding.buttonSuspendDelivery.isEnabled = podStateManager.isPodRunning && !podStateManager.isSuspended && rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
} else {
|
||||
binding.buttons.buttonSuspendDelivery.visibility = View.GONE
|
||||
buttonBinding.buttonSuspendDelivery.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSetTimeButton() {
|
||||
if (podStateManager.isPodRunning && (podStateManager.timeDeviatesMoreThan(Duration.standardMinutes(5)) || commandQueue.isCustomCommandInQueue(CommandHandleTimeChange::class.java))) {
|
||||
binding.buttons.buttonSetTime.visibility = View.VISIBLE
|
||||
binding.buttons.buttonSetTime.isEnabled = !podStateManager.isSuspended && rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
buttonBinding.buttonSetTime.visibility = View.VISIBLE
|
||||
buttonBinding.buttonSetTime.isEnabled = !podStateManager.isSuspended && rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||
} else {
|
||||
binding.buttons.buttonSetTime.visibility = View.GONE
|
||||
buttonBinding.buttonSetTime.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.PodActivationWizardActivity
|
||||
|
||||
class ErosPodActivationWizardActivity : PodActivationWizardActivity()
|
|
@ -0,0 +1,27 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.action
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InitializePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsErosPodStateManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodErosManager
|
||||
import javax.inject.Inject
|
||||
|
||||
class ErosInitializePodViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodErosManager, private val podStateManager: AapsErosPodStateManager) : InitializePodViewModel() {
|
||||
|
||||
override fun isPodInAlarm(): Boolean = podStateManager.isPodFaulted
|
||||
|
||||
override fun isPodActivationTimeExceeded(): Boolean = podStateManager.isPodActivationTimeExceeded
|
||||
|
||||
override fun isPodDeactivatable(): Boolean = podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
|
||||
override fun doExecuteAction(): PumpEnactResult = aapsOmnipodManager.initializePod()
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_initialize_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_eros_pod_activation_wizard_initialize_pod_text
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.action
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.action.InsertCannulaViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.driver.definition.ActivationProgress
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsErosPodStateManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodErosManager
|
||||
import javax.inject.Inject
|
||||
|
||||
class ErosInsertCannulaViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodErosManager, private val podStateManager: AapsErosPodStateManager, private val profileFunction: ProfileFunction) : InsertCannulaViewModel() {
|
||||
|
||||
override fun isPodInAlarm(): Boolean = podStateManager.isPodFaulted
|
||||
|
||||
override fun isPodActivationTimeExceeded(): Boolean = podStateManager.isPodActivationTimeExceeded
|
||||
|
||||
override fun isPodDeactivatable(): Boolean = podStateManager.activationProgress.isAtLeast(ActivationProgress.PAIRING_COMPLETED)
|
||||
|
||||
override fun doExecuteAction(): PumpEnactResult = aapsOmnipodManager.insertCannula(profileFunction.getProfile())
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_insert_cannula_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_activation_wizard_insert_cannula_text
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.AttachPodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosAttachPodViewModel : AttachPodViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_attach_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_activation_wizard_attach_pod_text
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.PodActivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosPodActivatedViewModel : PodActivatedViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_pod_activated_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_activation_wizard_pod_activated_text
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.activation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.activation.viewmodel.info.StartPodActivationViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosStartPodActivationViewModel : StartPodActivationViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_activation_wizard_start_pod_activation_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_eros_pod_activation_wizard_start_pod_activation_text
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity
|
||||
|
||||
class ErosPodDeactivationWizardActivity : PodDeactivationWizardActivity()
|
|
@ -1,15 +1,17 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel
|
||||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.action
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.R
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandDeactivatePod
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.viewmodel.ActionViewModelBase
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodManager
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.action.DeactivatePodViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.manager.AapsOmnipodErosManager
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import io.reactivex.subjects.SingleSubject
|
||||
import javax.inject.Inject
|
||||
|
||||
class DeactivatePodActionViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodManager, private val commandQueueProvider: CommandQueueProvider) : ActionViewModelBase() {
|
||||
class ErosDeactivatePodViewModel @Inject constructor(private val aapsOmnipodManager: AapsOmnipodErosManager, private val commandQueueProvider: CommandQueueProvider) : DeactivatePodViewModel() {
|
||||
|
||||
override fun doExecuteAction(): PumpEnactResult {
|
||||
val singleSubject = SingleSubject.create<PumpEnactResult>()
|
||||
|
@ -21,7 +23,13 @@ class DeactivatePodActionViewModel @Inject constructor(private val aapsOmnipodMa
|
|||
return singleSubject.blockingGet()
|
||||
}
|
||||
|
||||
fun discardPod() {
|
||||
override fun discardPod() {
|
||||
aapsOmnipodManager.discardPodState()
|
||||
}
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivating_pod_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId(): Int = R.string.omnipod_common_pod_deactivation_wizard_deactivating_pod_text
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDeactivatedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosPodDeactivatedViewModel : PodDeactivatedViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_deactivated_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_deactivation_wizard_pod_deactivated_text
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.PodDiscardedViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosPodDiscardedViewModel : PodDiscardedViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_pod_discarded_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_deactivation_wizard_pod_discarded_text
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package info.nightscout.androidaps.plugins.pump.omnipod.eros.ui.wizard.deactivation.viewmodel.info
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.viewmodel.info.StartPodDeactivationViewModel
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.R
|
||||
|
||||
class ErosStartPodDeactivationViewModel : StartPodDeactivationViewModel() {
|
||||
|
||||
@StringRes
|
||||
override fun getTitleId(): Int = R.string.omnipod_common_pod_deactivation_wizard_start_pod_deactivation_title
|
||||
|
||||
@StringRes
|
||||
override fun getTextId() = R.string.omnipod_common_pod_deactivation_wizard_start_pod_deactivation_text
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -24,13 +24,9 @@
|
|||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/list_delimiter" />
|
||||
|
||||
<include
|
||||
android:id="@+id/riley_link"
|
||||
layout="@layout/omnipod_eros_overview_riley_link_status" />
|
||||
<include layout="@layout/omnipod_eros_overview_riley_link_status" />
|
||||
|
||||
<include
|
||||
android:id="@+id/pod_info"
|
||||
layout="@layout/omnipod_common_overview_pod_info" />
|
||||
<include layout="@layout/omnipod_common_overview_pod_info" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -43,10 +39,8 @@
|
|||
android:layout_alignParentBottom="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<include
|
||||
android:id="@+id/buttons"
|
||||
layout="@layout/omnipod_common_overview_buttons" />
|
||||
<include layout="@layout/omnipod_common_overview_buttons" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</merge>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -2,39 +2,39 @@
|
|||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:gravity="end"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:layout_width="match_parent"
|
||||
android:paddingEnd="5dp"
|
||||
android:gravity="end"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/rileylink_status"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:layout_width="5dp"
|
||||
android:paddingEnd="2dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingStart="2dp"
|
||||
android:paddingEnd="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<com.joanzapata.iconify.widget.IconTextView
|
||||
android:gravity="start"
|
||||
android:id="@+id/riley_link_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:paddingEnd="5dp"
|
||||
android:gravity="start"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="{fa-bluetooth-b}"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp"
|
||||
|
@ -43,11 +43,11 @@
|
|||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:background="@color/list_delimiter"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="fill_parent" />
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/list_delimiter" />
|
||||
</merge>
|
|
@ -89,7 +89,7 @@
|
|||
<string name="omnipod_eros_pod_management_pulse_log_value">Pulse Log (copied to clipboard)</string>
|
||||
|
||||
<!-- Omnipod Eros - Pod Activation Wizard -->
|
||||
<string name="omnipod_eros_pod_activation_wizard_fill_pod_text">Fill a new Pod with enough insulin for 3 days.\n\nListen for two beeps from the Pod during the filling process. These indicate that the minimum amount of 85U has been inserted. Be sure to completely empty the fill syringe, even after hearing the two beeps.\n\nAfter filling the Pod, please press <b>Next</b>.\n\n<b>Note:</b> do not remove the Pod\'s needle cap at this time.\n<b>Note:</b> please place the RileyLink in an upright position and place the Pod a few inches away from it.</string>
|
||||
<string name="omnipod_eros_pod_activation_wizard_start_pod_activation_text">Fill a new Pod with enough insulin for 3 days.\n\nListen for two beeps from the Pod during the filling process. These indicate that the minimum amount of 85U has been inserted. Be sure to completely empty the fill syringe, even after hearing the two beeps.\n\nAfter filling the Pod, please press <b>Next</b>.\n\n<b>Note:</b> do not remove the Pod\'s needle cap at this time.\n<b>Note:</b> please place the RileyLink in an upright position and place the Pod a few inches away from it.</string>
|
||||
<string name="omnipod_eros_pod_activation_wizard_initialize_pod_text">Trying to pair with the new Pod and prime it.\n\nWhen the initialization process has successfully been completed, you can press <b>Next</b>.\n\n<b>Note:</b> please place the RileyLink in an upright position and place the Pod a few inches away from it.</string>
|
||||
|
||||
<!-- Omnipod Eros - Other -->
|
||||
|
|
Loading…
Reference in a new issue