Merge branch 'dev' into chore/shared-action-helper
This commit is contained in:
commit
357b3abd67
|
@ -109,7 +109,7 @@ android {
|
|||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "3.0.0.1-dev-g"
|
||||
version "3.0.0.1-dev-h"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -20,11 +20,10 @@ import android.widget.EditText
|
|||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||
import com.joanzapata.iconify.Iconify
|
||||
|
@ -335,7 +334,7 @@ class MainActivity : NoSplashAppCompatActivity() {
|
|||
message += rh.gs(R.string.about_link_urls)
|
||||
val messageSpanned = SpannableString(message)
|
||||
Linkify.addLinks(messageSpanned, Linkify.WEB_URLS)
|
||||
AlertDialog.Builder(this, R.style.DialogTheme)
|
||||
MaterialAlertDialogBuilder(this, R.style.DialogTheme)
|
||||
.setTitle(rh.gs(R.string.app_name) + " " + BuildConfig.VERSION)
|
||||
.setIcon(iconsProvider.getIcon())
|
||||
.setMessage(messageSpanned)
|
||||
|
|
|
@ -196,7 +196,7 @@ class HistoryBrowseActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
|
||||
axisWidth = if (dm.densityDpi <= 120) 3 else if (dm.densityDpi <= 160) 10 else if (dm.densityDpi <= 320) 35 else if (dm.densityDpi <= 420) 50 else if (dm.densityDpi <= 560) 70 else 80
|
||||
binding.bgGraph.gridLabelRenderer?.gridColor = rh.gc(R.color.graphgrid)
|
||||
binding.bgGraph.gridLabelRenderer?.gridColor = rh.gac(this, R.attr.graphgrid)
|
||||
binding.bgGraph.gridLabelRenderer?.reloadStyles()
|
||||
binding.bgGraph.gridLabelRenderer?.labelVerticalWidth = axisWidth
|
||||
|
||||
|
@ -280,12 +280,12 @@ class HistoryBrowseActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
val graph = GraphView(this)
|
||||
graph.layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, rh.dpToPx(100)).also { it.setMargins(0, rh.dpToPx(15), 0, rh.dpToPx(10)) }
|
||||
graph.gridLabelRenderer?.gridColor = rh.gc(R.color.graphgrid)
|
||||
graph.gridLabelRenderer?.gridColor = rh.gac( R.attr.graphgrid)
|
||||
graph.gridLabelRenderer?.reloadStyles()
|
||||
graph.gridLabelRenderer?.isHorizontalLabelsVisible = false
|
||||
graph.gridLabelRenderer?.labelVerticalWidth = axisWidth
|
||||
graph.gridLabelRenderer?.numVerticalLabels = 3
|
||||
graph.viewport.backgroundColor = Color.argb(20, 255, 255, 255) // 8% of gray
|
||||
graph.viewport.backgroundColor =rh.gac(this , R.attr.viewPortbackgroundColor)
|
||||
relativeLayout.addView(graph)
|
||||
|
||||
val label = TextView(this)
|
||||
|
|
|
@ -286,7 +286,7 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
tabSelected = tab
|
||||
typeSelected[tabSelected] = newContent
|
||||
binding.profileTypeTitle.defaultHintTextColor = ColorStateList.valueOf(rh.gc(if (tab == 0) R.color.helperProfile else R.color.examinedProfile))
|
||||
binding.profileTypeTitle.defaultHintTextColor = ColorStateList.valueOf(rh.gac( this, if (tab == 0) R.attr.helperProfileColor else R.attr.examinedProfileColor))
|
||||
|
||||
// show new content
|
||||
binding.profileType.setText(
|
||||
|
@ -317,7 +317,7 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun setBackgroundColorOnSelected(tab: Int) {
|
||||
binding.menu1.setBackgroundColor(rh.gc(if (tab == 1) R.color.defaultbackground else R.color.helperProfile))
|
||||
binding.menu2.setBackgroundColor(rh.gc(if (tab == 0) R.color.defaultbackground else R.color.examinedProfile))
|
||||
binding.menu1.setBackgroundColor(rh.gac(this, if (tab == 1) R.attr.defaultbackground else R.attr.helperProfileColor))
|
||||
binding.menu2.setBackgroundColor(rh.gac(this, if (tab == 0) R.attr.defaultbackground else R.attr.examinedProfileColor))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,14 +87,14 @@ class TreatmentsActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun setBackgroundColorOnSelected(selected: View) {
|
||||
binding.treatments.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.extendedBoluses.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.tempBasals.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.tempTargets.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.profileSwitches.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.careportal.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.userentry.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
selected.setBackgroundColor(rh.gc(R.color.tabBgColorSelected))
|
||||
binding.treatments.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.extendedBoluses.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.tempBasals.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.tempTargets.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.profileSwitches.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.careportal.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
binding.userentry.setBackgroundColor(rh.gac(this, R.attr.defaultbackground))
|
||||
selected.setBackgroundColor(rh.gac(this, R.attr.tabBgColorSelected))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -227,7 +227,7 @@ class TreatmentsBolusCarbsFragment : DaggerFragment() {
|
|||
holder.binding.bolusInvalid.visibility = bolus.isValid.not().toVisibility()
|
||||
val iob = bolus.iobCalc(activePlugin, System.currentTimeMillis(), profile.dia)
|
||||
if (iob.iobContrib > 0.01) {
|
||||
holder.binding.iob.setTextColor(rh.gc(R.color.colorActive))
|
||||
holder.binding.iob.setTextColor(rh.gac(context , R.attr.activeColor))
|
||||
holder.binding.iob.text = rh.gs(R.string.formatinsulinunits, iob.iobContrib)
|
||||
holder.binding.iobLabel.visibility = View.VISIBLE
|
||||
holder.binding.iob.visibility = View.VISIBLE
|
||||
|
@ -237,7 +237,8 @@ class TreatmentsBolusCarbsFragment : DaggerFragment() {
|
|||
holder.binding.iobLabel.visibility = View.GONE
|
||||
holder.binding.iob.visibility = View.GONE
|
||||
}
|
||||
if (bolus.timestamp > dateUtil.now()) holder.binding.date.setTextColor(rh.gc(R.color.colorScheduled)) else holder.binding.date.setTextColor(holder.binding.carbs.currentTextColor)
|
||||
if (bolus.timestamp > dateUtil.now()) holder.binding.date.setTextColor(rh.gac(context, R.attr.scheduledColor)) else holder.binding.date.setTextColor(holder.binding.carbs
|
||||
.currentTextColor)
|
||||
holder.binding.mealOrCorrection.text =
|
||||
when (ml.bolus.type) {
|
||||
Bolus.Type.SMB -> "SMB"
|
||||
|
|
|
@ -143,7 +143,7 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() {
|
|||
holder.binding.date.text = if (newDay) dateUtil.dateStringRelative(extendedBolus.timestamp, rh) else ""
|
||||
if (extendedBolus.isInProgress(dateUtil)) {
|
||||
holder.binding.time.text = dateUtil.timeString(extendedBolus.timestamp)
|
||||
holder.binding.time.setTextColor(rh.gc(R.color.colorActive))
|
||||
holder.binding.time.setTextColor(rh.gac(context , R.attr.activeColor))
|
||||
} else {
|
||||
holder.binding.time.text = dateUtil.timeRangeString(extendedBolus.timestamp, extendedBolus.end)
|
||||
holder.binding.time.setTextColor(holder.binding.insulin.currentTextColor)
|
||||
|
@ -154,7 +154,7 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() {
|
|||
val iob = extendedBolus.iobCalc(System.currentTimeMillis(), profile, activePlugin.activeInsulin)
|
||||
holder.binding.iob.text = rh.gs(R.string.formatinsulinunits, iob.iob)
|
||||
holder.binding.ratio.text = rh.gs(R.string.pump_basebasalrate, extendedBolus.rate)
|
||||
if (iob.iob != 0.0) holder.binding.iob.setTextColor(rh.gc(R.color.colorActive)) else holder.binding.iob.setTextColor(holder.binding.insulin.currentTextColor)
|
||||
if (iob.iob != 0.0) holder.binding.iob.setTextColor(rh.gac(context , R.attr.activeColor)) else holder.binding.iob.setTextColor(holder.binding.insulin.currentTextColor)
|
||||
holder.binding.cbRemove.visibility = (extendedBolus.isValid && actionHelper.isRemoving).toVisibility()
|
||||
if (actionHelper.isRemoving) {
|
||||
holder.binding.cbRemove.setOnCheckedChangeListener { _, value ->
|
||||
|
|
|
@ -199,7 +199,7 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() {
|
|||
holder.binding.duration.text = rh.gs(R.string.format_mins, T.msecs(profileSwitch.duration ?: 0L).mins())
|
||||
holder.binding.name.text =
|
||||
if (profileSwitch is ProfileSealed.PS) profileSwitch.value.getCustomizedName() else if (profileSwitch is ProfileSealed.EPS) profileSwitch.value.originalCustomizedName else ""
|
||||
if (profileSwitch.isInProgress(dateUtil)) holder.binding.date.setTextColor(rh.gc(R.color.colorActive))
|
||||
if (profileSwitch.isInProgress(dateUtil)) holder.binding.date.setTextColor(rh.gac(context , R.attr.activeColor))
|
||||
else holder.binding.date.setTextColor(holder.binding.duration.currentTextColor)
|
||||
holder.binding.clone.tag = profileSwitch
|
||||
holder.binding.name.tag = profileSwitch
|
||||
|
|
|
@ -190,8 +190,8 @@ class TreatmentsTempTargetFragment : DaggerFragment() {
|
|||
holder.binding.reason.text = translator.translate(tempTarget.reason)
|
||||
holder.binding.time.setTextColor(
|
||||
when {
|
||||
tempTarget.id == currentlyActiveTarget?.id -> rh.gc(R.color.colorActive)
|
||||
tempTarget.timestamp > dateUtil.now() -> rh.gc(R.color.colorScheduled)
|
||||
tempTarget.id == currentlyActiveTarget?.id -> rh.gac(context , R.attr.activeColor)
|
||||
tempTarget.timestamp > dateUtil.now() -> rh.gac(context , R.attr.scheduledColor)
|
||||
else -> holder.binding.reasonColon.currentTextColor
|
||||
}
|
||||
)
|
||||
|
|
|
@ -183,7 +183,7 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() {
|
|||
holder.binding.date.text = if (newDay) dateUtil.dateStringRelative(tempBasal.timestamp, rh) else ""
|
||||
if (tempBasal.isInProgress) {
|
||||
holder.binding.time.text = dateUtil.timeString(tempBasal.timestamp)
|
||||
holder.binding.time.setTextColor(rh.gc(R.color.colorActive))
|
||||
holder.binding.time.setTextColor(rh.gac(context , R.attr.activeColor))
|
||||
} else {
|
||||
holder.binding.time.text = dateUtil.timeRangeString(tempBasal.timestamp, tempBasal.end)
|
||||
holder.binding.time.setTextColor(holder.binding.duration.currentTextColor)
|
||||
|
@ -200,7 +200,7 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() {
|
|||
holder.binding.suspendFlag.visibility = (tempBasal.type == TemporaryBasal.Type.PUMP_SUSPEND).toVisibility()
|
||||
holder.binding.emulatedSuspendFlag.visibility = (tempBasal.type == TemporaryBasal.Type.EMULATED_PUMP_SUSPEND).toVisibility()
|
||||
holder.binding.superBolusFlag.visibility = (tempBasal.type == TemporaryBasal.Type.SUPERBOLUS).toVisibility()
|
||||
if (abs(iob.basaliob) > 0.01) holder.binding.iob.setTextColor(rh.gc(R.color.colorActive)) else holder.binding.iob.setTextColor(holder.binding.duration.currentTextColor)
|
||||
if (abs(iob.basaliob) > 0.01) holder.binding.iob.setTextColor(rh.gac(context , R.attr.activeColor)) else holder.binding.iob.setTextColor(holder.binding.duration.currentTextColor)
|
||||
holder.binding.cbRemove.visibility = (tempBasal.isValid && actionHelper.isRemoving).toVisibility()
|
||||
if (actionHelper.isRemoving) {
|
||||
holder.binding.cbRemove.setOnCheckedChangeListener { _, value ->
|
||||
|
|
|
@ -59,7 +59,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
|||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
|
||||
private var queryingProtection = false
|
||||
private var profileIndex: Int? = null
|
||||
private var profileName: String? = null
|
||||
private val disposable = CompositeDisposable()
|
||||
private var _binding: DialogProfileswitchBinding? = null
|
||||
|
||||
|
@ -90,7 +90,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
|||
): View {
|
||||
onCreateViewGeneral()
|
||||
arguments?.let { bundle ->
|
||||
profileIndex = bundle.getInt("profileIndex", 0)
|
||||
profileName = bundle.getString("profileName", null)
|
||||
}
|
||||
_binding = DialogProfileswitchBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
|
@ -130,8 +130,8 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
binding.profileList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, profileList))
|
||||
// set selected to actual profile
|
||||
if (profileIndex != null)
|
||||
binding.profileList.setText(profileList[profileIndex as Int], false)
|
||||
if (profileName != null)
|
||||
binding.profileList.setText(profileName, false)
|
||||
else {
|
||||
binding.profileList.setText(profileList[0], false)
|
||||
for (p in profileList.indices)
|
||||
|
|
|
@ -302,6 +302,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
binding.trendCheckboxIcon.visibility = binding.calculationCheckbox.isChecked.not().toVisibility()
|
||||
binding.iobCheckboxIcon.visibility = binding.calculationCheckbox.isChecked.not().toVisibility()
|
||||
binding.cobCheckboxIcon.visibility = binding.calculationCheckbox.isChecked.not().toVisibility()
|
||||
binding.checkboxRow.visibility = binding.calculationCheckbox.isChecked.not().toVisibility()
|
||||
}
|
||||
|
||||
private fun saveCheckedStates() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.DashPathEffect
|
||||
import android.graphics.Paint
|
||||
import com.jjoe64.graphview.series.BarGraphSeries
|
||||
|
@ -138,12 +139,13 @@ class OverviewData @Inject constructor(
|
|||
lastBg.valueToUnits(profileFunction.getUnits()) > defaultValueHelper.determineHighLine()
|
||||
} ?: false
|
||||
|
||||
val lastBgColor: Int
|
||||
get() = when {
|
||||
isLow -> rh.gc(R.color.low)
|
||||
isHigh -> rh.gc(R.color.high)
|
||||
else -> rh.gc(R.color.inrange)
|
||||
fun lastBgColor(context: Context?): Int {
|
||||
return when {
|
||||
isLow -> rh.gac(context, R.attr.bgLow)
|
||||
isHigh -> rh.gac(context, R.attr.bgHigh)
|
||||
else -> rh.gac(context, R.attr.bgInRange)
|
||||
}
|
||||
}
|
||||
|
||||
val lastBgDescription: String
|
||||
get() = when {
|
||||
|
|
|
@ -173,7 +173,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
binding.notifications.setHasFixedSize(false)
|
||||
binding.notifications.layoutManager = LinearLayoutManager(view.context)
|
||||
axisWidth = if (dm.densityDpi <= 120) 3 else if (dm.densityDpi <= 160) 10 else if (dm.densityDpi <= 320) 35 else if (dm.densityDpi <= 420) 50 else if (dm.densityDpi <= 560) 70 else 80
|
||||
binding.graphsLayout.bgGraph.gridLabelRenderer?.gridColor = rh.gc(R.color.graphgrid)
|
||||
binding.graphsLayout.bgGraph.gridLabelRenderer?.gridColor = rh.gac(context, R.attr.graphgrid)
|
||||
binding.graphsLayout.bgGraph.gridLabelRenderer?.reloadStyles()
|
||||
binding.graphsLayout.bgGraph.gridLabelRenderer?.labelVerticalWidth = axisWidth
|
||||
binding.graphsLayout.bgGraph.layoutParams?.height = rh.dpToPx(skinProvider.activeSkin().mainGraphHeight)
|
||||
|
@ -416,14 +416,15 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
loop.invoke("Accept temp button", false)
|
||||
if (lastRun?.lastAPSRun != null && lastRun.constraintsProcessed?.isChangeRequested == true) {
|
||||
protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable {
|
||||
OKDialog.showConfirmation(activity, rh.gs(R.string.tempbasal_label), lastRun.constraintsProcessed?.toSpanned()
|
||||
?: "".toSpanned(), {
|
||||
uel.log(Action.ACCEPTS_TEMP_BASAL, Sources.Overview)
|
||||
(context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?)?.cancel(Constants.notificationID)
|
||||
rxBus.send(EventWearInitiateAction("cancelChangeRequest"))
|
||||
Thread { loop.acceptChangeRequest() }.run()
|
||||
binding.buttonsLayout.acceptTempButton.visibility = View.GONE
|
||||
})
|
||||
if (isAdded)
|
||||
OKDialog.showConfirmation(activity, rh.gs(R.string.tempbasal_label), lastRun.constraintsProcessed?.toSpanned()
|
||||
?: "".toSpanned(), {
|
||||
uel.log(Action.ACCEPTS_TEMP_BASAL, Sources.Overview)
|
||||
(context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?)?.cancel(Constants.notificationID)
|
||||
rxBus.send(EventWearInitiateAction("cancelChangeRequest"))
|
||||
Thread { loop.acceptChangeRequest() }.run()
|
||||
binding.buttonsLayout.acceptTempButton.visibility = View.GONE
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -559,10 +560,10 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
binding.buttonsLayout.calibrationButton.visibility = (xDripIsBgSource && actualBG != null && sp.getBoolean(R.string.key_show_calibration_button, true)).toVisibility()
|
||||
if (dexcomIsSource) {
|
||||
binding.buttonsLayout.cgmButton.setCompoundDrawablesWithIntrinsicBounds(null, rh.gd(R.drawable.ic_byoda), null, null)
|
||||
binding.buttonsLayout.cgmButton.setTextColor(rh.gc(R.color.colorLightGray))
|
||||
binding.buttonsLayout.cgmButton.setTextColor(rh.gac(context, R.attr.cgmdexColor))
|
||||
} else if (xDripIsBgSource) {
|
||||
binding.buttonsLayout.cgmButton.setCompoundDrawablesWithIntrinsicBounds(null, rh.gd(R.drawable.ic_xdrip), null, null)
|
||||
binding.buttonsLayout.cgmButton.setTextColor(rh.gc(R.color.colorCalibrationButton))
|
||||
binding.buttonsLayout.cgmButton.setTextColor(rh.gac(context, R.attr.cgmxdripColor))
|
||||
}
|
||||
binding.buttonsLayout.cgmButton.visibility = (sp.getBoolean(R.string.key_show_cgm_button, false) && (xDripIsBgSource || dexcomIsSource)).toVisibility()
|
||||
|
||||
|
@ -574,7 +575,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
if (event.isEnabled && event.trigger.shouldRun())
|
||||
context?.let { context ->
|
||||
SingleClickButton(context).also {
|
||||
it.setTextColor(rh.gc(R.color.colorTreatmentButton))
|
||||
it.setTextColor(rh.gac(context, R.attr.treatmentButton))
|
||||
it.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10f)
|
||||
it.layoutParams = LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 0.5f).also { l ->
|
||||
l.setMargins(0, 0, rh.dpToPx(-4), 0)
|
||||
|
@ -583,11 +584,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
it.text = event.title
|
||||
|
||||
it.setOnClickListener {
|
||||
OKDialog.showConfirmation(
|
||||
context,
|
||||
rh.gs(R.string.run_question, event.title),
|
||||
{ handler.post { automationPlugin.processEvent(event) } }
|
||||
)
|
||||
OKDialog.showConfirmation(context, rh.gs(R.string.run_question, event.title), { handler.post { automationPlugin.processEvent(event) } })
|
||||
}
|
||||
binding.buttonsLayout.userButtonsLayout.addView(it)
|
||||
}
|
||||
|
@ -722,12 +719,12 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
val graph = GraphView(context)
|
||||
graph.layoutParams =
|
||||
LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, rh.dpToPx(skinProvider.activeSkin().secondaryGraphHeight)).also { it.setMargins(0, rh.dpToPx(15), 0, rh.dpToPx(10)) }
|
||||
graph.gridLabelRenderer?.gridColor = rh.gc(R.color.graphgrid)
|
||||
graph.gridLabelRenderer?.gridColor = rh.gac(context, R.attr.graphgrid)
|
||||
graph.gridLabelRenderer?.reloadStyles()
|
||||
graph.gridLabelRenderer?.isHorizontalLabelsVisible = false
|
||||
graph.gridLabelRenderer?.labelVerticalWidth = axisWidth
|
||||
graph.gridLabelRenderer?.numVerticalLabels = 3
|
||||
graph.viewport.backgroundColor = Color.argb(20, 255, 255, 255) // 8% of gray
|
||||
graph.viewport.backgroundColor = rh.gac(context, R.attr.viewPortbackgroundColor)
|
||||
relativeLayout.addView(graph)
|
||||
|
||||
val label = TextView(context)
|
||||
|
@ -765,15 +762,15 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
val units = profileFunction.getUnits()
|
||||
binding.infoLayout.bg.text = overviewData.lastBg?.valueToUnitsString(units)
|
||||
?: rh.gs(R.string.notavailable)
|
||||
binding.infoLayout.bg.setTextColor(overviewData.lastBgColor)
|
||||
binding.infoLayout.bg.setTextColor(overviewData.lastBgColor(context))
|
||||
binding.infoLayout.arrow.setImageResource(trendCalculator.getTrendArrow(overviewData.lastBg).directionToIcon())
|
||||
binding.infoLayout.arrow.setColorFilter(overviewData.lastBgColor)
|
||||
binding.infoLayout.arrow.setColorFilter(overviewData.lastBgColor(context))
|
||||
binding.infoLayout.arrow.contentDescription = overviewData.lastBgDescription + " " + rh.gs(R.string.and) + " " + trendCalculator.getTrendDescription(overviewData.lastBg)
|
||||
|
||||
val glucoseStatus = glucoseStatusProvider.glucoseStatusData
|
||||
if (glucoseStatus != null) {
|
||||
binding.infoLayout.deltaLarge.text = Profile.toSignedUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units)
|
||||
binding.infoLayout.deltaLarge.setTextColor(overviewData.lastBgColor)
|
||||
binding.infoLayout.deltaLarge.setTextColor(overviewData.lastBgColor(context))
|
||||
binding.infoLayout.delta.text = Profile.toSignedUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units)
|
||||
binding.infoLayout.avgDelta.text = Profile.toSignedUnitsString(glucoseStatus.shortAvgDelta, glucoseStatus.shortAvgDelta * Constants.MGDL_TO_MMOLL, units)
|
||||
binding.infoLayout.longAvgDelta.text = Profile.toSignedUnitsString(glucoseStatus.longAvgDelta, glucoseStatus.longAvgDelta * Constants.MGDL_TO_MMOLL, units)
|
||||
|
@ -816,27 +813,27 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
profileFunction.getProfile()?.let {
|
||||
if (it is ProfileSealed.EPS) {
|
||||
if (it.value.originalPercentage != 100 || it.value.originalTimeshift != 0L || it.value.originalDuration != 0L)
|
||||
rh.gc(R.color.ribbonWarning)
|
||||
else rh.gc(R.color.ribbonDefault)
|
||||
rh.gac(context, R.attr.ribbonWarningColor)
|
||||
else rh.gac(context, R.attr.ribbonDefaultColor)
|
||||
} else if (it is ProfileSealed.PS) {
|
||||
rh.gc(R.color.ribbonDefault)
|
||||
rh.gac(context, R.attr.ribbonDefaultColor)
|
||||
} else {
|
||||
rh.gc(R.color.ribbonDefault)
|
||||
rh.gac(context, R.attr.ribbonDefaultColor)
|
||||
}
|
||||
} ?: rh.gc(R.color.ribbonCritical)
|
||||
} ?: rh.gac(context, R.attr.ribbonCriticalColor)
|
||||
|
||||
val profileTextColor =
|
||||
profileFunction.getProfile()?.let {
|
||||
if (it is ProfileSealed.EPS) {
|
||||
if (it.value.originalPercentage != 100 || it.value.originalTimeshift != 0L || it.value.originalDuration != 0L)
|
||||
rh.gc(R.color.ribbonTextWarning)
|
||||
else rh.gc(R.color.ribbonTextDefault)
|
||||
rh.gac(context, R.attr.ribbonTextWarningColor)
|
||||
else rh.gac(context, R.attr.ribbonTextDefaultColor)
|
||||
} else if (it is ProfileSealed.PS) {
|
||||
rh.gc(R.color.ribbonTextDefault)
|
||||
rh.gac(context, R.attr.ribbonTextDefaultColor)
|
||||
} else {
|
||||
rh.gc(R.color.ribbonTextDefault)
|
||||
rh.gac(context, R.attr.ribbonTextDefaultColor)
|
||||
}
|
||||
} ?: rh.gc(R.color.ribbonTextDefault)
|
||||
} ?: rh.gac(context, R.attr.ribbonTextDefaultColor)
|
||||
|
||||
binding.activeProfile.text = profileFunction.getProfileNameWithRemainingTime()
|
||||
binding.activeProfile.setBackgroundColor(profileBackgroundColor)
|
||||
|
@ -929,8 +926,8 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
if (overviewData.temporaryTarget?.isInProgress(dateUtil) == false) overviewData.temporaryTarget = null
|
||||
val tempTarget = overviewData.temporaryTarget
|
||||
if (tempTarget != null) {
|
||||
binding.tempTarget.setTextColor(rh.gc(R.color.ribbonTextWarning))
|
||||
binding.tempTarget.setBackgroundColor(rh.gc(R.color.ribbonWarning))
|
||||
binding.tempTarget.setTextColor(rh.gac(context, R.attr.ribbonTextWarningColor))
|
||||
binding.tempTarget.setBackgroundColor(rh.gac(context, R.attr.ribbonWarningColor))
|
||||
binding.tempTarget.text = Profile.toTargetRangeString(tempTarget.lowTarget, tempTarget.highTarget, GlucoseUnit.MGDL, units) + " " + dateUtil.untilString(tempTarget.end, rh)
|
||||
} else {
|
||||
// If the target is not the same as set in the profile then oref has overridden it
|
||||
|
@ -940,11 +937,11 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
if (targetUsed != 0.0 && abs(profile.getTargetMgdl() - targetUsed) > 0.01) {
|
||||
aapsLogger.debug("Adjusted target. Profile: ${profile.getTargetMgdl()} APS: $targetUsed")
|
||||
binding.tempTarget.text = Profile.toTargetRangeString(targetUsed, targetUsed, GlucoseUnit.MGDL, units)
|
||||
binding.tempTarget.setTextColor(rh.gc(R.color.ribbonTextWarning))
|
||||
binding.tempTarget.setBackgroundColor(rh.gc(R.color.tempTargetBackground))
|
||||
binding.tempTarget.setTextColor(rh.gac(context, R.attr.ribbonTextWarningColor))
|
||||
binding.tempTarget.setBackgroundColor(rh.gac(context, R.attr.tempTargetBackgroundColor))
|
||||
} else {
|
||||
binding.tempTarget.setTextColor(rh.gc(R.color.ribbonTextDefault))
|
||||
binding.tempTarget.setBackgroundColor(rh.gc(R.color.ribbonDefault))
|
||||
binding.tempTarget.setTextColor(rh.gac(context, R.attr.ribbonTextDefaultColor))
|
||||
binding.tempTarget.setBackgroundColor(rh.gac(context, R.attr.ribbonDefaultColor))
|
||||
binding.tempTarget.text = Profile.toTargetRangeString(profile.getTargetLowMgdl(), profile.getTargetHighMgdl(), GlucoseUnit.MGDL, units)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,9 @@ class ActivityGraph : GraphView {
|
|||
viewport.isXAxisBoundsManual = true
|
||||
viewport.setMinX(0.0)
|
||||
viewport.setMaxX((hours * 60).toDouble())
|
||||
viewport.isYAxisBoundsManual = true
|
||||
viewport.setMinY(0.0)
|
||||
viewport.setMaxY(0.01)
|
||||
gridLabelRenderer.numHorizontalLabels = (hours + 1).toInt()
|
||||
gridLabelRenderer.horizontalAxisTitle = "[min]"
|
||||
secondScale.addSeries(LineGraphSeries(Array(iobArray.size) { i -> iobArray[i] }).also {
|
||||
|
|
|
@ -308,7 +308,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
|
||||
binding.profileswitch.setOnClickListener {
|
||||
ProfileSwitchDialog()
|
||||
.also { it.arguments = Bundle().also { bundle -> bundle.putInt("profileIndex", localProfilePlugin.currentProfileIndex) } }
|
||||
.also { it.arguments = Bundle().also { bundle -> bundle.putString("profileName", localProfilePlugin.currentProfile()?.name) } }
|
||||
.show(childFragmentManager, "ProfileSwitchDialog")
|
||||
}
|
||||
|
||||
|
@ -374,7 +374,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
val isValid = localProfilePlugin.isValidEditState(activity)
|
||||
val isEdited = localProfilePlugin.isEdited
|
||||
if (isValid) {
|
||||
this.view?.setBackgroundColor(rh.gc(R.color.ok_background))
|
||||
this.view?.setBackgroundColor(rh.gac(context, R.attr.okBackgroundColor))
|
||||
binding.profileList.isEnabled = true
|
||||
|
||||
if (isEdited) {
|
||||
|
@ -386,7 +386,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
binding.save.visibility = View.GONE
|
||||
}
|
||||
} else {
|
||||
this.view?.setBackgroundColor(rh.gc(R.color.error_background))
|
||||
this.view?.setBackgroundColor(rh.gac(context, R.attr.errorBackgroundColor))
|
||||
binding.profileList.isEnabled = false
|
||||
binding.profileswitch.visibility = View.GONE
|
||||
binding.save.visibility = View.GONE //don't save an invalid profile
|
||||
|
@ -401,12 +401,12 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private fun processVisibilityOnClick(selected: View) {
|
||||
binding.diaTab.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.icTab.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.isfTab.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.basalTab.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
binding.targetTab.setBackgroundColor(rh.gc(R.color.defaultbackground))
|
||||
selected.setBackgroundColor(rh.gc(R.color.tabBgColorSelected))
|
||||
binding.diaTab.setBackgroundColor(rh.gac(context, R.attr.defaultbackground))
|
||||
binding.icTab.setBackgroundColor(rh.gac(context, R.attr.defaultbackground))
|
||||
binding.isfTab.setBackgroundColor(rh.gac(context, R.attr.defaultbackground))
|
||||
binding.basalTab.setBackgroundColor(rh.gac(context, R.attr.defaultbackground))
|
||||
binding.targetTab.setBackgroundColor(rh.gac(context, R.attr.defaultbackground))
|
||||
selected.setBackgroundColor(rh.gac(context, R.attr.tabBgColorSelected))
|
||||
binding.diaPlaceholder.visibility = View.GONE
|
||||
binding.ic.visibility = View.GONE
|
||||
binding.isf.visibility = View.GONE
|
||||
|
|
|
@ -23,7 +23,7 @@ class TIR(val date: Long, val lowThreshold: Double, val highThreshold: Double) {
|
|||
fun above() = run { above++; count++ }
|
||||
|
||||
private fun belowPct() = if (count > 0) below.toDouble() / count * 100.0 else 0.0
|
||||
private fun inRangePct() = if (count > 0) 100 - belowPct() - abovePct() else 0
|
||||
private fun inRangePct() = if (count > 0) 100 - belowPct() - abovePct() else 0.0
|
||||
private fun abovePct() = if (count > 0) above.toDouble() / count * 100.0 else 0.0
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M19.744,9.7c-0.135,-0.417 -0.494,-0.72 -0.928,-0.783l-3.997,-0.581L13.03,4.714c-0.387,-0.786 -1.675,-0.786 -2.061,0L9.181,8.336L5.183,8.918C4.751,8.98 4.39,9.284 4.255,9.7c-0.135,0.416 -0.023,0.873 0.291,1.178l2.894,2.819L6.757,17.68c-0.074,0.432 0.103,0.868 0.457,1.125c0.2,0.146 0.437,0.22 0.676,0.22c0.183,0 0.367,-0.044 0.535,-0.133L12,17.013l3.576,1.879c0.39,0.203 0.855,0.173 1.212,-0.087c0.353,-0.257 0.531,-0.694 0.456,-1.125l-0.683,-3.983l2.893,-2.819C19.766,10.573 19.881,10.116 19.744,9.7zM18.689,10.261l-3.16,3.081l0.746,4.35c0.014,0.087 -0.021,0.174 -0.092,0.225c-0.04,0.03 -0.087,0.044 -0.135,0.044c-0.036,0 -0.073,-0.008 -0.108,-0.027l-3.907,-2.053l-3.907,2.053c-0.075,0.044 -0.17,0.036 -0.242,-0.017c-0.07,-0.051 -0.106,-0.138 -0.091,-0.225l0.746,-4.35l-3.162,-3.081c-0.063,-0.061 -0.085,-0.153 -0.058,-0.236c0.027,-0.083 0.099,-0.143 0.185,-0.156l4.369,-0.634l1.954,-3.959c0.078,-0.158 0.334,-0.158 0.412,0l1.953,3.959l4.369,0.634c0.087,0.013 0.158,0.073 0.185,0.156S18.753,10.2 18.689,10.261z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
</vector>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
android:scaleX="0.8"
|
||||
android:scaleY="0.8">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20M9,6H14V8H9V6M9,10H14V12H9V10M9,14H14V16H9V14Z" />
|
||||
</group>
|
||||
</vector>
|
|
@ -241,6 +241,7 @@
|
|||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/checkbox_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:paddingHorizontal="10dp">
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:background="@color/transparent"
|
||||
android:src="@drawable/ic_minus" />
|
||||
android:src="@drawable/ic_plus" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/display"
|
||||
|
@ -29,6 +29,6 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:background="@color/transparent"
|
||||
android:src="@drawable/ic_plus" />
|
||||
android:src="@drawable/ic_minus" />
|
||||
|
||||
</LinearLayout>
|
|
@ -45,7 +45,7 @@
|
|||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_insulin_carbs"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textColor="?attr/treatmentButtonColor"
|
||||
android:textColor="?attr/treatmentButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone"
|
||||
tools:ignore="SmallSp" />
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
card_view:cardElevation="0dp"
|
||||
card_view:cardBackgroundColor="?attr/cardItemBackgroundColor">
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -150,8 +150,10 @@ class AutomationPlugin @Inject constructor(
|
|||
|
||||
private fun storeToSP() {
|
||||
val array = JSONArray()
|
||||
val iterator = automationEvents.iterator()
|
||||
try {
|
||||
for (event in automationEvents) {
|
||||
while (iterator.hasNext()) {
|
||||
val event = iterator.next()
|
||||
array.put(JSONObject(event.toJSON()))
|
||||
}
|
||||
} catch (e: JSONException) {
|
||||
|
@ -292,8 +294,10 @@ class AutomationPlugin @Inject constructor(
|
|||
|
||||
@Synchronized
|
||||
fun removeAt(index: Int) {
|
||||
automationEvents.removeAt(index)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
if (index >= 0 && index < automationEvents.size) {
|
||||
automationEvents.removeAt(index)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
android:contentDescription="@string/system_automation"
|
||||
android:scaleX="0.9"
|
||||
android:scaleY="0.9"
|
||||
android:src="@drawable/ic_notif_aaps"
|
||||
android:src="@drawable/ic_aaps"
|
||||
app:layout_constraintBottom_toTopOf="@+id/iconLayout"
|
||||
app:layout_constraintEnd_toStartOf="@+id/eventTitle"
|
||||
app:layout_constraintStart_toEndOf="@+id/enabled"
|
||||
|
|
|
@ -8,7 +8,6 @@ import android.widget.TextView
|
|||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.annotation.StyleRes
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import info.nightscout.androidaps.core.R
|
||||
|
@ -22,7 +21,7 @@ object AlertDialogHelper {
|
|||
fun buildCustomTitle(context: Context, title: String,
|
||||
@DrawableRes iconResource: Int = R.drawable.ic_check_while_48dp,
|
||||
@StyleRes themeResId: Int = R.style.AppTheme,
|
||||
@LayoutRes layoutResource: Int = R.layout.dialog_alert_custom): View? {
|
||||
@LayoutRes layoutResource: Int = R.layout.dialog_alert_custom_title): View? {
|
||||
val titleLayout = LayoutInflater.from(ContextThemeWrapper(context, themeResId)).inflate(layoutResource, null)
|
||||
(titleLayout.findViewById<View>(R.id.alertdialog_title) as TextView).text = title
|
||||
(titleLayout.findViewById<View>(R.id.alertdialog_icon) as ImageView).setImageResource(iconResource)
|
||||
|
|
|
@ -32,5 +32,5 @@ interface ResourceHelper {
|
|||
/**
|
||||
* Get Attribute Color based on theme style for specified context
|
||||
*/
|
||||
@ColorInt fun gac(context: Context, @AttrRes attributeId: Int): Int
|
||||
@ColorInt fun gac(context: Context?, @AttrRes attributeId: Int): Int
|
||||
}
|
||||
|
|
|
@ -85,8 +85,8 @@ class ResourceHelperImplementation @Inject constructor(private val context: Cont
|
|||
|
||||
override fun shortTextMode(): Boolean = !gb(R.bool.isTablet)
|
||||
|
||||
override fun gac(context: Context, attributeId: Int): Int =
|
||||
context.getThemeColor(attributeId)
|
||||
override fun gac(context: Context?, attributeId: Int): Int =
|
||||
(context ?: ContextThemeWrapper(this.context, R.style.AppTheme)).getThemeColor(attributeId)
|
||||
|
||||
override fun gac(attributeId: Int): Int =
|
||||
ContextThemeWrapper(this.context, R.style.AppTheme).getThemeColor(attributeId)
|
||||
|
|
|
@ -101,7 +101,7 @@ class UserEntryPresentationHelper @Inject constructor(
|
|||
Sources.Stats -> R.drawable.ic_cp_stats
|
||||
Sources.ConfigBuilder -> R.drawable.ic_cogs
|
||||
Sources.Overview -> R.drawable.ic_home
|
||||
Sources.Aaps -> R.drawable.ic_notif_aaps
|
||||
Sources.Aaps -> R.drawable.ic_aaps
|
||||
Sources.Unknown -> R.drawable.ic_generic_icon
|
||||
}
|
||||
|
||||
|
|
12
core/src/main/res/drawable/ic_aaps.xml
Normal file
12
core/src/main/res/drawable/ic_aaps.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M22.107,7.852c-1.11,-2.694 -3.265,-4.849 -5.959,-5.959C14.869,1.365 13.468,1.074 12,1.074c-1.468,0 -2.869,0.292 -4.148,0.819c-2.694,1.11 -4.849,3.265 -5.959,5.959C1.365,9.131 1.074,10.532 1.074,12c0,1.468 0.292,2.869 0.819,4.148c1.11,2.694 3.265,4.849 5.959,5.959c1.28,0.527 2.681,0.819 4.148,0.819c1.468,0 2.869,-0.292 4.148,-0.819c2.694,-1.11 4.849,-3.265 5.959,-5.959c0.527,-1.28 0.819,-2.681 0.819,-4.148C22.926,10.532 22.635,9.131 22.107,7.852zM18.837,7.97c-0.694,-1.216 -1.645,-2.172 -2.852,-2.866c-0.527,-0.303 -1.079,-0.539 -1.658,-0.71c-0.638,-0.188 -1.274,0.312 -1.274,0.977v0c0,0.449 0.3,0.831 0.727,0.969c0.386,0.125 0.755,0.293 1.108,0.503c0.874,0.523 1.564,1.236 2.068,2.139c0.504,0.904 0.756,1.916 0.756,3.037c0,1.122 -0.252,2.134 -0.756,3.037c-0.504,0.903 -1.193,1.611 -2.068,2.125c-0.236,0.138 -0.481,0.253 -0.732,0.354v-4.045c0,-0.32 -0.104,-0.584 -0.311,-0.791c-0.208,-0.207 -0.471,-0.311 -0.792,-0.311c-0.302,0 -0.561,0.104 -0.778,0.311c-0.217,0.208 -0.325,0.471 -0.325,0.791v5.246c0,0.302 0.108,0.561 0.325,0.778c0.217,0.217 0.476,0.325 0.778,0.325c0.171,0 0.325,-0.033 0.464,-0.096c0.558,-0.131 1.091,-0.322 1.598,-0.581c1.027,-0.523 1.872,-1.24 2.538,-2.153v1.711c0,0.174 0.031,0.33 0.092,0.468c-1.576,1.262 -3.574,2.018 -5.745,2.018c-5.077,0 -9.208,-4.131 -9.208,-9.208S6.923,2.792 12,2.792S21.208,6.923 21.208,12c0,1.742 -0.486,3.372 -1.33,4.762V12.02C19.878,10.537 19.531,9.187 18.837,7.97z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M10.847,4.131c-0.135,0 -0.26,0.024 -0.378,0.066C9.559,4.353 8.705,4.649 7.914,5.104C6.707,5.798 5.756,6.754 5.062,7.97c-0.694,1.217 -1.041,2.567 -1.041,4.05c0,1.483 0.337,2.829 1.012,4.035c0.675,1.208 1.597,2.158 2.766,2.852c0.545,0.324 1.12,0.571 1.725,0.742c0.661,0.188 1.321,-0.302 1.321,-0.989c0,-0.459 -0.309,-0.849 -0.746,-0.989c-0.383,-0.122 -0.751,-0.285 -1.103,-0.489c-0.884,-0.514 -1.578,-1.222 -2.082,-2.125C6.412,14.154 6.16,13.142 6.16,12.02c0,-1.122 0.252,-2.134 0.756,-3.037C7.42,8.08 8.114,7.367 8.998,6.844c0.241,-0.142 0.491,-0.26 0.746,-0.363v3.999c0,0.302 0.108,0.561 0.325,0.778c0.217,0.217 0.476,0.325 0.778,0.325c0.32,0 0.584,-0.108 0.792,-0.325c0.207,-0.216 0.311,-0.475 0.311,-0.778V5.233c0,-0.32 -0.104,-0.584 -0.311,-0.791C11.431,4.235 11.167,4.131 10.847,4.131z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
</vector>
|
|
@ -1,5 +1,6 @@
|
|||
<vector android:height="48dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
|
||||
<path android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
|
||||
</vector>
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M22.107,7.852c-1.11,-2.694 -3.265,-4.849 -5.959,-5.959C14.869,1.365 13.468,1.074 12,1.074c-1.468,0 -2.869,0.292 -4.148,0.819c-2.694,1.11 -4.849,3.265 -5.959,5.959C1.365,9.131 1.074,10.532 1.074,12c0,1.468 0.292,2.869 0.819,4.148c1.11,2.694 3.265,4.849 5.959,5.959c1.28,0.527 2.681,0.819 4.148,0.819c1.468,0 2.869,-0.292 4.148,-0.819c2.694,-1.11 4.849,-3.265 5.959,-5.959c0.527,-1.28 0.819,-2.681 0.819,-4.148C22.926,10.532 22.635,9.131 22.107,7.852zM18.837,7.97c-0.694,-1.216 -1.645,-2.172 -2.852,-2.866c-0.527,-0.303 -1.079,-0.539 -1.658,-0.71c-0.638,-0.188 -1.274,0.312 -1.274,0.977v0c0,0.449 0.3,0.831 0.727,0.969c0.386,0.125 0.755,0.293 1.108,0.503c0.874,0.523 1.564,1.236 2.068,2.139c0.504,0.904 0.756,1.916 0.756,3.037c0,1.122 -0.252,2.134 -0.756,3.037c-0.504,0.903 -1.193,1.611 -2.068,2.125c-0.236,0.138 -0.481,0.253 -0.732,0.354v-4.045c0,-0.32 -0.104,-0.584 -0.311,-0.791c-0.208,-0.207 -0.471,-0.311 -0.792,-0.311c-0.302,0 -0.561,0.104 -0.778,0.311c-0.217,0.208 -0.325,0.471 -0.325,0.791v5.246c0,0.302 0.108,0.561 0.325,0.778c0.217,0.217 0.476,0.325 0.778,0.325c0.171,0 0.325,-0.033 0.464,-0.096c0.558,-0.131 1.091,-0.322 1.598,-0.581c1.027,-0.523 1.872,-1.24 2.538,-2.153v1.711c0,0.174 0.031,0.33 0.092,0.468c-1.576,1.262 -3.574,2.018 -5.745,2.018c-5.077,0 -9.208,-4.131 -9.208,-9.208S6.923,2.792 12,2.792S21.208,6.923 21.208,12c0,1.742 -0.486,3.372 -1.33,4.762V12.02C19.878,10.537 19.531,9.187 18.837,7.97z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
android:fillColor="@color/white"/>
|
||||
<path
|
||||
android:pathData="M10.847,4.131c-0.135,0 -0.26,0.024 -0.378,0.066C9.559,4.353 8.705,4.649 7.914,5.104C6.707,5.798 5.756,6.754 5.062,7.97c-0.694,1.217 -1.041,2.567 -1.041,4.05c0,1.483 0.337,2.829 1.012,4.035c0.675,1.208 1.597,2.158 2.766,2.852c0.545,0.324 1.12,0.571 1.725,0.742c0.661,0.188 1.321,-0.302 1.321,-0.989c0,-0.459 -0.309,-0.849 -0.746,-0.989c-0.383,-0.122 -0.751,-0.285 -1.103,-0.489c-0.884,-0.514 -1.578,-1.222 -2.082,-2.125C6.412,14.154 6.16,13.142 6.16,12.02c0,-1.122 0.252,-2.134 0.756,-3.037C7.42,8.08 8.114,7.367 8.998,6.844c0.241,-0.142 0.491,-0.26 0.746,-0.363v3.999c0,0.302 0.108,0.561 0.325,0.778c0.217,0.217 0.476,0.325 0.778,0.325c0.32,0 0.584,-0.108 0.792,-0.325c0.207,-0.216 0.311,-0.475 0.311,-0.778V5.233c0,-0.32 -0.104,-0.584 -0.311,-0.791C11.431,4.235 11.167,4.131 10.847,4.131z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
android:fillColor="@color/white"/>
|
||||
</vector>
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/StyleDialog"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
style="@style/StyleDialogHeader"
|
|
@ -8,7 +8,7 @@
|
|||
<item name="dialogTitleBackground">@color/dialog_title_background</item>
|
||||
<item name="dialogTitleColor">@color/dialog_title_color</item>
|
||||
<item name="dialogTitleIconTint">@color/dialog_title_icon_tint</item>
|
||||
<!-- New MaterialComponents attributes. -->dialogTitleBackground
|
||||
<!-- New MaterialComponents attributes. -->
|
||||
<item name="colorSecondary">@color/secondaryColorDefault</item>
|
||||
<item name="colorPrimaryVariant">@color/primaryLightColorDefault</item>
|
||||
<item name="colorSecondaryVariant">@color/secondaryLightColorDefault</item>
|
||||
|
@ -19,9 +19,6 @@
|
|||
<item name="colorOnBackground">@color/white</item>
|
||||
<item name="colorOnError">@color/black</item>
|
||||
<item name="scrimBackground">@color/mtrl_scrim_color</item>
|
||||
<item name="android:textColorSecondary">@color/white</item>
|
||||
<item name="android:textColorPrimary">@color/white</item>
|
||||
<item name="android:textColor">@color/white</item>
|
||||
<item name="popupMenuStyle">@style/Widget.MaterialComponents.PopupMenu</item>
|
||||
<item name="actionOverflowMenuStyle">@style/Widget.MaterialComponents.PopupMenu.Overflow</item>
|
||||
<!-- Fragment background for some themes default transparent -->
|
||||
|
@ -36,8 +33,6 @@
|
|||
<item name="actionModeCloseDrawable">@drawable/ic_close</item>
|
||||
<!---bolus color -->
|
||||
<item name="bolusColor">@color/bolus</item>
|
||||
<!---Treatment button color -->
|
||||
<item name="treatmentButton">@color/colorTreatmentButton</item>
|
||||
<!---Number Picker text color -->
|
||||
<item name="numPickerText">@color/black</item>
|
||||
<!---NS Client action text color -->
|
||||
|
@ -62,12 +57,14 @@
|
|||
<item name="tempTargetConfirmation">@color/tempTargetConfirmation</item>
|
||||
<!-- Treatments -->
|
||||
<item name="setExtendedButtonColor">@color/colorSetExtendedButton</item>
|
||||
<item name="activeColor">@color/colorActive</item>
|
||||
<item name="scheduledColor">@color/colorScheduled</item>
|
||||
<!-- Carbs Button -->
|
||||
<item name="carbsButtonColor">@color/colorCarbsButton</item>
|
||||
<!-- Temp Button Button -->
|
||||
<item name="acceptTempButtonColor">@color/colorAcceptTempButton</item>
|
||||
<!-- Treatment Button -->
|
||||
<item name="treatmentButtonColor">@color/colorTreatmentButton</item>
|
||||
<item name="treatmentButton">@color/colorTreatmentButton</item>
|
||||
<!-- Insulin Button -->
|
||||
<item name="insulinButtonColor">@color/colorInsulinButton</item>
|
||||
<!-- Calculator Button -->
|
||||
|
@ -92,6 +89,10 @@
|
|||
<item name="activity_title_backgroundColor">@color/activity_title_background</item>
|
||||
<!---Automation -->
|
||||
<item name="ribbonDefaultColor">@color/ribbonDefault</item>
|
||||
<item name="ribbonWarningColor">@color/ribbonWarning</item>
|
||||
<item name="ribbonCriticalColor">@color/ribbonCritical</item>
|
||||
<item name="ribbonTextDefaultColor">@color/ribbonTextDefault</item>
|
||||
<item name="ribbonTextWarningColor">@color/ribbonTextWarning</item>
|
||||
<!---Main Activity Tab -->
|
||||
<item name="tabSelectedTextColor">@color/tabSelectedText</item>
|
||||
<item name="tabTextColor">@color/tabText</item>
|
||||
|
@ -115,6 +116,23 @@
|
|||
<item name="android:windowBackground">@color/black</item>
|
||||
<!---Dialogfragment Background Color -->
|
||||
<item name="android:dialogCornerRadius">12dp</item>
|
||||
<!---Overview and Historybrowser -->
|
||||
<item name="graphgrid">@color/graphgrid</item>
|
||||
<item name="viewPortbackgroundColor">@color/white_alpha_20</item>
|
||||
<item name="tempTargetBackgroundColor">@color/tempTargetBackground</item>
|
||||
<!---CGM source-->
|
||||
<item name="cgmdexColor">@color/colorLightGray</item>
|
||||
<item name="cgmxdripColor">@color/colorCalibrationButton</item>
|
||||
<!---BG color-->
|
||||
<item name="bgLow">@color/low</item>
|
||||
<item name="bgHigh">@color/high</item>
|
||||
<item name="bgInRange">@color/inrange</item>
|
||||
<!---Profile Helper -->
|
||||
<item name="helperProfileColor">@color/helperProfile</item>
|
||||
<item name="examinedProfileColor">@color/examinedProfile</item>
|
||||
<!---Local profile -->
|
||||
<item name="okBackgroundColor">@color/ok_background</item>
|
||||
<item name="errorBackgroundColor">@color/error_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MaterialComponents.DayNight.DarkActionBar" parent="Theme.MaterialComponents.DayNight.Bridge"/>
|
||||
|
@ -205,7 +223,7 @@
|
|||
|
||||
<!-- Alert Dialogs -->
|
||||
<style name="DialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
|
||||
<item name="backgroundColor">@color/background_dark</item>
|
||||
<item name="colorSurface">#212121</item> <!-- workaround; color compensated elevation -->
|
||||
<item name="buttonBarNegativeButtonStyle">@style/DialogOkCancelButtonStyle</item>
|
||||
<item name="buttonBarPositiveButtonStyle">@style/DialogOkCancelButtonStyle</item>
|
||||
<item name="buttonBarNeutralButtonStyle">@style/DialogOkCancelButtonStyle</item>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
<resources>
|
||||
<!---bolus color -->
|
||||
<attr name="bolusColor" format="reference|color" />
|
||||
<!---Treatment button color -->
|
||||
<attr name="treatmentButton" format="reference|color" />
|
||||
<!---Number Picker text color -->
|
||||
<attr name="numPickerText" format="reference|color" />
|
||||
<!---NS Client action text color -->
|
||||
|
@ -31,8 +29,10 @@
|
|||
<attr name="carbsButtonColor" format="reference|color" />
|
||||
<!-- Temp Button Button -->
|
||||
<attr name="acceptTempButtonColor" format="reference|color" />
|
||||
<!-- Treatment Button -->
|
||||
<attr name="treatmentButtonColor" format="reference|color" />
|
||||
<!---Treatment -->
|
||||
<attr name="treatmentButton" format="reference|color" />
|
||||
<attr name="activeColor" format="reference|color" />
|
||||
<attr name="scheduledColor" format="reference|color" />
|
||||
<!-- Insulin Button -->
|
||||
<attr name="insulinButtonColor" format="reference|color" />
|
||||
<!-- Calculator Button -->
|
||||
|
@ -60,6 +60,10 @@
|
|||
<attr name="activity_title_backgroundColor" format="reference|color" />
|
||||
<!---Automation -->
|
||||
<attr name="ribbonDefaultColor" format="reference|color" />
|
||||
<attr name="ribbonWarningColor" format="reference|color" />
|
||||
<attr name="ribbonCriticalColor" format="reference|color" />
|
||||
<attr name="ribbonTextDefaultColor" format="reference|color" />
|
||||
<attr name="ribbonTextWarningColor" format="reference|color" />
|
||||
<!---Main Activity Tab -->
|
||||
<attr name="tabSelectedTextColor" format="reference|color" />
|
||||
<attr name="tabTextColor" format="reference|color" />
|
||||
|
@ -86,5 +90,21 @@
|
|||
<attr name="splashBackgroundColor" format="reference|color" />
|
||||
<!---Disabled Text Color -->
|
||||
<attr name="disabledTextColor" format="reference|color" />
|
||||
|
||||
<!---Overview and Historybrowser -->
|
||||
<attr name="graphgrid" format="reference|color" />
|
||||
<attr name="viewPortbackgroundColor" format="reference|color" />
|
||||
<attr name="tempTargetBackgroundColor" format="reference|color" />
|
||||
<!---CGM source-->
|
||||
<attr name="cgmdexColor" format="reference|color" />
|
||||
<attr name="cgmxdripColor" format="reference|color" />
|
||||
<!---BG color-->
|
||||
<attr name="bgLow" format="reference|color" />
|
||||
<attr name="bgHigh" format="reference|color" />
|
||||
<attr name="bgInRange" format="reference|color" />
|
||||
<!---Profile Helper -->
|
||||
<attr name="helperProfileColor" format="reference|color" />
|
||||
<attr name="examinedProfileColor" format="reference|color" />
|
||||
<!---Local profile -->
|
||||
<attr name="okBackgroundColor" format="reference|color" />
|
||||
<attr name="errorBackgroundColor" format="reference|color" />
|
||||
</resources>
|
|
@ -8,7 +8,7 @@
|
|||
<color name="mdtp_white">#ffffff</color>
|
||||
<color name="mdtp_line_dark">#808080</color>
|
||||
<color name="colorLightGray">#d8d8d8</color>
|
||||
<color name="cardColorBackground">#999999</color>
|
||||
<color name="cardColorBackground">@color/lightgray</color>
|
||||
<color name="black_overlay">#66000000</color>
|
||||
<color name="gray">#BBBBBB</color>
|
||||
<color name="black">#FF000000</color>
|
||||
|
@ -25,8 +25,8 @@
|
|||
<color name="overviewPillColorDefault">#1c171c</color>
|
||||
<color name="colorOnPrimaryDefault">#FFFFFF</color>
|
||||
|
||||
<color name="defaultbackground">#424242</color>
|
||||
<color name="defaulttextcolor">#B3FFFFFF</color>
|
||||
<color name="defaultbackground">#FFFFFF</color>
|
||||
<color name="defaulttextcolor">#000000</color>
|
||||
|
||||
<!---Android Dark ans Light Theme Base colors-->
|
||||
<color name="background_dark">#262626</color>
|
||||
|
@ -150,7 +150,7 @@
|
|||
|
||||
<color name="ribbonWarning">#f4d700</color>
|
||||
<color name="ribbonCritical">#ff0400</color>
|
||||
<color name="ribbonTextDefault">#FFFFFF</color>
|
||||
<color name="ribbonTextDefault">#000000</color>
|
||||
<color name="ribbonTextWarning">#303030</color>
|
||||
<color name="tempTargetConfirmation">#77dd77</color>
|
||||
|
||||
|
@ -172,7 +172,7 @@
|
|||
<color name="warning">#ff1a1a</color>
|
||||
<color name="info">#77dd77</color>
|
||||
<color name="error_background">#66FC0000</color>
|
||||
<color name="ok_background">@color/black</color>
|
||||
<color name="ok_background">@color/white</color>
|
||||
|
||||
<color name="tempTargetBackground">#77dd77</color>
|
||||
<color name="exercise">#67DFE8</color>
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
<item name="colorOnBackground">@color/white</item>
|
||||
<item name="colorOnError">@color/black</item>
|
||||
<item name="scrimBackground">@color/white</item>
|
||||
<item name="android:textColorSecondary">@color/black</item>
|
||||
<item name="android:textColorPrimary">@color/black</item>
|
||||
<item name="android:textColor">@color/black</item>
|
||||
<item name="popupMenuStyle">@style/Widget.MaterialComponents.PopupMenu</item>
|
||||
<item name="actionOverflowMenuStyle">@style/Widget.MaterialComponents.PopupMenu.Overflow</item>
|
||||
<!---Notification -->
|
||||
|
@ -35,8 +32,6 @@
|
|||
<item name="actionModeCloseDrawable">@drawable/ic_close</item>
|
||||
<!---bolus color -->
|
||||
<item name="bolusColor">@color/bolus</item>
|
||||
<!---Treatment button color -->
|
||||
<item name="treatmentButton">@color/colorTreatmentButton</item>
|
||||
<!---Number Picker text color -->
|
||||
<item name="numPickerText">@color/black</item>
|
||||
<!---NS Client action text color -->
|
||||
|
@ -61,12 +56,14 @@
|
|||
<item name="tempTargetConfirmation">@color/tempTargetConfirmation</item>
|
||||
<!-- Treatments -->
|
||||
<item name="setExtendedButtonColor">@color/colorSetExtendedButton</item>
|
||||
<item name="activeColor">@color/colorActive</item>
|
||||
<item name="scheduledColor">@color/colorScheduled</item>
|
||||
<!-- Carbs Button -->
|
||||
<item name="carbsButtonColor">@color/colorCarbsButton</item>
|
||||
<!-- Temp Button Button -->
|
||||
<item name="acceptTempButtonColor">@color/colorAcceptTempButton</item>
|
||||
<!-- Treatment Button -->
|
||||
<item name="treatmentButtonColor">@color/colorTreatmentButton</item>
|
||||
<item name="treatmentButton">@color/colorTreatmentButton</item>
|
||||
<!-- Insulin Button -->
|
||||
<item name="insulinButtonColor">@color/colorInsulinButton</item>
|
||||
<!-- Calculator Button -->
|
||||
|
@ -91,6 +88,10 @@
|
|||
<item name="activity_title_backgroundColor">@color/activity_title_background</item>
|
||||
<!---Automation -->
|
||||
<item name="ribbonDefaultColor">@color/ribbonDefault</item>
|
||||
<item name="ribbonWarningColor">@color/ribbonWarning</item>
|
||||
<item name="ribbonCriticalColor">@color/ribbonCritical</item>
|
||||
<item name="ribbonTextDefaultColor">@color/ribbonTextDefault</item>
|
||||
<item name="ribbonTextWarningColor">@color/ribbonTextWarning</item>
|
||||
<!---Main Activity Tab -->
|
||||
<item name="tabSelectedTextColor">@color/tabSelectedText</item>
|
||||
<item name="tabTextColor">@color/tabText</item>
|
||||
|
@ -114,6 +115,23 @@
|
|||
<item name="android:windowBackground">@color/white</item>
|
||||
<!---Dialogfragment Background Color -->
|
||||
<item name="android:dialogCornerRadius">12dp</item>
|
||||
<!---Overview and Historybrowser -->
|
||||
<item name="graphgrid">@color/graphgrid</item>
|
||||
<item name="viewPortbackgroundColor">@color/white_alpha_20</item>
|
||||
<item name="tempTargetBackgroundColor">@color/tempTargetBackground</item>
|
||||
<!---CGM source-->
|
||||
<item name="cgmdexColor">@color/colorLightGray</item>
|
||||
<item name="cgmxdripColor">@color/colorCalibrationButton</item>
|
||||
<!---BG color-->
|
||||
<item name="bgLow">@color/low</item>
|
||||
<item name="bgHigh">@color/high</item>
|
||||
<item name="bgInRange">@color/inrange</item>
|
||||
<!---Profile Helper -->
|
||||
<item name="helperProfileColor">@color/helperProfile</item>
|
||||
<item name="examinedProfileColor">@color/examinedProfile</item>
|
||||
<!---Local profile -->
|
||||
<item name="okBackgroundColor">@color/ok_background</item>
|
||||
<item name="errorBackgroundColor">@color/error_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MaterialComponents.DayNight.DarkActionBar" parent="Theme.MaterialComponents.DayNight.Bridge"/>
|
||||
|
@ -212,7 +230,6 @@
|
|||
|
||||
<!-- Alert Dialogs -->
|
||||
<style name="DialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
|
||||
<item name="backgroundColor">@color/dialog_title_background</item>
|
||||
<item name="buttonBarNegativeButtonStyle">@style/DialogOkCancelButtonStyle</item>
|
||||
<item name="buttonBarPositiveButtonStyle">@style/DialogOkCancelButtonStyle</item>
|
||||
<item name="dialogTitleBackground">@color/dialog_title_background</item>
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.annotation.TargetApi;
|
|||
import android.os.Build;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.IllegalInstantException;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
|
@ -144,8 +145,7 @@ public class MessageBase {
|
|||
}
|
||||
|
||||
public int getCommand() {
|
||||
int command = byteFromRawBuff(buffer, 5) | (byteFromRawBuff(buffer, 4) << 8);
|
||||
return command;
|
||||
return byteFromRawBuff(buffer, 5) | (byteFromRawBuff(buffer, 4) << 8);
|
||||
}
|
||||
|
||||
public int byteFromRawBuff(byte[] buff, int offset) {
|
||||
|
@ -180,15 +180,29 @@ public class MessageBase {
|
|||
}
|
||||
|
||||
public synchronized long dateTimeSecFromBuff(byte[] buff, int offset) {
|
||||
return
|
||||
new DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1),
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).getMillis();
|
||||
|
||||
try {
|
||||
return new DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1),
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).getMillis();
|
||||
} catch (IllegalInstantException e) {
|
||||
// expect
|
||||
// org.joda.time.IllegalInstantException: Illegal instant due to time zone offset transition (daylight savings time 'gap')
|
||||
// add 1 hour
|
||||
return new DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1) + 1,
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).getMillis();
|
||||
}
|
||||
}
|
||||
|
||||
public long dateFromBuff(byte[] buff, int offset) {
|
||||
|
@ -204,18 +218,18 @@ public class MessageBase {
|
|||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
public static String stringFromBuff(byte[] buff, int offset, int length) {
|
||||
byte[] strbuff = new byte[length];
|
||||
System.arraycopy(buff, offset + 6, strbuff, 0, length);
|
||||
return new String(strbuff, StandardCharsets.UTF_8);
|
||||
byte[] strBuff = new byte[length];
|
||||
System.arraycopy(buff, offset + 6, strBuff, 0, length);
|
||||
return new String(strBuff, StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
public static String asciiStringFromBuff(byte[] buff, int offset, int length) {
|
||||
byte[] strbuff = new byte[length];
|
||||
System.arraycopy(buff, offset + 6, strbuff, 0, length);
|
||||
byte[] strBuff = new byte[length];
|
||||
System.arraycopy(buff, offset + 6, strBuff, 0, length);
|
||||
for (int pos = 0; pos < length; pos++)
|
||||
strbuff[pos] += 65; // "A"
|
||||
return new String(strbuff, StandardCharsets.UTF_8);
|
||||
strBuff[pos] += 65; // "A"
|
||||
return new String(strBuff, StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
public static String toHexString(byte[] buff) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import info.nightscout.androidaps.danars.encryption.BleEncryption
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.IllegalInstantException
|
||||
import java.nio.charset.StandardCharsets
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -69,15 +70,30 @@ open class DanaRSPacket(protected var injector: HasAndroidInjector) {
|
|||
else -> -1
|
||||
}
|
||||
|
||||
@Synchronized fun dateTimeSecFromBuff(buff: ByteArray, offset: Int): Long =
|
||||
DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1),
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).millis
|
||||
@Synchronized
|
||||
fun dateTimeSecFromBuff(buff: ByteArray, offset: Int): Long =
|
||||
try {
|
||||
DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1),
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).millis
|
||||
} catch (e: IllegalInstantException) {
|
||||
// expect
|
||||
// org.joda.time.IllegalInstantException: Illegal instant due to time zone offset transition (daylight savings time 'gap')
|
||||
// add 1 hour
|
||||
DateTime(
|
||||
2000 + intFromBuff(buff, offset, 1),
|
||||
intFromBuff(buff, offset + 1, 1),
|
||||
intFromBuff(buff, offset + 2, 1),
|
||||
intFromBuff(buff, offset + 3, 1) + 1,
|
||||
intFromBuff(buff, offset + 4, 1),
|
||||
intFromBuff(buff, offset + 5, 1)
|
||||
).millis
|
||||
}
|
||||
|
||||
protected fun intFromBuff(b: ByteArray, srcStart: Int, srcLength: Int): Int =
|
||||
when (srcLength) {
|
||||
|
|
|
@ -406,7 +406,8 @@ class MedtronicHistoryData @Inject constructor(
|
|||
if (lastPrimeRecord != null) {
|
||||
uploadCareportalEventIfFoundInHistory(lastPrimeRecord,
|
||||
MedtronicConst.Statistics.LastPrime,
|
||||
DetailedBolusInfo.EventType.CANNULA_CHANGE)
|
||||
DetailedBolusInfo.EventType.CANNULA_CHANGE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -889,17 +890,23 @@ class MedtronicHistoryData @Inject constructor(
|
|||
"pumpId=${tempBasalProcess.itemOne.pumpId}, " +
|
||||
"pumpSerial=${medtronicPumpStatus.serialNumber}]")
|
||||
|
||||
val result = pumpSync.syncTemporaryBasalWithPumpId(
|
||||
tryToGetByLocalTime(tempBasalProcess.itemOne.atechDateTime),
|
||||
0.0,
|
||||
tempBasalProcess.durationAsSeconds * 1000L,
|
||||
true,
|
||||
PumpSync.TemporaryBasalType.PUMP_SUSPEND,
|
||||
tempBasalProcess.itemOne.pumpId,
|
||||
medtronicPumpStatus.pumpType,
|
||||
medtronicPumpStatus.serialNumber)
|
||||
if (tempBasalProcess.durationAsSeconds <= 0) {
|
||||
rxBus.send(EventNewNotification(Notification(Notification.MDT_INVALID_HISTORY_DATA, rh.gs(R.string.invalid_history_data), Notification.URGENT)))
|
||||
aapsLogger.debug(LTag.PUMP, "syncTemporaryBasalWithPumpId - Skipped")
|
||||
} else {
|
||||
val result = pumpSync.syncTemporaryBasalWithPumpId(
|
||||
tryToGetByLocalTime(tempBasalProcess.itemOne.atechDateTime),
|
||||
0.0,
|
||||
tempBasalProcess.durationAsSeconds * 1000L,
|
||||
true,
|
||||
PumpSync.TemporaryBasalType.PUMP_SUSPEND,
|
||||
tempBasalProcess.itemOne.pumpId,
|
||||
medtronicPumpStatus.pumpType,
|
||||
medtronicPumpStatus.serialNumber
|
||||
)
|
||||
|
||||
aapsLogger.debug(LTag.PUMP, "syncTemporaryBasalWithPumpId: Result: $result")
|
||||
aapsLogger.debug(LTag.PUMP, "syncTemporaryBasalWithPumpId: Result: $result")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,10 @@ import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.common.f
|
|||
import info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity
|
||||
|
||||
abstract class PodActivationActionFragmentBase : ActionFragmentBase() {
|
||||
|
||||
/*
|
||||
* Removed by Milos. It's causing
|
||||
* android.content.ActivityNotFoundException: Unable to find explicit activity class {info.nightscout.androidaps/info.nightscout.androidaps.plugins.pump.omnipod.common.ui.wizard.deactivation.PodDeactivationWizardActivity}; have you declared this activity in your AndroidManifest.xml?
|
||||
*
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
|
@ -21,7 +24,7 @@ abstract class PodActivationActionFragmentBase : ActionFragmentBase() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
override fun onFailure() {
|
||||
(viewModel as? PodActivationActionViewModelBase)?.let { viewModel ->
|
||||
if (viewModel.isPodDeactivatable() and (viewModel.isPodInAlarm() or viewModel.isPodActivationTimeExceeded())) {
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginRight="10dp"
|
||||
|
||||
android:gravity="center"
|
||||
android:text="@string/omnipod_common_pod_management_title"
|
||||
android:textAlignment="center"
|
||||
|
@ -35,7 +34,6 @@
|
|||
android:text="@string/omnipod_common_pod_management_heading_actions" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
||||
android:id="@+id/Actions_Row_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
@ -49,7 +47,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_activate_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_activate_pod"
|
||||
|
@ -70,7 +67,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_deactivate_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_deactivate_pod"
|
||||
|
@ -99,7 +95,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_play_test_beep"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_play_test_beep"
|
||||
|
@ -111,9 +106,8 @@
|
|||
app:layout_constraintRight_toLeftOf="@+id/Actions_Col_1_Row_2_vertical_guideline"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_pod_history"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_pod_history"
|
||||
|
@ -132,9 +126,8 @@
|
|||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_discard_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_discard_pod"
|
||||
|
@ -148,5 +141,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</ScrollView>
|
||||
|
|
|
@ -599,6 +599,8 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
|
|||
@NonNull
|
||||
@Override
|
||||
public PumpEnactResult setNewBasalProfile(@NonNull Profile profile) {
|
||||
if (!podStateManager.hasPodState())
|
||||
return new PumpEnactResult(getInjector()).enacted(false).success(false).comment("Null pod state");
|
||||
PumpEnactResult result = executeCommand(OmnipodCommandType.SET_BASAL_PROFILE, () -> aapsOmnipodErosManager.setBasalProfile(profile, true));
|
||||
|
||||
aapsLogger.info(LTag.PUMP, "Basal Profile was set: " + result.getSuccess());
|
||||
|
@ -850,6 +852,8 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
|
|||
|
||||
@Override
|
||||
public PumpEnactResult executeCustomCommand(@NonNull CustomCommand command) {
|
||||
if (!podStateManager.hasPodState())
|
||||
return new PumpEnactResult(getInjector()).enacted(false).success(false).comment("Null pod state");
|
||||
if (command instanceof CommandSilenceAlerts) {
|
||||
return executeCommand(OmnipodCommandType.ACKNOWLEDGE_ALERTS, aapsOmnipodErosManager::acknowledgeAlerts);
|
||||
}
|
||||
|
@ -980,7 +984,7 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
|
|||
aapsLogger.info(LTag.PUMP, "Time, Date and/or TimeZone changed. [changeType=" + timeChangeType.name() + ", eventHandlingEnabled=" + aapsOmnipodErosManager.isTimeChangeEventEnabled() + "]");
|
||||
|
||||
Instant now = Instant.now();
|
||||
if (timeChangeType == TimeChangeType.TimeChanged && now.isBefore(lastTimeDateOrTimeZoneUpdate.plus(Duration.standardDays(1L)))){
|
||||
if (timeChangeType == TimeChangeType.TimeChanged && now.isBefore(lastTimeDateOrTimeZoneUpdate.plus(Duration.standardDays(1L)))) {
|
||||
aapsLogger.info(LTag.PUMP, "Ignoring time change because not a TZ or DST time change and the last one happened less than 24 hours ago.");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginRight="10dp"
|
||||
|
||||
android:gravity="center"
|
||||
android:text="@string/omnipod_common_pod_management_title"
|
||||
android:textAlignment="center"
|
||||
|
@ -51,6 +50,7 @@
|
|||
android:text="@string/omnipod_eros_pod_management_waiting_for_riley_link_connection"
|
||||
android:textAlignment="center"
|
||||
android:textSize="8pt" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
|
@ -62,7 +62,6 @@
|
|||
android:text="@string/omnipod_common_pod_management_heading_actions" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
||||
android:id="@+id/Actions_Row_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
@ -76,7 +75,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_activate_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_activate_pod"
|
||||
|
@ -97,7 +95,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_deactivate_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_deactivate_pod"
|
||||
|
@ -124,9 +121,8 @@
|
|||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_play_test_beep"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_play_test_beep"
|
||||
|
@ -147,7 +143,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_discard_pod"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_discard_pod"
|
||||
|
@ -162,7 +157,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -186,7 +180,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_reset_rileylink_config"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_activity_reset_rileylink_config"
|
||||
|
@ -207,7 +200,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_pod_history"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_pod_history"
|
||||
|
@ -222,7 +214,6 @@
|
|||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
||||
android:id="@+id/Tools_Row_2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
@ -236,7 +227,6 @@
|
|||
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_rileylink_stats"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_rl_stats"
|
||||
|
@ -255,9 +245,8 @@
|
|||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
android:id="@+id/button_pulse_log"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_pod_management_pulse_log"
|
||||
|
@ -270,5 +259,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</ScrollView>
|
||||
|
|
Loading…
Reference in a new issue