diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewData.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewData.kt index 2a0b523200..2cdd860ce3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewData.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewData.kt @@ -63,7 +63,8 @@ class OverviewData @Inject constructor( BG, IOB_COB, SENSITIVITY, - GRAPH + GRAPH, + PUMPSTATUS } var rangeToDisplay = 6 // for graph @@ -72,6 +73,7 @@ class OverviewData @Inject constructor( var endTime: Long = 0 fun reset() { + pumpStatus = "" calcProgress = "" lastBg = null temporaryBasal = null @@ -122,6 +124,12 @@ class OverviewData @Inject constructor( endTime = toTime } + /* + * PUMP STATUS + */ + + var pumpStatus: String = "" + /* * CALC PROGRESS */ diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index e02b359db6..e38310b1ba 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -61,7 +61,11 @@ import info.nightscout.androidaps.plugins.source.DexcomPlugin import info.nightscout.androidaps.plugins.source.XdripPlugin import info.nightscout.androidaps.queue.CommandQueue import info.nightscout.androidaps.skins.SkinProvider -import info.nightscout.androidaps.utils.* +import info.nightscout.androidaps.utils.DateUtil +import info.nightscout.androidaps.utils.DefaultValueHelper +import info.nightscout.androidaps.utils.FabricPrivacy +import info.nightscout.androidaps.utils.ToastUtils +import info.nightscout.androidaps.utils.TrendCalculator import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.buildHelper.BuildHelper import info.nightscout.androidaps.utils.protection.ProtectionCheck @@ -73,6 +77,7 @@ import info.nightscout.androidaps.utils.wizard.QuickWizard import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.plusAssign import java.util.* +import java.util.concurrent.TimeUnit import javax.inject.Inject import kotlin.collections.ArrayList import kotlin.math.abs @@ -159,8 +164,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList skinProvider.activeSkin().preProcessLandscapeOverviewLayout(dm, view, landscape, resourceHelper.gb(R.bool.isTablet), smallHeight) binding.nsclientLayout.visibility = config.NSCLIENT.toVisibility() - binding.loopPumpStatusLayout.pumpStatus.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder)) - binding.notifications.setHasFixedSize(false) binding.notifications.layoutManager = LinearLayoutManager(view.context) axisWidth = if (dm.densityDpi <= 120) 3 else if (dm.densityDpi <= 160) 10 else if (dm.densityDpi <= 320) 35 else if (dm.densityDpi <= 420) 50 else if (dm.densityDpi <= 560) 70 else 80 @@ -189,10 +192,10 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList prepareGraphsIfNeeded(overviewMenus.setting.size) overviewMenus.setupChartMenu(binding.graphsLayout.chartMenuButton) - binding.loopPumpStatusLayout.activeProfile.setOnClickListener(this) - binding.loopPumpStatusLayout.activeProfile.setOnLongClickListener(this) - binding.loopPumpStatusLayout.tempTarget.setOnClickListener(this) - binding.loopPumpStatusLayout.tempTarget.setOnLongClickListener(this) + binding.activeProfile.setOnClickListener(this) + binding.activeProfile.setOnLongClickListener(this) + binding.tempTarget.setOnClickListener(this) + binding.tempTarget.setOnLongClickListener(this) binding.buttonsLayout.acceptTempButton.setOnClickListener(this) binding.buttonsLayout.treatmentButton.setOnClickListener(this) binding.buttonsLayout.wizardButton.setOnClickListener(this) @@ -204,7 +207,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList binding.buttonsLayout.quickWizardButton.setOnLongClickListener(this) binding.infoLayout.apsMode.setOnClickListener(this) binding.infoLayout.apsMode.setOnLongClickListener(this) - binding.loopPumpStatusLayout.activeProfile.setOnLongClickListener(this) + binding.activeProfile.setOnLongClickListener(this) } @Synchronized @@ -245,10 +248,14 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList .toObservable(EventNewOpenLoopNotification::class.java) .observeOn(aapsSchedulers.io) .subscribe({ scheduleUpdateGUI("EventNewOpenLoopNotification") }, fabricPrivacy::logException)) - disposable.add(rxBus + disposable += rxBus .toObservable(EventPumpStatusChanged::class.java) .observeOn(aapsSchedulers.main) - .subscribe({ updatePumpStatus(it) }, fabricPrivacy::logException)) + .delay (30, TimeUnit.MILLISECONDS, aapsSchedulers.main) + .subscribe({ + overviewData.pumpStatus = it.getStatus(resourceHelper) + updateGUI("EventPumpStatusChanged", OverviewData.Property.PUMPSTATUS) + }, fabricPrivacy::logException) refreshLoop = Runnable { overviewPlugin.refreshLoop("refreshLoop") @@ -406,18 +413,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList } } - private fun updatePumpStatus(event: EventPumpStatusChanged) { - val status = event.getStatus(resourceHelper) - if (status != "") { - binding.loopPumpStatusLayout.pumpStatus.text = status - binding.loopPumpStatusLayout.pumpStatusLayout.visibility = View.VISIBLE - binding.loopPumpStatusLayout.loopLayout.visibility = View.GONE - } else { - binding.loopPumpStatusLayout.pumpStatusLayout.visibility = View.GONE - binding.loopPumpStatusLayout.loopLayout.visibility = View.VISIBLE - } - } - @SuppressLint("SetTextI18n") private fun processButtonsVisibility() { val lastBG = iobCobCalculator.ads.lastBg() @@ -600,14 +595,11 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList // if (what != OverviewData.Property.CALC_PROGRESS) // aapsLogger.debug(LTag.UI, "UpdateGui $from $what") if (profileFunction.getProfile() == null) { - binding.loopPumpStatusLayout.pumpStatus.setText(R.string.noprofileset) - binding.loopPumpStatusLayout.pumpStatusLayout.visibility = View.VISIBLE - binding.loopPumpStatusLayout.loopLayout.visibility = View.GONE + binding.activeProfile.setText(R.string.noprofileset) + binding.activeProfile.setBackgroundColor(resourceHelper.gc(R.color.errorAlertBackground)) return } binding.notifications.let { notificationStore.updateNotifications(it) } - binding.loopPumpStatusLayout.pumpStatusLayout.visibility = View.GONE - binding.loopPumpStatusLayout.loopLayout.visibility = View.VISIBLE val units = profileFunction.getUnits() val pump = activePlugin.activePump @@ -658,9 +650,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList else resourceHelper.gc(R.color.ribbonTextDefault) } ?: resourceHelper.gc(R.color.ribbonTextDefault) - binding.loopPumpStatusLayout.activeProfile.text = profileFunction.getProfileNameWithRemainingTime() - binding.loopPumpStatusLayout.activeProfile.setBackgroundColor(profileBackgroundColor) - binding.loopPumpStatusLayout.activeProfile.setTextColor(profileTextColor) + binding.activeProfile.text = profileFunction.getProfileNameWithRemainingTime() + binding.activeProfile.setBackgroundColor(profileBackgroundColor) + binding.activeProfile.setTextColor(profileTextColor) } OverviewData.Property.TEMPORARY_BASAL -> { @@ -721,9 +713,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList if (overviewData.temporaryTarget?.isInProgress(dateUtil) == false) overviewData.temporaryTarget = null val tempTarget = overviewData.temporaryTarget if (tempTarget != null) { - binding.loopPumpStatusLayout.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextWarning)) - binding.loopPumpStatusLayout.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.ribbonWarning)) - binding.loopPumpStatusLayout.tempTarget.text = Profile.toTargetRangeString(tempTarget.lowTarget, tempTarget.highTarget, GlucoseUnit.MGDL, units) + " " + dateUtil.untilString(tempTarget.end, resourceHelper) + binding.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextWarning)) + binding.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.ribbonWarning)) + binding.tempTarget.text = Profile.toTargetRangeString(tempTarget.lowTarget, tempTarget.highTarget, GlucoseUnit.MGDL, units) + " " + dateUtil.untilString(tempTarget.end, resourceHelper) } else { // If the target is not the same as set in the profile then oref has overridden it profileFunction.getProfile()?.let { profile -> @@ -731,13 +723,13 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList if (targetUsed != 0.0 && abs(profile.getTargetMgdl() - targetUsed) > 0.01) { aapsLogger.debug("Adjusted target. Profile: ${profile.getTargetMgdl()} APS: $targetUsed") - binding.loopPumpStatusLayout.tempTarget.text = Profile.toTargetRangeString(targetUsed, targetUsed, GlucoseUnit.MGDL, units) - binding.loopPumpStatusLayout.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextWarning)) - binding.loopPumpStatusLayout.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.tempTargetBackground)) + binding.tempTarget.text = Profile.toTargetRangeString(targetUsed, targetUsed, GlucoseUnit.MGDL, units) + binding.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextWarning)) + binding.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.tempTargetBackground)) } else { - binding.loopPumpStatusLayout.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextDefault)) - binding.loopPumpStatusLayout.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.ribbonDefault)) - binding.loopPumpStatusLayout.tempTarget.text = Profile.toTargetRangeString(profile.getTargetLowMgdl(), profile.getTargetHighMgdl(), GlucoseUnit.MGDL, units) + binding.tempTarget.setTextColor(resourceHelper.gc(R.color.ribbonTextDefault)) + binding.tempTarget.setBackgroundColor(resourceHelper.gc(R.color.ribbonDefault)) + binding.tempTarget.text = Profile.toTargetRangeString(profile.getTargetLowMgdl(), profile.getTargetHighMgdl(), GlucoseUnit.MGDL, units) } } } @@ -832,6 +824,12 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList String.format(Locale.ENGLISH, "%.0f%%", autosensData.autosensResult.ratio * 100) } ?: "" } + + OverviewData.Property.PUMPSTATUS -> { + val status = overviewData.pumpStatus + binding.pumpStatus.text = status + binding.pumpStatusLayout.visibility = (status != "").toVisibility() + } } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt index c5c0c35757..24433dfadc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt @@ -135,16 +135,22 @@ class OverviewPlugin @Inject constructor( .toObservable(EventLoopInvoked::class.java) .observeOn(aapsSchedulers.io) .subscribe({ overviewData.preparePredictions("EventLoopInvoked") }, fabricPrivacy::logException) - disposable.add(rxBus + disposable += rxBus .toObservable(EventNewBasalProfile::class.java) .observeOn(aapsSchedulers.io) - .subscribe({ loadProfile("EventNewBasalProfile") }, fabricPrivacy::logException)) - disposable.add(rxBus + .subscribe({ loadProfile("EventNewBasalProfile") }, fabricPrivacy::logException) + disposable += rxBus .toObservable(EventAutosensCalculationFinished::class.java) .observeOn(aapsSchedulers.io) .subscribe({ if (it.cause !is EventCustomCalculationFinished) refreshLoop("EventAutosensCalculationFinished") - }, fabricPrivacy::logException)) + }, fabricPrivacy::logException) + disposable += rxBus + .toObservable(EventPumpStatusChanged::class.java) + .observeOn(aapsSchedulers.io) + .subscribe({ + overviewData.pumpStatus = it.getStatus(resourceHelper) + }, fabricPrivacy::logException) Thread { loadAll("onResume") }.start() } diff --git a/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.kt b/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.kt index 34b64b8501..6de611c276 100644 --- a/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.kt +++ b/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.kt @@ -135,6 +135,7 @@ class QueueThread internal constructor( aapsLogger.debug(LTag.PUMPQUEUE, "disconnected") return } else { + rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.WAITING_FOR_DISCONNECTION)) aapsLogger.debug(LTag.PUMPQUEUE, "waiting for disconnect") SystemClock.sleep(1000) } diff --git a/app/src/main/res/layout/actions_fragment.xml b/app/src/main/res/layout/actions_fragment.xml index 98e3976d97..7d43edb857 100644 --- a/app/src/main/res/layout/actions_fragment.xml +++ b/app/src/main/res/layout/actions_fragment.xml @@ -273,7 +273,7 @@ style="@style/ButtonSmallFontStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:drawableTop="@drawable/ic_danarhistory" + android:drawableTop="@drawable/ic_pump_history" android:paddingLeft="0dp" android:paddingRight="0dp" android:text="@string/nav_historybrowser" diff --git a/app/src/main/res/layout/actions_fragment_lowres.xml b/app/src/main/res/layout/actions_fragment_lowres.xml index bf90751f8d..689277d9d7 100644 --- a/app/src/main/res/layout/actions_fragment_lowres.xml +++ b/app/src/main/res/layout/actions_fragment_lowres.xml @@ -273,7 +273,7 @@ style="@style/ButtonSmallFontStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:drawableTop="@drawable/ic_danarhistory" + android:drawableTop="@drawable/ic_pump_history" android:paddingLeft="0dp" android:paddingRight="0dp" android:text="@string/nav_historybrowser" diff --git a/app/src/main/res/layout/overview_fragment.xml b/app/src/main/res/layout/overview_fragment.xml index 149fa2c9ce..f37998f4e3 100644 --- a/app/src/main/res/layout/overview_fragment.xml +++ b/app/src/main/res/layout/overview_fragment.xml @@ -10,8 +10,7 @@ android:id="@+id/top_part_scrollbar" android:layout_width="wrap_content" android:layout_height="0dp" - android:layout_weight="1" - tools:ignore="UselessParent"> + android:layout_weight="1"> - + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/overview_loop_pumpstatus_layout.xml b/app/src/main/res/layout/overview_loop_pumpstatus_layout.xml deleted file mode 100644 index 0a6288d429..0000000000 --- a/app/src/main/res/layout/overview_loop_pumpstatus_layout.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 795c121236..f4263041b4 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -494,6 +494,7 @@ Odesílat data do xDrip+ V xDrip+ vyberte zdroj dat 640g/Eversense Glykémie z NS + NSGL Kalkulace glykémie Kalkulace bolusového IOB Kalkulace bazálního IOB diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 977b5a5b32..2375b013bd 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -494,6 +494,7 @@ Sende BZ-Werte zu xDrip+ Wähle in xDrip+ 640g/Eversense als Daten-Quelle. Nightscout-Client BZ + NS BZ BZ Berechnung Bolus-IOB Berechnung Basal-IOB Berechnung diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index a7b672e3c4..5b7d0981f8 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -494,6 +494,7 @@ שליחת נתוני סוכר אל xDrip ב-xDrip בחרו 640g/Eversense כמקור נתונים רמת סוכר מ-NSClient + סוכר NS חישוב רמת הסוכר חישוב IOB של בולוס חישוב IOB של בזאלי diff --git a/automation/src/main/res/values-cs-rCZ/strings.xml b/automation/src/main/res/values-cs-rCZ/strings.xml index 4f30a85513..5b993f0975 100644 --- a/automation/src/main/res/values-cs-rCZ/strings.xml +++ b/automation/src/main/res/values-cs-rCZ/strings.xml @@ -38,6 +38,9 @@ Glykémie není k dispozici Glykémie %1$s %2$.0f %3$s Glykémie %1$s %2$.1f %3$s + Dočasný cíl neexistuje + Dočasný cíl %1$s %2$.0f %3$s + Dočasný cíl %1$s %2$.1f %3$s Profil pct %1$s %2$d IOB %1$s %2$.1f A @@ -86,6 +89,7 @@ Zem. šířka: Zem. délka: Glykémie [%1$s]: + Cíl [%1$s]: Poslední bolus Poslední bolus %1$s před %2$s min COB diff --git a/automation/src/main/res/values-de-rDE/strings.xml b/automation/src/main/res/values-de-rDE/strings.xml index acb6f2480a..2845766192 100644 --- a/automation/src/main/res/values-de-rDE/strings.xml +++ b/automation/src/main/res/values-de-rDE/strings.xml @@ -38,6 +38,9 @@ Glukosewert nicht verfügbar Glukosewert %1$s %2$.0f %3$s Glukosewert %1$s %2$.1f %3$s + Kein temporäres Ziel vorhanden + Temp. Zielwert %1$s %2$.0f %3$s + Temp. Zielwert %1$s %2$.1f %3$s Profil-Prozentsatz %1$s %2$d IOB %1$s %2$.1f Und @@ -86,6 +89,7 @@ Breitengrad: Längengrad: Glukosewert [%1$s]: + Zielwert [%1$s]: Letzter Bolus vor Letzter Bolus vor %1$s %2$s Min COB diff --git a/automation/src/main/res/values-fr-rFR/strings.xml b/automation/src/main/res/values-fr-rFR/strings.xml index 44315399d7..a42641de69 100644 --- a/automation/src/main/res/values-fr-rFR/strings.xml +++ b/automation/src/main/res/values-fr-rFR/strings.xml @@ -38,6 +38,9 @@ La glycémie n\'est pas disponible Glycémie %1$s %2$.0f %3$s Glycémie %1$s %2$.1f %3$s + La Cible Temp. n\'existe pas + Cible Temp. %1$s %2$.0f %3$s + Cible Temp. %1$s %2$.1f %3$s Profil %% %1$s %2$d IA %1$s %2$.1f Et @@ -86,6 +89,7 @@ Lat : Long : Glycémie [%1$s] : + Cible [%1$s]: Lors du dernier Bolus Heure du dernier bolus %1$s il y a %2$s min GA diff --git a/automation/src/main/res/values-iw-rIL/strings.xml b/automation/src/main/res/values-iw-rIL/strings.xml index bb745d18cc..46a2efd8ef 100644 --- a/automation/src/main/res/values-iw-rIL/strings.xml +++ b/automation/src/main/res/values-iw-rIL/strings.xml @@ -38,6 +38,9 @@ גלוקוז אינו זמין גלוקוז %1$s %2$.0f %3$s גלוקוז %1$s %2$.1f %3$s + ערך המטרה הזמני לא קיים + ערך מטרה זמני %1$s %2$.0f %3$s + ערך מטרה זמני %1$s %2$.1f %3$s אחוז פרופיל %1$s %2$d אינסולין פעיל %1$s %2$.1f וגם @@ -86,6 +89,7 @@ רוחב: אורך: גלוקוז [%1$s]: + מטרה [%1$s]: בולוס אחרון הבולוס האחרון היה לפני %1$s %2$s דק\' פחמ\' פעילות diff --git a/automation/src/main/res/values-sk-rSK/strings.xml b/automation/src/main/res/values-sk-rSK/strings.xml index 4ab6b045d5..b06dc622ac 100644 --- a/automation/src/main/res/values-sk-rSK/strings.xml +++ b/automation/src/main/res/values-sk-rSK/strings.xml @@ -38,6 +38,9 @@ Glykémia nedostupná Glykémia %1$s %2$.0f %3$s Glykémia %1$s %2$.1f %3$s + Dočasný cieľ neexistuje + Doč. cieľ %1$s %2$.0f %3$s + Doč. cieľ %1$s %2$.1f %3$s Percentuálny profil %1$s %2$d IOB %1$s %2$.1f A @@ -86,6 +89,7 @@ Lat: Lon: Glykémia [%1$s]: + Cieľ [%1$s]: Od posledného bolusu Čas posledného bolusu: pred %1$s %2$s min COB diff --git a/build.gradle b/build.gradle index 1ef4a476aa..69f3e7777a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { rxkotlin_version = '2.4.0' room_version = '2.3.0' lifecycle_version = '2.3.1' - dagger_version = '2.39' + dagger_version = '2.39.1' coroutinesVersion = '1.4.1' activityVersion = '1.3.1' fragmentktx_version = '1.3.6' diff --git a/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt b/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt index 0b9ce7ebf0..e65a7fe6e5 100644 --- a/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt +++ b/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt @@ -10,6 +10,7 @@ class EventPumpStatusChanged : EventStatus { CONNECTED, HANDSHAKING, PERFORMING, + WAITING_FOR_DISCONNECTION, DISCONNECTING, DISCONNECTED } @@ -46,12 +47,13 @@ class EventPumpStatusChanged : EventStatus { // status for startup wizard override fun getStatus(resourceHelper: ResourceHelper): String { return when (status) { - Status.CONNECTING -> String.format(resourceHelper.gs(R.string.connectingfor), secondsElapsed) - Status.HANDSHAKING -> resourceHelper.gs(R.string.handshaking) - Status.CONNECTED -> resourceHelper.gs(R.string.connected) - Status.PERFORMING -> performingAction - Status.DISCONNECTING -> resourceHelper.gs(R.string.disconnecting) - Status.DISCONNECTED -> "" + Status.CONNECTING -> String.format(resourceHelper.gs(R.string.connectingfor), secondsElapsed) + Status.HANDSHAKING -> resourceHelper.gs(R.string.handshaking) + Status.CONNECTED -> resourceHelper.gs(R.string.connected) + Status.PERFORMING -> performingAction + Status.WAITING_FOR_DISCONNECTION -> resourceHelper.gs(R.string.waiting_for_disconnection) + Status.DISCONNECTING -> resourceHelper.gs(R.string.disconnecting) + Status.DISCONNECTED -> "" } } } diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensDataStore.kt b/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensDataStore.kt index 4a2a20edbd..e1b9401ad8 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensDataStore.kt +++ b/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensDataStore.kt @@ -237,7 +237,10 @@ class AutosensDataStore { } val newBucketedData = ArrayList() var currentTime = bgReadings[0].timestamp - bgReadings[0].timestamp % T.mins(5).msecs() - currentTime = adjustToReferenceTime(currentTime) + val adjustedTime = adjustToReferenceTime(currentTime) + // after adjusting time may be newer. In this case use T-5min + if (adjustedTime > currentTime) currentTime = adjustedTime - T.mins(5).msecs() + else currentTime = adjustedTime aapsLogger.debug("Adjusted time " + dateUtil.dateAndTimeAndSecondsString(currentTime)) //log.debug("First reading: " + new Date(currentTime).toLocaleString()); while (true) { diff --git a/core/src/main/res/drawable/ic_danarhistory.xml b/core/src/main/res/drawable/ic_pump_history.xml similarity index 100% rename from core/src/main/res/drawable/ic_danarhistory.xml rename to core/src/main/res/drawable/ic_pump_history.xml diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml index 225b6b206a..33289e55b3 100644 --- a/core/src/main/res/values-cs-rCZ/strings.xml +++ b/core/src/main/res/values-cs-rCZ/strings.xml @@ -196,6 +196,7 @@ OpenAPS vypnuto Výměna baterie pumpy Dočasný cíl + Hodnota dočasného cíle Dočasný cíl konec Bolusová kalkulačka Glukoměr diff --git a/core/src/main/res/values-de-rDE/strings.xml b/core/src/main/res/values-de-rDE/strings.xml index d5b5d2adb6..70ba734fdd 100644 --- a/core/src/main/res/values-de-rDE/strings.xml +++ b/core/src/main/res/values-de-rDE/strings.xml @@ -196,6 +196,7 @@ OpenAPS offline Pumpenbatterie-Wechsel Temporäres Ziel + Temporärer Zielwert Temporäres Ziel abbrechen Bolus-Rechner Finger diff --git a/core/src/main/res/values-fr-rFR/strings.xml b/core/src/main/res/values-fr-rFR/strings.xml index 06efb1d051..756cafcab6 100644 --- a/core/src/main/res/values-fr-rFR/strings.xml +++ b/core/src/main/res/values-fr-rFR/strings.xml @@ -196,6 +196,7 @@ OpenAPS hors ligne Changement pile pompe Cible Temp + Valeur de Cible Temporaire Annuler Cible Temporaire Assistant Bolus Doigt @@ -385,6 +386,20 @@ BOUCLE SUPPRIMÉE AUTRE + Cible basse du profil + Cible haute du profil + Valeur basse de Cible Temp. + Valeur haute de Cible Temp. + Valeur de Cible Temporaire + Valeur DAI du profil + Valeur de sensibilité du profil + Basale maximale du profil + Basale actuelle + Rapport glucides/insuline de profil + %1$.2f limité à %2$.2f + \"%1$s\" est en dehors des limites + \"%1$s\" %2$.2f est en dehors des limites + Valeur de Basal %1$d jour %1$d jours diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml index 34c0d220b3..c62d2a2dfe 100644 --- a/core/src/main/res/values-iw-rIL/strings.xml +++ b/core/src/main/res/values-iw-rIL/strings.xml @@ -196,6 +196,7 @@ OpenAPS במצב לא מקוון החלפת סוללת משאבה ערך מטרה זמני + ערך המטרה הזמני ביטול ערך מטרה זמני אשף בולוס אצבע diff --git a/core/src/main/res/values-sk-rSK/strings.xml b/core/src/main/res/values-sk-rSK/strings.xml index 02bf0993a0..10c4e30f10 100644 --- a/core/src/main/res/values-sk-rSK/strings.xml +++ b/core/src/main/res/values-sk-rSK/strings.xml @@ -196,6 +196,7 @@ OpenAPS vypnuté Výmena batérie v pumpe Dočasný cieľ + Hodnota dočasného cieľa Zrušiť dočasný cieľ Bolusová kalkulačka Prst @@ -385,6 +386,20 @@ UZAVRETÝ OKRUH ODSTRÁNENÝ INÉ + Dolný cieľ profilu + Horný cieľ profilu + Dolná hodnota dočasného cieľa + Horná hodnota dočasného cieľa + Hodnota dočasného cieľa + Profilová hodnota DIA + Profilová hodnota citlivosti + Profilová maximálna hodnota bazálu + Aktuálna hodnota bazálu + Profilový inzulino-sacharidový pomer + %1$.2f obmedzené na %2$.2f + »%1$s« je mimo pevne nastavené limity + »%1$s« %2$.2f je mimo pevne nastavených limitov + Hodnota bazálu %1$d deň %1$d dní diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 694164b776..ead398c2a6 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -12,7 +12,7 @@ #66000000 - #00695c + #505050 #303030 diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index b2bd4ac0b6..512cfec8eb 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -81,6 +81,7 @@ Connected Disconnected Disconnecting + Waiting for disconnection AndroidAPS started %1$.1f U %1$.2f U @@ -289,6 +290,8 @@ Loop NS Record + Reading pump history + Pump icon Connection timed out diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt index ca509d3caf..d8b660e9d6 100644 --- a/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt +++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt @@ -64,6 +64,8 @@ class DanaFragment : DaggerFragment() { private val loopHandler = Handler(Looper.getMainLooper()) private lateinit var refreshLoop: Runnable + private var pumpStatus = "" + private var pumpStatusIcon = "{fa-bluetooth-b}" private var _binding: DanarFragmentBinding? = null @@ -87,10 +89,8 @@ class DanaFragment : DaggerFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.danaPumpstatus.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder)) - binding.history.setOnClickListener { startActivity(Intent(context, DanaHistoryActivity::class.java)) } - binding.viewprofile.setOnClickListener { + binding.viewProfile.setOnClickListener { val profile = danaPump.createConvertedProfile()?.getDefaultProfileJson() ?: return@setOnClickListener val profileName = danaPump.createConvertedProfile()?.getDefaultProfileName() @@ -152,31 +152,25 @@ class DanaFragment : DaggerFragment() { .toObservable(EventPumpStatusChanged::class.java) .observeOn(aapsSchedulers.main) .subscribe({ - when (it.status) { + pumpStatusIcon = when (it.status) { EventPumpStatusChanged.Status.CONNECTING -> - @Suppress("SetTextI18n") - binding.btconnection.text = "{fa-bluetooth-b spin} ${it.secondsElapsed}s" + "{fa-bluetooth-b spin} ${it.secondsElapsed}s" EventPumpStatusChanged.Status.CONNECTED -> - @Suppress("SetTextI18n") - binding.btconnection.text = "{fa-bluetooth}" + "{fa-bluetooth}" EventPumpStatusChanged.Status.DISCONNECTED -> - @Suppress("SetTextI18n") - binding.btconnection.text = "{fa-bluetooth-b}" + "{fa-bluetooth-b}" - else -> { - } - } - if (it.getStatus(resourceHelper) != "") { - binding.danaPumpstatus.text = it.getStatus(resourceHelper) - binding.danaPumpstatuslayout.visibility = View.VISIBLE - } else { - binding.danaPumpstatuslayout.visibility = View.GONE + else -> + "{fa-bluetooth-b}" } + binding.btconnection.text = pumpStatusIcon + pumpStatus = it.getStatus(resourceHelper) + binding.pumpStatus.text = pumpStatus + binding.pumpStatusLayout.visibility = (pumpStatus != "").toVisibility() }, fabricPrivacy::logException) - binding.danaPumpstatus.text = "" - binding.danaPumpstatuslayout.visibility = View.GONE - @Suppress("SetTextI18n") - binding.btconnection.text = "{fa-bluetooth-b}" + + pumpStatus = "" + pumpStatusIcon = "{fa-bluetooth-b}" updateGUI() } @@ -185,6 +179,8 @@ class DanaFragment : DaggerFragment() { super.onPause() disposable.clear() loopHandler.removeCallbacks(refreshLoop) + pumpStatus = "" + pumpStatusIcon = "{fa-bluetooth-b}" } @Synchronized @@ -197,6 +193,11 @@ class DanaFragment : DaggerFragment() { @Synchronized fun updateGUI() { if (_binding == null) return + binding.btconnection.text = pumpStatusIcon + binding.pumpStatus.text = pumpStatus + binding.pumpStatusLayout.visibility = (pumpStatus != "").toVisibility() + binding.queue.text = commandQueue.spannedStatus() + binding.queueStatusLayout.visibility = (commandQueue.spannedStatus().toString() != "").toVisibility() val pump = danaPump val plugin: Pump = activePlugin.activePump if (pump.lastConnection != 0L) { @@ -225,18 +226,9 @@ class DanaFragment : DaggerFragment() { warnColors.setColorInverse(binding.reservoir, pump.reservoirRemainingUnits, 50.0, 20.0) binding.battery.text = "{fa-battery-" + pump.batteryRemaining / 25 + "}" warnColors.setColorInverse(binding.battery, pump.batteryRemaining.toDouble(), 51.0, 26.0) - binding.iob.text = resourceHelper.gs(R.string.formatinsulinunits, pump.iob) binding.firmware.text = resourceHelper.gs(R.string.dana_model, pump.modelFriendlyName(), pump.hwModel, pump.protocol, pump.productCode) - binding.basalstep.text = pump.basalStep.toString() - binding.bolusstep.text = pump.bolusStep.toString() + binding.basalBolusStep.text = pump.basalStep.toString() + "/" + pump.bolusStep.toString() binding.serialNumber.text = pump.serialNumber - val status = commandQueue.spannedStatus() - if (status.toString() == "") { - binding.queue.visibility = View.GONE - } else { - binding.queue.visibility = View.VISIBLE - binding.queue.text = status - } val icon = if (danaPump.pumpType() == PumpType.DANA_I) R.drawable.ic_dana_i else R.drawable.ic_dana_rs binding.danaIcon.setImageDrawable(context?.let { ContextCompat.getDrawable(it, icon) }) //hide user options button if not an RS pump or old firmware diff --git a/dana/src/main/res/layout/danar_fragment.xml b/dana/src/main/res/layout/danar_fragment.xml index 7fa180c672..eeb1a1f853 100644 --- a/dana/src/main/res/layout/danar_fragment.xml +++ b/dana/src/main/res/layout/danar_fragment.xml @@ -1,704 +1,20 @@ - + tools:context="info.nightscout.androidaps.dana.DanaFragment" + android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="0dp" + android:paddingTop="5dp" + android:layout_weight="1"> -