AndroidAPS/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt

451 lines
23 KiB
Kotlin
Raw Normal View History

2020-12-25 16:47:42 +01:00
package info.nightscout.androidaps.dialogs
2021-01-01 11:37:24 +01:00
import android.content.Context
2020-12-25 16:47:42 +01:00
import android.os.Bundle
2021-01-01 16:44:25 +01:00
import android.os.Handler
2021-08-11 18:10:44 +02:00
import android.os.Looper
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
2020-12-25 16:47:42 +01:00
import androidx.fragment.app.FragmentManager
import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.R
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.activities.ErrorHelperActivity
2021-05-28 16:06:44 +02:00
import info.nightscout.androidaps.database.AppRepository
import info.nightscout.androidaps.database.entities.OfflineEvent
2021-04-03 21:29:26 +02:00
import info.nightscout.androidaps.database.entities.ValueWithUnit
import info.nightscout.androidaps.database.entities.UserEntry.Action
import info.nightscout.androidaps.database.entities.UserEntry.Sources
2021-05-28 16:06:44 +02:00
import info.nightscout.androidaps.database.transactions.CancelCurrentOfflineEventIfAnyTransaction
import info.nightscout.androidaps.database.transactions.InsertAndCancelCurrentOfflineEventTransaction
2020-12-27 16:20:32 +01:00
import info.nightscout.androidaps.databinding.DialogLoopBinding
2021-02-14 15:09:06 +01:00
import info.nightscout.androidaps.events.EventPreferenceChange
import info.nightscout.androidaps.events.EventRefreshOverview
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.interfaces.*
2020-12-25 16:47:42 +01:00
import info.nightscout.androidaps.logging.AAPSLogger
2021-02-09 17:57:28 +01:00
import info.nightscout.androidaps.logging.UserEntryLogger
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
2020-12-25 16:47:42 +01:00
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.ToastUtils
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.extensions.toVisibility
2021-05-28 16:06:44 +02:00
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.T
2020-12-25 16:47:42 +01:00
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
2021-05-28 16:06:44 +02:00
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.plusAssign
2020-12-25 16:47:42 +01:00
import javax.inject.Inject
class LoopDialog : DaggerDialogFragment() {
@Inject lateinit var aapsLogger: AAPSLogger
2021-01-01 11:37:24 +01:00
@Inject lateinit var ctx: Context
2020-12-25 16:47:42 +01:00
@Inject lateinit var sp: SP
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction
2020-12-26 17:40:16 +01:00
@Inject lateinit var loopPlugin: LoopPlugin
2021-04-14 00:45:30 +02:00
@Inject lateinit var activePlugin: ActivePlugin
@Inject lateinit var constraintChecker: ConstraintChecker
2020-12-26 17:40:16 +01:00
@Inject lateinit var commandQueue: CommandQueueProvider
2021-04-13 23:27:55 +02:00
@Inject lateinit var configBuilder: ConfigBuilder
2021-02-09 17:57:28 +01:00
@Inject lateinit var uel: UserEntryLogger
2021-05-28 16:06:44 +02:00
@Inject lateinit var dateUtil: DateUtil
@Inject lateinit var repository: AppRepository
2020-12-25 16:47:42 +01:00
2020-12-26 17:40:16 +01:00
private var showOkCancel: Boolean = true
2020-12-27 16:20:32 +01:00
private var _binding: DialogLoopBinding? = null
2021-08-11 18:10:44 +02:00
private var loopHandler = Handler(Looper.getMainLooper())
2021-08-06 00:08:49 +02:00
private lateinit var refreshDialog: Runnable
2021-02-14 15:09:06 +01:00
2020-12-27 16:20:32 +01:00
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
2020-12-26 17:40:16 +01:00
2021-05-28 16:06:44 +02:00
val disposable = CompositeDisposable()
2020-12-25 16:47:42 +01:00
override fun onStart() {
super.onStart()
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
2020-12-26 17:40:16 +01:00
savedInstanceState.putInt("showOkCancel", if (showOkCancel) 1 else 0)
2020-12-25 16:47:42 +01:00
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
2020-12-28 12:21:31 +01:00
savedInstanceState: Bundle?): View {
2020-12-26 17:40:16 +01:00
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
showOkCancel = bundle.getInt("showOkCancel", 1) == 1
}
2020-12-25 16:47:42 +01:00
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
isCancelable = true
dialog?.setCanceledOnTouchOutside(false)
2020-12-27 16:20:32 +01:00
_binding = DialogLoopBinding.inflate(inflater, container, false)
return binding.root
2020-12-25 16:47:42 +01:00
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2020-12-26 17:40:16 +01:00
updateGUI("LoopDialogOnViewCreated")
2020-12-28 12:21:31 +01:00
binding.overviewCloseloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewLgsloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewOpenloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewEnable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewResume.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewReconnect.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend10h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect15m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect30m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
2020-12-25 16:47:42 +01:00
// cancel button
2020-12-27 16:20:32 +01:00
binding.cancel.setOnClickListener { dismiss() }
2020-12-25 16:47:42 +01:00
2021-01-01 16:44:25 +01:00
refreshDialog = Runnable {
2021-02-16 11:46:34 +01:00
scheduleUpdateGUI()
2021-01-01 16:44:25 +01:00
loopHandler.postDelayed(refreshDialog, 15 * 1000L)
}
loopHandler.postDelayed(refreshDialog, 15 * 1000L)
2020-12-25 16:47:42 +01:00
}
2020-12-28 12:21:31 +01:00
@Synchronized
2020-12-25 16:47:42 +01:00
override fun onDestroyView() {
super.onDestroyView()
2020-12-28 12:21:31 +01:00
_binding = null
2021-01-01 16:44:25 +01:00
loopHandler.removeCallbacksAndMessages(null)
2021-05-28 16:06:44 +02:00
disposable.clear()
2021-01-01 16:44:25 +01:00
}
var task: Runnable? = null
2021-02-16 11:46:34 +01:00
private fun scheduleUpdateGUI() {
2021-01-01 16:44:25 +01:00
class UpdateRunnable : Runnable {
override fun run() {
2021-02-16 11:46:34 +01:00
updateGUI("refreshDialog")
2021-01-01 16:44:25 +01:00
task = null
}
}
view?.removeCallbacks(task)
task = UpdateRunnable()
view?.postDelayed(task, 500)
2020-12-25 16:47:42 +01:00
}
2020-12-28 12:21:31 +01:00
@Synchronized
2020-12-26 17:40:16 +01:00
fun updateGUI(from: String) {
2020-12-28 12:21:31 +01:00
if (_binding == null) return
2020-12-26 17:40:16 +01:00
aapsLogger.debug("UpdateGUI from $from")
val pumpDescription: PumpDescription = activePlugin.activePump.pumpDescription
2021-02-16 11:46:34 +01:00
val closedLoopAllowed = constraintChecker.isClosedLoopAllowed(Constraint(true))
val lgsEnabled = constraintChecker.isLgsAllowed(Constraint(true))
2020-12-28 12:21:31 +01:00
val apsMode = sp.getString(R.string.key_aps_mode, "open")
2021-08-17 08:30:10 +02:00
val pump = activePlugin.activePump
2021-08-19 01:01:12 +02:00
when {
pump.isSuspended() -> {
binding.overviewLoop.visibility = View.GONE
binding.overviewSuspend.visibility = View.GONE
binding.overviewPump.visibility = View.GONE
}
!profileFunction.isProfileValid("LoopDialogUpdateGUI") -> {
binding.overviewLoop.visibility = View.GONE
binding.overviewSuspend.visibility = View.GONE
binding.overviewPump.visibility = View.GONE
}
!loopPlugin.isEnabled(PluginType.LOOP) -> {
binding.overviewLoop.visibility = View.VISIBLE
binding.overviewEnable.visibility = View.VISIBLE
binding.overviewDisable.visibility = View.GONE
binding.overviewSuspend.visibility = View.GONE
binding.overviewPump.visibility = View.GONE
}
loopPlugin.isDisconnected -> {
binding.overviewLoop.visibility = View.GONE
binding.overviewSuspend.visibility = View.GONE
binding.overviewPump.visibility = View.VISIBLE
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.reconnect)
binding.overviewDisconnectButtons.visibility = View.VISIBLE
binding.overviewDisconnect15m.visibility = pumpDescription.tempDurationStep15mAllowed.toVisibility()
binding.overviewDisconnect30m.visibility = pumpDescription.tempDurationStep30mAllowed.toVisibility()
2021-08-19 01:01:12 +02:00
binding.overviewReconnect.visibility = View.VISIBLE
}
loopPlugin.isSuspended -> {
binding.overviewLoop.visibility = View.GONE
binding.overviewSuspend.visibility = View.VISIBLE
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.resumeloop)
binding.overviewSuspendButtons.visibility = View.VISIBLE
2021-08-19 01:01:12 +02:00
binding.overviewResume.visibility = View.VISIBLE
binding.overviewPump.visibility = View.GONE
}
else -> {
binding.overviewLoop.visibility = View.VISIBLE
binding.overviewEnable.visibility = View.GONE
when {
closedLoopAllowed.value() -> {
binding.overviewCloseloop.visibility = (apsMode != "closed").toVisibility()
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
}
lgsEnabled.value() -> {
binding.overviewCloseloop.visibility = View.GONE
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
}
else -> {
binding.overviewCloseloop.visibility = View.GONE
binding.overviewLgsloop.visibility = View.GONE
binding.overviewOpenloop.visibility = View.GONE
}
}
binding.overviewSuspend.visibility = View.VISIBLE
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.suspendloop)
binding.overviewSuspendButtons.visibility = View.VISIBLE
binding.overviewResume.visibility = View.GONE
binding.overviewPump.visibility = View.VISIBLE
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.disconnectpump)
binding.overviewDisconnectButtons.visibility = View.VISIBLE
binding.overviewDisconnect15m.visibility = pumpDescription.tempDurationStep15mAllowed.toVisibility()
binding.overviewDisconnect30m.visibility = pumpDescription.tempDurationStep30mAllowed.toVisibility()
binding.overviewReconnect.visibility = View.GONE
}
}
/**************************************************************************************************
2020-12-25 16:47:42 +01:00
val profile = profileFunction.getProfile()
2021-04-14 22:58:21 +02:00
val profileStore = activePlugin.activeProfileSource.profile
2020-12-25 16:47:42 +01:00
if (profile == null || profileStore == null) {
2021-01-01 11:37:24 +01:00
ToastUtils.showToastInUiThread(ctx, resourceHelper.gs(R.string.noprofile))
2020-12-25 16:47:42 +01:00
dismiss()
return
}
2021-08-19 01:01:12 +02:00
**************************************************************************************************/
2020-12-25 16:47:42 +01:00
}
2021-01-01 11:37:24 +01:00
private fun onClickOkCancelEnabled(v: View): Boolean {
2020-12-26 17:40:16 +01:00
var description = ""
2020-12-28 12:21:31 +01:00
when (v.id) {
2021-05-28 16:06:44 +02:00
R.id.overview_closeloop -> description = resourceHelper.gs(R.string.closedloop)
R.id.overview_lgsloop -> description = resourceHelper.gs(R.string.lowglucosesuspend)
R.id.overview_openloop -> description = resourceHelper.gs(R.string.openloop)
R.id.overview_disable -> description = resourceHelper.gs(R.string.disableloop)
R.id.overview_enable -> description = resourceHelper.gs(R.string.enableloop)
R.id.overview_resume -> description = resourceHelper.gs(R.string.resume)
R.id.overview_reconnect -> description = resourceHelper.gs(R.string.reconnect)
R.id.overview_suspend_1h -> description = resourceHelper.gs(R.string.suspendloopfor1h)
R.id.overview_suspend_2h -> description = resourceHelper.gs(R.string.suspendloopfor2h)
R.id.overview_suspend_3h -> description = resourceHelper.gs(R.string.suspendloopfor3h)
R.id.overview_suspend_10h -> description = resourceHelper.gs(R.string.suspendloopfor10h)
2020-12-28 12:21:31 +01:00
R.id.overview_disconnect_15m -> description = resourceHelper.gs(R.string.disconnectpumpfor15m)
R.id.overview_disconnect_30m -> description = resourceHelper.gs(R.string.disconnectpumpfor30m)
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_1h -> description = resourceHelper.gs(R.string.disconnectpumpfor1h)
R.id.overview_disconnect_2h -> description = resourceHelper.gs(R.string.disconnectpumpfor2h)
R.id.overview_disconnect_3h -> description = resourceHelper.gs(R.string.disconnectpumpfor3h)
2020-12-26 17:40:16 +01:00
}
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.confirm), description, Runnable {
onClick(v)
})
2020-12-25 16:47:42 +01:00
}
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2020-12-26 17:40:16 +01:00
fun onClick(v: View): Boolean {
when (v.id) {
2021-05-28 16:06:44 +02:00
R.id.overview_closeloop -> {
uel.log(Action.CLOSED_LOOP_MODE, Sources.LoopDialog)
sp.putString(R.string.key_aps_mode, "closed")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop)))
2020-12-28 12:21:31 +01:00
return true
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_lgsloop -> {
uel.log(Action.LGS_LOOP_MODE, Sources.LoopDialog)
sp.putString(R.string.key_aps_mode, "lgs")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
2020-12-28 12:21:31 +01:00
return true
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_openloop -> {
uel.log(Action.OPEN_LOOP_MODE, Sources.LoopDialog)
sp.putString(R.string.key_aps_mode, "open")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
2020-12-28 12:21:31 +01:00
return true
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_disable -> {
uel.log(Action.LOOP_DISABLED, Sources.LoopDialog)
2020-12-26 17:40:16 +01:00
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
loopPlugin.setFragmentVisible(PluginType.LOOP, false)
2021-04-13 23:27:55 +02:00
configBuilder.storeSettings("DisablingLoop")
2021-06-01 22:34:18 +02:00
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
2021-01-01 11:37:24 +01:00
ToastUtils.showToastInUiThread(ctx, resourceHelper.gs(R.string.tempbasaldeliveryerror))
2020-12-26 17:40:16 +01:00
}
}
})
2021-05-28 16:06:44 +02:00
disposable += repository.runTransactionForResult(InsertAndCancelCurrentOfflineEventTransaction(dateUtil.now(), T.days(365).msecs(), OfflineEvent.Reason.DISABLE_LOOP))
.subscribe({ result ->
result.updated.forEach { aapsLogger.debug(LTag.DATABASE, "Updated OfflineEvent $it") }
result.inserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted OfflineEvent $it") }
}, {
aapsLogger.error(LTag.DATABASE, "Error while saving OfflineEvent", it)
})
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_enable -> {
uel.log(Action.LOOP_ENABLED, Sources.LoopDialog)
2020-12-26 17:40:16 +01:00
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
2021-04-13 23:27:55 +02:00
configBuilder.storeSettings("EnablingLoop")
2021-06-01 22:34:18 +02:00
rxBus.send(EventRefreshOverview("suspend_menu"))
2021-05-28 16:06:44 +02:00
disposable += repository.runTransactionForResult(CancelCurrentOfflineEventIfAnyTransaction(dateUtil.now()))
.subscribe({ result ->
result.updated.forEach { aapsLogger.debug(LTag.DATABASE, "Updated OfflineEvent $it") }
}, {
aapsLogger.error(LTag.DATABASE, "Error while saving OfflineEvent", it)
})
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
R.id.overview_resume, R.id.overview_reconnect -> {
2021-05-28 16:06:44 +02:00
uel.log(if (v.id == R.id.overview_resume) Action.RESUME else Action.RECONNECT, Sources.LoopDialog)
disposable += repository.runTransactionForResult(CancelCurrentOfflineEventIfAnyTransaction(dateUtil.now()))
.subscribe({ result ->
result.updated.forEach { aapsLogger.debug(LTag.DATABASE, "Updated OfflineEvent $it") }
}, {
aapsLogger.error(LTag.DATABASE, "Error while saving OfflineEvent", it)
})
2021-06-01 22:34:18 +02:00
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
2021-06-23 21:01:42 +02:00
ErrorHelperActivity.runAlarm(ctx, result.comment, resourceHelper.gs(R.string.tempbasaldeliveryerror), R.raw.boluserror)
2020-12-26 17:40:16 +01:00
}
}
})
sp.putBoolean(R.string.key_objectiveusereconnect, true)
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_suspend_1h -> {
2021-04-03 21:29:26 +02:00
uel.log(Action.SUSPEND, Sources.LoopDialog, ValueWithUnit.Hour(1))
2021-06-01 22:34:18 +02:00
loopPlugin.suspendLoop(T.hours(1).mins().toInt())
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_suspend_2h -> {
2021-04-03 21:29:26 +02:00
uel.log(Action.SUSPEND, Sources.LoopDialog, ValueWithUnit.Hour(2))
2021-06-01 22:34:18 +02:00
loopPlugin.suspendLoop(T.hours(2).mins().toInt())
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_suspend_3h -> {
2021-04-03 21:29:26 +02:00
uel.log(Action.SUSPEND, Sources.LoopDialog, ValueWithUnit.Hour(3))
2021-06-01 22:34:18 +02:00
loopPlugin.suspendLoop(T.hours(3).mins().toInt())
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_suspend_10h -> {
2021-04-03 21:29:26 +02:00
uel.log(Action.SUSPEND, Sources.LoopDialog, ValueWithUnit.Hour(10))
2021-06-01 22:34:18 +02:00
loopPlugin.suspendLoop(T.hours(10).mins().toInt())
rxBus.send(EventRefreshOverview("suspend_menu"))
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_15m -> {
2021-06-01 22:34:18 +02:00
profileFunction.getProfile()?.let { profile ->
uel.log(Action.DISCONNECT, Sources.LoopDialog, ValueWithUnit.Minute(15))
loopPlugin.goToZeroTemp(T.mins(15).mins().toInt(), profile, OfflineEvent.Reason.DISCONNECT_PUMP)
rxBus.send(EventRefreshOverview("suspend_menu"))
}
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_30m -> {
2021-06-01 22:34:18 +02:00
profileFunction.getProfile()?.let { profile ->
uel.log(Action.DISCONNECT, Sources.LoopDialog, ValueWithUnit.Minute(30))
loopPlugin.goToZeroTemp(T.mins(30).mins().toInt(), profile, OfflineEvent.Reason.DISCONNECT_PUMP)
rxBus.send(EventRefreshOverview("suspend_menu"))
}
2020-12-26 17:40:16 +01:00
return true
}
2020-12-25 16:47:42 +01:00
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_1h -> {
2021-06-01 22:34:18 +02:00
profileFunction.getProfile()?.let { profile ->
uel.log(Action.DISCONNECT, Sources.LoopDialog, ValueWithUnit.Hour(1))
loopPlugin.goToZeroTemp(T.hours(1).mins().toInt(), profile, OfflineEvent.Reason.DISCONNECT_PUMP)
rxBus.send(EventRefreshOverview("suspend_menu"))
}
2020-12-26 17:40:16 +01:00
return true
2020-12-25 16:47:42 +01:00
}
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_2h -> {
2021-06-01 22:34:18 +02:00
profileFunction.getProfile()?.let { profile ->
uel.log(Action.DISCONNECT, Sources.LoopDialog, ValueWithUnit.Hour(2))
loopPlugin.goToZeroTemp(T.hours(2).mins().toInt(), profile, OfflineEvent.Reason.DISCONNECT_PUMP)
rxBus.send(EventRefreshOverview("suspend_menu"))
}
2020-12-26 17:40:16 +01:00
return true
2020-12-25 16:47:42 +01:00
}
2021-05-28 16:06:44 +02:00
R.id.overview_disconnect_3h -> {
2021-06-01 22:34:18 +02:00
profileFunction.getProfile()?.let { profile ->
uel.log(Action.DISCONNECT, Sources.LoopDialog, ValueWithUnit.Hour(3))
loopPlugin.goToZeroTemp(T.hours(3).mins().toInt(), profile, OfflineEvent.Reason.DISCONNECT_PUMP)
rxBus.send(EventRefreshOverview("suspend_menu"))
}
2020-12-26 17:40:16 +01:00
return true
2020-12-25 16:47:42 +01:00
}
}
2020-12-26 17:40:16 +01:00
return false
2020-12-25 16:47:42 +01:00
}
override fun show(manager: FragmentManager, tag: String?) {
try {
manager.beginTransaction().let {
it.add(this, tag)
it.commitAllowingStateLoss()
}
} catch (e: IllegalStateException) {
2021-08-06 00:08:49 +02:00
aapsLogger.debug(e.localizedMessage ?: e.toString())
2020-12-25 16:47:42 +01:00
}
}
}