From e068bf4337bb084eadf9884b34f2e1cdbd020d77 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 23 Apr 2020 22:54:28 +0200 Subject: [PATCH] StatusLights thresholds adjustable in preferences --- .../activities/MyPreferenceFragment.kt | 9 +- .../androidaps/db/CareportalEvent.java | 11 +- .../general/careportal/CareportalFragment.kt | 2 - .../general/nsclient/NSClientPlugin.java | 9 +- .../general/nsclient/data/NSSettingsStatus.kt | 36 +++- .../general/overview/OverviewFragment.kt | 2 +- .../general/overview/StatusLightHandler.kt | 21 ++- .../notifications/NotificationWithAction.kt | 2 - .../androidaps/utils/sharedPreferences/SP.kt | 1 + .../sharedPreferences/SPImplementation.kt | 4 + app/src/main/res/layout/overview_fragment.xml | 24 +-- .../layout/overview_fragment_landscape.xml | 24 +-- .../res/layout/overview_fragment_nsclient.xml | 24 +-- app/src/main/res/values/strings.xml | 31 +++- app/src/main/res/xml/pref_overview.xml | 160 +++++++++++++++--- 15 files changed, 244 insertions(+), 116 deletions(-) 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 a037329110..0a1c7c4267 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt @@ -28,6 +28,7 @@ import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin import info.nightscout.androidaps.plugins.general.maintenance.MaintenancePlugin import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin +import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin import info.nightscout.androidaps.plugins.general.tidepool.TidepoolPlugin import info.nightscout.androidaps.plugins.general.wear.WearPlugin @@ -49,8 +50,8 @@ import info.nightscout.androidaps.plugins.source.EversensePlugin import info.nightscout.androidaps.plugins.source.GlimpPlugin import info.nightscout.androidaps.plugins.source.PoctechPlugin import info.nightscout.androidaps.plugins.source.TomatoPlugin -import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show import info.nightscout.androidaps.utils.SafeParse +import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show import info.nightscout.androidaps.utils.protection.PasswordCheck import info.nightscout.androidaps.utils.protection.ProtectionCheck import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -97,6 +98,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang @Inject lateinit var maintenancePlugin: MaintenancePlugin @Inject lateinit var passwordCheck: PasswordCheck + @Inject lateinit var nsSettingStatus: NSSettingsStatus @Inject lateinit var androidInjector: DispatchingAndroidInjector @@ -339,6 +341,11 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang passwordCheck.setPassword(context, R.string.application_password, R.string.key_application_password) return true } + // NSClient copy settings + if (preference.key == resourceHelper.gs(R.string.key_statuslights_copy_ns)) { + nsSettingStatus.copyStatusLightsNsSettings(context) + return true + } } } return super.onPreferenceTreeClick(preference) diff --git a/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java b/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java index bb412703f4..bfcbc0a694 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java +++ b/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java @@ -33,6 +33,7 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Point import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.T; import info.nightscout.androidaps.utils.Translator; +import info.nightscout.androidaps.utils.resources.ResourceHelper; @DatabaseTable(tableName = DatabaseHelper.DATABASE_CAREPORTALEVENTS) public class CareportalEvent implements DataPointWithLabelInterface, Interval { @@ -93,15 +94,15 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval { return (System.currentTimeMillis() - date) / (60 * 60 * 1000.0); } - public String age(boolean useShortText) { + public String age(boolean useShortText, ResourceHelper resourceHelper) { Map diff = computeDiff(date, System.currentTimeMillis()); - String days = " " + MainApp.gs(R.string.days) + " "; - String hours = " " + MainApp.gs(R.string.hours) + " "; + String days = " " + resourceHelper.gs(R.string.days) + " "; + String hours = " " + resourceHelper.gs(R.string.hours) + " "; if (useShortText) { - days = MainApp.gs(R.string.shortday); - hours = MainApp.gs(R.string.shorthour); + days = resourceHelper.gs(R.string.shortday); + hours = resourceHelper.gs(R.string.shorthour); } return diff.get(TimeUnit.DAYS) + days + diff.get(TimeUnit.HOURS) + hours; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.kt index 12f1bdbeb8..613dfeab32 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.kt @@ -10,7 +10,6 @@ import info.nightscout.androidaps.events.EventCareportalEventChange import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.careportal.Dialogs.NewNSTreatmentDialog -import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -23,7 +22,6 @@ import javax.inject.Inject class CareportalFragment : DaggerFragment(), View.OnClickListener { @Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var rxBus: RxBusWrapper - @Inject lateinit var nsSettingsStatus: NSSettingsStatus @Inject lateinit var statusLightHandler: StatusLightHandler @Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var activePlugin: ActivePluginProvider diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java index 61975db049..51f394860a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java @@ -185,14 +185,7 @@ public class NSClientPlugin extends PluginBase { super.preprocessPreferences(preferenceFragment); if (Config.NSCLIENT) { - PreferenceScreen scrnAdvancedSettings = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_advancedsettings)); - if (scrnAdvancedSettings != null) { - scrnAdvancedSettings.removePreference(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_res_warning))); - scrnAdvancedSettings.removePreference(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_res_critical))); - scrnAdvancedSettings.removePreference(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_bat_warning))); - scrnAdvancedSettings.removePreference(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_bat_critical))); - scrnAdvancedSettings.removePreference(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_show_statuslights))); - } + preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_overview_advanced)); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt index ae3ec534cd..8319c143b1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.kt @@ -1,5 +1,6 @@ package info.nightscout.androidaps.plugins.general.nsclient.data +import android.content.Context import info.nightscout.androidaps.Config import info.nightscout.androidaps.R import info.nightscout.androidaps.logging.AAPSLogger @@ -10,7 +11,9 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotifi import info.nightscout.androidaps.plugins.general.overview.notifications.Notification import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.JsonHelper +import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper +import info.nightscout.androidaps.utils.sharedPreferences.SP import org.json.JSONException import org.json.JSONObject import javax.inject.Inject @@ -111,10 +114,12 @@ class NSSettingsStatus @Inject constructor( private val aapsLogger: AAPSLogger, private val resourceHelper: ResourceHelper, private val rxBus: RxBusWrapper, - private val defaultValueHelper: DefaultValueHelper + private val defaultValueHelper: DefaultValueHelper, + private val sp: SP ) { var nightscoutVersionName = "" + // ***** PUMP STATUS ****** var data: JSONObject? = null @@ -133,6 +138,7 @@ class NSSettingsStatus @Inject constructor( val targetlow = getSettingsThreshold("bgTargetBottom") if (targetHigh != null) defaultValueHelper.bgTargetHigh = targetHigh if (targetlow != null) defaultValueHelper.bgTargetLow = targetlow + copyStatusLightsNsSettings(null) } fun getName(): String? = @@ -152,10 +158,14 @@ class NSSettingsStatus @Inject constructor( // valid property is "warn" or "urgent" // plugings "iage" "sage" "cage" "pbage" - fun getExtendedWarnValue(plugin: String, property: String, defaultValue: Double): Double { - val extendedSettings = getExtendedSettings() ?: return defaultValue - val pluginJson = extendedSettings.optJSONObject(plugin) ?: return defaultValue - return pluginJson.optDouble(property, defaultValue) + fun getExtendedWarnValue(plugin: String, property: String): Double? { + val extendedSettings = getExtendedSettings() ?: return null + val pluginJson = extendedSettings.optJSONObject(plugin) ?: return null + try { + return pluginJson.getDouble(property) + } catch (e: Exception) { + return null + } } // "bgHigh": 252, @@ -211,4 +221,20 @@ class NSSettingsStatus @Inject constructor( val openaps = JsonHelper.safeGetJSONObject(getExtendedSettings(), "openaps", null) return JsonHelper.safeGetBoolean(openaps, "enableAlerts") } + + fun copyStatusLightsNsSettings(context: Context?) { + val action = Runnable { + getExtendedWarnValue("cage", "warn")?.let { sp.putDouble(R.string.key_statuslights_cage_warning, it) } + getExtendedWarnValue("cage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_cage_critical, it) } + getExtendedWarnValue("iage", "warn")?.let { sp.putDouble(R.string.key_statuslights_iage_warning, it) } + getExtendedWarnValue("iage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_iage_critical, it) } + getExtendedWarnValue("sage", "warn")?.let { sp.putDouble(R.string.key_statuslights_sage_warning, it) } + getExtendedWarnValue("sage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_sage_critical, it) } + getExtendedWarnValue("bage", "warn")?.let { sp.putDouble(R.string.key_statuslights_bage_warning, it) } + getExtendedWarnValue("bage", "urgent")?.let { sp.putDouble(R.string.key_statuslights_bage_critical, it) } + } + + if (context != null) OKDialog.showConfirmation(context, resourceHelper.gs(R.string.statuslights), resourceHelper.gs(R.string.copyexistingvalues), action) + else action.run() + } } \ No newline at end of file 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 e67d31e773..cc3f881a13 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 @@ -720,7 +720,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList } // Status lights - overview_statuslights?.visibility = (sp.getBoolean(R.string.key_show_statuslights, false) || Config.NSCLIENT).toVisibility() + overview_statuslights?.visibility = (sp.getBoolean(R.string.key_show_statuslights, true) || Config.NSCLIENT).toVisibility() statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, careportal_reservoirlevel, careportal_sensorage, careportal_pbage, careportal_batterylevel) // cob 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 ca779f0031..54bb6f3177 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 @@ -1,12 +1,12 @@ package info.nightscout.androidaps.plugins.general.overview import android.widget.TextView +import androidx.annotation.StringRes import info.nightscout.androidaps.Config import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.R import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.interfaces.ActivePluginProvider -import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus import info.nightscout.androidaps.plugins.pump.common.defs.PumpType import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.WarnColors @@ -17,7 +17,6 @@ import javax.inject.Singleton @Singleton class StatusLightHandler @Inject constructor( - private val nsSettingsStatus: NSSettingsStatus, private val resourceHelper: ResourceHelper, private val sp: SP, private val activePlugin: ActivePluginProvider, @@ -29,23 +28,23 @@ class StatusLightHandler @Inject constructor( */ fun updateStatusLights(careportal_canulaage: TextView?, careportal_insulinage: TextView?, careportal_reservoirlevel: TextView?, careportal_sensorage: TextView?, careportal_pbage: TextView?, careportal_batterylevel: TextView?) { val pump = activePlugin.activePump - handleAge(careportal_canulaage, "cage", CareportalEvent.SITECHANGE, 48.0, 72.0) - handleAge(careportal_insulinage, "iage", CareportalEvent.INSULINCHANGE, 72.0, 96.0) - handleAge(careportal_sensorage, "sage", CareportalEvent.SENSORCHANGE, 164.0, 166.0) - handleAge(careportal_pbage, "bage", CareportalEvent.PUMPBATTERYCHANGE, 224.0, 336.0) + handleAge(careportal_canulaage, "cage", CareportalEvent.SITECHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0) + handleAge(careportal_insulinage, "iage", CareportalEvent.INSULINCHANGE, R.string.key_statuslights_iage_warning, 72.0, R.string.key_statuslights_iage_critical, 144.0) + handleAge(careportal_sensorage, "sage", CareportalEvent.SENSORCHANGE, R.string.key_statuslights_sage_warning, 216.0, R.string.key_statuslights_sage_critical, 240.0) + handleAge(careportal_pbage, "bage", CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0) if (!Config.NSCLIENT) handleLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel) if (!Config.NSCLIENT && pump.model() != PumpType.AccuChekCombo) handleLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble()) } - private fun handleAge(view: TextView?, nsSettingPlugin: String, eventName: String, defaultWarnThreshold: Double, defaultUrgentThreshold: Double) { - val urgent = nsSettingsStatus.getExtendedWarnValue(nsSettingPlugin, "urgent", defaultUrgentThreshold) - val warn = nsSettingsStatus.getExtendedWarnValue(nsSettingPlugin, "warn", defaultWarnThreshold) + private fun handleAge(view: TextView?, nsSettingPlugin: String, eventName: String, @StringRes warnSettings: Int, defaultWarnThreshold: Double, @StringRes urgentSettings: Int, defaultUrgentThreshold: Double) { + val warn = sp.getDouble(warnSettings, defaultWarnThreshold) + val urgent = sp.getDouble(urgentSettings, defaultUrgentThreshold) val careportalEvent = MainApp.getDbHelper().getLastCareportalEvent(eventName) if (careportalEvent != null) { warnColors.setColorByAge(view, careportalEvent, warn, urgent) - view?.text = careportalEvent.age(resourceHelper.shortTextMode()) + view?.text = careportalEvent.age(resourceHelper.shortTextMode(), resourceHelper) } else { view?.text = if (resourceHelper.shortTextMode()) "-" else resourceHelper.gs(R.string.notavailable) } @@ -55,7 +54,7 @@ class StatusLightHandler @Inject constructor( val resUrgent = sp.getDouble(criticalSetting, criticalDefaultValue) val resWarn = sp.getDouble(warnSetting, warnDefaultValue) @Suppress("SetTextI18n") - view?.text = DecimalFormatter.to0Decimal(level) + view?.text = " " + DecimalFormatter.to0Decimal(level) warnColors.setColorInverse(view, level, resWarn, resUrgent) } } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationWithAction.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationWithAction.kt index c5670699c9..2d8ad45c2b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationWithAction.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationWithAction.kt @@ -6,7 +6,6 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin import info.nightscout.androidaps.plugins.general.nsclient.data.NSAlarm -import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.resources.ResourceHelper @@ -21,7 +20,6 @@ class NotificationWithAction constructor( @Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var sp: SP @Inject lateinit var defaultValueHelper: DefaultValueHelper - @Inject lateinit var nsSettingsStatus: NSSettingsStatus @Inject lateinit var nsClientPlugin: NSClientPlugin private var nsAlarm: NSAlarm? = null diff --git a/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SP.kt b/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SP.kt index de7b20f403..44a3119382 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SP.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SP.kt @@ -29,6 +29,7 @@ interface SP { fun putBoolean(key: String, value: Boolean) fun putBoolean(@StringRes resourceID: Int, value: Boolean) fun putDouble(key: String, value: Double) + fun putDouble(@StringRes resourceID: Int, value: Double) fun putLong(key: String, value: Long) fun putLong(@StringRes resourceID: Int, value: Long) fun putInt(key: String, value: Int) diff --git a/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SPImplementation.kt b/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SPImplementation.kt index f05582ab5b..5231a2e4ad 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SPImplementation.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/sharedPreferences/SPImplementation.kt @@ -102,6 +102,10 @@ class SPImplementation @Inject constructor( override fun putDouble(key: String, value: Double) = sharedPreferences.edit().putString(key, value.toString()).apply() + override fun putDouble(resourceID: Int, value: Double) { + sharedPreferences.edit().putString(resourceHelper.gs(resourceID), value.toString()).apply() + } + override fun putLong(key: String, value: Long) = sharedPreferences.edit().putLong(key, value).apply() diff --git a/app/src/main/res/layout/overview_fragment.xml b/app/src/main/res/layout/overview_fragment.xml index 78b83dd30f..f122376c2f 100644 --- a/app/src/main/res/layout/overview_fragment.xml +++ b/app/src/main/res/layout/overview_fragment.xml @@ -365,6 +365,8 @@ android:id="@+id/overview_statuslights" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginTop="3dp" + android:layout_marginBottom="3dp" android:background="?android:attr/colorControlHighlight" android:orientation="horizontal" android:paddingTop="4dp" @@ -375,12 +377,10 @@ app:layout_constraintTop_toBottomOf="@id/bg_tbr_layout"> @@ -388,19 +388,16 @@ android:id="@+id/careportal_canulaage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -408,7 +405,6 @@ android:id="@+id/careportal_insulinage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" @@ -418,17 +414,14 @@ android:id="@+id/careportal_reservoirlevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:textSize="14sp" /> @@ -436,19 +429,16 @@ android:id="@+id/careportal_sensorage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -456,7 +446,6 @@ android:id="@+id/careportal_pbage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="1dp" @@ -466,7 +455,6 @@ android:id="@+id/careportal_batterylevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" diff --git a/app/src/main/res/layout/overview_fragment_landscape.xml b/app/src/main/res/layout/overview_fragment_landscape.xml index a2a4eb2b4d..471634ea8a 100644 --- a/app/src/main/res/layout/overview_fragment_landscape.xml +++ b/app/src/main/res/layout/overview_fragment_landscape.xml @@ -365,6 +365,8 @@ android:id="@+id/overview_statuslights" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginTop="3dp" + android:layout_marginBottom="3dp" android:background="?android:attr/colorControlHighlight" android:orientation="horizontal" android:paddingTop="4dp" @@ -375,12 +377,10 @@ app:layout_constraintTop_toBottomOf="@id/bg_tbr_layout"> @@ -388,19 +388,16 @@ android:id="@+id/careportal_canulaage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -408,7 +405,6 @@ android:id="@+id/careportal_insulinage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" @@ -418,17 +414,14 @@ android:id="@+id/careportal_reservoirlevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:textSize="14sp" /> @@ -436,19 +429,16 @@ android:id="@+id/careportal_sensorage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -456,7 +446,6 @@ android:id="@+id/careportal_pbage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="1dp" @@ -466,7 +455,6 @@ android:id="@+id/careportal_batterylevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" diff --git a/app/src/main/res/layout/overview_fragment_nsclient.xml b/app/src/main/res/layout/overview_fragment_nsclient.xml index 3491184c6f..504e88c789 100644 --- a/app/src/main/res/layout/overview_fragment_nsclient.xml +++ b/app/src/main/res/layout/overview_fragment_nsclient.xml @@ -365,6 +365,8 @@ android:id="@+id/overview_statuslights" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginTop="3dp" + android:layout_marginBottom="3dp" android:background="?android:attr/colorControlHighlight" android:orientation="horizontal" android:paddingTop="4dp" @@ -375,12 +377,10 @@ app:layout_constraintTop_toBottomOf="@id/bg_tbr_layout"> @@ -388,19 +388,16 @@ android:id="@+id/careportal_canulaage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -408,7 +405,6 @@ android:id="@+id/careportal_insulinage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" @@ -418,17 +414,14 @@ android:id="@+id/careportal_reservoirlevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:textSize="14sp" /> @@ -436,19 +429,16 @@ android:id="@+id/careportal_sensorage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" android:textSize="14sp" /> @@ -456,7 +446,6 @@ android:id="@+id/careportal_pbage" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="1dp" @@ -466,7 +455,6 @@ android:id="@+id/careportal_batterylevel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="1dp" android:paddingEnd="2dp" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 451060622d..0c29b38089 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -651,15 +651,31 @@ key_usersuperbolus Enable superbolus in wizard Enable superbolus functionality in wizard. Do not enable until you learn what it really does. IT MAY CAUSE INSULIN OVERDOSE IF USED BLINDLY! - key_show_statuslights + show_statuslights Show status lights on home screen - key_statuslights_res_warning + statuslights_cage_warning + Threshold warning canula age [h] + statuslights_cage_critical + Threshold critical canula age [h] + statuslights_iage_warning + Threshold warning insulin age [h] + statuslights_iage_critical + Threshold critical insulin age [h] + statuslights_sage_warning + Threshold warning sensor age [h] + statuslights_sage_critical + Threshold critical sensor age [h] + statuslights_bage_warning + Threshold warning battery age [h] + statuslights_bage_critical + Threshold critical battery age [h] + statuslights_res_warning Threshold warning reservoir level [U] - key_statuslights_res_critical + statuslights_res_critical Threshold critical reservoir level [U] - key_statuslights_bat_warning + statuslights_bat_warning Threshold warning battery level [%] - key_statuslights_bat_critical + statuslights_bat_critical Threshold critical battery level [%] IOB COB @@ -1804,4 +1820,9 @@ Master password is used for backup encryption and to override security in application. Remember it or store on a safe place. Passwords don\'t match Current master password + Status lights + Copy settings from NS + statuslights_copy_ns + Copy NS settins (if exists)? + statuslights_overview_advanced diff --git a/app/src/main/res/xml/pref_overview.xml b/app/src/main/res/xml/pref_overview.xml index 720f8019cc..77e21cab7b 100644 --- a/app/src/main/res/xml/pref_overview.xml +++ b/app/src/main/res/xml/pref_overview.xml @@ -274,33 +274,118 @@ android:title="@string/overview_show_notes_field_in_dialogs_title" /> - - + android:key="@string/key_statuslights_overview_advanced" + android:title="@string/statuslights"> - - + + + + + + + + + + + + + + + + + + + + + + + + + + +