Small improvements and import order

This commit is contained in:
Bart Sopers 2020-08-23 21:48:25 +02:00
parent ddd9687425
commit 8911bcd508
5 changed files with 96 additions and 77 deletions
omnipod/src/main
java/info/nightscout/androidaps/plugins/pump/omnipod
res/layout

View file

@ -66,12 +66,12 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor;
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil; import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog;
import info.nightscout.androidaps.plugins.pump.omnipod.data.RLHistoryItemOmnipod; import info.nightscout.androidaps.plugins.pump.omnipod.data.RLHistoryItemOmnipod;
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCommandType; import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCommandType;
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCustomActionType; import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodCustomActionType;
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStatusRequestType; import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStatusRequestType;
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStorageKeys;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoRecentPulseLog;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager; import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager;

View file

@ -26,10 +26,10 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSl
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FirmwareVersion; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.FirmwareVersion;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodCrc;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodCrc;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
// TODO add nullchecks on some setters // TODO add nullchecks on some setters
public abstract class PodStateManager { public abstract class PodStateManager {
@ -138,7 +138,7 @@ public abstract class PodStateManager {
} }
public final void setMessageNumber(int messageNumber) { public final void setMessageNumber(int messageNumber) {
setAndStore(() -> podState.setMessageNumber(messageNumber)); setAndStore(() -> podState.setMessageNumber(messageNumber), false);
} }
public final int getPacketNumber() { public final int getPacketNumber() {
@ -146,7 +146,7 @@ public abstract class PodStateManager {
} }
public final void setPacketNumber(int packetNumber) { public final void setPacketNumber(int packetNumber) {
setAndStore(() -> podState.setPacketNumber(packetNumber)); setAndStore(() -> podState.setPacketNumber(packetNumber), false);
} }
public final void increaseMessageNumber() { public final void increaseMessageNumber() {
@ -190,8 +190,8 @@ public abstract class PodStateManager {
return getSafe(() -> podState.getLastSuccessfulCommunication()); return getSafe(() -> podState.getLastSuccessfulCommunication());
} }
public final void setLastSuccessfulCommunication(DateTime dateTime) { public final void setLastSuccessfulCommunication(DateTime dateTime, boolean notifyPodStateChanged) {
setAndStore(() -> podState.setLastSuccessfulCommunication(dateTime)); setAndStore(() -> podState.setLastSuccessfulCommunication(dateTime), notifyPodStateChanged);
} }
public final DateTime getLastFailedCommunication() { public final DateTime getLastFailedCommunication() {

View file

@ -17,16 +17,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMe
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.OmnipodAction; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.OmnipodAction;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommunicationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageSequenceNumberException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceOutOfSyncException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceResyncException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoughDataException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodPacket; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodPacket;
@ -36,11 +26,21 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoFaultEvent; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoFaultEvent;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommunicationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageSequenceNumberException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceOutOfSyncException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NonceResyncException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoughDataException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException; import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants; import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
/** /**
* Created by andy on 6/29/18. * Created by andy on 6/29/18.
@ -125,12 +125,18 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
aapsLogger.debug(LTag.PUMPCOMM, "Received response from the Pod [responseMessageBlock={}]", responseMessageBlock); aapsLogger.debug(LTag.PUMPCOMM, "Received response from the Pod [responseMessageBlock={}]", responseMessageBlock);
boolean isExpectedResponseType = responseClass.isInstance(responseMessageBlock);
// Set last successful communication before updating from status response to prevent duplicately notifying Pod state changes
// as podStateManager.updateFromStatusResponse() also notifies of Pod state changes.
if (isExpectedResponseType) {
podStateManager.setLastSuccessfulCommunication(DateTime.now(), !(responseMessageBlock instanceof StatusResponse));
}
if (responseMessageBlock instanceof StatusResponse) { if (responseMessageBlock instanceof StatusResponse) {
podStateManager.updateFromStatusResponse((StatusResponse) responseMessageBlock); podStateManager.updateFromStatusResponse((StatusResponse) responseMessageBlock);
} }
if (responseClass.isInstance(responseMessageBlock)) { if (isExpectedResponseType) {
podStateManager.setLastSuccessfulCommunication(DateTime.now());
return (T) responseMessageBlock; return (T) responseMessageBlock;
} else { } else {
if (responseMessageBlock.getType() == MessageBlockType.ERROR_RESPONSE) { if (responseMessageBlock.getType() == MessageBlockType.ERROR_RESPONSE) {

View file

@ -23,8 +23,8 @@ import info.nightscout.androidaps.plugins.pump.omnipod.R
import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStatusRequestType import info.nightscout.androidaps.plugins.pump.omnipod.definition.OmnipodStatusRequestType
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager
import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager
import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged import info.nightscout.androidaps.plugins.pump.omnipod.event.EventOmnipodPumpValuesChanged
import info.nightscout.androidaps.plugins.pump.omnipod.manager.AapsOmnipodManager
import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil
import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
@ -61,10 +61,10 @@ class OmnipodFragment : DaggerFragment() {
@Inject lateinit var rileyLinkServiceData: RileyLinkServiceData @Inject lateinit var rileyLinkServiceData: RileyLinkServiceData
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
@Inject lateinit var aapsOmnipodManager: AapsOmnipodManager @Inject lateinit var aapsOmnipodManager: AapsOmnipodManager
@Inject lateinit var protectionCheck: ProtectionCheck
// TODO somehow obtain the pumpUnreachableThreshold in order to display last connection time red or white // TODO somehow obtain the pumpUnreachableThreshold in order to display last connection time red or white
// @Inject lateinit var localAlertUtils: LocalAlertUtils // @Inject lateinit var localAlertUtils: LocalAlertUtils
@Inject lateinit var protectionCheck: ProtectionCheck
private var disposables: CompositeDisposable = CompositeDisposable() private var disposables: CompositeDisposable = CompositeDisposable()
@ -99,18 +99,16 @@ class OmnipodFragment : DaggerFragment() {
} }
omnipod_refresh.setOnClickListener { omnipod_refresh.setOnClickListener {
omnipod_pod_active_alerts_ack.isEnabled = false disablePodActionButtons()
omnipod_refresh.isEnabled = false
omnipod_pod_debug.isEnabled = false
omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.GetPodState); omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.GetPodState);
commandQueue.readStatus("Clicked Refresh", object : Callback() { commandQueue.readStatus("Clicked Refresh", object : Callback() {
override fun run() { override fun run() {
activity?.runOnUiThread { updateOmipodUiElements() } activity?.runOnUiThread { updatePodActionButtons() }
} }
}) })
} }
omnipod_stats.setOnClickListener { omnipod_rileylink_stats.setOnClickListener {
if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() == true) {
startActivity(Intent(context, RileyLinkStatusActivity::class.java)) startActivity(Intent(context, RileyLinkStatusActivity::class.java))
} else { } else {
@ -122,13 +120,11 @@ class OmnipodFragment : DaggerFragment() {
if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() != true) { if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() != true) {
displayNotConfiguredDialog() displayNotConfiguredDialog()
} else { } else {
omnipod_pod_active_alerts_ack.isEnabled = false disablePodActionButtons()
omnipod_refresh.isEnabled = false
omnipod_pod_debug.isEnabled = false
omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.AcknowledgeAlerts); omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.AcknowledgeAlerts);
commandQueue.readStatus("Clicked Alert Ack", object : Callback() { commandQueue.readStatus("Clicked Alert Ack", object : Callback() {
override fun run() { override fun run() {
activity?.runOnUiThread { updateOmipodUiElements() } activity?.runOnUiThread { updatePodActionButtons() }
} }
}) })
} }
@ -138,13 +134,11 @@ class OmnipodFragment : DaggerFragment() {
if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() != true) { if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() != true) {
displayNotConfiguredDialog() displayNotConfiguredDialog()
} else { } else {
omnipod_pod_active_alerts_ack.isEnabled = false disablePodActionButtons()
omnipod_refresh.isEnabled = false
omnipod_pod_debug.isEnabled = false
omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.GetPodPulseLog); omnipodPumpPlugin.addPodStatusRequest(OmnipodStatusRequestType.GetPodPulseLog);
commandQueue.readStatus("Clicked Refresh", object : Callback() { commandQueue.readStatus("Clicked Refresh", object : Callback() {
override fun run() { override fun run() {
activity?.runOnUiThread { updateOmipodUiElements() } activity?.runOnUiThread { updatePodActionButtons() }
} }
}) })
} }
@ -157,36 +151,26 @@ class OmnipodFragment : DaggerFragment() {
disposables += rxBus disposables += rxBus
.toObservable(EventRileyLinkDeviceStatusChange::class.java) .toObservable(EventRileyLinkDeviceStatusChange::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateRileyLinkUiElements() }, { fabricPrivacy.logException(it) }) .subscribe({
updateRileyLinkStatus()
updatePodActionButtons()
}, { fabricPrivacy.logException(it) })
disposables += rxBus disposables += rxBus
.toObservable(EventOmnipodPumpValuesChanged::class.java) .toObservable(EventOmnipodPumpValuesChanged::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateOmipodUiElements() }, { fabricPrivacy.logException(it) }) .subscribe({
updateOmipodStatus()
updatePodActionButtons()
}, { fabricPrivacy.logException(it) })
disposables += rxBus disposables += rxBus
.toObservable(EventPreferenceChange::class.java) .toObservable(EventPreferenceChange::class.java)
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.subscribe({ .subscribe({
setVisibilityOfPodDebugButton() updatePulseLogButton()
}, { fabricPrivacy.logException(it) }) }, { fabricPrivacy.logException(it) })
updateUi() updateUi()
} }
fun setVisibilityOfPodDebugButton() {
if (aapsOmnipodManager.isPodDebuggingOptionsEnabled) {
omnipod_pod_debug.visibility = View.VISIBLE
omnipod_pod_debug.isEnabled = podStateManager.isPodActivationCompleted && rileyLinkServiceData.rileyLinkServiceState.isReady && !commandQueue.statusInQueue()
} else {
omnipod_pod_debug.visibility = View.GONE
}
}
private fun displayNotConfiguredDialog() {
context?.let {
OKDialog.show(it, resourceHelper.gs(R.string.omnipod_warning),
resourceHelper.gs(R.string.omnipod_error_operation_not_possible_no_configuration), null)
}
}
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
disposables.clear() disposables.clear()
@ -194,12 +178,13 @@ class OmnipodFragment : DaggerFragment() {
} }
fun updateUi() { fun updateUi() {
updateRileyLinkUiElements() updateRileyLinkStatus()
updateOmipodUiElements() updateOmipodStatus()
updatePodActionButtons()
} }
@Synchronized @Synchronized
private fun updateRileyLinkUiElements() { private fun updateRileyLinkStatus() {
val rileyLinkServiceState = rileyLinkServiceData.rileyLinkServiceState val rileyLinkServiceState = rileyLinkServiceData.rileyLinkServiceState
val resourceId = rileyLinkServiceState.getResourceId() val resourceId = rileyLinkServiceState.getResourceId()
@ -216,11 +201,9 @@ class OmnipodFragment : DaggerFragment() {
omnipod_rl_status.setTextColor(if (rileyLinkServiceState.isError || rileyLinkError != null) Color.RED else Color.WHITE) omnipod_rl_status.setTextColor(if (rileyLinkServiceState.isError || rileyLinkError != null) Color.RED else Color.WHITE)
} }
fun updateOmipodUiElements() { fun updateOmipodStatus() {
updateLastConnectionUiElements() updateLastConnection()
updateAcknowledgeAlertsUiElements() updatePodStatus()
updatePodStatusUiElements()
setVisibilityOfPodDebugButton()
val errors = ArrayList<String>(); val errors = ArrayList<String>();
val rileyLinkErrorDescription = omnipodPumpPlugin.rileyLinkService.errorDescription val rileyLinkErrorDescription = omnipodPumpPlugin.rileyLinkService.errorDescription
@ -238,11 +221,11 @@ class OmnipodFragment : DaggerFragment() {
omnipod_pod_tid.text = "-" omnipod_pod_tid.text = "-"
omnipod_pod_firmware_version.text = "-" omnipod_pod_firmware_version.text = "-"
omnipod_pod_expiry.text = "-" omnipod_pod_expiry.text = "-"
omnipod_basabasalrate.text = "-" omnipod_base_basal_rate.text = "-"
omnipod_reservoir.text = "-" omnipod_reservoir.text = "-"
omnipod_tempbasal.text = "-" omnipod_tempbasal.text = "-"
omnipod_lastbolus.text = "-" omnipod_lastbolus.text = "-"
omnipod_lastconnection.setTextColor(Color.WHITE) omnipod_pod_active_alerts.text = "-"
} else { } else {
omnipod_pod_address.text = podStateManager.address.toString() omnipod_pod_address.text = podStateManager.address.toString()
omnipod_pod_lot.text = podStateManager.lot.toString() omnipod_pod_lot.text = podStateManager.lot.toString()
@ -265,7 +248,7 @@ class OmnipodFragment : DaggerFragment() {
} }
// base basal rate // base basal rate
omnipod_basabasalrate.text = resourceHelper.gs(R.string.pump_basebasalrate, omnipodPumpPlugin.model().determineCorrectBasalSize(omnipodPumpPlugin.baseBasalRate)) omnipod_base_basal_rate.text = resourceHelper.gs(R.string.pump_basebasalrate, omnipodPumpPlugin.model().determineCorrectBasalSize(omnipodPumpPlugin.baseBasalRate))
omnipod_tempbasal.text = activePlugin.activeTreatments omnipod_tempbasal.text = activePlugin.activeTreatments
.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: "-" .getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: "-"
@ -278,6 +261,8 @@ class OmnipodFragment : DaggerFragment() {
omnipod_reservoir.text = resourceHelper.gs(R.string.omnipod_reservoir_left, podStateManager.reservoirLevel) omnipod_reservoir.text = resourceHelper.gs(R.string.omnipod_reservoir_left, podStateManager.reservoirLevel)
warnColors.setColorInverse(omnipod_reservoir, podStateManager.reservoirLevel, 50.0, 20.0) warnColors.setColorInverse(omnipod_reservoir, podStateManager.reservoirLevel, 50.0, 20.0)
} }
omnipod_pod_active_alerts.text = TextUtils.join(System.lineSeparator(), aapsOmnipodUtil.getTranslatedActiveAlerts(podStateManager))
} }
if (errors.size == 0) { if (errors.size == 0) {
@ -295,12 +280,9 @@ class OmnipodFragment : DaggerFragment() {
omnipod_queue.visibility = View.VISIBLE omnipod_queue.visibility = View.VISIBLE
omnipod_queue.text = status omnipod_queue.text = status
} }
omnipod_refresh.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && podStateManager.isPodInitialized
&& podStateManager.podProgressStatus.isAtLeast(PodProgressStatus.PAIRING_COMPLETED) && !commandQueue.statusInQueue()
} }
private fun updateLastConnectionUiElements() { private fun updateLastConnection() {
if (podStateManager.isPodInitialized && podStateManager.lastSuccessfulCommunication != null) { // Null check for backwards compatibility if (podStateManager.isPodInitialized && podStateManager.lastSuccessfulCommunication != null) { // Null check for backwards compatibility
omnipod_lastconnection.text = readableDuration(podStateManager.lastSuccessfulCommunication) omnipod_lastconnection.text = readableDuration(podStateManager.lastSuccessfulCommunication)
omnipod_lastconnection.setTextColor(Color.WHITE) omnipod_lastconnection.setTextColor(Color.WHITE)
@ -322,7 +304,7 @@ class OmnipodFragment : DaggerFragment() {
} }
} }
private fun updatePodStatusUiElements() { private fun updatePodStatus() {
if (!podStateManager.hasPodState()) { if (!podStateManager.hasPodState()) {
omnipod_pod_status.text = resourceHelper.gs(R.string.omnipod_pod_status_no_active_pod) omnipod_pod_status.text = resourceHelper.gs(R.string.omnipod_pod_status_no_active_pod)
} else if (!podStateManager.isPodActivationCompleted) { } else if (!podStateManager.isPodActivationCompleted) {
@ -360,16 +342,47 @@ class OmnipodFragment : DaggerFragment() {
} }
} }
private fun updateAcknowledgeAlertsUiElements() { private fun updatePodActionButtons() {
updateRefreshStatusButton()
updateAcknowledgeAlertsButton()
updatePulseLogButton()
}
private fun disablePodActionButtons() {
omnipod_pod_active_alerts_ack.isEnabled = false
omnipod_refresh.isEnabled = false
omnipod_pod_debug.isEnabled = false
}
private fun updateRefreshStatusButton() {
omnipod_refresh.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && podStateManager.isPodInitialized
&& podStateManager.podProgressStatus.isAtLeast(PodProgressStatus.PAIRING_COMPLETED) && !commandQueue.statusInQueue()
}
private fun updateAcknowledgeAlertsButton() {
if (podStateManager.isPodInitialized && podStateManager.hasActiveAlerts() && !podStateManager.isPodDead) { if (podStateManager.isPodInitialized && podStateManager.hasActiveAlerts() && !podStateManager.isPodDead) {
omnipod_pod_active_alerts.text = TextUtils.join(System.lineSeparator(), aapsOmnipodUtil.getTranslatedActiveAlerts(podStateManager))
omnipod_pod_active_alerts_ack.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && !commandQueue.statusInQueue() omnipod_pod_active_alerts_ack.isEnabled = rileyLinkServiceData.rileyLinkServiceState.isReady && !commandQueue.statusInQueue()
} else { } else {
omnipod_pod_active_alerts.text = "-"
omnipod_pod_active_alerts_ack.isEnabled = false omnipod_pod_active_alerts_ack.isEnabled = false
} }
} }
fun updatePulseLogButton() {
if (aapsOmnipodManager.isPodDebuggingOptionsEnabled) {
omnipod_pod_debug.visibility = View.VISIBLE
omnipod_pod_debug.isEnabled = podStateManager.isPodActivationCompleted && rileyLinkServiceData.rileyLinkServiceState.isReady && !commandQueue.statusInQueue()
} else {
omnipod_pod_debug.visibility = View.GONE
}
}
private fun displayNotConfiguredDialog() {
context?.let {
OKDialog.show(it, resourceHelper.gs(R.string.omnipod_warning),
resourceHelper.gs(R.string.omnipod_error_operation_not_possible_no_configuration), null)
}
}
private fun readableDuration(dateTime: DateTime): String { private fun readableDuration(dateTime: DateTime): String {
val minutes = Duration(dateTime, DateTime.now()).standardMinutes.toInt() val minutes = Duration(dateTime, DateTime.now()).standardMinutes.toInt()
when { when {

View file

@ -452,7 +452,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
android:id="@+id/omnipod_basabasalrate" android:id="@+id/omnipod_base_basal_rate"
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"
@ -707,7 +707,7 @@
android:text="@string/omnipod_ack_short" /> android:text="@string/omnipod_ack_short" />
<Button <Button
android:id="@+id/omnipod_stats" android:id="@+id/omnipod_rileylink_stats"
style="@style/ButtonSmallFontStyle" style="@style/ButtonSmallFontStyle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"