Widget -> ui module
This commit is contained in:
parent
c80e29f626
commit
ae29621c11
58 changed files with 169 additions and 125 deletions
|
@ -46,27 +46,6 @@
|
||||||
android:name="com.google.android.gms.version"
|
android:name="com.google.android.gms.version"
|
||||||
android:value="@integer/google_play_services_version" />
|
android:value="@integer/google_play_services_version" />
|
||||||
|
|
||||||
<activity
|
|
||||||
android:name=".widget.WidgetConfigureActivity"
|
|
||||||
android:theme="@android:style/Theme.Material.Dialog.NoActionBar"
|
|
||||||
android:exported="false">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<receiver
|
|
||||||
android:name=".widget.Widget"
|
|
||||||
android:exported="true">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
|
||||||
</intent-filter>
|
|
||||||
|
|
||||||
<meta-data
|
|
||||||
android:name="android.appwidget.provider"
|
|
||||||
android:resource="@xml/widget_info" />
|
|
||||||
</receiver>
|
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.google.android.backup.api_key"
|
android:name="com.google.android.backup.api_key"
|
||||||
android:value="AEdPqrEAAAAI3JiApyMrbP2QFzZ2fYfCPsgjkRp53Dm2S1-zPQ" />
|
android:value="AEdPqrEAAAAI3JiApyMrbP2QFzZ2fYfCPsgjkRp53Dm2S1-zPQ" />
|
||||||
|
|
|
@ -45,10 +45,10 @@ import info.nightscout.androidaps.utils.ActivityMonitor
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.ProcessLifecycleListener
|
import info.nightscout.androidaps.utils.ProcessLifecycleListener
|
||||||
import info.nightscout.androidaps.utils.locale.LocaleHelper
|
import info.nightscout.androidaps.utils.locale.LocaleHelper
|
||||||
import info.nightscout.androidaps.widget.updateWidget
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
import info.nightscout.ui.widget.Widget
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||||
import io.reactivex.rxjava3.exceptions.UndeliverableException
|
import io.reactivex.rxjava3.exceptions.UndeliverableException
|
||||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||||
|
@ -155,7 +155,7 @@ class MainApp : DaggerApplication() {
|
||||||
// schedule widget update
|
// schedule widget update
|
||||||
refreshWidget = Runnable {
|
refreshWidget = Runnable {
|
||||||
handler.postDelayed(refreshWidget, 60000)
|
handler.postDelayed(refreshWidget, 60000)
|
||||||
updateWidget(this)
|
Widget.updateWidget(this)
|
||||||
}
|
}
|
||||||
handler.postDelayed(refreshWidget, 60000)
|
handler.postDelayed(refreshWidget, 60000)
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,7 @@ class HistoryBrowserData @Inject constructor(
|
||||||
activePlugin,
|
activePlugin,
|
||||||
defaultValueHelper,
|
defaultValueHelper,
|
||||||
profileFunction,
|
profileFunction,
|
||||||
repository,
|
repository
|
||||||
fabricPrivacy
|
|
||||||
)
|
)
|
||||||
iobCobCalculator =
|
iobCobCalculator =
|
||||||
IobCobCalculatorPlugin(
|
IobCobCalculatorPlugin(
|
||||||
|
|
|
@ -8,7 +8,7 @@ import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData
|
||||||
import info.nightscout.androidaps.widget.updateWidget
|
import info.nightscout.ui.widget.Widget
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
@ -25,7 +25,7 @@ class CompatDBHelper @Inject constructor(
|
||||||
.changeObservable()
|
.changeObservable()
|
||||||
.doOnSubscribe {
|
.doOnSubscribe {
|
||||||
rxBus.send(EventNewBG(null))
|
rxBus.send(EventNewBG(null))
|
||||||
updateWidget(context)
|
Widget.updateWidget(context)
|
||||||
}
|
}
|
||||||
.subscribe {
|
.subscribe {
|
||||||
/**
|
/**
|
||||||
|
@ -38,7 +38,7 @@ class CompatDBHelper @Inject constructor(
|
||||||
it.filterIsInstance<GlucoseValue>().maxByOrNull { gv -> gv.timestamp }?.let { gv ->
|
it.filterIsInstance<GlucoseValue>().maxByOrNull { gv -> gv.timestamp }?.let { gv ->
|
||||||
aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg $gv")
|
aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg $gv")
|
||||||
rxBus.send(EventNewBG(gv))
|
rxBus.send(EventNewBG(gv))
|
||||||
updateWidget(context)
|
Widget.updateWidget(context)
|
||||||
newestGlucoseValue = gv
|
newestGlucoseValue = gv
|
||||||
}
|
}
|
||||||
it.filterIsInstance<GlucoseValue>().minOfOrNull { gv -> gv.timestamp }?.let { timestamp ->
|
it.filterIsInstance<GlucoseValue>().minOfOrNull { gv -> gv.timestamp }?.let { timestamp ->
|
||||||
|
|
|
@ -8,7 +8,9 @@ import dagger.Provides
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.MainApp
|
import info.nightscout.androidaps.MainApp
|
||||||
import info.nightscout.androidaps.database.AppRepository
|
import info.nightscout.androidaps.database.AppRepository
|
||||||
|
import info.nightscout.androidaps.implementations.ActivityNamesImpl
|
||||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||||
|
import info.nightscout.androidaps.interfaces.ActivityNames
|
||||||
import info.nightscout.androidaps.interfaces.AndroidPermission
|
import info.nightscout.androidaps.interfaces.AndroidPermission
|
||||||
import info.nightscout.androidaps.interfaces.Autotune
|
import info.nightscout.androidaps.interfaces.Autotune
|
||||||
import info.nightscout.androidaps.interfaces.BolusTimer
|
import info.nightscout.androidaps.interfaces.BolusTimer
|
||||||
|
@ -40,7 +42,6 @@ import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefsI
|
||||||
import info.nightscout.androidaps.plugins.general.maintenance.PrefFileListProvider
|
import info.nightscout.androidaps.plugins.general.maintenance.PrefFileListProvider
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.DataSyncSelectorImplementation
|
import info.nightscout.androidaps.plugins.general.nsclient.DataSyncSelectorImplementation
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.data.DeviceStatusData
|
import info.nightscout.androidaps.plugins.general.nsclient.data.DeviceStatusData
|
||||||
import info.nightscout.plugins.general.smsCommunicator.SmsCommunicatorPlugin
|
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
||||||
import info.nightscout.androidaps.plugins.pump.PumpSyncImplementation
|
import info.nightscout.androidaps.plugins.pump.PumpSyncImplementation
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
|
@ -60,6 +61,7 @@ import info.nightscout.implementation.CarbTimerImpl
|
||||||
import info.nightscout.implementation.LocalAlertUtilsImpl
|
import info.nightscout.implementation.LocalAlertUtilsImpl
|
||||||
import info.nightscout.implementation.XDripBroadcastImpl
|
import info.nightscout.implementation.XDripBroadcastImpl
|
||||||
import info.nightscout.implementation.queue.CommandQueueImplementation
|
import info.nightscout.implementation.queue.CommandQueueImplementation
|
||||||
|
import info.nightscout.plugins.general.smsCommunicator.SmsCommunicatorPlugin
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
@ -136,6 +138,7 @@ open class AppModule {
|
||||||
@Binds fun bindBolusTimerInterface(bolusTimer: BolusTimerImpl): BolusTimer
|
@Binds fun bindBolusTimerInterface(bolusTimer: BolusTimerImpl): BolusTimer
|
||||||
@Binds fun bindAndroidPermissionInterface(androidPermission: AndroidPermissionImpl): AndroidPermission
|
@Binds fun bindAndroidPermissionInterface(androidPermission: AndroidPermissionImpl): AndroidPermission
|
||||||
@Binds fun bindLocalAlertUtilsInterface(localAlertUtils: LocalAlertUtilsImpl): LocalAlertUtils
|
@Binds fun bindLocalAlertUtilsInterface(localAlertUtils: LocalAlertUtilsImpl): LocalAlertUtils
|
||||||
|
@Binds fun bindActivityNamesInterface(activityNames: ActivityNamesImpl): ActivityNames
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ package info.nightscout.androidaps.di
|
||||||
|
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.android.ContributesAndroidInjector
|
import dagger.android.ContributesAndroidInjector
|
||||||
import info.nightscout.androidaps.widget.WidgetConfigureActivity
|
import info.nightscout.ui.widget.WidgetConfigureActivity
|
||||||
import info.nightscout.androidaps.skins.SkinListPreference
|
import info.nightscout.androidaps.skins.SkinListPreference
|
||||||
import info.nightscout.androidaps.widget.Widget
|
import info.nightscout.ui.widget.Widget
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package info.nightscout.androidaps.implementations
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.MainActivity
|
||||||
|
import info.nightscout.androidaps.interfaces.ActivityNames
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class ActivityNamesImpl @Inject constructor() : ActivityNames {
|
||||||
|
|
||||||
|
override val mainActivityClass: Class<*>
|
||||||
|
get() = MainActivity::class.java
|
||||||
|
}
|
|
@ -1,16 +1,17 @@
|
||||||
package info.nightscout.androidaps.plugins.aps.openAPSSMB
|
package info.nightscout.androidaps.plugins.aps.openAPSSMB
|
||||||
|
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
|
import info.nightscout.androidaps.interfaces.VariableSensitivityResult
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.androidaps.plugins.aps.loop.APSResult
|
import info.nightscout.androidaps.plugins.aps.loop.APSResult
|
||||||
import org.json.JSONException
|
import org.json.JSONException
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
|
|
||||||
class DetermineBasalResultSMB private constructor(injector: HasAndroidInjector) : APSResult(injector) {
|
class DetermineBasalResultSMB private constructor(injector: HasAndroidInjector) : APSResult(injector), VariableSensitivityResult {
|
||||||
|
|
||||||
private var eventualBG = 0.0
|
private var eventualBG = 0.0
|
||||||
private var snoozeBG = 0.0
|
private var snoozeBG = 0.0
|
||||||
var variableSens: Double? = null
|
override var variableSens: Double? = null
|
||||||
|
|
||||||
internal constructor(injector: HasAndroidInjector, result: JSONObject) : this(injector) {
|
internal constructor(injector: HasAndroidInjector, result: JSONObject) : this(injector) {
|
||||||
date = dateUtil.now()
|
date = dateUtil.now()
|
||||||
|
|
|
@ -136,6 +136,6 @@ class NSClientFragment : DaggerFragment(), MenuProvider {
|
||||||
binding.url.text = nsClientPlugin.url()
|
binding.url.text = nsClientPlugin.url()
|
||||||
binding.status.text = nsClientPlugin.status
|
binding.status.text = nsClientPlugin.status
|
||||||
val size = dataSyncSelector.queueSize()
|
val size = dataSyncSelector.queueSize()
|
||||||
binding.queue.text = if (size >= 0) size.toString() else rh.gs(R.string.notavailable)
|
binding.queue.text = if (size >= 0) size.toString() else rh.gs(R.string.value_unavailable_short)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -35,8 +35,6 @@ import info.nightscout.androidaps.database.entities.UserEntry.Action
|
||||||
import info.nightscout.androidaps.database.entities.UserEntry.Sources
|
import info.nightscout.androidaps.database.entities.UserEntry.Sources
|
||||||
import info.nightscout.androidaps.database.interfaces.end
|
import info.nightscout.androidaps.database.interfaces.end
|
||||||
import info.nightscout.androidaps.databinding.OverviewFragmentBinding
|
import info.nightscout.androidaps.databinding.OverviewFragmentBinding
|
||||||
import info.nightscout.ui.dialogs.CalibrationDialog
|
|
||||||
import info.nightscout.ui.dialogs.CarbsDialog
|
|
||||||
import info.nightscout.androidaps.dialogs.InsulinDialog
|
import info.nightscout.androidaps.dialogs.InsulinDialog
|
||||||
import info.nightscout.androidaps.dialogs.LoopDialog
|
import info.nightscout.androidaps.dialogs.LoopDialog
|
||||||
import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
|
import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
|
||||||
|
@ -108,6 +106,8 @@ import info.nightscout.androidaps.utils.wizard.QuickWizard
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import info.nightscout.shared.weardata.EventData
|
import info.nightscout.shared.weardata.EventData
|
||||||
|
import info.nightscout.ui.dialogs.CalibrationDialog
|
||||||
|
import info.nightscout.ui.dialogs.CarbsDialog
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
@ -799,7 +799,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
_binding ?: return@runOnUiThread
|
_binding ?: return@runOnUiThread
|
||||||
binding.infoLayout.bg.text = lastBg?.valueToUnitsString(units)
|
binding.infoLayout.bg.text = lastBg?.valueToUnitsString(units)
|
||||||
?: rh.gs(R.string.notavailable)
|
?: rh.gs(R.string.value_unavailable_short)
|
||||||
binding.infoLayout.bg.setTextColor(lastBgColor)
|
binding.infoLayout.bg.setTextColor(lastBgColor)
|
||||||
binding.infoLayout.arrow.setImageResource(trendArrow.directionToIcon())
|
binding.infoLayout.arrow.setImageResource(trendArrow.directionToIcon())
|
||||||
binding.infoLayout.arrow.setColorFilter(lastBgColor)
|
binding.infoLayout.arrow.setColorFilter(lastBgColor)
|
||||||
|
@ -813,7 +813,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
||||||
binding.infoLayout.longAvgDelta.text = Profile.toSignedUnitsString(glucoseStatus.longAvgDelta, glucoseStatus.longAvgDelta * Constants.MGDL_TO_MMOLL, units)
|
binding.infoLayout.longAvgDelta.text = Profile.toSignedUnitsString(glucoseStatus.longAvgDelta, glucoseStatus.longAvgDelta * Constants.MGDL_TO_MMOLL, units)
|
||||||
} else {
|
} else {
|
||||||
binding.infoLayout.deltaLarge.text = ""
|
binding.infoLayout.deltaLarge.text = ""
|
||||||
binding.infoLayout.delta.text = "Δ " + rh.gs(R.string.notavailable)
|
binding.infoLayout.delta.text = "Δ " + rh.gs(R.string.value_unavailable_short)
|
||||||
binding.infoLayout.avgDelta.text = ""
|
binding.infoLayout.avgDelta.text = ""
|
||||||
binding.infoLayout.longAvgDelta.text = ""
|
binding.infoLayout.longAvgDelta.text = ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,6 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNo
|
||||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
||||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewNotification
|
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewNotification
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale
|
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.ScaledDataPoint
|
|
||||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
||||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
|
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
||||||
|
@ -81,8 +79,6 @@ class OverviewPlugin @Inject constructor(
|
||||||
rxBus.send(EventDismissNotification(id))
|
rxBus.send(EventDismissNotification(id))
|
||||||
}
|
}
|
||||||
|
|
||||||
class DeviationDataPoint(x: Double, y: Double, var color: Int, scale: Scale) : ScaledDataPoint(x, y, scale)
|
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
overviewMenus.loadGraphConfig()
|
overviewMenus.loadGraphConfig()
|
||||||
|
|
|
@ -67,7 +67,7 @@ class StatusLightHandler @Inject constructor(
|
||||||
if (pump.model().supportBatteryLevel || erosBatteryLinkAvailable) {
|
if (pump.model().supportBatteryLevel || erosBatteryLinkAvailable) {
|
||||||
handleLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
|
handleLevel(careportal_battery_level, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
|
||||||
} else {
|
} else {
|
||||||
careportal_battery_level?.text = rh.gs(R.string.notavailable)
|
careportal_battery_level?.text = rh.gs(R.string.value_unavailable_short)
|
||||||
careportal_battery_level?.setTextColor(rh.gac(careportal_battery_level.context, R.attr.defaultTextColor))
|
careportal_battery_level?.setTextColor(rh.gac(careportal_battery_level.context, R.attr.defaultTextColor))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ class StatusLightHandler @Inject constructor(
|
||||||
warnColors.setColorByAge(view, therapyEvent.value, warn, urgent)
|
warnColors.setColorByAge(view, therapyEvent.value, warn, urgent)
|
||||||
view?.text = therapyEvent.value.age(rh.shortTextMode(), rh, dateUtil)
|
view?.text = therapyEvent.value.age(rh.shortTextMode(), rh, dateUtil)
|
||||||
} else {
|
} else {
|
||||||
view?.text = if (rh.shortTextMode()) "-" else rh.gs(R.string.notavailable)
|
view?.text = if (rh.shortTextMode()) "-" else rh.gs(R.string.value_unavailable_short)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,11 +13,22 @@ import info.nightscout.androidaps.database.entities.Bolus
|
||||||
import info.nightscout.androidaps.database.entities.ExtendedBolus
|
import info.nightscout.androidaps.database.entities.ExtendedBolus
|
||||||
import info.nightscout.androidaps.database.entities.TemporaryBasal
|
import info.nightscout.androidaps.database.entities.TemporaryBasal
|
||||||
import info.nightscout.androidaps.database.interfaces.end
|
import info.nightscout.androidaps.database.interfaces.end
|
||||||
import info.nightscout.androidaps.events.*
|
import info.nightscout.androidaps.events.Event
|
||||||
|
import info.nightscout.androidaps.events.EventConfigBuilderChange
|
||||||
|
import info.nightscout.androidaps.events.EventEffectiveProfileSwitchChanged
|
||||||
|
import info.nightscout.androidaps.events.EventNewBG
|
||||||
|
import info.nightscout.androidaps.events.EventPreferenceChange
|
||||||
import info.nightscout.androidaps.extensions.convertedToAbsolute
|
import info.nightscout.androidaps.extensions.convertedToAbsolute
|
||||||
import info.nightscout.androidaps.extensions.iobCalc
|
import info.nightscout.androidaps.extensions.iobCalc
|
||||||
import info.nightscout.androidaps.extensions.toTemporaryBasal
|
import info.nightscout.androidaps.extensions.toTemporaryBasal
|
||||||
import info.nightscout.androidaps.interfaces.*
|
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||||
|
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
||||||
|
import info.nightscout.androidaps.interfaces.PluginBase
|
||||||
|
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||||
|
import info.nightscout.androidaps.interfaces.PluginType
|
||||||
|
import info.nightscout.androidaps.interfaces.Profile
|
||||||
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
|
||||||
|
@ -25,12 +36,10 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHi
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
|
import info.nightscout.androidaps.utils.MidnightTime
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
|
||||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import info.nightscout.androidaps.workflow.CalculationWorkflow
|
import info.nightscout.androidaps.workflow.CalculationWorkflow
|
||||||
import info.nightscout.androidaps.events.Event
|
|
||||||
import info.nightscout.androidaps.utils.MidnightTime
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
|
|
@ -34,10 +34,10 @@ import info.nightscout.androidaps.queue.commands.Command
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.widget.updateWidget
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
import info.nightscout.ui.widget.Widget
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
@ -117,7 +117,7 @@ class KeepAliveWorker(
|
||||||
}
|
}
|
||||||
lastRun = dateUtil.now()
|
lastRun = dateUtil.now()
|
||||||
|
|
||||||
updateWidget(context)
|
Widget.updateWidget(context)
|
||||||
localAlertUtils.shortenSnoozeInterval()
|
localAlertUtils.shortenSnoozeInterval()
|
||||||
localAlertUtils.checkStaleBGAlert()
|
localAlertUtils.checkStaleBGAlert()
|
||||||
checkPump()
|
checkPump()
|
||||||
|
|
|
@ -15,12 +15,13 @@ import info.nightscout.androidaps.database.AppRepository
|
||||||
import info.nightscout.androidaps.database.ValueWrapper
|
import info.nightscout.androidaps.database.ValueWrapper
|
||||||
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
||||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.SMBDefaults
|
import info.nightscout.androidaps.plugins.aps.openAPSSMB.SMBDefaults
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewMenus
|
import info.nightscout.androidaps.plugins.general.overview.OverviewMenus
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin
|
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface
|
||||||
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DeviationDataPoint
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.FixedLineGraphSeries
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.FixedLineGraphSeries
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.ScaledDataPoint
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.ScaledDataPoint
|
||||||
|
@ -29,10 +30,8 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCa
|
||||||
import info.nightscout.androidaps.receivers.DataWorkerStorage
|
import info.nightscout.androidaps.receivers.DataWorkerStorage
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import java.util.ArrayList
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
@ -87,7 +86,7 @@ class PrepareIobAutosensGraphDataWorker(
|
||||||
val bgiArrayPrediction: MutableList<ScaledDataPoint> = ArrayList()
|
val bgiArrayPrediction: MutableList<ScaledDataPoint> = ArrayList()
|
||||||
data.overviewData.maxBGIValue = Double.MIN_VALUE
|
data.overviewData.maxBGIValue = Double.MIN_VALUE
|
||||||
|
|
||||||
val devArray: MutableList<OverviewPlugin.DeviationDataPoint> = ArrayList()
|
val devArray: MutableList<DeviationDataPoint> = ArrayList()
|
||||||
data.overviewData.maxDevValueFound = Double.MIN_VALUE
|
data.overviewData.maxDevValueFound = Double.MIN_VALUE
|
||||||
|
|
||||||
val ratioArray: MutableList<ScaledDataPoint> = ArrayList()
|
val ratioArray: MutableList<ScaledDataPoint> = ArrayList()
|
||||||
|
@ -168,7 +167,7 @@ class PrepareIobAutosensGraphDataWorker(
|
||||||
} else if (autosensData.type == "csf") {
|
} else if (autosensData.type == "csf") {
|
||||||
color = rh.gac( ctx, R.attr.deviationGreyColor)
|
color = rh.gac( ctx, R.attr.deviationGreyColor)
|
||||||
}
|
}
|
||||||
devArray.add(OverviewPlugin.DeviationDataPoint(time.toDouble(), autosensData.deviation, color, data.overviewData.devScale))
|
devArray.add(DeviationDataPoint(time.toDouble(), autosensData.deviation, color, data.overviewData.devScale))
|
||||||
data.overviewData.maxDevValueFound = maxOf(data.overviewData.maxDevValueFound, abs(autosensData.deviation), abs(bgi))
|
data.overviewData.maxDevValueFound = maxOf(data.overviewData.maxDevValueFound, abs(autosensData.deviation), abs(bgi))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +259,7 @@ class PrepareIobAutosensGraphDataWorker(
|
||||||
|
|
||||||
// DEVIATIONS
|
// DEVIATIONS
|
||||||
data.overviewData.deviationsSeries = BarGraphSeries(Array(devArray.size) { i -> devArray[i] }).also {
|
data.overviewData.deviationsSeries = BarGraphSeries(Array(devArray.size) { i -> devArray[i] }).also {
|
||||||
it.setValueDependentColor { data: OverviewPlugin.DeviationDataPoint -> data.color }
|
it.setValueDependentColor { data: DeviationDataPoint -> data.color }
|
||||||
}
|
}
|
||||||
|
|
||||||
// RATIO
|
// RATIO
|
||||||
|
|
|
@ -9,6 +9,7 @@ import info.nightscout.androidaps.database.AppRepository
|
||||||
import info.nightscout.androidaps.interfaces.Config
|
import info.nightscout.androidaps.interfaces.Config
|
||||||
import info.nightscout.androidaps.interfaces.Loop
|
import info.nightscout.androidaps.interfaces.Loop
|
||||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus
|
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
||||||
|
@ -19,8 +20,7 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Point
|
||||||
import info.nightscout.androidaps.receivers.DataWorkerStorage
|
import info.nightscout.androidaps.receivers.DataWorkerStorage
|
||||||
import info.nightscout.androidaps.utils.DefaultValueHelper
|
import info.nightscout.androidaps.utils.DefaultValueHelper
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
import java.util.Calendar
|
||||||
import java.util.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.ceil
|
import kotlin.math.ceil
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
style="@style/GrayButton"
|
style="@style/GrayButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:drawableTop="@drawable/ic_actions_startextbolus"
|
android:drawableTop="@drawable/ic_actions_start_extended_bolus"
|
||||||
android:paddingStart="0dp"
|
android:paddingStart="0dp"
|
||||||
android:paddingEnd="0dp"
|
android:paddingEnd="0dp"
|
||||||
android:text="@string/overview_extendedbolus_button"
|
android:text="@string/overview_extendedbolus_button"
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:importantForAccessibility="no"
|
android:importantForAccessibility="no"
|
||||||
app:srcCompat="@drawable/ic_actions_startextbolus" />
|
app:srcCompat="@drawable/ic_actions_start_extended_bolus" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
android:paddingTop="4dp"
|
android:paddingTop="4dp"
|
||||||
android:paddingBottom="4dp"
|
android:paddingBottom="4dp"
|
||||||
android:hint="temp target"
|
android:hint="temp target"
|
||||||
android:text="@string/notavailable"
|
android:text="@string/value_unavailable_short"
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
app:drawableStartCompat="@drawable/ic_crosstarget"
|
app:drawableStartCompat="@drawable/ic_crosstarget"
|
||||||
|
|
|
@ -357,7 +357,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
app:srcCompat="@drawable/ic_actions_startextbolus"
|
app:srcCompat="@drawable/ic_actions_start_extended_bolus"
|
||||||
android:contentDescription="@string/extended_bolus" />
|
android:contentDescription="@string/extended_bolus" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -391,7 +391,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
app:srcCompat="@drawable/ic_swap_vert_black_48dp_green"
|
app:srcCompat="@drawable/ic_swap_vert_black_48dp_green"
|
||||||
android:contentDescription="@string/a11y_autosenslabel" />
|
android:contentDescription="@string/a11y_autosens_label" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sensitivity"
|
android:id="@+id/sensitivity"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:contentDescription="@string/extended_bolus"
|
android:contentDescription="@string/extended_bolus"
|
||||||
android:icon="@drawable/ic_actions_startextbolus" />
|
android:icon="@drawable/ic_actions_start_extended_bolus" />
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabItem
|
<com.google.android.material.tabs.TabItem
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -300,7 +300,6 @@
|
||||||
<string name="wear_detailedIOB_title">Show detailed IOB</string>
|
<string name="wear_detailedIOB_title">Show detailed IOB</string>
|
||||||
<string name="wear_detailedIOB_summary">Break down IOB into bolus and basal IOB on the watchface</string>
|
<string name="wear_detailedIOB_summary">Break down IOB into bolus and basal IOB on the watchface</string>
|
||||||
<string name="nosuccess">not successful - please check phone</string>
|
<string name="nosuccess">not successful - please check phone</string>
|
||||||
<string name="notavailable">n/a</string>
|
|
||||||
<string name="patientage">Patient type</string>
|
<string name="patientage">Patient type</string>
|
||||||
<string name="child">Child</string>
|
<string name="child">Child</string>
|
||||||
<string name="teenage">Teenage</string>
|
<string name="teenage">Teenage</string>
|
||||||
|
@ -415,7 +414,6 @@
|
||||||
<string name="absorptionsettings_title">Absorption settings</string>
|
<string name="absorptionsettings_title">Absorption settings</string>
|
||||||
<string name="absorption_maxtime_title">Meal max absorption time [h]</string>
|
<string name="absorption_maxtime_title">Meal max absorption time [h]</string>
|
||||||
<string name="absorption_maxtime_summary">Time in hours where is expected all carbs from meal will be absorbed</string>
|
<string name="absorption_maxtime_summary">Time in hours where is expected all carbs from meal will be absorbed</string>
|
||||||
<string name="key_rangetodisplay" translatable="false">rangetodisplay</string>
|
|
||||||
<string name="openaps_short">OAPS</string>
|
<string name="openaps_short">OAPS</string>
|
||||||
<string name="uploader_short">UPLD</string>
|
<string name="uploader_short">UPLD</string>
|
||||||
<string name="basal_short">BAS</string>
|
<string name="basal_short">BAS</string>
|
||||||
|
@ -550,7 +548,6 @@
|
||||||
<string name="ignore5m">Ignore 5m</string>
|
<string name="ignore5m">Ignore 5m</string>
|
||||||
<string name="ignore15m">Ignore 15m</string>
|
<string name="ignore15m">Ignore 15m</string>
|
||||||
<string name="ignore30m">Ignore 30m</string>
|
<string name="ignore30m">Ignore 30m</string>
|
||||||
<string name="required">req</string>
|
|
||||||
<string name="nav_historybrowser">History browser</string>
|
<string name="nav_historybrowser">History browser</string>
|
||||||
<string name="wear_notifysmb_title">Notify on SMB</string>
|
<string name="wear_notifysmb_title">Notify on SMB</string>
|
||||||
<string name="wear_notifysmb_summary">Show SMB on the watch like a standard bolus.</string>
|
<string name="wear_notifysmb_summary">Show SMB on the watch like a standard bolus.</string>
|
||||||
|
@ -650,7 +647,6 @@
|
||||||
<string name="openapsama_bolussnooze_dia_divisor">Bolus snooze dia divisor</string>
|
<string name="openapsama_bolussnooze_dia_divisor">Bolus snooze dia divisor</string>
|
||||||
<string name="openapsama_max_daily_safety_multiplier">Max daily safety multiplier</string>
|
<string name="openapsama_max_daily_safety_multiplier">Max daily safety multiplier</string>
|
||||||
<string name="openapsama_current_basal_safety_multiplier">Current basal safety multiplier</string>
|
<string name="openapsama_current_basal_safety_multiplier">Current basal safety multiplier</string>
|
||||||
<string name="value_unavailable_short">n/a</string>
|
|
||||||
<string name="key_virtualpump_uploadstatus" translatable="false">virtualpump_uploadstatus</string>
|
<string name="key_virtualpump_uploadstatus" translatable="false">virtualpump_uploadstatus</string>
|
||||||
<string name="virtualpump_type">Virtual Pump Type</string>
|
<string name="virtualpump_type">Virtual Pump Type</string>
|
||||||
<string name="virtualpump_definition">Pump Definition</string>
|
<string name="virtualpump_definition">Pump Definition</string>
|
||||||
|
@ -908,7 +904,6 @@
|
||||||
<string name="graph_menu_divider_header">Graph</string>
|
<string name="graph_menu_divider_header">Graph</string>
|
||||||
<string name="chart_menu">Chart menu</string>
|
<string name="chart_menu">Chart menu</string>
|
||||||
<string name="clear_filter">Clear filter</string>
|
<string name="clear_filter">Clear filter</string>
|
||||||
<string name="trend_arrow">Trend arrow</string>
|
|
||||||
<string name="cannula">Cannula</string>
|
<string name="cannula">Cannula</string>
|
||||||
<string name="userentry">User entry</string>
|
<string name="userentry">User entry</string>
|
||||||
<string name="common_values">Use values of your largest food you usually eat\n</string>
|
<string name="common_values">Use values of your largest food you usually eat\n</string>
|
||||||
|
@ -978,18 +973,6 @@
|
||||||
<string name="a11_correction_percentage">correct outcome with %</string>
|
<string name="a11_correction_percentage">correct outcome with %</string>
|
||||||
<string name="a11_correction_units">correct outcome with units</string>
|
<string name="a11_correction_units">correct outcome with units</string>
|
||||||
<string name="not_available_full">Not available</string>
|
<string name="not_available_full">Not available</string>
|
||||||
<string name="a11y_high">high</string>
|
|
||||||
<string name="a11y_inrange">in range</string>
|
|
||||||
<string name="a11y_low">low</string>
|
|
||||||
<string name="a11y_arrow_double_down">falling rapidly</string>
|
|
||||||
<string name="a11y_arrow_single_down">falling</string>
|
|
||||||
<string name="a11y_arrow_forty_five_down">falling slowly</string>
|
|
||||||
<string name="a11y_arrow_flat">stable</string>
|
|
||||||
<string name="a11y_arrow_forty_five_up">rising slowly</string>
|
|
||||||
<string name="a11y_arrow_single_up">rising</string>
|
|
||||||
<string name="a11y_arrow_double_up">rising rapidly</string>
|
|
||||||
<string name="a11y_arrow_none">none</string>
|
|
||||||
<string name="a11y_arrow_unknown">unknown</string>
|
|
||||||
<string name="a11y_graph">graph</string>
|
<string name="a11y_graph">graph</string>
|
||||||
<string name="a11y_bg_quality">blood glucose quality</string>
|
<string name="a11y_bg_quality">blood glucose quality</string>
|
||||||
<string name="a11y_bg_quality_recalculated">recalculated</string>
|
<string name="a11y_bg_quality_recalculated">recalculated</string>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:configure="info.nightscout.androidaps.widget.WidgetConfigureActivity"
|
android:configure="info.nightscout.ui.widget.WidgetConfigureActivity"
|
||||||
android:description="@string/widget_description"
|
android:description="@string/widget_description"
|
||||||
android:initialKeyguardLayout="@layout/widget_layout"
|
android:initialKeyguardLayout="@layout/widget_layout"
|
||||||
android:initialLayout="@layout/widget_layout"
|
android:initialLayout="@layout/widget_layout"
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
<string name="wifissidcompared">WiFi SSID %1$s %2$s</string>
|
<string name="wifissidcompared">WiFi SSID %1$s %2$s</string>
|
||||||
<string name="autosenscompared">Autosens %1$s %2$s %%</string>
|
<string name="autosenscompared">Autosens %1$s %2$s %%</string>
|
||||||
<string name="autosenslabel">Autosens %</string>
|
<string name="autosenslabel">Autosens %</string>
|
||||||
<string name="a11y_autosenslabel">Auto sens</string>
|
|
||||||
<string name="deltacompared">%3$s %1$s %2$s</string>
|
<string name="deltacompared">%3$s %1$s %2$s</string>
|
||||||
<string name="deltalabel">BG difference</string>
|
<string name="deltalabel">BG difference</string>
|
||||||
<string name="deltalabel_u">BG difference [%1$s]</string>
|
<string name="deltalabel_u">BG difference [%1$s]</string>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package info.nightscout.androidaps.interfaces
|
||||||
|
|
||||||
|
interface ActivityNames {
|
||||||
|
val mainActivityClass: Class<*>
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package info.nightscout.androidaps.interfaces
|
||||||
|
|
||||||
|
interface VariableSensitivityResult {
|
||||||
|
var variableSens: Double?
|
||||||
|
}
|
|
@ -1,11 +1,13 @@
|
||||||
package info.nightscout.androidaps.plugins.general.overview
|
package info.nightscout.androidaps.plugins.general.overview
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.annotation.AttrRes
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
import com.jjoe64.graphview.series.BarGraphSeries
|
import com.jjoe64.graphview.series.BarGraphSeries
|
||||||
import com.jjoe64.graphview.series.DataPoint
|
import com.jjoe64.graphview.series.DataPoint
|
||||||
import com.jjoe64.graphview.series.LineGraphSeries
|
import com.jjoe64.graphview.series.LineGraphSeries
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.core.R
|
||||||
import info.nightscout.androidaps.data.IobTotal
|
import info.nightscout.androidaps.data.IobTotal
|
||||||
import info.nightscout.androidaps.database.AppRepository
|
import info.nightscout.androidaps.database.AppRepository
|
||||||
import info.nightscout.androidaps.database.ValueWrapper
|
import info.nightscout.androidaps.database.ValueWrapper
|
||||||
|
@ -19,20 +21,21 @@ import info.nightscout.androidaps.extensions.valueToUnits
|
||||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||||
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
||||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface
|
||||||
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DeviationDataPoint
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.FixedLineGraphSeries
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.FixedLineGraphSeries
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale
|
||||||
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.ScaledDataPoint
|
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.ScaledDataPoint
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo
|
||||||
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.DefaultValueHelper
|
import info.nightscout.androidaps.utils.DefaultValueHelper
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import java.util.*
|
import java.util.Calendar
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
|
@ -45,8 +48,7 @@ class OverviewData @Inject constructor(
|
||||||
private val activePlugin: ActivePlugin,
|
private val activePlugin: ActivePlugin,
|
||||||
private val defaultValueHelper: DefaultValueHelper,
|
private val defaultValueHelper: DefaultValueHelper,
|
||||||
private val profileFunction: ProfileFunction,
|
private val profileFunction: ProfileFunction,
|
||||||
private val repository: AppRepository,
|
private val repository: AppRepository
|
||||||
private val fabricPrivacy: FabricPrivacy
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var rangeToDisplay = 6 // for graph
|
var rangeToDisplay = 6 // for graph
|
||||||
|
@ -163,7 +165,7 @@ class OverviewData @Inject constructor(
|
||||||
if (temporaryBasal?.isInProgress == false) temporaryBasal = null
|
if (temporaryBasal?.isInProgress == false) temporaryBasal = null
|
||||||
temporaryBasal?.let { "T:" + it.toStringShort() }
|
temporaryBasal?.let { "T:" + it.toStringShort() }
|
||||||
?: rh.gs(R.string.pump_basebasalrate, profile.getBasal())
|
?: rh.gs(R.string.pump_basebasalrate, profile.getBasal())
|
||||||
} ?: rh.gs(R.string.notavailable)
|
} ?: rh.gs(R.string.value_unavailable_short)
|
||||||
|
|
||||||
fun temporaryBasalDialogText(iobCobCalculator: IobCobCalculator): String =
|
fun temporaryBasalDialogText(iobCobCalculator: IobCobCalculator): String =
|
||||||
profileFunction.getProfile()?.let { profile ->
|
profileFunction.getProfile()?.let { profile ->
|
||||||
|
@ -172,9 +174,9 @@ class OverviewData @Inject constructor(
|
||||||
"\n" + rh.gs(R.string.tempbasal_label) + ": " + temporaryBasal.toStringFull(profile, dateUtil)
|
"\n" + rh.gs(R.string.tempbasal_label) + ": " + temporaryBasal.toStringFull(profile, dateUtil)
|
||||||
}
|
}
|
||||||
?: "${rh.gs(R.string.basebasalrate_label)}: ${rh.gs(R.string.pump_basebasalrate, profile.getBasal())}"
|
?: "${rh.gs(R.string.basebasalrate_label)}: ${rh.gs(R.string.pump_basebasalrate, profile.getBasal())}"
|
||||||
} ?: rh.gs(R.string.notavailable)
|
} ?: rh.gs(R.string.value_unavailable_short)
|
||||||
|
|
||||||
fun temporaryBasalIcon(iobCobCalculator: IobCobCalculator): Int =
|
@DrawableRes fun temporaryBasalIcon(iobCobCalculator: IobCobCalculator): Int =
|
||||||
profileFunction.getProfile()?.let { profile ->
|
profileFunction.getProfile()?.let { profile ->
|
||||||
iobCobCalculator.getTempBasalIncludingConvertedExtended(dateUtil.now())?.let { temporaryBasal ->
|
iobCobCalculator.getTempBasalIncludingConvertedExtended(dateUtil.now())?.let { temporaryBasal ->
|
||||||
val percentRate = temporaryBasal.convertedToPercent(dateUtil.now(), profile)
|
val percentRate = temporaryBasal.convertedToPercent(dateUtil.now(), profile)
|
||||||
|
@ -186,7 +188,8 @@ class OverviewData @Inject constructor(
|
||||||
}
|
}
|
||||||
} ?: R.drawable.ic_cp_basal_no_tbr
|
} ?: R.drawable.ic_cp_basal_no_tbr
|
||||||
|
|
||||||
fun temporaryBasalColor(context: Context?, iobCobCalculator: IobCobCalculator): Int = iobCobCalculator.getTempBasalIncludingConvertedExtended(dateUtil.now())?.let { rh.gac(context , R.attr.basal) }
|
@AttrRes fun temporaryBasalColor(context: Context?, iobCobCalculator: IobCobCalculator): Int = iobCobCalculator.getTempBasalIncludingConvertedExtended(dateUtil.now())?.let { rh.gac(context, R
|
||||||
|
.attr.basal) }
|
||||||
?: rh.gac(context, R.attr.defaultTextColor)
|
?: rh.gac(context, R.attr.defaultTextColor)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -239,7 +242,7 @@ class OverviewData @Inject constructor(
|
||||||
* SENSITIVITY
|
* SENSITIVITY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fun lastAutosensData(iobCobCalculator: IobCobCalculator) = iobCobCalculator.ads.getLastAutosensData("Overview", aapsLogger, dateUtil)
|
fun lastAutosensData(iobCobCalculator: IobCobCalculator) : AutosensData? = iobCobCalculator.ads.getLastAutosensData("Overview", aapsLogger, dateUtil)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Graphs
|
* Graphs
|
||||||
|
@ -291,7 +294,7 @@ class OverviewData @Inject constructor(
|
||||||
|
|
||||||
var maxDevValueFound = Double.MIN_VALUE
|
var maxDevValueFound = Double.MIN_VALUE
|
||||||
val devScale = Scale()
|
val devScale = Scale()
|
||||||
var deviationsSeries: BarGraphSeries<OverviewPlugin.DeviationDataPoint> = BarGraphSeries()
|
var deviationsSeries: BarGraphSeries<DeviationDataPoint> = BarGraphSeries()
|
||||||
|
|
||||||
var maxRatioValueFound = 5.0 //even if sens data equals 0 for all the period, minimum scale is between 95% and 105%
|
var maxRatioValueFound = 5.0 //even if sens data equals 0 for all the period, minimum scale is between 95% and 105%
|
||||||
var minRatioValueFound = -maxRatioValueFound
|
var minRatioValueFound = -maxRatioValueFound
|
|
@ -0,0 +1,3 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.overview.graphExtensions
|
||||||
|
|
||||||
|
class DeviationDataPoint(x: Double, y: Double, var color: Int, scale: Scale) : ScaledDataPoint(x, y, scale)
|
|
@ -1,6 +1,6 @@
|
||||||
package info.nightscout.androidaps.utils
|
package info.nightscout.androidaps.utils
|
||||||
|
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.core.R
|
||||||
import info.nightscout.androidaps.database.AppRepository
|
import info.nightscout.androidaps.database.AppRepository
|
||||||
import info.nightscout.androidaps.database.entities.GlucoseValue
|
import info.nightscout.androidaps.database.entities.GlucoseValue
|
||||||
import info.nightscout.androidaps.database.entities.GlucoseValue.TrendArrow.*
|
import info.nightscout.androidaps.database.entities.GlucoseValue.TrendArrow.*
|
|
@ -46,7 +46,7 @@ class UserEntryPresentationHelper @Inject constructor(
|
||||||
Sources.CarbDialog -> R.drawable.ic_cp_bolus_carbs
|
Sources.CarbDialog -> R.drawable.ic_cp_bolus_carbs
|
||||||
Sources.WizardDialog -> R.drawable.ic_calculator
|
Sources.WizardDialog -> R.drawable.ic_calculator
|
||||||
Sources.QuickWizard -> R.drawable.ic_quick_wizard
|
Sources.QuickWizard -> R.drawable.ic_quick_wizard
|
||||||
Sources.ExtendedBolusDialog -> R.drawable.ic_actions_startextbolus
|
Sources.ExtendedBolusDialog -> R.drawable.ic_actions_start_extended_bolus
|
||||||
Sources.TTDialog -> R.drawable.ic_temptarget_high
|
Sources.TTDialog -> R.drawable.ic_temptarget_high
|
||||||
Sources.ProfileSwitchDialog -> R.drawable.ic_actions_profileswitch
|
Sources.ProfileSwitchDialog -> R.drawable.ic_actions_profileswitch
|
||||||
Sources.LoopDialog -> R.drawable.ic_loop_closed
|
Sources.LoopDialog -> R.drawable.ic_loop_closed
|
||||||
|
|
|
@ -84,6 +84,7 @@
|
||||||
<string name="key_enable_missed_bg_readings_alert" translatable="false">enable_missed_bg_readings</string>
|
<string name="key_enable_missed_bg_readings_alert" translatable="false">enable_missed_bg_readings</string>
|
||||||
<string name="key_enable_carbs_required_alert_local" translatable="false">enable_carbs_required_alert_local</string>
|
<string name="key_enable_carbs_required_alert_local" translatable="false">enable_carbs_required_alert_local</string>
|
||||||
<string name="key_smscommunicator_report_pump_unreachable" translatable="false">smscommunicator_report_pump_unreachable</string>
|
<string name="key_smscommunicator_report_pump_unreachable" translatable="false">smscommunicator_report_pump_unreachable</string>
|
||||||
|
<string name="key_rangetodisplay" translatable="false">rangetodisplay</string>
|
||||||
|
|
||||||
<!-- General-->
|
<!-- General-->
|
||||||
<string name="refresh">Refresh</string>
|
<string name="refresh">Refresh</string>
|
||||||
|
@ -208,6 +209,22 @@
|
||||||
<string name="pumpsuspended">Pump suspended</string>
|
<string name="pumpsuspended">Pump suspended</string>
|
||||||
<string name="notconfigured">Not configured</string>
|
<string name="notconfigured">Not configured</string>
|
||||||
<string name="loopsuspended">Loop suspended</string>
|
<string name="loopsuspended">Loop suspended</string>
|
||||||
|
<string name="trend_arrow">Trend arrow</string>
|
||||||
|
<string name="a11y_autosens_label">Auto sens</string>
|
||||||
|
<string name="value_unavailable_short">n/a</string>
|
||||||
|
<string name="required">req</string>
|
||||||
|
<string name="a11y_arrow_double_down">falling rapidly</string>
|
||||||
|
<string name="a11y_arrow_single_down">falling</string>
|
||||||
|
<string name="a11y_arrow_forty_five_down">falling slowly</string>
|
||||||
|
<string name="a11y_arrow_flat">stable</string>
|
||||||
|
<string name="a11y_arrow_forty_five_up">rising slowly</string>
|
||||||
|
<string name="a11y_arrow_single_up">rising</string>
|
||||||
|
<string name="a11y_arrow_double_up">rising rapidly</string>
|
||||||
|
<string name="a11y_arrow_none">none</string>
|
||||||
|
<string name="a11y_arrow_unknown">unknown</string>
|
||||||
|
<string name="a11y_high">high</string>
|
||||||
|
<string name="a11y_inrange">in range</string>
|
||||||
|
<string name="a11y_low">low</string>
|
||||||
|
|
||||||
<!-- Constraints-->
|
<!-- Constraints-->
|
||||||
<string name="limitingbasalratio">Limiting max basal rate to %1$.2f U/h because of %2$s</string>
|
<string name="limitingbasalratio">Limiting max basal rate to %1$.2f U/h because of %2$s</string>
|
||||||
|
|
|
@ -13,7 +13,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':core')
|
|
||||||
implementation project(':shared')
|
implementation project(':shared')
|
||||||
implementation project(':database')
|
implementation project(':database')
|
||||||
|
implementation project(':core')
|
||||||
|
implementation project(':graphview')
|
||||||
}
|
}
|
|
@ -1,4 +1,28 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<application>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".widget.WidgetConfigureActivity"
|
||||||
|
android:exported="false"
|
||||||
|
android:theme="@android:style/Theme.Material.Dialog.NoActionBar">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<receiver
|
||||||
|
android:name=".widget.Widget"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/widget_info" />
|
||||||
|
</receiver>
|
||||||
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.widget
|
package info.nightscout.ui.widget
|
||||||
|
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
|
@ -14,15 +14,21 @@ import android.view.View
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.Constants
|
import info.nightscout.androidaps.Constants
|
||||||
import info.nightscout.androidaps.MainActivity
|
|
||||||
import info.nightscout.androidaps.R
|
|
||||||
import info.nightscout.androidaps.data.ProfileSealed
|
import info.nightscout.androidaps.data.ProfileSealed
|
||||||
import info.nightscout.androidaps.database.interfaces.end
|
import info.nightscout.androidaps.database.interfaces.end
|
||||||
import info.nightscout.androidaps.extensions.directionToIcon
|
import info.nightscout.androidaps.extensions.directionToIcon
|
||||||
import info.nightscout.androidaps.extensions.toVisibility
|
import info.nightscout.androidaps.extensions.toVisibility
|
||||||
import info.nightscout.androidaps.extensions.valueToUnitsString
|
import info.nightscout.androidaps.extensions.valueToUnitsString
|
||||||
import info.nightscout.androidaps.interfaces.*
|
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
|
import info.nightscout.androidaps.interfaces.ActivityNames
|
||||||
|
import info.nightscout.androidaps.interfaces.Config
|
||||||
|
import info.nightscout.androidaps.interfaces.GlucoseUnit
|
||||||
|
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
||||||
|
import info.nightscout.androidaps.interfaces.Loop
|
||||||
|
import info.nightscout.androidaps.interfaces.Profile
|
||||||
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.interfaces.VariableSensitivityResult
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
||||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||||
|
@ -31,7 +37,8 @@ import info.nightscout.androidaps.utils.TrendCalculator
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import info.nightscout.shared.logging.LTag
|
import info.nightscout.shared.logging.LTag
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import java.util.*
|
import info.nightscout.ui.R
|
||||||
|
import java.util.Locale
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
|
@ -43,6 +50,7 @@ class Widget : AppWidgetProvider() {
|
||||||
@Inject lateinit var profileFunction: ProfileFunction
|
@Inject lateinit var profileFunction: ProfileFunction
|
||||||
@Inject lateinit var overviewData: OverviewData
|
@Inject lateinit var overviewData: OverviewData
|
||||||
@Inject lateinit var trendCalculator: TrendCalculator
|
@Inject lateinit var trendCalculator: TrendCalculator
|
||||||
|
@Inject lateinit var activityNames: ActivityNames
|
||||||
@Inject lateinit var rh: ResourceHelper
|
@Inject lateinit var rh: ResourceHelper
|
||||||
@Inject lateinit var glucoseStatusProvider: GlucoseStatusProvider
|
@Inject lateinit var glucoseStatusProvider: GlucoseStatusProvider
|
||||||
@Inject lateinit var dateUtil: DateUtil
|
@Inject lateinit var dateUtil: DateUtil
|
||||||
|
@ -58,6 +66,13 @@ class Widget : AppWidgetProvider() {
|
||||||
// This object doesn't behave like singleton,
|
// This object doesn't behave like singleton,
|
||||||
// many threads were created. Making handler static resolve this issue
|
// many threads were created. Making handler static resolve this issue
|
||||||
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||||
|
|
||||||
|
fun updateWidget(context: Context) {
|
||||||
|
context.sendBroadcast(Intent().also {
|
||||||
|
it.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, AppWidgetManager.getInstance(context)?.getAppWidgetIds(ComponentName(context, Widget::class.java)))
|
||||||
|
it.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private val intentAction = "OpenApp"
|
private val intentAction = "OpenApp"
|
||||||
|
|
||||||
|
@ -88,7 +103,7 @@ class Widget : AppWidgetProvider() {
|
||||||
val alpha = sp.getInt(WidgetConfigureActivity.PREF_PREFIX_KEY + appWidgetId, WidgetConfigureActivity.DEFAULT_OPACITY)
|
val alpha = sp.getInt(WidgetConfigureActivity.PREF_PREFIX_KEY + appWidgetId, WidgetConfigureActivity.DEFAULT_OPACITY)
|
||||||
|
|
||||||
// Create an Intent to launch MainActivity when clicked
|
// Create an Intent to launch MainActivity when clicked
|
||||||
val intent = Intent(context, MainActivity::class.java).also { it.action = intentAction }
|
val intent = Intent(context, activityNames.mainActivityClass).also { it.action = intentAction }
|
||||||
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
|
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
// Widgets allow click handlers to only launch pending intents
|
// Widgets allow click handlers to only launch pending intents
|
||||||
views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent)
|
views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent)
|
||||||
|
@ -109,7 +124,7 @@ class Widget : AppWidgetProvider() {
|
||||||
|
|
||||||
private fun updateBg(views: RemoteViews) {
|
private fun updateBg(views: RemoteViews) {
|
||||||
val units = profileFunction.getUnits()
|
val units = profileFunction.getUnits()
|
||||||
views.setTextViewText(R.id.bg, overviewData.lastBg?.valueToUnitsString(units) ?: rh.gs(R.string.notavailable))
|
views.setTextViewText(R.id.bg, overviewData.lastBg?.valueToUnitsString(units) ?: rh.gs(R.string.value_unavailable_short))
|
||||||
views.setTextColor(
|
views.setTextColor(
|
||||||
R.id.bg, when {
|
R.id.bg, when {
|
||||||
overviewData.isLow -> rh.gc(R.color.widget_low)
|
overviewData.isLow -> rh.gc(R.color.widget_low)
|
||||||
|
@ -132,9 +147,9 @@ class Widget : AppWidgetProvider() {
|
||||||
views.setTextViewText(R.id.avg_delta, Profile.toSignedUnitsString(glucoseStatus.shortAvgDelta, glucoseStatus.shortAvgDelta * Constants.MGDL_TO_MMOLL, units))
|
views.setTextViewText(R.id.avg_delta, Profile.toSignedUnitsString(glucoseStatus.shortAvgDelta, glucoseStatus.shortAvgDelta * Constants.MGDL_TO_MMOLL, units))
|
||||||
views.setTextViewText(R.id.long_avg_delta, Profile.toSignedUnitsString(glucoseStatus.longAvgDelta, glucoseStatus.longAvgDelta * Constants.MGDL_TO_MMOLL, units))
|
views.setTextViewText(R.id.long_avg_delta, Profile.toSignedUnitsString(glucoseStatus.longAvgDelta, glucoseStatus.longAvgDelta * Constants.MGDL_TO_MMOLL, units))
|
||||||
} else {
|
} else {
|
||||||
views.setTextViewText(R.id.delta, rh.gs(R.string.notavailable))
|
views.setTextViewText(R.id.delta, rh.gs(R.string.value_unavailable_short))
|
||||||
views.setTextViewText(R.id.avg_delta, rh.gs(R.string.notavailable))
|
views.setTextViewText(R.id.avg_delta, rh.gs(R.string.value_unavailable_short))
|
||||||
views.setTextViewText(R.id.long_avg_delta, rh.gs(R.string.notavailable))
|
views.setTextViewText(R.id.long_avg_delta, rh.gs(R.string.value_unavailable_short))
|
||||||
}
|
}
|
||||||
|
|
||||||
// strike through if BG is old
|
// strike through if BG is old
|
||||||
|
@ -142,7 +157,7 @@ class Widget : AppWidgetProvider() {
|
||||||
else views.setInt(R.id.bg, "setPaintFlags", Paint.ANTI_ALIAS_FLAG)
|
else views.setInt(R.id.bg, "setPaintFlags", Paint.ANTI_ALIAS_FLAG)
|
||||||
|
|
||||||
views.setTextViewText(R.id.time_ago, dateUtil.minAgo(rh, overviewData.lastBg?.timestamp))
|
views.setTextViewText(R.id.time_ago, dateUtil.minAgo(rh, overviewData.lastBg?.timestamp))
|
||||||
views.setTextViewText(R.id.time_ago_short, "(" + dateUtil.minAgoShort(overviewData.lastBg?.timestamp) + ")")
|
//views.setTextViewText(R.id.time_ago_short, "(" + dateUtil.minAgoShort(overviewData.lastBg?.timestamp) + ")")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateTemporaryBasal(views: RemoteViews) {
|
private fun updateTemporaryBasal(views: RemoteViews) {
|
||||||
|
@ -240,7 +255,7 @@ class Widget : AppWidgetProvider() {
|
||||||
|
|
||||||
// Show variable sensitivity
|
// Show variable sensitivity
|
||||||
val request = loop.lastRun?.request
|
val request = loop.lastRun?.request
|
||||||
if (request is DetermineBasalResultSMB) {
|
if (request is VariableSensitivityResult) {
|
||||||
val isfMgdl = profileFunction.getProfile()?.getIsfMgdl()
|
val isfMgdl = profileFunction.getProfile()?.getIsfMgdl()
|
||||||
val variableSens = request.variableSens
|
val variableSens = request.variableSens
|
||||||
if (variableSens != isfMgdl && variableSens != null && isfMgdl != null) {
|
if (variableSens != isfMgdl && variableSens != null && isfMgdl != null) {
|
||||||
|
@ -256,11 +271,4 @@ class Widget : AppWidgetProvider() {
|
||||||
} else views.setViewVisibility(R.id.variable_sensitivity, View.GONE)
|
} else views.setViewVisibility(R.id.variable_sensitivity, View.GONE)
|
||||||
} else views.setViewVisibility(R.id.variable_sensitivity, View.GONE)
|
} else views.setViewVisibility(R.id.variable_sensitivity, View.GONE)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
internal fun updateWidget(context: Context) {
|
|
||||||
context.sendBroadcast(Intent().also {
|
|
||||||
it.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, AppWidgetManager.getInstance(context)?.getAppWidgetIds(ComponentName(context, Widget::class.java)))
|
|
||||||
it.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
|
||||||
})
|
|
||||||
}
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
package info.nightscout.androidaps.widget
|
package info.nightscout.ui.widget
|
||||||
|
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import dagger.android.DaggerActivity
|
import dagger.android.DaggerActivity
|
||||||
import info.nightscout.androidaps.databinding.WidgetConfigureBinding
|
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
import info.nightscout.ui.databinding.WidgetConfigureBinding
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,6 @@ class WidgetConfigureActivity : DaggerActivity() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
@Suppress("PrivatePropertyName")
|
|
||||||
const val PREF_PREFIX_KEY = "appwidget_"
|
const val PREF_PREFIX_KEY = "appwidget_"
|
||||||
const val DEFAULT_OPACITY = 25
|
const val DEFAULT_OPACITY = 25
|
||||||
}
|
}
|
||||||
|
@ -51,7 +50,7 @@ class WidgetConfigureActivity : DaggerActivity() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||||
value = progress
|
value = progress
|
||||||
saveTitlePref(appWidgetId, value)
|
saveTitlePref(appWidgetId, value)
|
||||||
updateWidget(this@WidgetConfigureActivity)
|
Widget.updateWidget(this@WidgetConfigureActivity)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -305,7 +305,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:contentDescription="@string/extended_bolus"
|
android:contentDescription="@string/extended_bolus"
|
||||||
android:src="@drawable/ic_actions_startextbolus" />
|
android:src="@drawable/ic_actions_start_extended_bolus" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/extended_bolus"
|
android:id="@+id/extended_bolus"
|
||||||
|
@ -337,7 +337,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:contentDescription="@string/a11y_autosenslabel"
|
android:contentDescription="@string/a11y_autosens_label"
|
||||||
android:src="@drawable/ic_swap_vert_black_48dp_green" />
|
android:src="@drawable/ic_swap_vert_black_48dp_green" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
Loading…
Reference in a new issue