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
2020-12-27 15:32:12 +01:00
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
2021-03-31 00:18:55 +02:00
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
2021-10-15 14:56:22 +02:00
import info.nightscout.androidaps.plugins.bus.RxBus
2020-12-27 15:32:12 +01:00
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
2020-12-26 17:40:16 +01:00
import info.nightscout.androidaps.queue.Callback
2020-12-27 15:32:12 +01:00
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
2021-04-05 22:41:28 +02:00
import info.nightscout.androidaps.extensions.toVisibility
2021-05-28 16:06:44 +02:00
import info.nightscout.androidaps.logging.LTag
2021-08-29 22:24:52 +02:00
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
2021-05-28 16:06:44 +02:00
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
2021-10-15 14:56:22 +02:00
@Inject lateinit var rxBus : RxBus
2020-12-25 16:47:42 +01:00
@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
2020-12-27 15:32:12 +01:00
@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
2021-08-29 22:24:52 +02:00
@Inject lateinit var objectivePlugin : ObjectivesPlugin
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 ( )
2021-08-28 20:58:27 +02:00
dialog ?. window ?. setLayout (
ViewGroup . LayoutParams . MATCH _PARENT ,
ViewGroup . LayoutParams . WRAP _CONTENT
)
2020-12-25 16:47:42 +01:00
}
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 ) )
2021-08-29 22:24:52 +02:00
val closedLoopAllowed2 = objectivePlugin . objectives [ ObjectivesPlugin . MAXIOB _OBJECTIVE ] . isCompleted
2021-02-16 11:46:34 +01:00
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
2021-08-25 09:00:13 +02:00
binding . overviewDisconnect15m . visibility = pumpDescription . tempDurationStep15mAllowed . toVisibility ( )
binding . overviewDisconnect30m . visibility = pumpDescription . tempDurationStep30mAllowed . toVisibility ( )
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 . isDisconnected -> {
binding . overviewLoop . visibility = View . GONE
binding . overviewSuspend . visibility = View . GONE
binding . overviewPump . visibility = View . VISIBLE
binding . overviewPumpHeader . text = resourceHelper . gs ( R . string . reconnect )
2021-08-19 22:16:38 +02:00
binding . overviewDisconnectButtons . visibility = View . VISIBLE
2021-08-19 01:01:12 +02:00
binding . overviewReconnect . visibility = View . VISIBLE
}
2021-08-29 22:24:52 +02:00
! 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 . VISIBLE
binding . overviewReconnect . visibility = View . GONE
}
2021-08-19 01:01:12 +02:00
loopPlugin . isSuspended -> {
binding . overviewLoop . visibility = View . GONE
binding . overviewSuspend . visibility = View . VISIBLE
binding . overviewSuspendHeader . text = resourceHelper . gs ( R . string . resumeloop )
2021-08-19 22:16:38 +02:00
binding . overviewSuspendButtons . visibility = View . VISIBLE
2021-08-19 01:01:12 +02:00
binding . overviewResume . visibility = View . VISIBLE
2021-09-10 00:34:17 +02:00
binding . overviewPump . visibility = View . GONE
2021-08-25 09:00:13 +02:00
binding . overviewReconnect . visibility = View . GONE
2021-08-19 01:01:12 +02:00
}
else -> {
binding . overviewLoop . visibility = View . VISIBLE
binding . overviewEnable . visibility = View . GONE
when {
2021-08-29 22:24:52 +02:00
apsMode == " closed " -> {
binding . overviewCloseloop . visibility = View . GONE
binding . overviewLgsloop . visibility = View . VISIBLE
binding . overviewOpenloop . visibility = View . VISIBLE
2021-08-19 01:01:12 +02:00
}
2021-08-29 22:24:52 +02:00
apsMode == " lgs " -> {
binding . overviewCloseloop . visibility = closedLoopAllowed . value ( ) . toVisibility ( ) //show Close loop button only if Close loop allowed
2021-08-28 20:58:27 +02:00
binding . overviewLgsloop . visibility = View . GONE
2021-08-29 22:24:52 +02:00
binding . overviewOpenloop . visibility = View . VISIBLE
2021-08-28 20:58:27 +02:00
}
2021-08-29 22:24:52 +02:00
apsMode == " open " -> {
binding . overviewCloseloop . visibility = closedLoopAllowed2 . toVisibility ( ) //show CloseLoop button only if Objective 6 is completed (closedLoopAllowed always false in open loop mode)
binding . overviewLgsloop . visibility = lgsEnabled . value ( ) . toVisibility ( )
binding . overviewOpenloop . visibility = View . GONE
2021-08-19 01:01:12 +02:00
}
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 . overviewReconnect . visibility = View . GONE
}
}
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 -> {
2021-04-01 19:27:13 +02:00
uel . log ( Action . CLOSED _LOOP _MODE , Sources . LoopDialog )
2020-12-27 15:32:12 +01:00
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-27 15:32:12 +01:00
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R . id . overview _lgsloop -> {
2021-04-01 19:27:13 +02:00
uel . log ( Action . LGS _LOOP _MODE , Sources . LoopDialog )
2020-12-27 15:32:12 +01:00
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-27 15:32:12 +01:00
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R . id . overview _openloop -> {
2021-04-01 19:27:13 +02:00
uel . log ( Action . OPEN _LOOP _MODE , Sources . LoopDialog )
2020-12-27 15:32:12 +01:00
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-27 15:32:12 +01:00
}
2020-12-28 12:21:31 +01:00
2021-05-28 16:06:44 +02:00
R . id . overview _disable -> {
2021-04-01 19:27:13 +02:00
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 -> {
2021-04-01 19:27:13 +02:00
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
2020-12-27 15:32:12 +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
}
}
}