diff --git a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt index 4e8bf520fd..154a35ff49 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt @@ -189,8 +189,8 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, config.PUMPDRIVERS) addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, config.PUMPDRIVERS) addPreferencesFromResourceIfEnabled(diaconnG8Plugin, rootKey, config.PUMPDRIVERS) - addPreferencesFromResource(R.xml.pref_pump, rootKey, config.PUMPDRIVERS) addPreferencesFromResourceIfEnabled(eopatchPumpPlugin, rootKey, config.PUMPDRIVERS) + addPreferencesFromResource(R.xml.pref_pump, rootKey, config.PUMPDRIVERS) addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey) addPreferencesFromResourceIfEnabled(insulinOrefFreePeakPlugin, rootKey) addPreferencesFromResourceIfEnabled(nsClientPlugin, rootKey) diff --git a/app/src/main/java/info/nightscout/androidaps/di/AppComponent.kt b/app/src/main/java/info/nightscout/androidaps/di/AppComponent.kt index 77c7ca52d4..8433db9be4 100644 --- a/app/src/main/java/info/nightscout/androidaps/di/AppComponent.kt +++ b/app/src/main/java/info/nightscout/androidaps/di/AppComponent.kt @@ -70,7 +70,6 @@ import javax.inject.Singleton WorkersModule::class, DiaconnG8Module::class, OpenHumansModule::class, - SharedModule::class, EopatchModule::class, SharedModule::class, UiModule::class, diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt index 458ac13f46..45c83ef7cb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/StatusLightHandler.kt @@ -16,6 +16,7 @@ import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.WarnColors import info.nightscout.androidaps.interfaces.ResourceHelper +import info.nightscout.androidaps.plugins.pump.eopatch.AppConstant import info.nightscout.shared.sharedPreferences.SP import javax.inject.Inject import javax.inject.Singleton @@ -34,7 +35,15 @@ class StatusLightHandler @Inject constructor( /** * 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 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) @@ -46,9 +55,11 @@ class StatusLightHandler @Inject constructor( val insulinUnit = rh.gs(R.string.insulin_unit_shortname) 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) { - 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 { 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 @Suppress("SameParameterValue") - private fun handleOmnipodReservoirLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) { - if (level >= OmnipodConstants.MAX_RESERVOIR_READING) { + private fun handlePatchReservoirLevel( + view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, + warnDefaultValue: Double, level: Double, units: String, maxReading: Double + ) { + if (level >= maxReading) { @Suppress("SetTextI18n") - view?.text = " 50+$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?.text = " ${maxReading.toInt()}+$units" view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor)) } else { handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units) diff --git a/core/src/main/res/values-ko-rKR/strings.xml b/core/src/main/res/values-ko-rKR/strings.xml index a449a48fe9..38bfd65137 100644 --- a/core/src/main/res/values-ko-rKR/strings.xml +++ b/core/src/main/res/values-ko-rKR/strings.xml @@ -150,7 +150,6 @@ 변경사항 없음 유효하지 않은 프로파일: %1$s - %1$d 분 diff --git a/pump/eopatch-core/.gitignore b/pump/eopatch-core/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/pump/eopatch-core/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/pump/eopatch-core/build.gradle b/pump/eopatch-core/build.gradle new file mode 100644 index 0000000000..37621a5a2b --- /dev/null +++ b/pump/eopatch-core/build.gradle @@ -0,0 +1,2 @@ +configurations.create("default") +artifacts.add("default", file('libs/eopatch_core.aar')) \ No newline at end of file diff --git a/pump/eopatch-core/consumer-rules.pro b/pump/eopatch-core/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries/libs/eopatch_core.aar b/pump/eopatch-core/libs/eopatch_core.aar similarity index 100% rename from libraries/libs/eopatch_core.aar rename to pump/eopatch-core/libs/eopatch_core.aar diff --git a/pump/eopatch-core/proguard-rules.pro b/pump/eopatch-core/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/pump/eopatch-core/proguard-rules.pro @@ -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 \ No newline at end of file diff --git a/pump/eopatch-core/src/main/AndroidManifest.xml b/pump/eopatch-core/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a5918e68ab --- /dev/null +++ b/pump/eopatch-core/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/pump/eopatch/build.gradle b/pump/eopatch/build.gradle index 3d34663f47..69c02c04f6 100644 --- a/pump/eopatch/build.gradle +++ b/pump/eopatch/build.gradle @@ -18,7 +18,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation (files("libs/eopatch_core.aar")) + implementation project(':pump:eopatch-core') implementation project(':libraries') implementation project(':shared') implementation project(':database') diff --git a/pump/eopatch/libs/eopatch_core.aar b/pump/eopatch/libs/eopatch_core.aar deleted file mode 100644 index 7c48b147a2..0000000000 Binary files a/pump/eopatch/libs/eopatch_core.aar and /dev/null differ diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/AppConstant.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/AppConstant.kt index 81087620ef..67e61ba793 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/AppConstant.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/AppConstant.kt @@ -25,5 +25,6 @@ interface AppConstant { const val DAY_START_MINUTE = 0 * 60 const val DAY_END_MINUTE = 24 * 60 const val INSULIN_DURATION_MIN = 2.0f + const val MAX_RESERVOIR_READING = 50.0 } } \ No newline at end of file diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/EoPatchRxBus.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/EoPatchRxBus.kt index 4658e28218..abc8625272 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/EoPatchRxBus.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/EoPatchRxBus.kt @@ -10,7 +10,7 @@ object EoPatchRxBus { publishSubject.onNext(event) } - fun listen(eventType: Class): Observable { + fun listen(eventType: Class): Observable { return publishSubject.ofType(eventType) } diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/ObservableExtension.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/ObservableExtension.kt index afec882772..1bc6009797 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/ObservableExtension.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/ObservableExtension.kt @@ -7,26 +7,26 @@ import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.schedulers.Schedulers -fun Observable.observeOnMainThread(): Observable = observeOn(AndroidSchedulers.mainThread()) +fun Observable.observeOnMainThread(): Observable = observeOn(AndroidSchedulers.mainThread()) -fun Observable.observeOnComputation(): Observable = observeOn(Schedulers.computation()) +fun Observable.observeOnComputation(): Observable = observeOn(Schedulers.computation()) -fun Observable.observeOnIo(): Observable = observeOn(Schedulers.io()) +fun Observable.observeOnIo(): Observable = observeOn(Schedulers.io()) -fun Observable.subscribeEmpty(): Disposable = subscribe({}, {}, {}) +fun Observable.subscribeEmpty(): Disposable = subscribe({}, {}, {}) -fun Observable.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {}, {}) +fun Observable.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {}, {}) -fun Observable.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {}) +fun Observable.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {}) -fun Observable.subscribeDefault(aapsLogger: AAPSLogger): Disposable = subscribe({ aapsLogger.debug(LTag.PUMP, "onSuccess") }, { aapsLogger.error(LTag.PUMP, "onError", it) }, { +fun Observable.subscribeDefault(aapsLogger: AAPSLogger): Disposable = subscribe({ aapsLogger.debug(LTag.PUMP, "onSuccess") }, { aapsLogger.error(LTag.PUMP, "onError", it) }, { aapsLogger.debug(LTag.PUMP, "onComplete") }) -fun Observable.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = +fun Observable.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, { aapsLogger.error(LTag.PUMP, "onError", it) }, { aapsLogger.debug(LTag.PUMP, "onComplete") }) -fun Observable.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = +fun Observable.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, { aapsLogger.debug(LTag.PUMP, "onComplete") }) -fun Observable.with(): Observable = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) \ No newline at end of file +fun Observable.with(): Observable = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) \ No newline at end of file diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/SingleExtension.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/SingleExtension.kt index 16d857eb3c..fa028a7b7a 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/SingleExtension.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/extension/SingleExtension.kt @@ -7,8 +7,8 @@ import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.schedulers.Schedulers -fun Single.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, { +fun Single.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess) { aapsLogger.error(LTag.PUMP, "onError", it) -}) +} -fun Single.with(): Single = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) +fun Single.with(): Single = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/ui/EopatchActivity.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/ui/EopatchActivity.kt index 933bf5f645..d700a87a82 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/ui/EopatchActivity.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/ui/EopatchActivity.kt @@ -9,10 +9,11 @@ import android.os.Bundle import android.view.MotionEvent import androidx.appcompat.app.AlertDialog 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.code.EventType 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.EventType 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.takeOne @@ -117,7 +118,7 @@ class EopatchActivity : EoBaseActivity() { binding.viewModel?.apply { 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) if (intent.getBooleanExtra(EXTRA_START_WITH_COMM_CHECK, false)) { diff --git a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/vo/IPreference.kt b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/vo/IPreference.kt index 5d06f2ee3e..ccb254b79f 100644 --- a/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/vo/IPreference.kt +++ b/pump/eopatch/src/main/java/info/nightscout/androidaps/plugins/pump/eopatch/vo/IPreference.kt @@ -3,7 +3,7 @@ package info.nightscout.androidaps.plugins.pump.eopatch.vo import info.nightscout.shared.sharedPreferences.SP import io.reactivex.rxjava3.core.Observable -interface IPreference{ +interface IPreference{ fun flush(sp: SP) fun observe(): Observable } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 96ecfeb29e..9f13a169ad 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,6 +14,7 @@ include ':pump:danar' include ':pump:danars' include ':pump:diaconn' include ':pump:eopatch' +include ':pump:eopatch-core' include ':insight' include ':pump:medtronic' include ':pump:omnipod-common'