EOpatch: cleanup
This commit is contained in:
parent
37da844b5e
commit
84d49fc453
|
@ -189,8 +189,8 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
||||||
addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, config.PUMPDRIVERS)
|
addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, config.PUMPDRIVERS)
|
||||||
addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, config.PUMPDRIVERS)
|
addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, config.PUMPDRIVERS)
|
||||||
addPreferencesFromResourceIfEnabled(diaconnG8Plugin, rootKey, config.PUMPDRIVERS)
|
addPreferencesFromResourceIfEnabled(diaconnG8Plugin, rootKey, config.PUMPDRIVERS)
|
||||||
addPreferencesFromResource(R.xml.pref_pump, rootKey, config.PUMPDRIVERS)
|
|
||||||
addPreferencesFromResourceIfEnabled(eopatchPumpPlugin, rootKey, config.PUMPDRIVERS)
|
addPreferencesFromResourceIfEnabled(eopatchPumpPlugin, rootKey, config.PUMPDRIVERS)
|
||||||
|
addPreferencesFromResource(R.xml.pref_pump, rootKey, config.PUMPDRIVERS)
|
||||||
addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey)
|
addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey)
|
||||||
addPreferencesFromResourceIfEnabled(insulinOrefFreePeakPlugin, rootKey)
|
addPreferencesFromResourceIfEnabled(insulinOrefFreePeakPlugin, rootKey)
|
||||||
addPreferencesFromResourceIfEnabled(nsClientPlugin, rootKey)
|
addPreferencesFromResourceIfEnabled(nsClientPlugin, rootKey)
|
||||||
|
|
|
@ -70,7 +70,6 @@ import javax.inject.Singleton
|
||||||
WorkersModule::class,
|
WorkersModule::class,
|
||||||
DiaconnG8Module::class,
|
DiaconnG8Module::class,
|
||||||
OpenHumansModule::class,
|
OpenHumansModule::class,
|
||||||
SharedModule::class,
|
|
||||||
EopatchModule::class,
|
EopatchModule::class,
|
||||||
SharedModule::class,
|
SharedModule::class,
|
||||||
UiModule::class,
|
UiModule::class,
|
||||||
|
|
|
@ -16,6 +16,7 @@ import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||||
import info.nightscout.androidaps.utils.WarnColors
|
import info.nightscout.androidaps.utils.WarnColors
|
||||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.AppConstant
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
@ -34,7 +35,15 @@ class StatusLightHandler @Inject constructor(
|
||||||
/**
|
/**
|
||||||
* applies the extended statusLight subview on the overview fragment
|
* applies the extended statusLight subview on the overview fragment
|
||||||
*/
|
*/
|
||||||
fun updateStatusLights(careportal_cannula_age: TextView?, careportal_insulin_age: TextView?, careportal_reservoir_level: TextView?, careportal_sensor_age: TextView?, careportal_sensor_battery_level: TextView?, careportal_pb_age: TextView?, careportal_battery_level: TextView?) {
|
fun updateStatusLights(
|
||||||
|
careportal_cannula_age: TextView?,
|
||||||
|
careportal_insulin_age: TextView?,
|
||||||
|
careportal_reservoir_level: TextView?,
|
||||||
|
careportal_sensor_age: TextView?,
|
||||||
|
careportal_sensor_battery_level: TextView?,
|
||||||
|
careportal_pb_age: TextView?,
|
||||||
|
careportal_battery_level: TextView?
|
||||||
|
) {
|
||||||
val pump = activePlugin.activePump
|
val pump = activePlugin.activePump
|
||||||
val bgSource = activePlugin.activeBgSource
|
val bgSource = activePlugin.activeBgSource
|
||||||
handleAge(careportal_cannula_age, TherapyEvent.Type.CANNULA_CHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
|
handleAge(careportal_cannula_age, TherapyEvent.Type.CANNULA_CHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
|
||||||
|
@ -46,9 +55,11 @@ class StatusLightHandler @Inject constructor(
|
||||||
|
|
||||||
val insulinUnit = rh.gs(R.string.insulin_unit_shortname)
|
val insulinUnit = rh.gs(R.string.insulin_unit_shortname)
|
||||||
if (pump.model() == PumpType.OMNIPOD_EROS || pump.model() == PumpType.OMNIPOD_DASH) {
|
if (pump.model() == PumpType.OMNIPOD_EROS || pump.model() == PumpType.OMNIPOD_DASH) {
|
||||||
handleOmnipodReservoirLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
handlePatchReservoirLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit,
|
||||||
|
OmnipodConstants.MAX_RESERVOIR_READING)
|
||||||
} else if (pump.model() == PumpType.EOFLOW_EOPATCH2) {
|
} else if (pump.model() == PumpType.EOFLOW_EOPATCH2) {
|
||||||
handleEopatchReservoirLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
handlePatchReservoirLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit,
|
||||||
|
AppConstant.MAX_RESERVOIR_READING)
|
||||||
} else {
|
} else {
|
||||||
handleLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
handleLevel(careportal_reservoir_level, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
||||||
}
|
}
|
||||||
|
@ -97,21 +108,13 @@ class StatusLightHandler @Inject constructor(
|
||||||
|
|
||||||
// Omnipod only reports reservoir level when it's 50 units or less, so we display "50+U" for any value > 50
|
// Omnipod only reports reservoir level when it's 50 units or less, so we display "50+U" for any value > 50
|
||||||
@Suppress("SameParameterValue")
|
@Suppress("SameParameterValue")
|
||||||
private fun handleOmnipodReservoirLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
|
private fun handlePatchReservoirLevel(
|
||||||
if (level >= OmnipodConstants.MAX_RESERVOIR_READING) {
|
view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int,
|
||||||
|
warnDefaultValue: Double, level: Double, units: String, maxReading: Double
|
||||||
|
) {
|
||||||
|
if (level >= maxReading) {
|
||||||
@Suppress("SetTextI18n")
|
@Suppress("SetTextI18n")
|
||||||
view?.text = " 50+$units"
|
view?.text = " ${maxReading.toInt()}+$units"
|
||||||
view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor))
|
|
||||||
} else {
|
|
||||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("SameParameterValue")
|
|
||||||
private fun handleEopatchReservoirLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
|
|
||||||
if (level > 50.0) {
|
|
||||||
@Suppress("SetTextI18n")
|
|
||||||
view?.text = " 50+$units"
|
|
||||||
view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor))
|
view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor))
|
||||||
} else {
|
} else {
|
||||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||||
|
|
|
@ -150,7 +150,6 @@
|
||||||
<string name="nochangerequested">변경사항 없음</string>
|
<string name="nochangerequested">변경사항 없음</string>
|
||||||
<!-- ProfileSwitch-->
|
<!-- ProfileSwitch-->
|
||||||
<string name="zerovalueinprofile">유효하지 않은 프로파일: %1$s</string>
|
<string name="zerovalueinprofile">유효하지 않은 프로파일: %1$s</string>
|
||||||
|
|
||||||
<!-- Temptarget-->
|
<!-- Temptarget-->
|
||||||
<string name="mins">%1$d 분</string>
|
<string name="mins">%1$d 분</string>
|
||||||
<!-- Translator-->
|
<!-- Translator-->
|
||||||
|
|
1
pump/eopatch-core/.gitignore
vendored
Normal file
1
pump/eopatch-core/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/build
|
2
pump/eopatch-core/build.gradle
Normal file
2
pump/eopatch-core/build.gradle
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
configurations.create("default")
|
||||||
|
artifacts.add("default", file('libs/eopatch_core.aar'))
|
0
pump/eopatch-core/consumer-rules.pro
Normal file
0
pump/eopatch-core/consumer-rules.pro
Normal file
21
pump/eopatch-core/proguard-rules.pro
vendored
Normal file
21
pump/eopatch-core/proguard-rules.pro
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# You can control the set of applied configuration files using the
|
||||||
|
# proguardFiles setting in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Uncomment this to preserve the line number information for
|
||||||
|
# debugging stack traces.
|
||||||
|
#-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
|
# If you keep the line number information, uncomment this to
|
||||||
|
# hide the original source file name.
|
||||||
|
#-renamesourcefileattribute SourceFile
|
4
pump/eopatch-core/src/main/AndroidManifest.xml
Normal file
4
pump/eopatch-core/src/main/AndroidManifest.xml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -18,7 +18,7 @@ android {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
implementation (files("libs/eopatch_core.aar"))
|
implementation project(':pump:eopatch-core')
|
||||||
implementation project(':libraries')
|
implementation project(':libraries')
|
||||||
implementation project(':shared')
|
implementation project(':shared')
|
||||||
implementation project(':database')
|
implementation project(':database')
|
||||||
|
|
Binary file not shown.
|
@ -25,5 +25,6 @@ interface AppConstant {
|
||||||
const val DAY_START_MINUTE = 0 * 60
|
const val DAY_START_MINUTE = 0 * 60
|
||||||
const val DAY_END_MINUTE = 24 * 60
|
const val DAY_END_MINUTE = 24 * 60
|
||||||
const val INSULIN_DURATION_MIN = 2.0f
|
const val INSULIN_DURATION_MIN = 2.0f
|
||||||
|
const val MAX_RESERVOIR_READING = 50.0
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@ object EoPatchRxBus {
|
||||||
publishSubject.onNext(event)
|
publishSubject.onNext(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> listen(eventType: Class<T>): Observable<T> {
|
fun <T: Any> listen(eventType: Class<T>): Observable<T> {
|
||||||
return publishSubject.ofType(eventType)
|
return publishSubject.ofType(eventType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,26 +7,26 @@ import io.reactivex.rxjava3.core.Observable
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
|
||||||
fun <T> Observable<T>.observeOnMainThread(): Observable<T> = observeOn(AndroidSchedulers.mainThread())
|
fun <T: Any> Observable<T>.observeOnMainThread(): Observable<T> = observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
||||||
fun <T> Observable<T>.observeOnComputation(): Observable<T> = observeOn(Schedulers.computation())
|
fun <T: Any> Observable<T>.observeOnComputation(): Observable<T> = observeOn(Schedulers.computation())
|
||||||
|
|
||||||
fun <T> Observable<T>.observeOnIo(): Observable<T> = observeOn(Schedulers.io())
|
fun <T: Any> Observable<T>.observeOnIo(): Observable<T> = observeOn(Schedulers.io())
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeEmpty(): Disposable = subscribe({}, {}, {})
|
fun <T: Any> Observable<T>.subscribeEmpty(): Disposable = subscribe({}, {}, {})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {}, {})
|
fun <T: Any> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {}, {})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {})
|
fun <T: Any> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger): Disposable = subscribe({ aapsLogger.debug(LTag.PUMP, "onSuccess") }, { aapsLogger.error(LTag.PUMP, "onError", it) }, {
|
fun <T: Any> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger): Disposable = subscribe({ aapsLogger.debug(LTag.PUMP, "onSuccess") }, { aapsLogger.error(LTag.PUMP, "onError", it) }, {
|
||||||
aapsLogger.debug(LTag.PUMP, "onComplete")
|
aapsLogger.debug(LTag.PUMP, "onComplete")
|
||||||
})
|
})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable =
|
fun <T: Any> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable =
|
||||||
subscribe(onSuccess, { aapsLogger.error(LTag.PUMP, "onError", it) }, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
subscribe(onSuccess, { aapsLogger.error(LTag.PUMP, "onError", it) }, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable =
|
fun <T: Any> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable =
|
||||||
subscribe(onSuccess, onError, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
subscribe(onSuccess, onError, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
||||||
|
|
||||||
fun <T> Observable<T>.with(): Observable<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
fun <T: Any> Observable<T>.with(): Observable<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
@ -7,8 +7,8 @@ import io.reactivex.rxjava3.core.Single
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
|
||||||
fun <T> Single<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {
|
fun <T: Any> Single<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess) {
|
||||||
aapsLogger.error(LTag.PUMP, "onError", it)
|
aapsLogger.error(LTag.PUMP, "onError", it)
|
||||||
})
|
}
|
||||||
|
|
||||||
fun <T> Single<T>.with(): Single<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
fun <T: Any> Single<T>.with(): Single<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
|
@ -9,10 +9,11 @@ import android.os.Bundle
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import info.nightscout.androidaps.extensions.safeGetSerializableExtra
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchStep
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchStep
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.ActivityEopatchBinding
|
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.ActivityEopatchBinding
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.replaceFragmentInActivity
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.replaceFragmentInActivity
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
||||||
|
@ -117,7 +118,7 @@ class EopatchActivity : EoBaseActivity<ActivityEopatchBinding>() {
|
||||||
binding.viewModel?.apply {
|
binding.viewModel?.apply {
|
||||||
|
|
||||||
intent?.run {
|
intent?.run {
|
||||||
val step = intent.getSerializableExtra(EXTRA_START_PATCH_STEP) as PatchStep?
|
val step = intent.safeGetSerializableExtra(EXTRA_START_PATCH_STEP, PatchStep::class.java)
|
||||||
|
|
||||||
forceDiscard = intent.getBooleanExtra(EXTRA_FORCE_DISCARD, false)
|
forceDiscard = intent.getBooleanExtra(EXTRA_FORCE_DISCARD, false)
|
||||||
if (intent.getBooleanExtra(EXTRA_START_WITH_COMM_CHECK, false)) {
|
if (intent.getBooleanExtra(EXTRA_START_WITH_COMM_CHECK, false)) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package info.nightscout.androidaps.plugins.pump.eopatch.vo
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import io.reactivex.rxjava3.core.Observable
|
import io.reactivex.rxjava3.core.Observable
|
||||||
|
|
||||||
interface IPreference<T>{
|
interface IPreference<T: Any>{
|
||||||
fun flush(sp: SP)
|
fun flush(sp: SP)
|
||||||
fun observe(): Observable<T>
|
fun observe(): Observable<T>
|
||||||
}
|
}
|
|
@ -14,6 +14,7 @@ include ':pump:danar'
|
||||||
include ':pump:danars'
|
include ':pump:danars'
|
||||||
include ':pump:diaconn'
|
include ':pump:diaconn'
|
||||||
include ':pump:eopatch'
|
include ':pump:eopatch'
|
||||||
|
include ':pump:eopatch-core'
|
||||||
include ':insight'
|
include ':insight'
|
||||||
include ':pump:medtronic'
|
include ':pump:medtronic'
|
||||||
include ':pump:omnipod-common'
|
include ':pump:omnipod-common'
|
||||||
|
|
Loading…
Reference in a new issue