Copied from OmnipodErosOverviewFragment to OmnipodDashOverviewFragment and added lots of TODOS there
This commit is contained in:
parent
acfd40e6d1
commit
cc3b9b7f32
14 changed files with 595 additions and 15 deletions
|
@ -32,7 +32,7 @@
|
||||||
tools:ignore="HardcodedText" />
|
tools:ignore="HardcodedText" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/pod_address"
|
android:id="@+id/unique_id"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
tools:ignore="HardcodedText" />
|
tools:ignore="HardcodedText" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/pod_tid"
|
android:id="@+id/pod_sequence_number"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.events.Event
|
||||||
|
|
||||||
|
class EventOmnipodDashPumpValuesChanged : Event() {
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver
|
||||||
|
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BasalProgram
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BasalProgram
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.event.PodEvent
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.event.PodEvent
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
|
|
||||||
interface OmnipodDashManager {
|
interface OmnipodDashManager {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver
|
||||||
import info.nightscout.androidaps.logging.AAPSLogger
|
import info.nightscout.androidaps.logging.AAPSLogger
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManager
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManager
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BasalProgram
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.BasalProgram
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.event.PodEvent
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.event.PodEvent
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.state.OmnipodDashPodStateManager
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.state.OmnipodDashPodStateManager
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.event
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.event
|
||||||
|
|
||||||
class PodEvent(
|
class PodEvent(
|
||||||
val type: PodEventType,
|
val type: PodEventType,
|
|
@ -1,6 +1,9 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.event
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.event
|
||||||
|
|
||||||
enum class PodEventType {
|
enum class PodEventType {
|
||||||
|
SCANNING,
|
||||||
|
PAIRING,
|
||||||
|
CONNECTING,
|
||||||
CONNECTED,
|
CONNECTED,
|
||||||
COMMAND_SENDING,
|
COMMAND_SENDING,
|
||||||
COMMAND_SENT,
|
COMMAND_SENT,
|
|
@ -15,6 +15,8 @@ class BasalProgram(segments: List<Segment>) {
|
||||||
|
|
||||||
fun isZeroBasal() = segments.sumBy(Segment::basalRateInHundredthUnitsPerHour) == 0
|
fun isZeroBasal() = segments.sumBy(Segment::basalRateInHundredthUnitsPerHour) == 0
|
||||||
|
|
||||||
|
fun rateAt(date: Date): Double = 0.0 // TODO
|
||||||
|
|
||||||
class Segment(val startSlotIndex: Short, val endSlotIndex: Short, val basalRateInHundredthUnitsPerHour: Int) {
|
class Segment(val startSlotIndex: Short, val endSlotIndex: Short, val basalRateInHundredthUnitsPerHour: Int) {
|
||||||
|
|
||||||
fun getPulsesPerHour(): Short {
|
fun getPulsesPerHour(): Short {
|
||||||
|
|
|
@ -1,7 +1,23 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition
|
||||||
|
|
||||||
enum class PodStatus(private val value: Byte) {
|
enum class PodStatus(private val value: Byte) {
|
||||||
UNINITIALIZED(0x00.toByte()), MFG_TEST(0x01.toByte()), FILLED(0x02.toByte()), UID_SET(0x03.toByte()), ENGAGING_CLUTCH_DRIVE(0x04.toByte()), CLUTCH_DRIVE_ENGAGED(0x05.toByte()), BASAL_PROGRAM_RUNNING(0x06.toByte()), PRIMING(0x07.toByte()), RUNNING_ABOVE_MIN_VOLUME(0x08.toByte()), RUNNING_BELOW_MIN_VOLUME(0x09.toByte()), UNUSED_10(0x0a.toByte()), UNUSED_11(0x0b.toByte()), UNUSED_12(0x0c.toByte()), ALARM(0x0d.toByte()), LUMP_OF_COAL(0x0e.toByte()), DEACTIVATED(0x0f.toByte()), UNKNOWN(0xff.toByte());
|
UNINITIALIZED(0x00.toByte()),
|
||||||
|
MFG_TEST(0x01.toByte()),
|
||||||
|
FILLED(0x02.toByte()),
|
||||||
|
UID_SET(0x03.toByte()),
|
||||||
|
ENGAGING_CLUTCH_DRIVE(0x04.toByte()),
|
||||||
|
CLUTCH_DRIVE_ENGAGED(0x05.toByte()),
|
||||||
|
BASAL_PROGRAM_SET(0x06.toByte()),
|
||||||
|
PRIMING(0x07.toByte()),
|
||||||
|
RUNNING_ABOVE_MIN_VOLUME(0x08.toByte()),
|
||||||
|
RUNNING_BELOW_MIN_VOLUME(0x09.toByte()),
|
||||||
|
UNUSED_10(0x0a.toByte()),
|
||||||
|
UNUSED_11(0x0b.toByte()),
|
||||||
|
UNUSED_12(0x0c.toByte()),
|
||||||
|
ALARM(0x0d.toByte()),
|
||||||
|
LUMP_OF_COAL(0x0e.toByte()),
|
||||||
|
DEACTIVATED(0x0f.toByte()),
|
||||||
|
UNKNOWN(0xff.toByte());
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
@ -14,4 +30,6 @@ enum class PodStatus(private val value: Byte) {
|
||||||
return UNKNOWN
|
return UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isRunning(): Boolean = this == RUNNING_ABOVE_MIN_VOLUME || this == RUNNING_BELOW_MIN_VOLUME
|
||||||
}
|
}
|
|
@ -11,6 +11,10 @@ import java.util.*
|
||||||
interface OmnipodDashPodStateManager {
|
interface OmnipodDashPodStateManager {
|
||||||
|
|
||||||
var activationProgress: ActivationProgress
|
var activationProgress: ActivationProgress
|
||||||
|
val isUniqueIdSet: Boolean
|
||||||
|
val isActivationCompleted: Boolean
|
||||||
|
val isSuspended: Boolean
|
||||||
|
val isPodRunning: Boolean
|
||||||
var lastConnection: Long
|
var lastConnection: Long
|
||||||
val lastUpdated: Long
|
val lastUpdated: Long
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,15 @@ class OmnipodDashPodStateManagerImpl @Inject constructor(
|
||||||
store()
|
store()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val isUniqueIdSet: Boolean = activationProgress.isAtLeast(ActivationProgress.SET_UNIQUE_ID)
|
||||||
|
|
||||||
|
override val isActivationCompleted: Boolean = activationProgress == ActivationProgress.COMPLETED
|
||||||
|
|
||||||
|
override val isSuspended: Boolean = podState.deliveryStatus?.equals(DeliveryStatus.SUSPENDED)
|
||||||
|
?: true
|
||||||
|
|
||||||
|
override val isPodRunning: Boolean = podState.podStatus?.isRunning() ?: false
|
||||||
|
|
||||||
override var lastConnection: Long
|
override var lastConnection: Long
|
||||||
get() = podState.lastConnection
|
get() = podState.lastConnection
|
||||||
set(value) {
|
set(value) {
|
||||||
|
|
|
@ -1,18 +1,82 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.omnipod.dash.ui
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.ui
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import dagger.android.support.DaggerFragment
|
import dagger.android.support.DaggerFragment
|
||||||
|
import info.nightscout.androidaps.Constants
|
||||||
|
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||||
|
import info.nightscout.androidaps.events.EventPreferenceChange
|
||||||
|
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||||
|
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||||
|
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
|
||||||
|
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.common.databinding.OmnipodCommonOverviewButtonsBinding
|
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.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
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.common.queue.command.CommandSuspendDelivery
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.EventOmnipodDashPumpValuesChanged
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.OmnipodDashPumpPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.R
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBinding
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBinding
|
||||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBluetoothStatusBinding
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.databinding.OmnipodDashOverviewBluetoothStatusBinding
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.ActivationProgress
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.state.OmnipodDashPodStateManager
|
||||||
|
import info.nightscout.androidaps.queue.Callback
|
||||||
|
import info.nightscout.androidaps.queue.events.EventQueueChanged
|
||||||
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
|
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||||
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||||
|
import info.nightscout.androidaps.utils.ui.UIRunnable
|
||||||
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
|
import io.reactivex.rxkotlin.plusAssign
|
||||||
|
import org.apache.commons.lang3.StringUtils
|
||||||
|
import org.joda.time.Duration
|
||||||
|
import java.util.*
|
||||||
|
import javax.inject.Inject
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
|
// TODO generify; see OmnipodErosOverviewFragment
|
||||||
class OmnipodDashOverviewFragment : DaggerFragment() {
|
class OmnipodDashOverviewFragment : DaggerFragment() {
|
||||||
|
|
||||||
|
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||||
|
@Inject lateinit var resourceHelper: ResourceHelper
|
||||||
|
@Inject lateinit var rxBus: RxBusWrapper
|
||||||
|
@Inject lateinit var commandQueue: CommandQueueProvider
|
||||||
|
@Inject lateinit var omnipodDashPumpPlugin: OmnipodDashPumpPlugin
|
||||||
|
@Inject lateinit var podStateManager: OmnipodDashPodStateManager
|
||||||
|
@Inject lateinit var sp: SP
|
||||||
|
@Inject lateinit var dateUtil: DateUtil
|
||||||
|
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
private const val REFRESH_INTERVAL_MILLIS = 15 * 1000L // 15 seconds
|
||||||
|
private const val PLACEHOLDER = "-"
|
||||||
|
}
|
||||||
|
|
||||||
|
private var disposables: CompositeDisposable = CompositeDisposable()
|
||||||
|
|
||||||
|
private val loopHandler = Handler(Looper.getMainLooper())
|
||||||
|
private lateinit var refreshLoop: Runnable
|
||||||
|
|
||||||
|
init {
|
||||||
|
refreshLoop = Runnable {
|
||||||
|
activity?.runOnUiThread { updateUi() }
|
||||||
|
loopHandler.postDelayed(refreshLoop, REFRESH_INTERVAL_MILLIS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var _binding: OmnipodDashOverviewBinding? = null
|
var _binding: OmnipodDashOverviewBinding? = null
|
||||||
var _bluetoothStatusBinding: OmnipodDashOverviewBluetoothStatusBinding? = null
|
var _bluetoothStatusBinding: OmnipodDashOverviewBluetoothStatusBinding? = null
|
||||||
var _podInfoBinding: OmnipodCommonOverviewPodInfoBinding? = null
|
var _podInfoBinding: OmnipodCommonOverviewPodInfoBinding? = null
|
||||||
|
@ -37,7 +101,480 @@ class OmnipodDashOverviewFragment : DaggerFragment() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
buttonBinding.buttonPodManagement.setOnClickListener {
|
buttonBinding.buttonPodManagement.setOnClickListener {
|
||||||
|
// TODO add protection
|
||||||
startActivity(Intent(context, DashPodManagementActivity::class.java))
|
startActivity(Intent(context, DashPodManagementActivity::class.java))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)))
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonBinding.buttonRefreshStatus.setOnClickListener {
|
||||||
|
disablePodActionButtons()
|
||||||
|
commandQueue.readStatus("REQUESTED BY USER",
|
||||||
|
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_refresh_status), false))
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonBinding.buttonSilenceAlerts.setOnClickListener {
|
||||||
|
disablePodActionButtons()
|
||||||
|
commandQueue.customCommand(CommandAcknowledgeAlerts(),
|
||||||
|
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_silence_alerts), false)
|
||||||
|
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_common_confirmation_silenced_alerts))
|
||||||
|
.actionOnSuccess { rxBus.send(EventDismissNotification(Notification.OMNIPOD_POD_ALERTS)) })
|
||||||
|
}
|
||||||
|
|
||||||
|
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)))
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonBinding.buttonSetTime.setOnClickListener {
|
||||||
|
disablePodActionButtons()
|
||||||
|
commandQueue.customCommand(CommandHandleTimeChange(true),
|
||||||
|
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_common_error_failed_to_set_time), true)
|
||||||
|
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_common_confirmation_time_on_pod_updated)))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
loopHandler.postDelayed(refreshLoop, REFRESH_INTERVAL_MILLIS)
|
||||||
|
disposables += rxBus
|
||||||
|
.toObservable(EventOmnipodDashPumpValuesChanged::class.java)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
|
.subscribe({
|
||||||
|
updateOmnipodStatus()
|
||||||
|
updatePodActionButtons()
|
||||||
|
}, fabricPrivacy::logException)
|
||||||
|
disposables += rxBus
|
||||||
|
.toObservable(EventQueueChanged::class.java)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
|
.subscribe({
|
||||||
|
updateQueueStatus()
|
||||||
|
updatePodActionButtons()
|
||||||
|
}, fabricPrivacy::logException)
|
||||||
|
disposables += rxBus
|
||||||
|
.toObservable(EventPreferenceChange::class.java)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
|
.subscribe({
|
||||||
|
updatePodActionButtons()
|
||||||
|
}, fabricPrivacy::logException)
|
||||||
|
updateUi()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
disposables.clear()
|
||||||
|
loopHandler.removeCallbacks(refreshLoop)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateUi() {
|
||||||
|
// TODO update bluetooth status
|
||||||
|
updateOmnipodStatus()
|
||||||
|
updatePodActionButtons()
|
||||||
|
updateQueueStatus()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateOmnipodStatus() {
|
||||||
|
updateLastConnection()
|
||||||
|
updateLastBolus()
|
||||||
|
updateTempBasal()
|
||||||
|
updatePodStatus()
|
||||||
|
|
||||||
|
val errors = ArrayList<String>()
|
||||||
|
|
||||||
|
if (podStateManager.activationProgress.isBefore(ActivationProgress.SET_UNIQUE_ID)) {
|
||||||
|
podInfoBinding.uniqueId.text = PLACEHOLDER
|
||||||
|
podInfoBinding.podLot.text = PLACEHOLDER
|
||||||
|
podInfoBinding.podSequenceNumber.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 {
|
||||||
|
podInfoBinding.uniqueId.text = podStateManager.uniqueId.toString()
|
||||||
|
podInfoBinding.podLot.text = podStateManager.lotNumber.toString()
|
||||||
|
podInfoBinding.podSequenceNumber.text = podStateManager.podSequenceNumber.toString()
|
||||||
|
podInfoBinding.firmwareVersion.text = resourceHelper.gs(R.string.omnipod_dash_overview_firmware_version_value, podStateManager.firmwareVersion.toString(), podStateManager.bluetoothVersion.toString())
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
/*
|
||||||
|
podInfoBinding.timeOnPod.text = readableZonedTime(podStateManager.time)
|
||||||
|
podInfoBinding.timeOnPod.setTextColor(if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) {
|
||||||
|
Color.RED
|
||||||
|
} else {
|
||||||
|
Color.WHITE
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
/*
|
||||||
|
val expiresAt = podStateManager.expiresAt
|
||||||
|
|
||||||
|
if (expiresAt == null) {
|
||||||
|
podInfoBinding.podExpiryDate.text = PLACEHOLDER
|
||||||
|
podInfoBinding.podExpiryDate.setTextColor(Color.WHITE)
|
||||||
|
} else {
|
||||||
|
podInfoBinding.podExpiryDate.text = readableZonedTime(expiresAt)
|
||||||
|
podInfoBinding.podExpiryDate.setTextColor(if (DateTime.now().isAfter(expiresAt)) {
|
||||||
|
Color.RED
|
||||||
|
} else {
|
||||||
|
Color.WHITE
|
||||||
|
})
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* TODO
|
||||||
|
if (podStateManager.isPodFaulted) {
|
||||||
|
val faultEventCode = podStateManager.faultEventCode
|
||||||
|
errors.add(resourceHelper.gs(R.string.omnipod_common_pod_status_pod_fault_description, faultEventCode.value, faultEventCode.name))
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// base basal rate
|
||||||
|
podInfoBinding.baseBasalRate.text = if (podStateManager.basalProgram != null) {
|
||||||
|
resourceHelper.gs(R.string.pump_basebasalrate, omnipodDashPumpPlugin.model().determineCorrectBasalSize(podStateManager.basalProgram!!.rateAt(Date())))
|
||||||
|
} else {
|
||||||
|
PLACEHOLDER
|
||||||
|
}
|
||||||
|
|
||||||
|
// total delivered
|
||||||
|
podInfoBinding.totalDelivered.text = if (podStateManager.isActivationCompleted && podStateManager.pulsesDelivered != null) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_overview_total_delivered_value, podStateManager.pulseRate)
|
||||||
|
} else {
|
||||||
|
PLACEHOLDER
|
||||||
|
}
|
||||||
|
|
||||||
|
// reservoir
|
||||||
|
if (podStateManager.pulsesRemaining == null) {
|
||||||
|
podInfoBinding.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value_over50)
|
||||||
|
podInfoBinding.reservoir.setTextColor(Color.WHITE)
|
||||||
|
} else {
|
||||||
|
// TODO
|
||||||
|
//val lowReservoirThreshold = (omnipodAlertUtil.lowReservoirAlertUnits
|
||||||
|
// ?: OmnipodConstants.DEFAULT_MAX_RESERVOIR_ALERT_THRESHOLD).toDouble()
|
||||||
|
val lowReservoirThreshold: Short = 20
|
||||||
|
|
||||||
|
podInfoBinding.reservoir.text = resourceHelper.gs(R.string.omnipod_common_overview_reservoir_value, podStateManager.pulsesRemaining)
|
||||||
|
podInfoBinding.reservoir.setTextColor(if (podStateManager.pulsesRemaining!! < lowReservoirThreshold) {
|
||||||
|
Color.RED
|
||||||
|
} else {
|
||||||
|
Color.WHITE
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
podInfoBinding.podActiveAlerts.text = if (podStateManager.activeAlerts!!.size > 0) {
|
||||||
|
// TODO
|
||||||
|
// TextUtils.join(System.lineSeparator(), omnipodUtil.getTranslatedActiveAlerts(podStateManager))
|
||||||
|
"TODO"
|
||||||
|
} else {
|
||||||
|
PLACEHOLDER
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errors.size == 0) {
|
||||||
|
podInfoBinding.errors.text = PLACEHOLDER
|
||||||
|
podInfoBinding.errors.setTextColor(Color.WHITE)
|
||||||
|
} else {
|
||||||
|
podInfoBinding.errors.text = StringUtils.join(errors, System.lineSeparator())
|
||||||
|
podInfoBinding.errors.setTextColor(Color.RED)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateLastConnection() {
|
||||||
|
if (podStateManager.isUniqueIdSet) {
|
||||||
|
podInfoBinding.lastConnection.text = readableDuration(podStateManager.lastConnection)
|
||||||
|
val lastConnectionColor =
|
||||||
|
if (omnipodDashPumpPlugin.isUnreachableAlertTimeoutExceeded(getPumpUnreachableTimeout().millis)) {
|
||||||
|
Color.RED
|
||||||
|
} else {
|
||||||
|
Color.WHITE
|
||||||
|
}
|
||||||
|
podInfoBinding.lastConnection.setTextColor(lastConnectionColor)
|
||||||
|
} else {
|
||||||
|
podInfoBinding.lastConnection.setTextColor(Color.WHITE)
|
||||||
|
podInfoBinding.lastConnection.text = readableDuration(podStateManager.lastConnection)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updatePodStatus() {
|
||||||
|
podInfoBinding.podStatus.text = if (podStateManager.activationProgress == ActivationProgress.NOT_STARTED) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_no_active_pod)
|
||||||
|
} else if (!podStateManager.isActivationCompleted) {
|
||||||
|
if (!podStateManager.isUniqueIdSet) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_waiting_for_activation)
|
||||||
|
} else {
|
||||||
|
if (podStateManager.activationProgress.isBefore(ActivationProgress.PRIME_COMPLETED)) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_waiting_for_activation)
|
||||||
|
} else {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_waiting_for_cannula_insertion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (podStateManager.podStatus!!.isRunning()) {
|
||||||
|
if (podStateManager.isSuspended) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_suspended)
|
||||||
|
} else {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_running)
|
||||||
|
}
|
||||||
|
// TODO
|
||||||
|
/*
|
||||||
|
} else if (podStateManager.podStatus == PodProgressStatus.FAULT_EVENT_OCCURRED) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_pod_fault)
|
||||||
|
} else if (podStateManager.podStatus == PodProgressStatus.INACTIVE) {
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_pod_status_inactive)
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
podStateManager.podStatus.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val podStatusColor = if (!podStateManager.isActivationCompleted ||/* TODO podStateManager.isPodDead || */ podStateManager.isSuspended) {
|
||||||
|
Color.RED
|
||||||
|
} else {
|
||||||
|
Color.WHITE
|
||||||
|
}
|
||||||
|
podInfoBinding.podStatus.setTextColor(podStatusColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateLastBolus() {
|
||||||
|
// TODO
|
||||||
|
/*
|
||||||
|
if (podStateManager.isActivationCompleted && podStateManager.hasLastBolus()) {
|
||||||
|
var text = resourceHelper.gs(R.string.omnipod_common_overview_last_bolus_value, omnipodDashPumpPlugin.model().determineCorrectBolusSize(podStateManager.lastBolusAmount), resourceHelper.gs(R.string.insulin_unit_shortname), readableDuration(podStateManager.lastBolusStartTime))
|
||||||
|
val textColor: Int
|
||||||
|
|
||||||
|
if (podStateManager.isLastBolusCertain) {
|
||||||
|
textColor = Color.WHITE
|
||||||
|
} else {
|
||||||
|
textColor = Color.RED
|
||||||
|
text += " (" + resourceHelper.gs(R.string.omnipod_eros_uncertain) + ")"
|
||||||
|
}
|
||||||
|
|
||||||
|
podInfoBinding.lastBolus.text = text
|
||||||
|
podInfoBinding.lastBolus.setTextColor(textColor)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
podInfoBinding.lastBolus.text = PLACEHOLDER
|
||||||
|
podInfoBinding.lastBolus.setTextColor(Color.WHITE)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateTempBasal() {
|
||||||
|
if (podStateManager.isActivationCompleted && podStateManager.tempBasalActive) {
|
||||||
|
val startTime = podStateManager.tempBasal!!.startTime
|
||||||
|
val rate = podStateManager.tempBasal!!.rate
|
||||||
|
val duration = podStateManager.tempBasal!!.durationInMinutes
|
||||||
|
|
||||||
|
val minutesRunning = 0 // TODO
|
||||||
|
|
||||||
|
podInfoBinding.tempBasal.text = resourceHelper.gs(R.string.omnipod_common_overview_temp_basal_value, rate, dateUtil.timeString(startTime), minutesRunning, duration)
|
||||||
|
} else {
|
||||||
|
podInfoBinding.tempBasal.text = PLACEHOLDER
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateQueueStatus() {
|
||||||
|
if (isQueueEmpty()) {
|
||||||
|
podInfoBinding.queue.visibility = View.GONE
|
||||||
|
} else {
|
||||||
|
podInfoBinding.queue.visibility = View.VISIBLE
|
||||||
|
podInfoBinding.queue.text = commandQueue.spannedStatus().toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updatePodActionButtons() {
|
||||||
|
updateRefreshStatusButton()
|
||||||
|
updateResumeDeliveryButton()
|
||||||
|
updateSilenceAlertsButton()
|
||||||
|
updateSuspendDeliveryButton()
|
||||||
|
updateSetTimeButton()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun disablePodActionButtons() {
|
||||||
|
buttonBinding.buttonSilenceAlerts.isEnabled = false
|
||||||
|
buttonBinding.buttonResumeDelivery.isEnabled = false
|
||||||
|
buttonBinding.buttonSuspendDelivery.isEnabled = false
|
||||||
|
buttonBinding.buttonSetTime.isEnabled = false
|
||||||
|
buttonBinding.buttonRefreshStatus.isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateRefreshStatusButton() {
|
||||||
|
buttonBinding.buttonRefreshStatus.isEnabled = podStateManager.isUniqueIdSet && podStateManager.activationProgress.isAtLeast(ActivationProgress.PHASE_1_COMPLETED)
|
||||||
|
&& isQueueEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateResumeDeliveryButton() {
|
||||||
|
if (podStateManager.isPodRunning && (podStateManager.isSuspended || commandQueue.isCustomCommandInQueue(CommandResumeDelivery::class.java))) {
|
||||||
|
buttonBinding.buttonResumeDelivery.visibility = View.VISIBLE
|
||||||
|
buttonBinding.buttonResumeDelivery.isEnabled = isQueueEmpty()
|
||||||
|
} else {
|
||||||
|
buttonBinding.buttonResumeDelivery.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateSilenceAlertsButton() {
|
||||||
|
if (isAutomaticallySilenceAlertsEnabled() && podStateManager.isPodRunning && (podStateManager.activeAlerts!!.size > 0 || commandQueue.isCustomCommandInQueue(CommandAcknowledgeAlerts::class.java))) {
|
||||||
|
buttonBinding.buttonSilenceAlerts.visibility = View.VISIBLE
|
||||||
|
buttonBinding.buttonSilenceAlerts.isEnabled = isQueueEmpty()
|
||||||
|
} else {
|
||||||
|
buttonBinding.buttonSilenceAlerts.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateSuspendDeliveryButton() {
|
||||||
|
// If the Pod is currently suspended, we show the Resume delivery button instead.
|
||||||
|
if (isSuspendDeliveryButtonEnabled() && podStateManager.isPodRunning && (!podStateManager.isSuspended || commandQueue.isCustomCommandInQueue(CommandSuspendDelivery::class.java))) {
|
||||||
|
buttonBinding.buttonSuspendDelivery.visibility = View.VISIBLE
|
||||||
|
buttonBinding.buttonSuspendDelivery.isEnabled = podStateManager.isPodRunning && !podStateManager.isSuspended && isQueueEmpty()
|
||||||
|
} else {
|
||||||
|
buttonBinding.buttonSuspendDelivery.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateSetTimeButton() {
|
||||||
|
// TODO
|
||||||
|
/*
|
||||||
|
if (podStateManager.isPodRunning && (podStateManager.timeDeviatesMoreThan(Duration.standardMinutes(5)) || commandQueue.isCustomCommandInQueue(CommandHandleTimeChange::class.java))) {
|
||||||
|
buttonBinding.buttonSetTime.visibility = View.VISIBLE
|
||||||
|
buttonBinding.buttonSetTime.isEnabled = !podStateManager.isSuspended && rileyLinkServiceData.rileyLinkServiceState.isReady && isQueueEmpty()
|
||||||
|
} else {
|
||||||
|
buttonBinding.buttonSetTime.visibility = View.GONE
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isAutomaticallySilenceAlertsEnabled(): Boolean {
|
||||||
|
return sp.getBoolean(R.string.omnipod_common_preferences_automatically_silence_alerts, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isSuspendDeliveryButtonEnabled(): Boolean {
|
||||||
|
return sp.getBoolean(R.string.omnipod_common_preferences_suspend_delivery_button_enabled, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun displayErrorDialog(title: String, message: String, withSound: Boolean) {
|
||||||
|
context?.let {
|
||||||
|
ErrorHelperActivity.runAlarm(it, message, title, if (withSound) R.raw.boluserror else 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun displayOkDialog(title: String, message: String) {
|
||||||
|
context?.let {
|
||||||
|
UIRunnable {
|
||||||
|
OKDialog.show(it, title, message, null)
|
||||||
|
}.run()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
private fun readableZonedTime(time: DateTime): String {
|
||||||
|
val timeAsJavaData = time.toLocalDateTime().toDate()
|
||||||
|
val timeZone = podStateManager.timeZone.toTimeZone()
|
||||||
|
if (timeZone == TimeZone.getDefault()) {
|
||||||
|
return dateUtil.dateAndTimeString(timeAsJavaData)
|
||||||
|
}
|
||||||
|
|
||||||
|
val isDaylightTime = timeZone.inDaylightTime(timeAsJavaData)
|
||||||
|
val locale = resources.configuration.locales.get(0)
|
||||||
|
val timeZoneDisplayName = timeZone.getDisplayName(isDaylightTime, TimeZone.SHORT, locale) + " " + timeZone.getDisplayName(isDaylightTime, TimeZone.LONG, locale)
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_with_timezone, dateUtil.dateAndTimeString(timeAsJavaData), timeZoneDisplayName)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
private fun readableDuration(time: Long): String {
|
||||||
|
// TODO
|
||||||
|
return "TODO"
|
||||||
|
|
||||||
|
/*
|
||||||
|
val duration = Duration(dateTime, DateTime.now())
|
||||||
|
val hours = duration.standardHours.toInt()
|
||||||
|
val minutes = duration.standardMinutes.toInt()
|
||||||
|
val seconds = duration.standardSeconds.toInt()
|
||||||
|
when {
|
||||||
|
seconds < 10 -> {
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_moments_ago)
|
||||||
|
}
|
||||||
|
|
||||||
|
seconds < 60 -> {
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_less_than_a_minute_ago)
|
||||||
|
}
|
||||||
|
|
||||||
|
seconds < 60 * 60 -> { // < 1 hour
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_ago, resourceHelper.gq(R.plurals.omnipod_common_minutes, minutes, minutes))
|
||||||
|
}
|
||||||
|
|
||||||
|
seconds < 24 * 60 * 60 -> { // < 1 day
|
||||||
|
val minutesLeft = minutes % 60
|
||||||
|
if (minutesLeft > 0)
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_ago,
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_composite_time, resourceHelper.gq(R.plurals.omnipod_common_hours, hours, hours), resourceHelper.gq(R.plurals.omnipod_common_minutes, minutesLeft, minutesLeft)))
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_ago, resourceHelper.gq(R.plurals.omnipod_common_hours, hours, hours))
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
val days = hours / 24
|
||||||
|
val hoursLeft = hours % 24
|
||||||
|
if (hoursLeft > 0)
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_ago,
|
||||||
|
resourceHelper.gs(R.string.omnipod_common_composite_time, resourceHelper.gq(R.plurals.omnipod_common_days, days, days), resourceHelper.gq(R.plurals.omnipod_common_hours, hoursLeft, hoursLeft)))
|
||||||
|
return resourceHelper.gs(R.string.omnipod_common_time_ago, resourceHelper.gq(R.plurals.omnipod_common_days, days, days))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isQueueEmpty(): Boolean {
|
||||||
|
return commandQueue.size() == 0 && commandQueue.performing() == null
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME ideally we should just have access to LocalAlertUtils here
|
||||||
|
private fun getPumpUnreachableTimeout(): Duration {
|
||||||
|
return Duration.standardMinutes(sp.getInt(R.string.key_pump_unreachable_threshold_minutes, Constants.DEFAULT_PUMP_UNREACHABLE_THRESHOLD_MINUTES).toLong())
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class DisplayResultDialogCallback(private val errorMessagePrefix: String, private val withSoundOnError: Boolean) : Callback() {
|
||||||
|
|
||||||
|
private var messageOnSuccess: String? = null
|
||||||
|
private var actionOnSuccess: Runnable? = null
|
||||||
|
|
||||||
|
override fun run() {
|
||||||
|
if (result.success) {
|
||||||
|
val messageOnSuccess = this.messageOnSuccess
|
||||||
|
if (messageOnSuccess != null) {
|
||||||
|
displayOkDialog(resourceHelper.gs(R.string.omnipod_common_confirmation), messageOnSuccess)
|
||||||
|
}
|
||||||
|
actionOnSuccess?.run()
|
||||||
|
} else {
|
||||||
|
displayErrorDialog(resourceHelper.gs(R.string.omnipod_common_warning), resourceHelper.gs(R.string.omnipod_common_two_strings_concatenated_by_colon, errorMessagePrefix, result.comment), withSoundOnError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun messageOnSuccess(message: String): DisplayResultDialogCallback {
|
||||||
|
messageOnSuccess = message
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun actionOnSuccess(action: Runnable): DisplayResultDialogCallback {
|
||||||
|
actionOnSuccess = action
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -13,7 +13,7 @@
|
||||||
android:gravity="end"
|
android:gravity="end"
|
||||||
android:paddingStart="5dp"
|
android:paddingStart="5dp"
|
||||||
android:paddingEnd="5dp"
|
android:paddingEnd="5dp"
|
||||||
android:text="@string/omnipod_dash_bluetooth_address"
|
android:text="@string/omnipod_dash_overview_bluetooth_address"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
android:gravity="end"
|
android:gravity="end"
|
||||||
android:paddingStart="5dp"
|
android:paddingStart="5dp"
|
||||||
android:paddingEnd="5dp"
|
android:paddingEnd="5dp"
|
||||||
android:text="@string/omnipod_dash_bluetooth_status"
|
android:text="@string/omnipod_dash_overview_bluetooth_status"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -9,8 +9,9 @@
|
||||||
<string name="key_omnipod_dash_pod_state" translatable="false">AAPS.OmnipodDash.pod_state</string>
|
<string name="key_omnipod_dash_pod_state" translatable="false">AAPS.OmnipodDash.pod_state</string>
|
||||||
|
|
||||||
<!-- Omnipod Dash - Overview -->
|
<!-- Omnipod Dash - Overview -->
|
||||||
<string name="omnipod_dash_bluetooth_status">Bluetooth Status</string>
|
<string name="omnipod_dash_overview_bluetooth_status">Bluetooth Status</string>
|
||||||
<string name="omnipod_dash_bluetooth_address">Bluetooth Address</string>
|
<string name="omnipod_dash_overview_bluetooth_address">Bluetooth Address</string>
|
||||||
|
<string name="omnipod_dash_overview_firmware_version_value">Firmware %1$s / Bluetooth %2$s</string>
|
||||||
|
|
||||||
<!-- Omnipod Dash - Pod Activation Wizard -->
|
<!-- Omnipod Dash - Pod Activation Wizard -->
|
||||||
<string name="omnipod_dash_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.</string>
|
<string name="omnipod_dash_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.</string>
|
||||||
|
|
|
@ -254,13 +254,13 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!podStateManager.hasPodState() || !podStateManager.isPodInitialized) {
|
if (!podStateManager.hasPodState() || !podStateManager.isPodInitialized) {
|
||||||
podInfoBinding.podAddress.text = if (podStateManager.hasPodState()) {
|
podInfoBinding.uniqueId.text = if (podStateManager.hasPodState()) {
|
||||||
podStateManager.address.toString()
|
podStateManager.address.toString()
|
||||||
} else {
|
} else {
|
||||||
PLACEHOLDER
|
PLACEHOLDER
|
||||||
}
|
}
|
||||||
podInfoBinding.podLot.text = PLACEHOLDER
|
podInfoBinding.podLot.text = PLACEHOLDER
|
||||||
podInfoBinding.podTid.text = PLACEHOLDER
|
podInfoBinding.podSequenceNumber.text = PLACEHOLDER
|
||||||
podInfoBinding.firmwareVersion.text = PLACEHOLDER
|
podInfoBinding.firmwareVersion.text = PLACEHOLDER
|
||||||
podInfoBinding.timeOnPod.text = PLACEHOLDER
|
podInfoBinding.timeOnPod.text = PLACEHOLDER
|
||||||
podInfoBinding.podExpiryDate.text = PLACEHOLDER
|
podInfoBinding.podExpiryDate.text = PLACEHOLDER
|
||||||
|
@ -271,9 +271,9 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
||||||
podInfoBinding.reservoir.setTextColor(Color.WHITE)
|
podInfoBinding.reservoir.setTextColor(Color.WHITE)
|
||||||
podInfoBinding.podActiveAlerts.text = PLACEHOLDER
|
podInfoBinding.podActiveAlerts.text = PLACEHOLDER
|
||||||
} else {
|
} else {
|
||||||
podInfoBinding.podAddress.text = podStateManager.address.toString()
|
podInfoBinding.uniqueId.text = podStateManager.address.toString()
|
||||||
podInfoBinding.podLot.text = podStateManager.lot.toString()
|
podInfoBinding.podLot.text = podStateManager.lot.toString()
|
||||||
podInfoBinding.podTid.text = podStateManager.tid.toString()
|
podInfoBinding.podSequenceNumber.text = podStateManager.tid.toString()
|
||||||
podInfoBinding.firmwareVersion.text = resourceHelper.gs(R.string.omnipod_eros_overview_firmware_version_value, podStateManager.pmVersion.toString(), podStateManager.piVersion.toString())
|
podInfoBinding.firmwareVersion.text = resourceHelper.gs(R.string.omnipod_eros_overview_firmware_version_value, podStateManager.pmVersion.toString(), podStateManager.piVersion.toString())
|
||||||
|
|
||||||
podInfoBinding.timeOnPod.text = readableZonedTime(podStateManager.time)
|
podInfoBinding.timeOnPod.text = readableZonedTime(podStateManager.time)
|
||||||
|
|
Loading…
Reference in a new issue