Merge branch 'dev' into pump_common
This commit is contained in:
commit
4c0ac4ec02
137 changed files with 1667 additions and 1528 deletions
|
@ -105,7 +105,7 @@ android {
|
|||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "3.0.0.2-dev-n"
|
||||
version "3.0.0.2-dev-o"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -49,6 +49,7 @@ import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show
|
|||
import info.nightscout.androidaps.utils.protection.PasswordCheck
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.*
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMBDynamicISF.OpenAPSSMBDynamicISFPlugin
|
||||
import info.nightscout.shared.SafeParse
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import javax.inject.Inject
|
||||
|
@ -79,6 +80,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
@Inject lateinit var nsClientPlugin: NSClientPlugin
|
||||
@Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
|
||||
@Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
|
||||
@Inject lateinit var openAPSSMBDynamicISFPlugin: OpenAPSSMBDynamicISFPlugin
|
||||
@Inject lateinit var safetyPlugin: SafetyPlugin
|
||||
@Inject lateinit var sensitivityAAPSPlugin: SensitivityAAPSPlugin
|
||||
@Inject lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin
|
||||
|
@ -171,6 +173,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSSMBDynamicISFPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityAAPSPlugin, rootKey)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityWeightedAveragePlugin, rootKey)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityOref1Plugin, rootKey)
|
||||
|
|
|
@ -2,9 +2,9 @@ package info.nightscout.androidaps.activities
|
|||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceScreen
|
||||
import info.nightscout.androidaps.R
|
||||
|
@ -15,6 +15,7 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
|
||||
private var preferenceId = 0
|
||||
private var myPreferenceFragment: MyPreferenceFragment? = null
|
||||
private var searchView: SearchView? = null
|
||||
|
||||
private lateinit var binding: ActivityPreferencesBinding
|
||||
|
||||
|
@ -24,15 +25,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
binding = ActivityPreferencesBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
binding.prefFilter.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
filterPreferences()
|
||||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable) {}
|
||||
})
|
||||
|
||||
title = rh.gs(R.string.nav_preferences)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
supportActionBar?.setDisplayShowHomeEnabled(true)
|
||||
|
@ -40,12 +32,29 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
preferenceId = intent.getIntExtra("id", -1)
|
||||
myPreferenceFragment?.arguments = Bundle().also {
|
||||
it.putInt("id", preferenceId)
|
||||
it.putString("filter", binding.prefFilter.text.toString())
|
||||
}
|
||||
if (savedInstanceState == null)
|
||||
supportFragmentManager.beginTransaction().replace(R.id.frame_layout, myPreferenceFragment!!).commit()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_preferences, menu)
|
||||
val searchItem = menu.findItem(R.id.menu_search)
|
||||
searchView = searchItem.actionView as SearchView
|
||||
searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
|
||||
override fun onQueryTextChange(newText: String): Boolean {
|
||||
myPreferenceFragment?.setFilter(newText)
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onQueryTextSubmit(query: String): Boolean {
|
||||
return false
|
||||
}
|
||||
})
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean {
|
||||
val fragment = MyPreferenceFragment()
|
||||
fragment.arguments = Bundle().also {
|
||||
|
@ -60,10 +69,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
super.attachBaseContext(LocaleHelper.wrap(newBase))
|
||||
}
|
||||
|
||||
private fun filterPreferences() {
|
||||
myPreferenceFragment?.setFilter(binding.prefFilter.text.toString())
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package info.nightscout.androidaps.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.Menu
|
||||
import android.widget.PopupMenu
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.TextView
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.common.collect.Lists
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.data.PureProfile
|
||||
|
@ -18,7 +18,6 @@ import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
|||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
|
@ -72,61 +71,49 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
binding = ActivityProfilehelperBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
binding.menu1.setOnClickListener {
|
||||
switchTab(0, typeSelected[0])
|
||||
}
|
||||
binding.menu2.setOnClickListener {
|
||||
switchTab(1, typeSelected[1])
|
||||
}
|
||||
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
switchTab(tab.position, typeSelected[tab.position])
|
||||
}
|
||||
|
||||
binding.profileType.setOnClickListener {
|
||||
PopupMenu(this, binding.profileType).apply {
|
||||
menuInflater.inflate(R.menu.menu_profilehelper, menu)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.profileType.setText(item.title)
|
||||
when (item.itemId) {
|
||||
R.id.menu_default -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
|
||||
R.id.menu_default_dpv -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
|
||||
R.id.menu_current -> switchTab(tabSelected, ProfileType.CURRENT)
|
||||
R.id.menu_available -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
|
||||
R.id.menu_profileswitch -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
|
||||
}
|
||||
true
|
||||
}
|
||||
show()
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) {}
|
||||
override fun onTabReselected(tab: TabLayout.Tab) {}
|
||||
})
|
||||
|
||||
val profileTypeList = Lists.newArrayList(
|
||||
rh.gs(R.string.motoldefaultprofile),
|
||||
rh.gs(R.string.dpvdefaultprofile),
|
||||
rh.gs(R.string.currentprofile),
|
||||
rh.gs(R.string.availableprofile),
|
||||
rh.gs(R.string.careportal_profileswitch)
|
||||
)
|
||||
binding.profileType.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileTypeList))
|
||||
|
||||
binding.profileType.setOnItemClickListener { _, _, _, _ ->
|
||||
when (binding.profileType.text.toString()) {
|
||||
rh.gs(R.string.motoldefaultprofile) -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
|
||||
rh.gs(R.string.dpvdefaultprofile) -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
|
||||
rh.gs(R.string.currentprofile) -> switchTab(tabSelected, ProfileType.CURRENT)
|
||||
rh.gs(R.string.availableprofile) -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
|
||||
rh.gs(R.string.careportal_profileswitch) -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
|
||||
}
|
||||
}
|
||||
|
||||
// Active profile
|
||||
profileList = activePlugin.activeProfileSource.profile?.getProfileList() ?: ArrayList()
|
||||
|
||||
binding.availableProfileList.setOnClickListener {
|
||||
PopupMenu(this, binding.availableProfileList).apply {
|
||||
var order = 0
|
||||
for (name in profileList) menu.add(Menu.NONE, order, order++, name)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.availableProfileList.setText(item.title)
|
||||
profileUsed[tabSelected] = item.itemId
|
||||
true
|
||||
}
|
||||
show()
|
||||
}
|
||||
binding.availableProfileList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileList))
|
||||
binding.availableProfileList.setOnItemClickListener { _, _, index, _ ->
|
||||
profileUsed[tabSelected] = index
|
||||
}
|
||||
|
||||
// Profile switch
|
||||
profileSwitch = repository.getEffectiveProfileSwitchDataFromTime(dateUtil.now() - T.months(2).msecs(), true).blockingGet()
|
||||
|
||||
binding.profileswitchList.setOnClickListener {
|
||||
PopupMenu(this, binding.profileswitchList).apply {
|
||||
var order = 0
|
||||
for (name in profileSwitch) menu.add(Menu.NONE, order, order++, name.originalCustomizedName)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.profileswitchList.setText(item.title)
|
||||
profileSwitchUsed[tabSelected] = item.itemId
|
||||
true
|
||||
}
|
||||
show()
|
||||
}
|
||||
val profileswitchListNames = profileSwitch.map { it.originalCustomizedName }
|
||||
binding.profileswitchList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileswitchListNames))
|
||||
binding.profileswitchList.setOnItemClickListener { _, _, index, _ ->
|
||||
profileSwitchUsed[tabSelected] = index
|
||||
}
|
||||
|
||||
// Default profile
|
||||
|
@ -250,7 +237,7 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun getProfile(age: Double, tdd: Double, weight: Double, basalPct: Double, tab: Int): PureProfile? =
|
||||
try { // profile must not exist
|
||||
try { // Profile must not exist
|
||||
when (typeSelected[tab]) {
|
||||
ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
|
||||
ProfileType.DPV_DEFAULT -> defaultProfileDPV.profile(age, tdd, basalPct, profileFunction.getUnits())
|
||||
|
@ -279,15 +266,13 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun switchTab(tab: Int, newContent: ProfileType, storeOld: Boolean = true) {
|
||||
setBackgroundColorOnSelected(tab)
|
||||
// Store values for selected tab. listBox values are stored on selection change
|
||||
if (storeOld) storeValues()
|
||||
|
||||
tabSelected = tab
|
||||
typeSelected[tabSelected] = newContent
|
||||
binding.profileTypeTitle.defaultHintTextColor = ColorStateList.valueOf(rh.gac( this, if (tab == 0) R.attr.helperProfileColor else R.attr.examinedProfileColor))
|
||||
|
||||
// show new content
|
||||
// Show new content
|
||||
binding.profileType.setText(
|
||||
when (typeSelected[tabSelected]) {
|
||||
ProfileType.MOTOL_DEFAULT -> rh.gs(R.string.motoldefaultprofile)
|
||||
|
@ -295,28 +280,27 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
ProfileType.CURRENT -> rh.gs(R.string.currentprofile)
|
||||
ProfileType.AVAILABLE_PROFILE -> rh.gs(R.string.availableprofile)
|
||||
ProfileType.PROFILE_SWITCH -> rh.gs(R.string.careportal_profileswitch)
|
||||
}
|
||||
},
|
||||
false
|
||||
)
|
||||
binding.defaultProfile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility()
|
||||
binding.currentProfile.visibility = (newContent == ProfileType.CURRENT).toVisibility()
|
||||
binding.availableProfile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility()
|
||||
binding.profileSwitch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility()
|
||||
|
||||
// restore selected values
|
||||
// Restore selected values
|
||||
binding.age.value = ageUsed[tabSelected]
|
||||
binding.weight.value = weightUsed[tabSelected]
|
||||
binding.tdd.value = tddUsed[tabSelected]
|
||||
binding.basalPctFromTdd.value = pctUsed[tabSelected]
|
||||
|
||||
binding.basalPctFromTddRow.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility()
|
||||
if (profileList.isNotEmpty())
|
||||
binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString())
|
||||
if (profileSwitch.isNotEmpty())
|
||||
binding.profileswitchList.setText(profileSwitch[profileSwitchUsed[tabSelected]].originalCustomizedName)
|
||||
if (profileList.isNotEmpty()) {
|
||||
binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString(), false)
|
||||
}
|
||||
if (profileSwitch.isNotEmpty()) {
|
||||
binding.profileswitchList.setText(profileSwitch[profileSwitchUsed[tabSelected]].originalCustomizedName, false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setBackgroundColorOnSelected(tab: Int) {
|
||||
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))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -345,6 +345,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
|
||||
runOnUiThread {
|
||||
_binding ?: return@runOnUiThread
|
||||
if (carbsPassedIntoWizard != 0.0) {
|
||||
binding.carbsInput.value = carbsPassedIntoWizard
|
||||
}
|
||||
|
|
|
@ -178,6 +178,21 @@ class Objective2(injector: HasAndroidInjector) : Objective(injector, "exam", R.s
|
|||
.option(Option(R.string.iob_negiob, true))
|
||||
.option(Option(R.string.iob_posiob, true))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob_question, "cob1")
|
||||
.option(Option(R.string.cob_longer, true))
|
||||
.option(Option(R.string.cob_shorter, false))
|
||||
.option(Option(R.string.cob_no_effect, false))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob2_question, "cob2")
|
||||
.option(Option(R.string.cob2_longer, false))
|
||||
.option(Option(R.string.cob2_shorter, true))
|
||||
.option(Option(R.string.cob2_no_effect, false))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob3_question, "cob3")
|
||||
.option(Option(R.string.cob3_longer, false))
|
||||
.option(Option(R.string.cob3_shorter, false))
|
||||
.option(Option(R.string.cob3_no_effect, true))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.breadgrams_label, R.string.blank, "breadgrams")
|
||||
.option(Option(R.string.breadgrams_grams, true))
|
||||
.option(Option(R.string.breadgrams_exchange, false))
|
||||
|
|
|
@ -100,7 +100,6 @@ class AutotuneFragment : DaggerFragment() {
|
|||
)
|
||||
binding.autotuneRun.setOnClickListener {
|
||||
val daysBack = SafeParse.stringToInt(binding.tuneDays.text)
|
||||
autotunePlugin.calculationRunning = true
|
||||
autotunePlugin.lastNbDays = daysBack.toString()
|
||||
log("Run Autotune $profileName, $daysBack days")
|
||||
Thread {
|
||||
|
@ -126,7 +125,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.tunedProfile?.let { tunedProfile ->
|
||||
showConfirmation(requireContext(),
|
||||
rh.gs(R.string.autotune_copy_localprofile_button),
|
||||
rh.gs(R.string.autotune_copy_local_profile_message) + "\n" + localName + " " + dateUtil.dateAndTimeString(autotunePlugin.lastRun),
|
||||
rh.gs(R.string.autotune_copy_local_profile_message) + "\n" + localName,
|
||||
Runnable {
|
||||
localProfilePlugin.addProfile(localProfilePlugin.copyFrom(tunedProfile.getProfile(circadian), localName))
|
||||
rxBus.send(EventLocalProfileChanged())
|
||||
|
|
|
@ -39,7 +39,7 @@ open class AutotuneIob @Inject constructor(
|
|||
private val autotuneFS: AutotuneFS
|
||||
) {
|
||||
|
||||
private val nsTreatments = ArrayList<NsTreatment>()
|
||||
private var nsTreatments = ArrayList<NsTreatment>()
|
||||
private var dia: Double = Constants.defaultDIA
|
||||
var boluses: ArrayList<Bolus> = ArrayList()
|
||||
var meals = ArrayList<Carbs>()
|
||||
|
@ -59,14 +59,28 @@ open class AutotuneIob @Inject constructor(
|
|||
initializeTreatmentData(from - range(), to)
|
||||
initializeTempBasalData(from - range(), to, tunedProfile)
|
||||
initializeExtendedBolusData(from - range(), to, tunedProfile)
|
||||
tempBasals.sortWith { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
// Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
|
||||
addNeutralTempBasal(from - range(), to, tunedProfile)
|
||||
nsTreatments.sortWith { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() }
|
||||
this.boluses.sortWith { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
sortTempBasal()
|
||||
addNeutralTempBasal(from - range(), to, tunedProfile) // Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
|
||||
sortNsTreatments()
|
||||
sortBoluses()
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortTempBasal() {
|
||||
tempBasals = ArrayList(tempBasals.toList().sortedWith { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() })
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortNsTreatments() {
|
||||
nsTreatments = ArrayList(nsTreatments.toList().sortedWith { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() })
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortBoluses() {
|
||||
boluses = ArrayList(boluses.toList().sortedWith { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() })
|
||||
}
|
||||
|
||||
private fun initializeBgreadings(from: Long, to: Long) {
|
||||
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet()
|
||||
}
|
||||
|
@ -146,6 +160,7 @@ open class AutotuneIob @Inject constructor(
|
|||
|
||||
// addNeutralTempBasal will add a fake neutral TBR (100%) to have correct basal rate in exported file for periods without TBR running
|
||||
// to be able to compare results between oref0 algo and aaps
|
||||
@Synchronized
|
||||
private fun addNeutralTempBasal(from: Long, to: Long, tunedProfile: ATProfile) {
|
||||
var previousStart = to
|
||||
for (i in tempBasals.indices) {
|
||||
|
@ -180,6 +195,7 @@ open class AutotuneIob @Inject constructor(
|
|||
|
||||
// toSplittedTimestampTB will split all TBR across hours in different TBR with correct absolute value to be sure to have correct basal rate
|
||||
// even if profile rate is not the same
|
||||
@Synchronized
|
||||
private fun toSplittedTimestampTB(tb: TemporaryBasal, tunedProfile: ATProfile) {
|
||||
var splittedTimestamp = tb.timestamp
|
||||
val cutInMilliSec = T.mins(60).msecs() //30 min to compare with oref0, 60 min to improve accuracy
|
||||
|
@ -295,7 +311,7 @@ open class AutotuneIob @Inject constructor(
|
|||
return result
|
||||
}
|
||||
|
||||
|
||||
@Synchronized
|
||||
fun glucoseToJSON(): String {
|
||||
val glucoseJson = JSONArray()
|
||||
for (bgreading in glucose)
|
||||
|
@ -303,6 +319,7 @@ open class AutotuneIob @Inject constructor(
|
|||
return glucoseJson.toString(2)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun bolusesToJSON(): String {
|
||||
val bolusesJson = JSONArray()
|
||||
for (bolus in boluses)
|
||||
|
@ -310,6 +327,7 @@ open class AutotuneIob @Inject constructor(
|
|||
return bolusesJson.toString(2)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun nsHistoryToJSON(): String {
|
||||
val json = JSONArray()
|
||||
for (t in nsTreatments) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import info.nightscout.androidaps.utils.MidnightTime
|
|||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
|
@ -65,7 +66,7 @@ class AutotunePlugin @Inject constructor(
|
|||
), Autotune {
|
||||
@Volatile override var lastRunSuccess: Boolean = false
|
||||
@Volatile var result: String = ""
|
||||
@Volatile var calculationRunning: Boolean = false
|
||||
@Volatile override var calculationRunning: Boolean = false
|
||||
@Volatile var lastRun: Long = 0
|
||||
@Volatile var selectedProfile = ""
|
||||
@Volatile var lastNbDays: String = ""
|
||||
|
@ -76,21 +77,34 @@ class AutotunePlugin @Inject constructor(
|
|||
private lateinit var profile: Profile
|
||||
val autotuneStartHour: Int = 4
|
||||
|
||||
override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String): String {
|
||||
override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String) {
|
||||
lastRunSuccess = false
|
||||
if (calculationRunning) {
|
||||
aapsLogger.debug(LTag.AUTOMATION, "Autotune run detected, Autotune Run Cancelled")
|
||||
return
|
||||
}
|
||||
calculationRunning = true
|
||||
tunedProfile = null
|
||||
updateButtonVisibility = View.GONE
|
||||
lastRunSuccess = false
|
||||
var logResult = ""
|
||||
result = ""
|
||||
if (profileFunction.getProfile() == null) {
|
||||
result = rh.gs(R.string.profileswitch_ismissing)
|
||||
return result
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
val detailedLog = sp.getBoolean(R.string.key_autotune_additional_log, false)
|
||||
calculationRunning = true
|
||||
lastNbDays = "" + daysBack
|
||||
lastRun = dateUtil.now()
|
||||
val profileStore = activePlugin.activeProfileSource.profile ?: return rh.gs(R.string.profileswitch_ismissing)
|
||||
val profileStore = activePlugin.activeProfileSource.profile
|
||||
if (profileStore == null) {
|
||||
result = rh.gs(R.string.profileswitch_ismissing)
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
selectedProfile = if (profileToTune.isEmpty()) profileFunction.getProfileName() else profileToTune
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = profileStore.getSpecificProfile(profileToTune)?.let { ProfileSealed.Pure(it) } ?: currentProfile
|
||||
|
@ -144,11 +158,11 @@ class AutotunePlugin @Inject constructor(
|
|||
if (tunedProfile == null) {
|
||||
result = rh.gs(R.string.autotune_error)
|
||||
log("TunedProfile is null on day ${i + 1}")
|
||||
calculationRunning = false
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
autotuneFS.exportResult(result)
|
||||
autotuneFS.exportLogAndZip(lastRun)
|
||||
return result
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
}
|
||||
result = rh.gs(R.string.autotune_result, dateUtil.dateAndTimeString(lastRun))
|
||||
|
@ -193,13 +207,16 @@ class AutotunePlugin @Inject constructor(
|
|||
}
|
||||
|
||||
tunedProfile?.let {
|
||||
lastRunSuccess = true
|
||||
saveLastRun()
|
||||
lastRunSuccess = true
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return result
|
||||
return
|
||||
}
|
||||
return rh.gs(R.string.autotune_error)
|
||||
result = rh.gs(R.string.autotune_error)
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
|
||||
private fun showResults(tunedProfile: ATProfile?, pumpProfile: ATProfile): String {
|
||||
|
|
|
@ -134,7 +134,7 @@ class DataLayerListenerServiceMobile : WearableListenerService() {
|
|||
aapsLogger.debug(LTag.WEAR, "Nodes: ${capabilityInfo.nodes.joinToString(", ") { it.displayName + "(" + it.id + ")" }}")
|
||||
val bestNode = pickBestNodeId(capabilityInfo.nodes)
|
||||
transcriptionNodeId = bestNode?.id
|
||||
wearPlugin.connectedDevice = bestNode?.displayName ?: "---"
|
||||
wearPlugin.connectedDevice = bestNode?.displayName ?: rh.gs(R.string.no_watch_connected)
|
||||
rxBus.send(EventWearUpdateGui())
|
||||
aapsLogger.debug(LTag.WEAR, "Selected node: ${bestNode?.displayName} $transcriptionNodeId")
|
||||
rxBus.send(EventMobileToWear(EventData.ActionPing(System.currentTimeMillis())))
|
||||
|
|
|
@ -23,6 +23,7 @@ import info.nightscout.androidaps.extensions.toVisibility
|
|||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.GlucoseUnit
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
|
@ -52,6 +53,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
@Inject lateinit var activePlugin: ActivePlugin
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var hardLimits: HardLimits
|
||||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
@Inject lateinit var dateUtil: DateUtil
|
||||
|
@ -117,6 +119,11 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
})
|
||||
binding.diaLabel.labelFor = binding.dia.editTextId
|
||||
binding.unlock.setOnClickListener { queryProtection() }
|
||||
|
||||
val profiles = localProfilePlugin.profile?.getProfileList() ?: ArrayList()
|
||||
val activeProfile = profileFunction.getProfileName()
|
||||
val profileIndex = profiles.indexOf(activeProfile)
|
||||
localProfilePlugin.currentProfileIndex = if (profileIndex >= 0) profileIndex else 0
|
||||
}
|
||||
|
||||
fun build() {
|
||||
|
@ -387,13 +394,14 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
|
||||
private fun processVisibility(position: Int) {
|
||||
binding.diaPlaceholder.visibility = (position == 0).toVisibility()
|
||||
binding.ic.visibility = (position == 1).toVisibility()
|
||||
binding.isf.visibility = (position == 2).toVisibility()
|
||||
binding.basal.visibility = (position == 3).toVisibility()
|
||||
binding.target.visibility = (position == 4).toVisibility()
|
||||
binding.ic.visibility = (position == 1).toVisibility()
|
||||
binding.isf.visibility = (position == 2).toVisibility()
|
||||
binding.basal.visibility = (position == 3).toVisibility()
|
||||
binding.target.visibility = (position == 4).toVisibility()
|
||||
}
|
||||
|
||||
private fun updateProtectedUi() {
|
||||
_binding ?: return
|
||||
val isLocked = protectionCheck.isLocked(ProtectionCheck.Protection.PREFERENCES)
|
||||
binding.mainLayout.visibility = isLocked.not().toVisibility()
|
||||
binding.unlock.visibility = isLocked.toVisibility()
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package info.nightscout.androidaps.utils.stats
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.Typeface
|
||||
import android.util.LongSparseArray
|
||||
|
@ -99,9 +98,19 @@ class TddCalculator @Inject constructor(
|
|||
return result
|
||||
}
|
||||
|
||||
fun calculateToday(): TotalDailyDose {
|
||||
var startTime = MidnightTime.calc(dateUtil.now())
|
||||
val endTime = dateUtil.now()
|
||||
return calculate(startTime, endTime)
|
||||
}
|
||||
|
||||
fun calculateDaily(startHours: Long, endHours: Long): TotalDailyDose {
|
||||
val startTime = dateUtil.now() + T.hours(hour = startHours).msecs()
|
||||
val endTime = dateUtil.now() + T.hours(hour = endHours).msecs()
|
||||
return calculate(startTime, endTime)
|
||||
}
|
||||
|
||||
fun calculate(startTime: Long, endTime: Long): TotalDailyDose {
|
||||
val tdd = TotalDailyDose(timestamp = startTime)
|
||||
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
|
||||
.filter { it.type != Bolus.Type.PRIMING }
|
||||
|
@ -147,10 +156,10 @@ class TddCalculator @Inject constructor(
|
|||
return totalTdd
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
fun stats(context: Context): TableLayout {
|
||||
val tdds = calculate(7)
|
||||
val averageTdd = averageTDD(tdds)
|
||||
val todayTdd = calculateToday()
|
||||
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)
|
||||
return TableLayout(context).also { layout ->
|
||||
layout.layoutParams = TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)
|
||||
|
@ -172,6 +181,13 @@ class TddCalculator @Inject constructor(
|
|||
})
|
||||
layout.addView(averageTdd.toTableRow(context, rh, tdds.size(), includeCarbs = true))
|
||||
}
|
||||
layout.addView(TextView(context).apply {
|
||||
text = rh.gs(R.string.today)
|
||||
setTypeface(typeface, Typeface.BOLD)
|
||||
gravity = Gravity.CENTER_HORIZONTAL
|
||||
setTextAppearance(android.R.style.TextAppearance_Material_Medium)
|
||||
})
|
||||
layout.addView(todayTdd.toTableRow(context, rh, dateUtil, includeCarbs = true))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ public class TimeListEdit {
|
|||
numberPickers1[position].setTextWatcher(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText());
|
||||
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText(), 0.0);
|
||||
Double value2 = value2(position);
|
||||
if (data2 != null && value1 > value2) {
|
||||
value2 = value1;
|
||||
|
@ -209,7 +209,7 @@ public class TimeListEdit {
|
|||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
Double value1 = value1(position);
|
||||
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText());
|
||||
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText(), 0.0);
|
||||
if (data2 != null && value2 < value1) {
|
||||
value1 = value2;
|
||||
numberPickers1[position].setValue(value1);
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
|
|
|
@ -5,28 +5,6 @@
|
|||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/filter"
|
||||
app:endIconMode="clear_text">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/pref_filter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="@string/filter"
|
||||
android:gravity="start"
|
||||
android:textStyle="bold"
|
||||
android:inputType="text"
|
||||
android:background="@color/transparent"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -12,52 +12,38 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tab_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/defaultBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="10dp">
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/menu1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/profile1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/menu2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/profile2" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.material.tabs.TabLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/profile_type_title"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:hint="@string/profiletype">
|
||||
android:hint="@string/profiletype"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/profile_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
@ -206,21 +192,18 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/selected_profile">
|
||||
android:hint="@string/selected_profile"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/available_profile_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
@ -233,21 +216,19 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/careportal_profileswitch">
|
||||
android:hint="@string/careportal_profileswitch"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/profileswitch_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="3dp"
|
||||
android:contentDescription="@string/chart_menu"
|
||||
android:paddingTop="5dp"
|
||||
app:srcCompat="@drawable/ic_arrow_drop_down_white_24dp" />
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="---"
|
||||
android:text="@string/no_watch_connected"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
|
|
11
app/src/main/res/menu/menu_preferences.xml
Normal file
11
app/src/main/res/menu/menu_preferences.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_search"
|
||||
android:title="@string/search"
|
||||
app:showAsAction="always"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView" />
|
||||
|
||||
</menu>
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_default"
|
||||
android:title="@string/motoldefaultprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_default_dpv"
|
||||
android:title="@string/dpvdefaultprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_current"
|
||||
android:title="@string/currentprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_available"
|
||||
android:title="@string/availableprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_profileswitch"
|
||||
android:title="@string/careportal_profileswitch" />
|
||||
|
||||
</menu>
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Lliurar un bolus amb part de la insulina que falta utilitzant una jeringa/ploma o el menú d\'encebat.</string>
|
||||
<string name="wronginsulin_donothing">No fer res i permetre que AndroidAPS corregeixi els possibles valors alts de glucèmia que es produeixin.</string>
|
||||
<string name="iob_label">Insulina \"a bord\" (IOB)</string>
|
||||
<string name="iob_which">Marqueu totes les respostes correctes.</string>
|
||||
<string name="iob_value">El valor d\'IOB es veu afectat per les basals temporals lliurades.</string>
|
||||
<string name="iob_hightemp">Una basal temporal alta no serà lliurada si la glucèmia està per sota de l\'objectiu.</string>
|
||||
<string name="iob_posiob">Un valor d\'IOB positiu durant un període de temps important suggereix resistència a la insulina o àpats no anunciats.</string>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Porovnat hodnoty v AndroidAPS s hodnotami v historii pumpy (pokud to pumpa podporuje).</string>
|
||||
<string name="wronginsulin_prime">Pošlete bolus na vypočtený „chybějící“ inzulín buď injekční stříkačkou nebo perem nebo pomocí plnění na pumpě.</string>
|
||||
<string name="wronginsulin_donothing">Neudělejte nic a dovolte AndroidAPS opravit jakoukoliv výslednou vysokou hladinu glukózy v krvi.</string>
|
||||
<string name="cob_label">Zbývající sacharidy (COB)</string>
|
||||
<string name="cob_question">Jak změna hodnoty citlivosti ovlivňuje výpočet COB?</string>
|
||||
<string name="cob_longer">Zvýšení hodnoty citlivosti prodlouží dobu pohlcování sacharidů</string>
|
||||
<string name="cob_shorter">Zvýšení hodnoty citlivosti zkrátí dobu pohlcování sacharidů</string>
|
||||
<string name="cob_no_effect">Zvýšení citlivosti neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="cob2_question">Jak změna inzulíno-sacharidového poměru ovlivňuje výpočet COB?</string>
|
||||
<string name="cob2_longer">Zvýšení hodnoty inzulíno-sacharidového poměru prodlouží dobu pohlcování sacharidů</string>
|
||||
<string name="cob2_shorter">Zvýšení hodnoty inzulíno-sacharidového poměru zkrátí dobu pohlcování sacharidů</string>
|
||||
<string name="cob2_no_effect">Zvýšení inzulíno-sacharidového poměru neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="cob3_question">Jak procentuální změna profilu ovlivňuje výpočet COB?</string>
|
||||
<string name="cob3_longer">Nastavením profilu na 150% dojde k prodloužení doby pohlcování sacharidů</string>
|
||||
<string name="cob3_shorter">Nastavením profilu na 150% dojde ke zkrácení doby pohlcování sacharidů</string>
|
||||
<string name="cob3_no_effect">Nastavení profilu na 150% neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="iob_label">Aktivní inzulín (IOB)</string>
|
||||
<string name="iob_which">Zatrhněte všechny správné odpovědi.</string>
|
||||
<string name="iob_value">Hodnota IOB je ovlivněna vydanými dočasnými bazály.</string>
|
||||
<string name="iob_hightemp">Vysoký dočasný bazál nebude spuštěn, pokud je Vaše glykémie nižší než cíl.</string>
|
||||
<string name="iob_negiob">Negativní IOB po značnou dobu bez cvičení naznačuje, že váš profil je příliš \"silný\" a ve vašem profilu je potřeba méně inzulínu.</string>
|
||||
|
|
|
@ -1043,4 +1043,5 @@
|
|||
<string name="description_source_aidex">Přijímat hodnoty glykémie ze senzoru GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Zablokováno možností nabíjení</string>
|
||||
<string name="blocked_by_connectivity">Zablokováno možností připojení</string>
|
||||
<string name="no_watch_connected">(Žádné hodinky nejsou připojeny)</string>
|
||||
</resources>
|
||||
|
|
|
@ -136,7 +136,6 @@
|
|||
<string name="wronginsulin_prime">Bolus en del af din beregnede \"glemte\" insulin med enten sprøjter / pen eller brug af en kanylefyldning.</string>
|
||||
<string name="wronginsulin_donothing">Gør ingenting og tillad AndroidAPS at rette op på højt blodsukker.</string>
|
||||
<string name="iob_label">Insulin om bord (IOB)</string>
|
||||
<string name="iob_which">Tjek alle de korrekte svar.</string>
|
||||
<string name="iob_value">IOB-værdi påvirkes af midlertidige basaler.</string>
|
||||
<string name="iob_hightemp">Høj midlertidlig basal vil ikke blive givet, når dit blodsukker er under målet.</string>
|
||||
<string name="iob_negiob">Negative IOB i en længere periode uden motion tyder på, at din profil er for stærk, og at der er behov for mindre insulin i dine indstillinger.</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Gib einen Teil-Bolus des \'nicht erhaltenen\' Insulins mit Spritze / Pen oder durch Befüllen der Kanüle.</string>
|
||||
<string name="wronginsulin_donothing">Unternimm nichts und lass AndroidAPS die entstehenden hohen Glukosewerte korrigieren.</string>
|
||||
<string name="iob_label">Aktives Insulin (IOB)</string>
|
||||
<string name="iob_which">Kreuze alle richtigen Antworten an.</string>
|
||||
<string name="iob_value">IOB wird von den abgegebenen temporären Basalraten beeinflusst.</string>
|
||||
<string name="iob_hightemp">Eine hohe temporäre Basalrate wird nicht abgegeben, wenn der BZ unterhalb des Zielwerts liegt.</string>
|
||||
<string name="iob_negiob">Ein negativer IOB über einen längeren Zeitraum bei fehlender Bewegung deutet darauf hin, dass Dein Profil zu stark ist und weniger Insulin in Deinen Einstellungen benötigt wird.</string>
|
||||
|
|
|
@ -136,8 +136,14 @@
|
|||
<string name="wronginsulin_compare">Comparar valores en AndroidAPS con el historial de la bomba (si la bomba lo soporta).</string>
|
||||
<string name="wronginsulin_prime">Bolo una proporción de la insulina calculada “perdida” por jeringa/pluma o usando menú de llenado.</string>
|
||||
<string name="wronginsulin_donothing">No haga nada y permite que AndroidAPS corrija cualquier nivel alto de glucosa en la sangre resultante.</string>
|
||||
<string name="cob_label">Carbohidratos activos (COB)</string>
|
||||
<string name="cob_question">¿Cómo afecta el cambio del valor ISF al cálculo de COB?</string>
|
||||
<string name="cob_no_effect">Incrementar el ISF no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="cob2_question">¿Cómo afecta cambiar los valores de IC a los cálculos de COB?</string>
|
||||
<string name="cob2_no_effect">Incrementar el IC no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="cob3_question">¿Cómo afecta el cambio de porcentaje del perfil al cálculo de los COB?</string>
|
||||
<string name="cob3_no_effect">Establecer el perfil a 150% no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="iob_label">Insulina a bordo (IOB)</string>
|
||||
<string name="iob_which">Marca todas las respuestas correctas.</string>
|
||||
<string name="iob_value">El valor del IOB se ve afectado por las bases temporales ejecutadas.</string>
|
||||
<string name="iob_hightemp">No se dará alta tasa basal temporal cuando su nivel de azúcar en sangre esté por debajo del objetivo.</string>
|
||||
<string name="iob_negiob">El IOB negativo durante un período sustancial en ausencia de ejercicio sugiere que tu perfil es demasiado fuerte y que se necesita menos insulina en tus ajustes.</string>
|
||||
|
|
|
@ -1043,4 +1043,5 @@
|
|||
<string name="description_source_aidex">Recibir los valores de glucosa de GlucoRx Aidex CGMS</string>
|
||||
<string name="blocked_by_charging">Bloqueado por opciones de carga</string>
|
||||
<string name="blocked_by_connectivity">Bloqueado por opciones de conectividad</string>
|
||||
<string name="no_watch_connected">(Ningún reloj conectado)</string>
|
||||
</resources>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Faites un bolus du montant de votre insuline calculée « manquante » soit par seringue / stylo ou en utilisant un amorçage.</string>
|
||||
<string name="wronginsulin_donothing">Ne faites rien et laissez AndroidAPS corriger tout taux élevé de glycémie qui en résulte.</string>
|
||||
<string name="iob_label">Insuline Active (IA)</string>
|
||||
<string name="iob_which">Sélectionnez toutes les bonnes réponses.</string>
|
||||
<string name="iob_value">La valeur de l\'IA est impactée par les débits de basal temporaires émis.</string>
|
||||
<string name="iob_hightemp">Une basale temp haute ne sera pas donnée quand votre glycémie est en dessous de la cible.</string>
|
||||
<string name="iob_negiob">Une IA négative pendant une période significative en l\'absence d\'exercice indique que votre profil est trop fort et qu\'il faut moins d\'insuline dans vos paramètres.</string>
|
||||
|
|
|
@ -434,6 +434,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="ns_localbroadcasts_title">Activer les transmissions locales</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">SI dynamique</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Facteur d\'ajustement Si dynamique %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Facteur d\'ajustement pour Si dynamique. Définissez plus de 100 % pour des corrections plus agressives et moins de 100 % pour des corrections moins agressives.</string>
|
||||
<string name="enableuam">Activer RNS</string>
|
||||
<string name="enablesmb">Activer SMB</string>
|
||||
<string name="enablesmb_summary">Utiliser les Super Micro Bolus au lieu des débits de base temporaires pour une action rapide</string>
|
||||
|
@ -968,6 +970,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="wear_action_tempt_max_bg_error">Gly maxi hors limite!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Cible temporaire:\nMin: %1$s\nMax : %2$s\nDurée : %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Cible temporaire:\nCible: %1$s\nDurée: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Cible temp:\nRaison: %1$s\nCible : %2$s\nDurée : %3$s</string>
|
||||
<string name="quick_wizard_message">Assistant: %1$s\nInsuline : %2$.2fU\nGlucides : %3$dg</string>
|
||||
<string name="wizard_result">Assistant Calc :\nInsuline : %1$.2fU\nGlucides : %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Afficher l\'entrée sur l\'appareil :</string>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Erogare un bolo con parte della tua insulina calcolata \"mancante\" usando una siringa/penna o la funzione caricamento.</string>
|
||||
<string name="wronginsulin_donothing">Non fare nulla e permettere ad AndroidAPS di correggere eventuali glicemie alte.</string>
|
||||
<string name="iob_label">Insulina attiva (IOB)</string>
|
||||
<string name="iob_which">Seleziona tutte le risposte corrette.</string>
|
||||
<string name="iob_value">Il valore IOB è influenzato dalle basali temporanee emesse.</string>
|
||||
<string name="iob_hightemp">Non verrà emessa una basale temporanea alta quando la tua glicemia è al di sotto del target.</string>
|
||||
<string name="iob_negiob">IOB negativo per un periodo considerevole in assenza di esercizio fisico suggerisce che il tuo profilo è troppo incisivo e che è necessaria meno insulina nelle tue impostazioni.</string>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">השוו את הרשומות שב-AndroidAPS עם היסטוריית המשאבה (אם המשאבה תומכת בכך).</string>
|
||||
<string name="wronginsulin_prime">מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime).</string>
|
||||
<string name="wronginsulin_donothing">לא לעשות דבר ולאפשר ל-AndroidAPS לתקן כל רמת סוכר גבוהה.</string>
|
||||
<string name="cob_label">פחמ\' פעילות</string>
|
||||
<string name="cob_question">איך שינויים ביחס התיקון משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob_longer">הגדלת ערך יחס התיקון תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob_shorter">הגדלת ערך יחס התיקון תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob_no_effect">הגדלת ערך יחס התיקון לא תשפיע על חישוב ספיגת הפחמימות</string>
|
||||
<string name="cob2_question">איך שינויים ביחס הפחמימות משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob2_longer">הגדלת ערך יחס הפחמימות תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob2_shorter">הגדלת ערך יחס הפחמימות תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob2_no_effect">הגדלת ערך יחס הפחמימות לא תשפיע על חישוב ספיגת הפחמימות</string>
|
||||
<string name="cob3_question">איך שינויים באחוזי הפרופיל משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob3_longer">הגדרת 150% פרופיל תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob3_shorter">הגדרת 150% פרופיל תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob3_no_effect">הגדרת 150% פרופיל לא תשפיע על חישוב משך ספיגת הפחמימות</string>
|
||||
<string name="iob_label">אינסולין פעיל בגוף (IOB)</string>
|
||||
<string name="iob_which">סמנו את כל התשובות הנכונות.</string>
|
||||
<string name="iob_value">ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו.</string>
|
||||
<string name="iob_hightemp">מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה.</string>
|
||||
<string name="iob_negiob">אינסולין פעיל שלילי לאורך זמן בו לא נעשית פעילות מצביע על כך שהפרופיל חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בפרופיל.</string>
|
||||
|
|
|
@ -1039,4 +1039,5 @@
|
|||
<string name="description_source_aidex">קבלת נתוני סוכר מחיישני GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">חסום ע\"י הגדרות טעינה</string>
|
||||
<string name="blocked_by_connectivity">חסום ע\"י הגדרות חיבור</string>
|
||||
<string name="no_watch_connected">(השעון לא מחובר)</string>
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">\"주입되지 않은\" 인슐린양을 계산하여 시린지/펜 또는 prime 기능을 사용하여 인슐린을 주입합니다.</string>
|
||||
<string name="wronginsulin_donothing">특별한 조치를 취하지 않고, AndroidAPS가 결과적으로 높은 혈당 정도를 조정할 수 있도록 합니다.</string>
|
||||
<string name="iob_label">활성 인슐린 (IOB)</string>
|
||||
<string name="iob_which">올바른 답변을 모두 체크하세요.</string>
|
||||
<string name="iob_value">IOB 값은 실행된 임시 basal의 영향을 받습니다.</string>
|
||||
<string name="iob_hightemp">혈당이 목표보다 낮을 경우 높은 임시 basal은 실행되지 않습니다.</string>
|
||||
<string name="iob_negiob">운동 없이도 음수의 IOB (마이너스 IOB) 구간이 많을 경우, 프로파일이 너무 강한 것이며 인슐린 양을 적게 설정해야 합니다.</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Susileisti trūkstamą insulino kiekį švirkštu ar naudojantis infuzinės sistemos užpildymo funkcija.</string>
|
||||
<string name="wronginsulin_donothing">Nieko nedaryti ir leisti AndroidAPS koreguoti padidėjusį gliukozės kiekį kraujyje.</string>
|
||||
<string name="iob_label">Aktyvus insulinas organizme (AIO)</string>
|
||||
<string name="iob_which">Pasirinkite visus teisingus atsakymus.</string>
|
||||
<string name="iob_value">AIO reikšmei įtakos turi nustatyta laikina valandinė bazė.</string>
|
||||
<string name="iob_hightemp">Padidinta laikina bazė nebus nustatyta, jei kraujo glikemija yra žemiau nustatyto tikslo.</string>
|
||||
<string name="iob_negiob">Jei ilgą laiką stebima neigiama AIO reikšmė ir nėra fizinio aktyvumo, tai rodo, kad jūsų nustatymai yra per „agresyvūs“ ir kad jums reikia mažiau insulino nei nustatyta.</string>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Bolus een deel van je berekende \'gemiste\' insuline door een injectiespuit/pen of door de uitvulfunctie te gebruiken.</string>
|
||||
<string name="wronginsulin_donothing">Doe niets en laat AndroidAPS de resulterende hoge bloedglucosespiegel corrigeren.</string>
|
||||
<string name="iob_label">Insuline aan boord (IOB)</string>
|
||||
<string name="iob_which">Selecteer alle juiste antwoorden.</string>
|
||||
<string name="iob_value">De IOB-waarde wordt beïnvloed door eerdere tijdelijke basaalstanden.</string>
|
||||
<string name="iob_hightemp">Een hoge tijdelijke basaal zal niet worden ingesteld wanneer je bloedsuiker onder het streefdoel ligt.</string>
|
||||
<string name="iob_negiob">Negatieve IOB voor een aanzienlijke periode vrij van inspanning, suggereert dat je profiel te hoog is ingesteld, dus dat er minder insuline nodig is.</string>
|
||||
|
|
|
@ -136,8 +136,14 @@
|
|||
<string name="wronginsulin_compare">Sammenlign verdiene i AndroidAPS og pumpehistorikken (hvis pumpen støtter dette).</string>
|
||||
<string name="wronginsulin_prime">Gi en bolus med en del av det insulinet du mangler enten med penn eller ved å bruke prime funksjonen.</string>
|
||||
<string name="wronginsulin_donothing">Ikke gjør noe og la AndroidAPS korrigere eventuelle høye blodsukkerverdier.</string>
|
||||
<string name="cob_label">Karbohydrater ombord (COB)</string>
|
||||
<string name="cob_question">Hvordan vil endring av ISF-verdi påvirke COB-beregning?</string>
|
||||
<string name="cob_no_effect">Økning av ISF påvirker ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="cob2_question">Hvordan vil endring av IC-verdi påvirke COB-beregning?</string>
|
||||
<string name="cob2_no_effect">Økning av IC påvirker ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="cob3_question">Hvordan vil endring av profil-prosent påvirke COB-beregning?</string>
|
||||
<string name="cob3_no_effect">Ved å sette profilen til 150% påvirkes ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="iob_label">Aktivt insulin (IOB)</string>
|
||||
<string name="iob_which">Marker alle riktige svar.</string>
|
||||
<string name="iob_value">IOB verdi påvirkes av midlertidige temp basaler.</string>
|
||||
<string name="iob_hightemp">Høy temp basal vil ikke bli gitt når ditt blodsukker er under målverdi.</string>
|
||||
<string name="iob_negiob">Negativ IOB i en lengre periode selv om du ikke trener tyder på at profilen din gir for mye insulin og kanskje bør reduseres i innstillingene.</string>
|
||||
|
|
|
@ -1043,4 +1043,5 @@
|
|||
<string name="description_source_aidex">Motta BS verdier fra GlucoRx Aidex CGM.</string>
|
||||
<string name="blocked_by_charging">Blokkert på grunn av ladealternativer</string>
|
||||
<string name="blocked_by_connectivity">Blokkert på grunn av tilkoblingsalternativer</string>
|
||||
<string name="no_watch_connected">(Ingen klokke tilkoblet)</string>
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Podaj obliczoną dawkę „pominiętej” insuliny za pomocą strzykawki / wstrzykiwacza lub za pomocą pompy funkcji wypełnienia.</string>
|
||||
<string name="wronginsulin_donothing">Nie rób nic i pozwól AndroidAPS na skorygowanie każdego uzyskanego wysokiego stężenia glukozy we krwi.</string>
|
||||
<string name="iob_label">Aktywna insulina (IOB)</string>
|
||||
<string name="iob_which">Sprawdź/Zaznacz wszystkie prawidłowe odpowiedzi.</string>
|
||||
<string name="iob_value">Na wartość IOB mają wpływ wykonane tymczasowe dawki bazowe.</string>
|
||||
<string name="iob_hightemp">Wysoka tymczasowa dawka bazowa nie zostanie podana, gdy twóje poziom cukru we krwi jest poniżej poziomu docelowego.</string>
|
||||
<string name="iob_negiob">Negatywne IOB utrzymujące się przez znaczny okres czasu bez wysiłku fizycznego sugeruje, że Twój profil jest zbyt silny i mniej insuliny jest wymagane w Twoich ustawieniach.</string>
|
||||
|
|
|
@ -136,7 +136,6 @@
|
|||
<string name="wronginsulin_prime">Dê uma porção do bolus calculado não administrado por meio de seringa/caneta ou usando o menu ações -> purgar/preencher.</string>
|
||||
<string name="wronginsulin_donothing">Não faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado resultante.</string>
|
||||
<string name="iob_label">Insulina ativa (IA)</string>
|
||||
<string name="iob_which">Marque todas as respostas corretas.</string>
|
||||
<string name="iob_value">O valor de IA é afetado por basais temporárias efetuadas.</string>
|
||||
<string name="iob_hightemp">Um basal alto temporário não será efetuado quando sua glicose estiver abaixo do alvo.</string>
|
||||
<string name="iob_negiob">Insulina Ativa (IA) negativa por um período substancial na ausência de exercícios, sugere que seu perfil é muito agressivo e menos insulina deve ser considerada nas suas configurações.</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Bólus uma proporção de insulina calculada \'não administrada\' ou com seringa/caneta ou purgando.</string>
|
||||
<string name="wronginsulin_donothing">Faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado que daí resulte.</string>
|
||||
<string name="iob_label">Insulina ativa (IA )</string>
|
||||
<string name="iob_which">Marque todas as respostas corretas.</string>
|
||||
<string name="iob_value">O valor do IA é afectado por basais temporárias emitidas.</string>
|
||||
<string name="iob_hightemp">Basal temporária alta não será dada quando a sua glicose estiver abaixo do alvo.</string>
|
||||
<string name="iob_negiob">IA negativa por um período substancial na ausência de exercício, sugere que o seu perfil é muito alto e é necessária menos insulina nas suas configurações.</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Bolusati o cantitate parțiala de insulina din insulina calculata ca fiind lipsa utilizând seringa/penul sau amorsarea.</string>
|
||||
<string name="wronginsulin_donothing">Nu faceți nimic și permiteți AndroidAPS să corecteze valorile mari ale glicemiei.</string>
|
||||
<string name="iob_label">Insulină activă (IOB)</string>
|
||||
<string name="iob_which">Bifați toate răspunsurile corecte.</string>
|
||||
<string name="iob_value">Valoarea IOB este afectată de bazalele temporare emise.</string>
|
||||
<string name="iob_hightemp">Rata bazala ridicata temporara nu va fi livrata atunci când glicemia este sub nivelul țintă.</string>
|
||||
<string name="iob_negiob">Un IOB negativ pentru o perioadă substanțială în absența exercițiilor fizice sugerează că profilul tău este prea puternic și este nevoie de mai puţină insulină în setările inițiale.</string>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Рассчитать и ввести «пропущенный» вами инсулин шприцем/ручкой или через кнопку заполнения канюли.</string>
|
||||
<string name="wronginsulin_donothing">Ничего не делать и позволить AndroidAPS исправить возможный высокий уровень ГК.</string>
|
||||
<string name="iob_label">Активный инсулин (IOB)</string>
|
||||
<string name="iob_which">Отметьте все правильные ответы.</string>
|
||||
<string name="iob_value">На величину IOB влияют устанавливаемые ВБС.</string>
|
||||
<string name="iob_hightemp">Высокая ВБС не будет применяться, если уровень сахара в крови ниже целевого.</string>
|
||||
<string name="iob_negiob">Отрицательный IOB в течение длительного периода при отсутствии физнагрузки указывает на то, что ваш профиль завышен и требуется снизить кол-во инсулина в настройках.</string>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<string name="objectivenotstarted">Цель %1$d не начата</string>
|
||||
<string name="objectivenotfinished">Цель %1$d не завершена</string>
|
||||
<string name="objectives_0_objective">Настройка визуализации и мониторинга, анализ базала и коэффициентов</string>
|
||||
<string name="objectives_0_gate">Убедитесь, что BG доступен в Nightscut, и данные инсулина помпы загружаются</string>
|
||||
<string name="objectives_0_gate">Убедитесь, что значения ГК и данные по инсулину помпы передаются в Nightscout</string>
|
||||
<string name="objectives_openloop_objective">Старт незамкнутого цикла</string>
|
||||
<string name="objectives_openloop_gate">Начинайте работу в режиме незамкнутого цикла и ручной подстройки величины временного базала. Установите и применяйте временные цели и временные цели по умолчанию (напр. углеводы при нагрузке или купировании гипо)</string>
|
||||
<string name="objectives_maxbasal_objective">Глубже понимаем незакольцованную систему Open Loop, включая ее рекомендации по временным базалам</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Безопасность терапии</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Макс разрешенные углеводы (г)</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Уровень ГК, ниже которого происходит остановка подачи инсулина</string>
|
||||
<string name="nav_preferences_plugin">Настройки %1$s</string>
|
||||
<string name="nav_preferences">Настройки</string>
|
||||
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
|
||||
|
@ -432,6 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Активировать локальную передачу</string>
|
||||
<string name="openapssmb">Супер микро болюс OpenAPS</string>
|
||||
<string name="openaps_smb_dynamic_isf">Динамический ISF</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Коэффициент регулировки динамического диапазона чувствительности ISF %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Коэффициент корректировки динамического диапазона чувствительности ISF. Установите более 100% для агрессивных доз коррекции и менее 100% для менее агрессивной коррекции.</string>
|
||||
<string name="enableuam">Включить непредвиденный прием пищи UAM</string>
|
||||
<string name="enablesmb">Включить супер микро болюс SMB</string>
|
||||
<string name="enablesmb_summary">Для ускорения действия используйте супер микро болюсы SMB вместо временного базала</string>
|
||||
|
@ -590,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Эта величина называется Max IOB в OpenAPS context\nOpenAPS не будет добавлять инсулин если текущий активный инсулин ее превысит</string>
|
||||
<string name="absorption_cutoff_title">Максимальное время усваимости пищи [h]</string>
|
||||
<string name="absorption_cutoff_summary">Время, за которое любая еда считается усвоившейся. Оставшиеся углеводы не будут учтены.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Значение уровня ГК, на котором происходит приостановка подачи инсулина. Значения по умолчанию являются стандартными для целевого диапазона. Пользователь может установить значения между 60 мг/дл (3.3 ммоль/л) и 100 мг/дл (5.5 ммоль/л) Параметры, заданные ниже 65/3.6 приводят к использованию значений по умолчанию</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Показать поле примечаний в диалогах назначений</string>
|
||||
<string name="next_button">Далее</string>
|
||||
<string name="previous_button">Назад</string>
|
||||
|
@ -965,6 +969,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Макс ГК вне диапазона!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">ВремЦель:\nМин: %1$s\nМакс.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">ВремЦель:\nЦель: %1$s\nДлительность: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ВремЦель:\nПричина: %1$s\nЦель.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="quick_wizard_message">Мастер: %1$s\nИнсулин: %2$.2fЕд\nУгл: %3$dg</string>
|
||||
<string name="wizard_result">Мастер:\nИнсулин: %1$.2fЕд\nУгл: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Pošlite bolus na vypočítaný „chýbajúci“ inzulín buď injekčnou striekačkou, alebo perom, alebo pomocou plnenia na pumpe.</string>
|
||||
<string name="wronginsulin_donothing">Nerobte nič a dovoľte AndroidAPS upraviť akúkoľvek výslednú vysokú hladinu glukózy v krvi.</string>
|
||||
<string name="iob_label">Aktívny inzulín (IOB)</string>
|
||||
<string name="iob_which">Zaškrtnite všetky správne odpovede.</string>
|
||||
<string name="iob_value">Hodnota IOB je ovplyvnená vydanými dočasnými bazálmi.</string>
|
||||
<string name="iob_hightemp">Vysoký dočasný bazál nebude spustený, pokiaľ je Vaša glykémia nižšia, ako cieľ.</string>
|
||||
<string name="iob_negiob">Negatívne IOB po značnú dobu bez cvičenia naznačuje, že váš profil je príliš \"silný\" a vo vašom profile je potrebného menej inzulínu.</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Ge en bolus med en del av det insulin du saknar antingen med penna eller genom att använda förfyllningsfunktionen.</string>
|
||||
<string name="wronginsulin_donothing">Gör ingenting och låt AndroidAPS korrigera eventuella höga blodglukosnivåer.</string>
|
||||
<string name="iob_label">Aktivt Insulin (IOB)</string>
|
||||
<string name="iob_which">Markera ett eller flera alternativ.</string>
|
||||
<string name="iob_value">IOB-värdet påverkas av temp basaler.</string>
|
||||
<string name="iob_hightemp">Hög temp basal kommer inte att ges när ditt BG-värde är under målet.</string>
|
||||
<string name="iob_negiob">Negativ IOB under en längre period även om du inte motionerat, tyder på att din profil ger för mycket insulin.</string>
|
||||
|
|
|
@ -136,16 +136,22 @@
|
|||
<string name="wronginsulin_compare">AndroidAPS ve pompa geçmişindeki değerleri karşılaştırın (pompa bunu destekliyorsa).</string>
|
||||
<string name="wronginsulin_prime">Şırınga/kalem veya başlatma kullanarak hesaplanan \"eksik\" insülininizi bolus olarak karşılayın.</string>
|
||||
<string name="wronginsulin_donothing">Hiçbir şey yapmayın ve AndroidAPS\'in ortaya çıkabilecek yüksek kan şekeri seviyesini düzeltmesine müsade edin.</string>
|
||||
<string name="iob_label">Aktif İnsülin (IOB)</string>
|
||||
<string name="iob_which">Tüm doğru cevapları kontrol edin.</string>
|
||||
<string name="iob_value">IOB değeri, verilen geçici bazallardan etkilenir.</string>
|
||||
<string name="cob_label">Aktif Karbonhidrat (AKRB)</string>
|
||||
<string name="cob_question">İDF değerinin değiştirilmesi AKRB (Aktif karbonhidrat) hesaplamasını nasıl etkiler?</string>
|
||||
<string name="cob_no_effect">Artan İDF, hesaplanan karbonhidrat emilimini etkilemez</string>
|
||||
<string name="cob2_question">Değişen Kİ değeri AKRB hesaplamasını nasıl etkiler?</string>
|
||||
<string name="cob2_no_effect">Artan Kİ oranı, hesaplanan karbonhidrat emilimini etkilemez</string>
|
||||
<string name="cob3_question">Değişen profil yüzdesi AKRB hesaplamasını nasıl etkiler?</string>
|
||||
<string name="cob3_no_effect">Profili %150\'ye ayarlamak hesaplanan karbonhidrat emilimini etkilemez</string>
|
||||
<string name="iob_label">Aktif İnsülin (AİNS)</string>
|
||||
<string name="iob_value">AİNS değeri, verilen geçici bazallardan etkilenir.</string>
|
||||
<string name="iob_hightemp">Kan şekeriniz hedefin altına düştüğünde yüksek geçici bazal verilmeyecektir.</string>
|
||||
<string name="iob_negiob">Egzersiz yapmadığınız halde uzun bir dönem için negatif IOB, profilinizin çok güçlü olduğunu ve ayarlarınızda daha az insüline ihtiyaç duyulduğunu gösterir.</string>
|
||||
<string name="iob_negiob">Egzersiz yapmadığınız halde uzun bir dönem için negatif AİNS, profilinizin çok güçlü olduğunu ve ayarlarınızda daha az insüline ihtiyaç duyulduğunu gösterir.</string>
|
||||
<string name="iob_posiob">Önemli bir süre için pozitif IOB, insülin direncini veya habersiz öğünleri gösterir.</string>
|
||||
<string name="breadgrams_label">Karbonhidrat girişi ve boluslar</string>
|
||||
<string name="breadgrams_grams">Tüketilen karbonhidratları tahmin etmek ve kaydetmek için sadece gram kullanılmalıdır.</string>
|
||||
<string name="breadgrams_exchange">Tüketilen karbonhidratlar uygun bir değişim sistemi kullanılarak kaydedilebilir (örn. DAFNE \"CHO\" değişimleri veya Avrupa \"Ekmek Birimleri\").</string>
|
||||
<string name="breadgrams_decay">AndroidAPS, karbonhidrat \"çözünmesini\" tahmin etmek ve COB\'ı hesaplamak için dinamik bir model kullanır.</string>
|
||||
<string name="breadgrams_decay">AndroidAPS, karbonhidrat \"çözünmesini\" tahmin etmek ve AKRB\'ı hesaplamak için dinamik bir model kullanır.</string>
|
||||
<string name="breadgrams_calc">Kan şekeri seviyeleri kabul edilebilir değerlerin dışındaysa (çok düşük veya çok yüksek), karbonhidrat veya insülin düzeltmeleri için öneriler sağlamak için bolus hesaplayıcı kullanılabilir.</string>
|
||||
<string name="breadgrams_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u</string>
|
||||
<string name="extendedcarbs_label">yayma-karbonhidratlar</string>
|
||||
|
@ -158,11 +164,11 @@
|
|||
<string name="nsclient_label">Uzaktan İzleme</string>
|
||||
<string name="nsclient_howcanyou">AndroidAPS\'i (örneğin çocuğunuz için) uzaktan nasıl izleyebilirsiniz?</string>
|
||||
<string name="nsclient_nightscout">NS Client uygulaması, Nightscout uygulaması ve Nightscout web sayfasının tümü, AndroidAPS\'i uzaktan takip etmenize olanak tanır.</string>
|
||||
<string name="nsclient_dexcomfollow">Diğer uygulamalar (ör. Dexcom takip, xDrip) bazı parametreleri (ör. kan şekeri/sensör değerleri) uzaktan takip etmenize izin verir, ancak farklı algoritma kullanımı, hatalı IOB veya COB değerlerine sebep olabilir.</string>
|
||||
<string name="nsclient_dexcomfollow">Diğer uygulamalar (ör. Dexcom takip, xDrip) bazı parametreleri (ör. kan şekeri/sensör değerleri) uzaktan takip etmenize izin verir, ancak farklı algoritma kullanımı, hatalı AİNS veya AKRB değerlerine sebep olabilir.</string>
|
||||
<string name="nsclient_data">AndroidAPS\'yi uzaktan takip etmek için her iki cihazın da internet erişimine sahip olması gerekir (ör. Wi-Fi veya mobil/hücresel ağ verileri aracılığıyla).</string>
|
||||
<string name="nsclient_fullcontrol">Uzak takipçi olarak kullanılan NS İstemcisi, AndroidAPS\'i hem izleyecek hem de tam kontrol sağlayacaktır.</string>
|
||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
|
||||
<string name="isf_label_exam">İnsülin Duyarlılık Faktörü (ISF)</string>
|
||||
<string name="isf_label_exam">İnsülin Duyarlılık Faktörü (İDF)</string>
|
||||
<string name="isf_increasingvalue">ISF değerlerini yükseltmek, belirli bir karbonhidrat miktarını karşılamak için daha fazla insülin verilmesine yol açacaktır.</string>
|
||||
<string name="isf_decreasingvalue">ISF değerinin düşürülmesi, hedeflenen kan şekerinin üzerinde bir düzeltme için daha fazla insülin verilmesine yol açar.</string>
|
||||
<string name="isf_noeffect">Kan şekeri seviyeleri hedefin altında olduğunda ISF\'yi yükseltmenin veya düşürmenin insülin iletimi üzerinde hiçbir etkisi yoktur.</string>
|
||||
|
@ -175,7 +181,7 @@
|
|||
<string name="ic_label_exam">Karbonhidrat insülin Oranı (I:C oranı)</string>
|
||||
<string name="ic_increasingvalue">Daha yüksek I:C oranları, belirli bir miktarda karbonhidrat için daha az insülin verilmesine yol açar.</string>
|
||||
<string name="ic_decreasingvalue">Daha düşük I:C oranları, belirli bir miktarda karbonhidrat için daha az insülin verilmesine yol açar.</string>
|
||||
<string name="ic_noeffect">0 COB\'niz varsa, IC oranını değiştirmek, belirli bir KŞ değerini düzeltmek için farklı insülin miktarına sebep olur.</string>
|
||||
<string name="ic_noeffect">0 AKRB varsa, Kİ oranını değiştirmek, belirli bir KŞ değerini düzeltmek için farklı insülin miktarına sebep olur.</string>
|
||||
<string name="ic_different">Ekmek (değişim) birimini 10g veya 12g olarak sayarsanız IC farklı olacaktır.</string>
|
||||
<string name="ic_meaning">IC anlamı şudur: 1Ü insülin kaç ekmek birimi (değişim) kapsar.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Tedavi güvenliği</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maks izin verilen bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks izin verilen karbonhidrat [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">KŞ seviyesi altında düşük glikoz duraklatma meydana gelir</string>
|
||||
<string name="nav_preferences_plugin">%1$s Tercihler</string>
|
||||
<string name="nav_preferences">Tercihler</string>
|
||||
<string name="nav_refreshtreatments">NS\'tan tedavileri güncelle</string>
|
||||
|
@ -44,27 +45,27 @@
|
|||
<string name="description_sms_communicator">SMS komutlarını kullanarak uzaktan AndroidAPS kontrolü.</string>
|
||||
<string name="treatments_insulin_label_string">İnsülin:</string>
|
||||
<string name="treatments_carbs_label_string">Karbonhidrat:</string>
|
||||
<string name="treatments_iob_label_string">IOB:</string>
|
||||
<string name="sms_iob">IOB:</string>
|
||||
<string name="treatments_iobtotal_label_string">Toplam IOB:</string>
|
||||
<string name="treatments_iobactivitytotal_label_string">Toplam IOB etkinliği:</string>
|
||||
<string name="treatments_iob_label_string">AİNS:</string>
|
||||
<string name="sms_iob">AİNS:</string>
|
||||
<string name="treatments_iobtotal_label_string">Toplam AİNS:</string>
|
||||
<string name="treatments_iobactivitytotal_label_string">Toplam AİNS etkinliği:</string>
|
||||
<string name="tempbasals_realduration_label_string">Süre:</string>
|
||||
<string name="tempbasals_netratio_label_string">Oran:</string>
|
||||
<string name="tempbasals_netinsulin_label_string">İns:</string>
|
||||
<string name="tempbasals_iob_label_string">IOB:</string>
|
||||
<string name="tempbasals_iobtotal_label_string">Toplam IOB:</string>
|
||||
<string name="tempbasals_iob_label_string">AİNS:</string>
|
||||
<string name="tempbasals_iobtotal_label_string">Toplam AİNS:</string>
|
||||
<string name="treatments_wizard_bg_label">KŞ</string>
|
||||
<string name="treatments_wizard_tt_label">GH</string>
|
||||
<string name="treatments_wizard_carbs_label">Karbonhidrat</string>
|
||||
<string name="treatments_wizard_correction_label">Düzeltme</string>
|
||||
<string name="bolus_iob_label">Bolus IOB</string>
|
||||
<string name="bolus_iob_label">Bolus AİNS</string>
|
||||
<string name="openapsma_run">Şimdi Çalıştır</string>
|
||||
<string name="vitualpump_label">SANAL POMPA</string>
|
||||
<string name="openapsma_lastrun_label">Son Çalıştırma</string>
|
||||
<string name="openapsma_inputparameters_label">Girdi Parametreleri</string>
|
||||
<string name="openapsma_glucosestatus_label">Glikoz durumu</string>
|
||||
<string name="openapsma_currenttemp_label">Mevcut Geçici Bazal</string>
|
||||
<string name="openapsma_iobdata_label">IOB Verisi</string>
|
||||
<string name="openapsma_iobdata_label">AİNS Verisi</string>
|
||||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Yemek Verisi</string>
|
||||
<string name="result">Sonuç</string>
|
||||
|
@ -115,7 +116,7 @@
|
|||
<string name="openloop_newsuggestion">Yeni öneri mevcut</string>
|
||||
<string name="carbssuggestion">Karbonhidrat Önerisi</string>
|
||||
<string name="unsupportednsversion">Nightscout\'un desteklenmeyen sürümü</string>
|
||||
<string name="treatments_wizard_basaliob_label">Bazal IOB</string>
|
||||
<string name="treatments_wizard_basaliob_label">Bazal AİNS</string>
|
||||
<string name="bolusconstraintapplied">Bolus kısıtlaması uygulandı</string>
|
||||
<string name="carbsconstraintapplied">Karbonhidrat kısıtlaması uygulandı</string>
|
||||
<string name="careportal_newnstreatment_other">Diğer</string>
|
||||
|
@ -139,8 +140,8 @@
|
|||
<string name="nav_import">İçe aktarma ayarları</string>
|
||||
<string name="openapsma_maxbasal_title">Maks Ü/s geçici Bazal ayarlanabilir</string>
|
||||
<string name="openapsma_maxbasal_summary">Bu değer OpenAPS\'te \"maksimum bazal\" olarak adlandırılır</string>
|
||||
<string name="openapsma_maxiob_title">OpenAPS\'nin vermesine izin verilen maksimum bazal IOB (Aktif insülin) [U]</string>
|
||||
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Maks IOB denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
|
||||
<string name="openapsma_maxiob_title">OpenAPS\'in gönderebileceği maksimum bazal AİNS (Aktif insülin) [U]</string>
|
||||
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Maks AİNS denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
|
||||
<string name="password_preferences_encrypt_prompt">Dışa aktarılan tercihleri şifrelemek için kullanılacak ana parola sorulacaktır.</string>
|
||||
<string name="password_preferences_decrypt_prompt">İçe aktarılan tercihlerin şifresini çözmek için gerekli olan ana parola sorulacaktır.</string>
|
||||
<string name="preferences_export_canceled">Aktarım iptal edildi! Tercihler dışa aktarılmadı!</string>
|
||||
|
@ -316,8 +317,8 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="clearlog">Günlüğü temizle</string>
|
||||
<string name="nowritepermission">NSCLIENT yazma izni yok. Yanlış API Anahtarı?</string>
|
||||
<string name="wear_settings">Wear ayarları</string>
|
||||
<string name="wear_detailedIOB_title">Ayrıntılı IOB göster</string>
|
||||
<string name="wear_detailedIOB_summary">Saat arayüzü üzerinde IOB\'yi bolus ve bazal olarak ayırın</string>
|
||||
<string name="wear_detailedIOB_title">Ayrıntılı AİNS göster</string>
|
||||
<string name="wear_detailedIOB_summary">Saat arayüzü üzerinde AİNS\'i bolus ve bazal olarak ayırın</string>
|
||||
<string name="nosuccess">başarısız - lütfen telefonu kontrol edin</string>
|
||||
<string name="notavailable">n/a</string>
|
||||
<string name="patientage">Hasta tipi</string>
|
||||
|
@ -356,7 +357,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="smscommunicator_loopsuspended">Döngü duraklatıldı</string>
|
||||
<string name="smscommunicator_loopresumed">Döngü devam ettirildi</string>
|
||||
<string name="bg_trend_label">15 dk eğilim</string>
|
||||
<string name="treatments_wizard_cob_label">COB</string>
|
||||
<string name="treatments_wizard_cob_label">AKRB</string>
|
||||
<string name="superbolus">Süperbolus</string>
|
||||
<string name="ns_logappstartedevent">NS\'a uygulama başlangıcını kaydet</string>
|
||||
<string name="restartingapp">Ayarları uygulamak için uygulamadan çıkılıyor.</string>
|
||||
|
@ -439,7 +440,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="enablesmb">SMB (Super Micro Bolus) etkinleştir</string>
|
||||
<string name="enablesmb_summary">Daha hızlı bir etki için geçici bazal yerine Super Micro Bolus kullanın</string>
|
||||
<string name="enableuam_summary">(Uam) Bildirilmemiş öğünlerin tespiti</string>
|
||||
<string name="insulin_oref_peak">IOB Eğrisi Tepe Zamanı</string>
|
||||
<string name="insulin_oref_peak">AİNS Eğrisi Tepe Zamanı</string>
|
||||
<string name="insulin_peak_time">Tepe zamanı [min]</string>
|
||||
<string name="insulin_peak">Tepe</string>
|
||||
<string name="free_peak_oref">Serbest tepe Oref</string>
|
||||
|
@ -495,28 +496,28 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="nsclientbg">Nightscout Client KŞ</string>
|
||||
<string name="nsclientbgshort">NS KŞ</string>
|
||||
<string name="overview_editquickwizard_usebg">KŞ Hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus IOB (Aktif İnsülin) hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Bazal IOB (Aktif İnsülin) hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus AİNS hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Bazal AİNS hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usetrend">Trend hesapla</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Süperbolus hesapla</string>
|
||||
<string name="positiveonly">Sadece pozitif</string>
|
||||
<string name="negativeonly">Sadece negatif</string>
|
||||
<string name="overview_editquickwizard_usecob">COB (Aktif Karbonhidrat) hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usecob">AKRB (Aktif Karbonhidrat) hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Geçici hedef hesaplaması</string>
|
||||
<string name="overview_editquickwizard_usepercentage">Yüzde Hesaplaması</string>
|
||||
<string name="loopenabled">Döngü etkin</string>
|
||||
<string name="apsselected">APS Seçildi</string>
|
||||
<string name="nsclienthaswritepermission">NSClient\'in yazma izni var</string>
|
||||
<string name="closedmodeenabled">Kapalı mod etkin</string>
|
||||
<string name="maxiobset">Maksimal IOB doğru şekilde ayarlandı</string>
|
||||
<string name="maxiobset">Maksimal AİNS doğru şekilde ayarlandı</string>
|
||||
<string name="hasbgdata">Seçili kaynaktan KŞ kullanılabilir</string>
|
||||
<string name="extendedbolusdeliveryerror">Yayma bolus iletim hatası</string>
|
||||
<string name="enablesmbalways">SMB\'yi her zaman etkinleştir</string>
|
||||
<string name="enablesmbalways_summary">SMB\'yi her zaman bağımsız olarak boluslarla etkinleştirin. G5 gibi verilerin yalnızca filtrelenmesiyle yalnızca KŞ kaynağıyla mümkündür</string>
|
||||
<string name="enablesmbaftercarbs">Yemeklerden sonra SMB\'yi etkinleştir</string>
|
||||
<string name="enablesmbaftercarbs_summary">Karbonhidrat alındıktan sonra 6 saat süreyle SMB\'yi (Super Micro Bolus) etkinleştirin.0 COB (Aktif Karbonhidrat) ile de çalışır, Şayet KŞ kaynağıyla kullanılacaksa verilerin iyice filtrelenmesiyle mümkündür.örn. Dexcom G5 gibi</string>
|
||||
<string name="enablesmbwithcob">SMB\'yi COB ile etkinleştir</string>
|
||||
<string name="enablesmbwithcob_summary">COB (Aktif Karbonhidrat) aktif olduğunda SMB\'yi (Super Micro Bolus) etkinleştirin.</string>
|
||||
<string name="enablesmbaftercarbs_summary">0 AKRB (Aktif Karbonhidrat) olsa dahi, karbonhidrat alındıktan sonra 6 saat süreyle SMB\'yi (Süper Mikro Bolus) etkinleştirir. Şayet KŞ kaynağıyla kullanılacaksa verilerin iyice filtrelenmesiyle (Dexcom G5-G6 gibi) mümkündür.</string>
|
||||
<string name="enablesmbwithcob">SMB\'yi AKRB ile etkinleştir</string>
|
||||
<string name="enablesmbwithcob_summary">AKRB (Aktif Karbonhidrat) aktif olduğunda SMB\'yi (Süper Mikro Bolus) etkinleştirin.</string>
|
||||
<string name="enablesmbwithtemptarget">Geçici hedeflerle SMB\'yi etkinleştir</string>
|
||||
<string name="enablesmbwithtemptarget_summary">Geçici hedef aktif olduğunda SMB\'yi etkinleştir (yakında yeme, egzersiz)</string>
|
||||
<string name="enablesmbwithhightemptarget">Yüksek geçici hedeflerle SMB\'yi etkinleştir</string>
|
||||
|
@ -579,7 +580,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="basal_set_correctly">Bazal doğru ayarlanmış</string>
|
||||
<string name="limitingextendedbolus">%2$s\'den dolayı yayma bolus %1$.1f Ü ile sınırlandırılıyor</string>
|
||||
<string name="limitingcarbs">%2$s\'den dolayı karbonhidratlar %1$d g ile sınırlandırılıyor</string>
|
||||
<string name="limitingiob">%2$s\'den dolayı IOB (Aktif İnsülin)%1$.1f Ü ile sınırlandırılıyor</string>
|
||||
<string name="limitingiob">%2$s\'den dolayı AİNS %1$.1f Ü ile sınırlandırılıyor</string>
|
||||
<string name="maxvalueinpreferences">tercihlerde maksimum değer</string>
|
||||
<string name="hardlimit">sert sınır</string>
|
||||
<string name="readstatusfailed">Durumu okumak başarısız oldu</string>
|
||||
|
@ -589,8 +590,8 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="smbnotallowedinopenloopmode">Açık Döngü modunda SMB\'ye (Super Micro Bolus) izin verilmiyor</string>
|
||||
<string name="food_short">Yiyecek</string>
|
||||
<string name="reset">sıfırla</string>
|
||||
<string name="openapssmb_maxiob_title">OpenAPS tarafından aşılmayacak, maksimum toplam IOB(Aktif İnsülin)[U]</string>
|
||||
<string name="openapssmb_maxiob_summary">Bu değer OpenAPS bağlamında Max IOB (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut IOB bu değerden daha büyükse daha fazla insülin eklemez</string>
|
||||
<string name="openapssmb_maxiob_title">OpenAPS tarafından aşılamayacak maksimum toplam AİNS (Aktif İnsülin)[U]</string>
|
||||
<string name="openapssmb_maxiob_summary">Bu değer OpenAPS bağlamında Max AİNS (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut AİNS bu değerden daha büyükse daha fazla insülin vermez</string>
|
||||
<string name="absorption_cutoff_title">Besinin maksimum emilim süresi [h]</string>
|
||||
<string name="absorption_cutoff_summary">Herhangi bir öğünün emildiği kabul edilen zaman. Kalan karbonhidratlar kesilecek.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Altına düştüğünde insülinin askıya alındığı KŞ değeri. Varsayılan değer, standart hedef modeli kullanır. Kullanıcı değeri 60mg/dl (3,3mmol/l) ile 100mg/dl(5.5mmol/l) arasında ayarlayabilir. 65/3,6\'nın altındaki değerler varsayılan modelin kullanılmasına neden olur</string>
|
||||
|
@ -632,7 +633,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="readstatus">Durum oku</string>
|
||||
<string name="exitwizard">Kurulum sihirbazını atla</string>
|
||||
<string name="setupwizard_loop_description">AndroidAPS\'ın bazal değişiklikleri önerme/yapmasını sağlamak için aşağıdaki düğmeye basın</string>
|
||||
<string name="setupwizard_sensitivity_description">Duyarlılık eklentisi, duyarlılık tespiti ve COB hesaplaması için kullanılır. Daha fazla bilgi için ziyaret edin:</string>
|
||||
<string name="setupwizard_sensitivity_description">Duyarlılık eklentisi, duyarlılık tespiti ve AKRB hesaplaması için kullanılır. Daha fazla bilgi için ziyaret edin:</string>
|
||||
<string name="setupwizard_sensitivity_url">https://androidaps.readthedocs.io/en/latest/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="nsclientinfotext">NSClient, Nightscout\'a bağlantıyı sağlar. Şimdi bu kısmı atlayabilirsiniz, ancak ayarlamadan görevleri geçemezsiniz.</string>
|
||||
<string name="diawarning">Lütfen unutmayın: yeni insülin profilleri en az 5 saat DIA gerektirir. Yeni profildeki DIA 5–6 saat, eski insülin profillerinde DIA 3saat\'e eşittir.</string>
|
||||
|
@ -736,9 +737,9 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="dexcom_app_patched">BYODA</string>
|
||||
<string name="dexcom_short">BYODA</string>
|
||||
<string name="description_source_dexcom">\'Kendi Dexcom Uygulamanızı Oluşturun\' uygulamasından KŞ değerlerini alın.</string>
|
||||
<string name="cobvsiob">COB vs IOB</string>
|
||||
<string name="cobvsiob">AKRB vs AİNS</string>
|
||||
<string name="bolusconstraintappliedwarn">Bolus kısıtlaması uygulandı: %1$.2f Ü ile %2$.2f Ü</string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Yavaş karbonhidrat emilimi tespit edildi: zamanın %2$d%% si. Hesaplamanızı iki kez kontrol edin. Aktif Karbonhidrat (COB) olduğundan fazla tahmin edilebilir, bu nedenle daha fazla insülin verilebilir !!!!!</font>]]></string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Yavaş karbonhidrat emilimi tespit edildi: zamanın %2$d%% si. Hesaplamanızı iki kez kontrol edin. Aktif Karbonhidrat (AKRB) olduğundan fazla tahmin edilebilir, bu nedenle daha fazla insülin verilebilir !!!!!</font>]]></string>
|
||||
<string name="partialboluswizard">Bolus sihirbazı sonucunun bu kadarını ilet [%]</string>
|
||||
<string name="deliverpartofboluswizard">Bolus sihirbazı hesaplamayı gerçekleştirir ancak hesaplanan insülinin yalnızca bu kısmı iletilir. SMB algoritması ile kullanışlıdır.</string>
|
||||
<string name="snooze">Ertele</string>
|
||||
|
@ -746,7 +747,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="smscommunicator_messagebody">Geçersiz mesaj</string>
|
||||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg Kİ: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="unit_minute_short">dk.</string>
|
||||
<string name="profile_name">Profil adı:</string>
|
||||
|
@ -897,7 +898,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="ns_receive_tbr_eb">GBO ve EB (Yayma Bolus) alın</string>
|
||||
<string name="ns_receive_tbr_eb_summary">Başka bir örnek üzerinden girilen GBO ve EB (Yayma Bolusu) kabul edin</string>
|
||||
<string name="ns_receive_insulin">İnsülinleri alın</string>
|
||||
<string name="ns_receive_insulin_summary">NS veya NSClient aracılığıyla girilen insülini kabul edin (iletilmez, yalnızca aktif insüline göre (IOB) hesaplanır)</string>
|
||||
<string name="ns_receive_insulin_summary">NS veya NSClient aracılığıyla girilen insülini kabul edin (iletilmez, yalnızca AİNS\'e göre hesaplanır)</string>
|
||||
<string name="ns_receive_carbs">Karbonhidratları alın</string>
|
||||
<string name="ns_receive_carbs_summary">NS veya NSClient aracılığıyla girilen karbonhidratları kabul edin</string>
|
||||
<string name="ns_receive_therapy_events">Terapi etkinlikleri alın</string>
|
||||
|
@ -977,13 +978,13 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="quick_wizard_not_available">Seçili hızlı asistan artık mevcut değil, lütfen kutucuğu yenileyin</string>
|
||||
<string name="wizard_no_actual_bg">Hesaplamayı temel alacak yeni bir KŞ yok!</string>
|
||||
<string name="wizard_no_active_profile">Etkin profil ayarlanmadı!</string>
|
||||
<string name="wizard_no_cob">Aktif karbonhidrat bilinmiyor! KŞ okuması eksik veya son uygulama yeniden başlatılsın mı?</string>
|
||||
<string name="wizard_no_cob">Aktif karbonhidrat (AKRB) bilinmiyor! KŞ okuması eksik veya son uygulama yeniden başlatılsın mı?</string>
|
||||
<string name="wizard_carbs_constraint">Karbonhidrat kısıtlaması ihlali!</string>
|
||||
<string name="wizard_explain_calc">Hesap (KİO: %1$.1f, İDF: %2$.1f)</string>
|
||||
<string name="wizard_explain_carbs">Karb: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_cob">COB: %1$.0fg %2$.2fÜ</string>
|
||||
<string name="wizard_explain_cob">AKRB: %1$.0fg %2$.2fÜ</string>
|
||||
<string name="wizard_explain_bg">KŞ: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_iob">Aktif İnsülin: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_iob">AİNS: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_superbolus">Süperbolus: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_trend">15\' trend: %1$.2fÜ</string>
|
||||
<string name="wizard_explain_percent">Yüzde: %1$.2fÜ x %2$d%% ≈ %3$.2fÜ</string>
|
||||
|
@ -1043,4 +1044,5 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="description_source_aidex">GlucoRx Aidex CGMS\'den KŞ değerleri alır.</string>
|
||||
<string name="blocked_by_charging">Şarj seçenekleri tarafından engellendi</string>
|
||||
<string name="blocked_by_connectivity">Bağlantı seçenekleri tarafından engellendi</string>
|
||||
<string name="no_watch_connected">(Saat Bağlı Değil)</string>
|
||||
</resources>
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">通过注射器或胰岛素笔输注你计算出的“遗漏”胰岛素的一部分。</string>
|
||||
<string name="wronginsulin_donothing">不做任何事情,允许AndroidAPS纠正高血糖导致的任何结果。</string>
|
||||
<string name="iob_label">活性胰岛素(IOB)</string>
|
||||
<string name="iob_which">选择所有正确的答案。</string>
|
||||
<string name="iob_value">活性胰岛素IOB数值受发布的临时基础率影响。</string>
|
||||
<string name="iob_hightemp">当您的血糖低于目标值时,不会被给予高临时基础率。</string>
|
||||
<string name="iob_negiob">在没有运动的情况下,活性胰岛素IOB长时间负数表明你的个人配置太强,你需要在配置中减少的胰岛素用量。</string>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Compare values in AndroidAPS and pump history (if pump supports this).</string>
|
||||
<string name="wronginsulin_prime">Bolus a proportion of your calculated ‘missed’ insulin by either syringe/pen or using a prime.</string>
|
||||
<string name="wronginsulin_donothing">Do nothing and allow AndroidAPS to correct any resulting high blood glucose level.</string>
|
||||
<string name="cob_label">Carbs on Board (COB)</string>
|
||||
<string name="cob_question">How changing ISF value affects COB calculation?</string>
|
||||
<string name="cob_longer">Increasing ISF will take absorbing carbs a longer time</string>
|
||||
<string name="cob_shorter">Increasing ISF will take absorbing carbs a shorter time</string>
|
||||
<string name="cob_no_effect">Increasing ISF will not affect calculated carbs absorption</string>
|
||||
<string name="cob2_question">How changing IC value affects COB calculation?</string>
|
||||
<string name="cob2_longer">Increasing IC will take absorbing carbs a longer time</string>
|
||||
<string name="cob2_shorter">Increasing IC will take absorbing carbs a shorter time</string>
|
||||
<string name="cob2_no_effect">Increasing IC will not affect calculated carbs absorption</string>
|
||||
<string name="cob3_question">How changing profile percentage affects COB calculation?</string>
|
||||
<string name="cob3_longer">Setting profile to 150% will take absorbing carbs a longer time</string>
|
||||
<string name="cob3_shorter">Setting profile to 150% will take absorbing carbs a shorter time</string>
|
||||
<string name="cob3_no_effect">Setting profile to 150% will not affect calculated carbs absorption</string>
|
||||
<string name="iob_label">Insulin on Board (IOB)</string>
|
||||
<string name="iob_which">Check all the correct answers.</string>
|
||||
<string name="iob_value">IOB value is affected by issued temporary basals.</string>
|
||||
<string name="iob_hightemp">High temp basal will not be given when your blood sugar is below target.</string>
|
||||
<string name="iob_negiob">Negative IOB for a substantial period in the absence of exercise suggests your profile is too strong and less insulin is needed in your settings.</string>
|
||||
|
|
|
@ -1242,13 +1242,15 @@
|
|||
<string name="a11y_only_on_watch">only on watch</string>
|
||||
<string name="a11y_only_on_phone">only on phone</string>
|
||||
<string name="a11y_drag_and_drop_handle">drag and drop handle</string>
|
||||
<string name="search">Search</string>
|
||||
|
||||
<!-- Aidex Cgms -->
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Receive BG values from GlucoRx Aidex CGMS.</string>
|
||||
<string name="blocked_by_charging">Blocked by charging options</string>
|
||||
<string name="blocked_by_connectivity">Blocked by connectivity options</string>
|
||||
<string name="no_watch_connected">(No Watch Connected)</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<PreferenceCategory
|
||||
android:key="@string/key_autotune_plugin"
|
||||
android:title="@string/autotune_settings"
|
||||
app:initialExpandedChildrenCount="10">
|
||||
app:initialExpandedChildrenCount="0">
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
|
|
|
@ -33,6 +33,7 @@ abstract class AutomationModule {
|
|||
@ContributesAndroidInjector abstract fun triggerWifiSsidInjector(): TriggerWifiSsid
|
||||
|
||||
@ContributesAndroidInjector abstract fun actionInjector(): Action
|
||||
@ContributesAndroidInjector abstract fun actionStopProcessingInjector(): ActionStopProcessing
|
||||
@ContributesAndroidInjector abstract fun actionLoopDisableInjector(): ActionLoopDisable
|
||||
@ContributesAndroidInjector abstract fun actionLoopEnableInjector(): ActionLoopEnable
|
||||
@ContributesAndroidInjector abstract fun actionLoopResumeInjector(): ActionLoopResume
|
||||
|
|
|
@ -4,6 +4,7 @@ import dagger.android.HasAndroidInjector
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.Action
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionDummy
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionStopProcessing
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
|
@ -52,6 +53,11 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
|
|||
return result
|
||||
}
|
||||
|
||||
fun hasStopProcessing(): Boolean {
|
||||
for (action in actions) if (action is ActionStopProcessing) return true
|
||||
return false
|
||||
}
|
||||
|
||||
fun toJSON(): String {
|
||||
val array = JSONArray()
|
||||
for (a in actions) array.put(a.toJSON())
|
||||
|
|
|
@ -212,8 +212,12 @@ class AutomationPlugin @Inject constructor(
|
|||
while (iterator.hasNext()) {
|
||||
val event = iterator.next()
|
||||
if (event.isEnabled && !event.userAction && event.shouldRun())
|
||||
if (event.systemAction || commonEventsEnabled) processEvent(event)
|
||||
if (event.systemAction || commonEventsEnabled) {
|
||||
processEvent(event)
|
||||
if (event.hasStopProcessing()) break
|
||||
}
|
||||
}
|
||||
|
||||
// we cannot detect connected BT devices
|
||||
// so let's collect all connection/disconnections between 2 runs of processActions()
|
||||
// TriggerBTDevice can pick up and process these events
|
||||
|
@ -329,6 +333,7 @@ class AutomationPlugin @Inject constructor(
|
|||
//ActionLoopEnable(injector),
|
||||
//ActionLoopResume(injector),
|
||||
//ActionLoopSuspend(injector),
|
||||
ActionStopProcessing(injector),
|
||||
ActionStartTempTarget(injector),
|
||||
ActionStopTempTarget(injector),
|
||||
ActionNotification(injector),
|
||||
|
|
|
@ -42,13 +42,19 @@ class ActionRunAutotune(injector: HasAndroidInjector) : Action(injector) {
|
|||
val profileName = if (inputProfileName.value == rh.gs(R.string.active)) "" else inputProfileName.value
|
||||
var message = if (autoSwitch) R.string.autotune_run_with_autoswitch else R.string.autotune_run_without_autoswitch
|
||||
Thread {
|
||||
autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch")
|
||||
autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName)
|
||||
if (!autotunePlugin.lastRunSuccess) {
|
||||
message = R.string.autotune_run_with_error
|
||||
aapsLogger.error(LTag.AUTOMATION, "Error during Autotune Run")
|
||||
if (!autotunePlugin.calculationRunning) {
|
||||
autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch")
|
||||
autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName)
|
||||
if (!autotunePlugin.lastRunSuccess) {
|
||||
message = R.string.autotune_run_with_error
|
||||
aapsLogger.error(LTag.AUTOMATION, "Error during Autotune Run")
|
||||
}
|
||||
callback.result(PumpEnactResult(injector).success(autotunePlugin.lastRunSuccess).comment(message)).run()
|
||||
} else {
|
||||
message = R.string.autotune_run_cancelled
|
||||
aapsLogger.debug(LTag.AUTOMATION, "Autotune run detected, Autotune Run Cancelled")
|
||||
callback.result(PumpEnactResult(injector).success(false).comment(message)).run()
|
||||
}
|
||||
callback.result(PumpEnactResult(injector).success(autotunePlugin.lastRunSuccess).comment(message)).run()
|
||||
}.start()
|
||||
return
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.actions
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import com.google.gson.JsonObject
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.automation.R
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import org.json.JSONObject
|
||||
|
||||
class ActionStopProcessing(injector: HasAndroidInjector) : Action(injector) {
|
||||
|
||||
override fun friendlyName(): Int = R.string.stop_processing
|
||||
override fun shortDescription(): String = rh.gs(R.string.stop_processing)
|
||||
@DrawableRes override fun icon(): Int = R.drawable.ic_stop_24dp
|
||||
|
||||
override fun isValid(): Boolean = true
|
||||
|
||||
override fun doAction(callback: Callback) {
|
||||
callback.result(PumpEnactResult(injector).success(true).comment(R.string.ok)).run()
|
||||
}
|
||||
|
||||
override fun toJSON(): String {
|
||||
return JSONObject()
|
||||
.put("type", this.javaClass.name)
|
||||
.put("data", JsonObject())
|
||||
.toString()
|
||||
}
|
||||
|
||||
override fun fromJSON(data: String): Action = this
|
||||
|
||||
override fun hasDialog(): Boolean = false
|
||||
}
|
|
@ -93,8 +93,8 @@
|
|||
<string name="target_u">Hedef [%1$s]:</string>
|
||||
<string name="lastboluslabel">Son bolus önce</string>
|
||||
<string name="lastboluscompared">Son bolus zamanı %1$s %2$s dakika önce</string>
|
||||
<string name="triggercoblabel">COB</string>
|
||||
<string name="cobcompared">AK (COB) %1$s %2$.0f</string>
|
||||
<string name="triggercoblabel">AKRB</string>
|
||||
<string name="cobcompared">AKRB %1$s %2$.0f</string>
|
||||
<string name="iob_u">IOB [U]:</string>
|
||||
<string name="distance_short">Mesafe [m]:</string>
|
||||
<string name="recurringTime">Yinelenen zaman</string>
|
||||
|
|
|
@ -126,5 +126,6 @@
|
|||
<string name="run_automations">Run automations</string>
|
||||
<string name="add_automation">Add rule</string>
|
||||
<string name="remove_sort">Remove/sort</string>
|
||||
<string name="stop_processing">Stop processing</string>
|
||||
|
||||
</resources>
|
|
@ -5,13 +5,14 @@ import dagger.android.HasAndroidInjector
|
|||
import info.nightscout.androidaps.TestBase
|
||||
import info.nightscout.androidaps.interfaces.ConfigBuilder
|
||||
import info.nightscout.androidaps.interfaces.Loop
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.Action
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionStopProcessing
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
|
@ -70,4 +71,14 @@ class AutomationEventTest : TestBase() {
|
|||
Assert.assertFalse(event.actions === clone.actions) // not the same object reference
|
||||
Assert.assertEquals(clone.toJSON(), clone.toJSON())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasStopProcessing() {
|
||||
val event = AutomationEvent(injector)
|
||||
event.title = "Test"
|
||||
event.trigger = TriggerDummy(injector).instantiate(JSONObject(TriggerConnectorTest.oneItem)) as TriggerConnector
|
||||
Assert.assertFalse(event.hasStopProcessing())
|
||||
event.addAction(ActionStopProcessing(injector))
|
||||
Assert.assertTrue(event.hasStopProcessing())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.actions
|
||||
|
||||
import info.nightscout.androidaps.automation.R
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mockito.`when`
|
||||
|
||||
class ActionStopProcessingTest : ActionsTestBase() {
|
||||
|
||||
lateinit var sut: ActionStopProcessing
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
|
||||
`when`(rh.gs(R.string.stop_processing)).thenReturn("Stop processing")
|
||||
sut = ActionStopProcessing(injector)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun friendlyNameTest() {
|
||||
Assert.assertEquals(R.string.stop_processing, sut.friendlyName())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shortDescriptionTest() {
|
||||
Assert.assertEquals("Stop processing", sut.shortDescription())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun iconTest() {
|
||||
Assert.assertEquals(R.drawable.ic_stop_24dp, sut.icon())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun doActionTest() {
|
||||
sut.doAction(object : Callback() {
|
||||
override fun run() {
|
||||
Assert.assertTrue(result.success)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -144,6 +144,9 @@ ActionsTestBase : TestBaseWithProfile() {
|
|||
it.profileFunction = profileFunction
|
||||
it.uel = uel
|
||||
}
|
||||
if (it is ActionStopProcessing) {
|
||||
it.rh = rh
|
||||
}
|
||||
if (it is PumpEnactResult) {
|
||||
it.rh = rh
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
buildscript {
|
||||
ext {
|
||||
kotlin_version = '1.7.0'
|
||||
kotlin_version = '1.7.10'
|
||||
core_version = '1.8.0'
|
||||
rxjava_version = '3.1.5'
|
||||
rxandroid_version = '3.0.0'
|
||||
|
@ -66,7 +66,7 @@ plugins {
|
|||
id "io.gitlab.arturbosch.detekt" version "1.20.0"
|
||||
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
|
||||
id 'org.barfuin.gradle.jacocolog' version '2.0.0'
|
||||
id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
|
|
@ -2,8 +2,9 @@ package info.nightscout.androidaps.interfaces
|
|||
|
||||
interface Autotune {
|
||||
|
||||
fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String = ""): String
|
||||
fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String = "")
|
||||
fun atLog(message: String)
|
||||
|
||||
var lastRunSuccess: Boolean
|
||||
var calculationRunning: Boolean
|
||||
}
|
|
@ -91,9 +91,9 @@ class UserEntryPresentationHelper @Inject constructor(
|
|||
Sources.Insight -> R.drawable.ic_insight_128
|
||||
Sources.Combo -> R.drawable.ic_combo_128
|
||||
Sources.Medtronic -> R.drawable.ic_veo_128
|
||||
Sources.Omnipod -> R.drawable.ic_pod_128
|
||||
Sources.OmnipodEros -> R.drawable.ic_pod_128
|
||||
Sources.OmnipodDash -> R.drawable.ic_pod_128
|
||||
Sources.Omnipod -> R.drawable.ic_patch_pump_outline
|
||||
Sources.OmnipodEros -> R.drawable.ic_patch_pump_outline
|
||||
Sources.OmnipodDash -> R.drawable.ic_patch_pump_outline
|
||||
Sources.MDI -> R.drawable.ic_ict
|
||||
Sources.VirtualPump -> R.drawable.ic_virtual_pump
|
||||
Sources.SMS -> R.drawable.ic_sms
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
|
||||
</vector>
|
||||
|
|
|
@ -1,45 +1,21 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="30.4518"
|
||||
android:startX="11.6122"
|
||||
android:endY="30.419544"
|
||||
android:endX="52.3879"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFFFFFF"/>
|
||||
<item android:offset="1" android:color="#FFB3B3B3"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
|
||||
<path
|
||||
android:pathData="M32,32m-27.5,0a27.5,27.5 0,1 1,55 0a27.5,27.5 0,1 1,-55 0"
|
||||
android:fillColor="@android:color/white"/>
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M21.824,34.228l1.704,0.498c-0.358,1.621 -1,2.857 -1.928,3.708c-0.929,0.851 -2.063,1.277 -3.404,1.277c-1.388,-0 -2.517,-0.327 -3.387,-0.982c-0.869,-0.654 -1.531,-1.602 -1.985,-2.843c-0.454,-1.241 -0.681,-2.574 -0.681,-3.998c0,-1.553 0.257,-2.908 0.769,-4.064c0.512,-1.156 1.242,-2.034 2.187,-2.635c0.946,-0.6 1.987,-0.9 3.123,-0.9c1.288,0 2.372,0.38 3.25,1.14c0.879,0.759 1.491,1.827 1.836,3.204l-1.678,0.458c-0.298,-1.085 -0.732,-1.875 -1.3,-2.371c-0.568,-0.495 -1.282,-0.742 -2.143,-0.742c-0.99,-0 -1.817,0.275 -2.482,0.824c-0.664,0.549 -1.131,1.287 -1.401,2.212c-0.269,0.926 -0.404,1.881 -0.404,2.864c0,1.268 0.16,2.375 0.479,3.321c0.319,0.946 0.815,1.653 1.489,2.121c0.673,0.468 1.402,0.702 2.187,0.702c0.955,0 1.763,-0.319 2.425,-0.956c0.661,-0.638 1.109,-1.584 1.344,-2.838Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M31.653,33.607l0,-1.749l5.455,-0.011l-0,5.534c-0.837,0.773 -1.701,1.355 -2.591,1.745c-0.89,0.39 -1.804,0.585 -2.741,0.585c-1.265,-0 -2.414,-0.314 -3.448,-0.941c-1.033,-0.627 -1.814,-1.535 -2.341,-2.721c-0.527,-1.187 -0.79,-2.513 -0.79,-3.978c-0,-1.451 0.262,-2.806 0.786,-4.064c0.524,-1.258 1.278,-2.192 2.262,-2.802c0.984,-0.611 2.117,-0.916 3.399,-0.916c0.931,0 1.773,0.175 2.526,0.524c0.752,0.349 1.342,0.836 1.77,1.46c0.427,0.624 0.752,1.438 0.975,2.441l-1.537,0.489c-0.194,-0.76 -0.434,-1.357 -0.721,-1.791c-0.287,-0.434 -0.697,-0.781 -1.23,-1.042c-0.532,-0.262 -1.124,-0.392 -1.774,-0.392c-0.779,-0 -1.452,0.137 -2.02,0.412c-0.568,0.275 -1.027,0.636 -1.375,1.083c-0.348,0.448 -0.619,0.939 -0.813,1.475c-0.328,0.923 -0.491,1.923 -0.491,3.001c-0,1.329 0.197,2.442 0.592,3.337c0.396,0.895 0.971,1.56 1.727,1.994c0.755,0.434 1.557,0.651 2.406,0.651c0.738,-0 1.459,-0.165 2.161,-0.494c0.703,-0.329 1.236,-0.68 1.599,-1.053l-0,-2.777l-3.786,0Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M39.568,39.456l-0,-14.912l2.565,-0l3.048,10.559c0.281,0.983 0.486,1.719 0.614,2.207c0.147,-0.542 0.375,-1.339 0.686,-2.39l3.083,-10.376l2.293,-0l-0,14.912l-1.643,0l-0,-12.481l-3.742,12.481l-1.537,0l-3.725,-12.695l0,12.695l-1.642,0Z"
|
||||
android:fillType="nonZero"/>
|
||||
</vector>
|
||||
|
|
|
@ -3,85 +3,86 @@
|
|||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
|
||||
android:strokeAlpha="0.96"
|
||||
android:strokeWidth="0.84"
|
||||
android:fillColor="@android:color/transparent"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M17.119,8.385h1.107v10.439h-1.107z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/darker_gray"
|
||||
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/darker_gray"
|
||||
android:pathData="M60.657,36.693l-22.108,0c-0.966,0 -1.751,0.785 -1.751,1.752l-0,0.681c-0,0.447 0.363,0.811 0.811,0.811l23.048,-0l0,-3.244Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/transparent"
|
||||
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
|
||||
android:strokeWidth="0.84"
|
||||
android:strokeAlpha="0.96"
|
||||
android:strokeColor="?attr/colorControlNormal" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M17.119,8.385h1.107v10.439h-1.107z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z" />
|
||||
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z" />
|
||||
<path
|
||||
android:fillAlpha="0.96"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M60.657,36.693l-22.108,0c-0.966,0 -1.751,0.785 -1.751,1.752l-0,0.681c-0,0.447 0.363,0.811 0.811,0.811l23.048,-0l0,-3.244Z" />
|
||||
</vector>
|
||||
|
|
|
@ -3,28 +3,16 @@
|
|||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M40.644,18.931l-17.75,-0l4.224,-4.292l9.595,-0l3.931,4.292Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M45.819,52.79c0,2.613 -2.244,4.628 -4.733,4.734c-5.822,0.248 -11.887,0.316 -18.408,-0c-2.715,-0.132 -4.735,-2.121 -4.735,-4.734l0,-30.713c0.687,-2.545 4.794,-4.453 6.303,-4.733l14.905,0c2.03,-0.013 5.653,2.356 6.668,4.733l0,3.536l-17.079,0l0,22.04l17.079,-0l0,5.137Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M27.061,11.374h9.853v3.277h-9.853z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M39.992,7.46c-0,-0.72 -0.585,-1.305 -1.305,-1.305l-13.374,0c-0.72,0 -1.305,0.585 -1.305,1.305l0,2.61c0,0.72 0.585,1.304 1.305,1.304l13.374,0c0.72,0 1.305,-0.584 1.305,-1.304l-0,-2.61Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M45.819,52.79c0,2.613 -2.244,4.628 -4.733,4.734c-5.822,0.248 -11.887,0.316 -18.408,-0c-2.715,-0.132 -4.735,-2.121 -4.735,-4.734l0,-30.713c0.687,-2.545 4.794,-4.453 6.303,-4.733l14.905,0c2.03,-0.013 5.653,2.356 6.668,4.733l0,3.536l-17.079,0l0,22.04l17.079,-0l0,5.137Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M27.061,11.374h9.853v3.277h-9.853z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M39.992,7.46c-0,-0.72 -0.585,-1.305 -1.305,-1.305l-13.374,0c-0.72,0 -1.305,0.585 -1.305,1.305l0,2.61c0,0.72 0.585,1.304 1.305,1.304l13.374,0c0.72,0 1.305,-0.584 1.305,-1.304l-0,-2.61Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M40.644,18.931l-17.75,-0l4.224,-4.292l9.595,-0l3.931,4.292Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M27.061,11.374h9.853v3.277h-9.853z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M39.992,7.46c-0,-0.72 -0.585,-1.305 -1.305,-1.305l-13.374,0c-0.72,0 -1.305,0.585 -1.305,1.305l0,2.61c0,0.72 0.585,1.304 1.305,1.304l13.374,0c0.72,0 1.305,-0.584 1.305,-1.304l-0,-2.61Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M45.819,52.79c0,2.613 -2.244,4.628 -4.733,4.734c-5.822,0.248 -11.887,0.316 -18.408,-0c-2.715,-0.132 -4.735,-2.121 -4.735,-4.734l0,-30.713c0.687,-2.545 4.794,-4.453 6.303,-4.733l14.905,0c2.03,-0.013 5.653,2.356 6.668,4.733l0,3.536l-17.079,0l0,22.04l17.079,-0l0,5.137Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M39.151,17.344l-14.905,-0l2.815,-2.693l9.853,-0l2.237,2.693Z" />
|
||||
</vector>
|
||||
|
|
|
@ -1,10 +1,23 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
|
||||
<path android:fillColor="#00000000"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="36dp"
|
||||
android:height="36dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z" />
|
||||
<path
|
||||
android:pathData="M48.482,34.89c1.19,0.985 11.298,-12.07 10.281,-19.108c-0.83,-5.741 -4.429,-10.197 -10.281,-10.324c-5.915,-0.129 -9.748,4.343 -10.28,10.324c-0.628,7.047 8.849,20.079 10.28,19.108Z"
|
||||
android:strokeColor="?attr/colorControlNormal" android:strokeWidth="3.09"/>
|
||||
<path android:fillColor="?attr/colorControlNormal" android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M43.147,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M50.951,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
|
||||
android:strokeWidth="3.09"
|
||||
android:strokeColor="?attr/colorControlNormal" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M42.6,16.153a1.373,1.378 0,1 0,4 0a1.373,1.378 0,1 0,-4 0z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M50.3,16.153a1.373,1.378 0,1 0,4 0a1.373,1.378 0,1 0,-4 0z" />
|
||||
</vector>
|
||||
|
|
|
@ -1,11 +1,27 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="?attr/colorControlNormal" android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M27.035,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M34.54,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
|
||||
<path android:fillColor="?attr/colorControlNormal"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="36dp"
|
||||
android:height="36dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M31.98,46.071c1.15,0.944 10.925,-11.56 9.942,-18.302c-0.803,-5.498 -4.283,-9.766 -9.942,-9.888c-5.72,-0.123 -9.427,4.16 -9.942,9.888c-0.607,6.75 8.558,19.231 9.942,18.302Z"
|
||||
android:strokeColor="?attr/colorControlNormal" android:strokeWidth="3.09"/>
|
||||
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z"/>
|
||||
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z"/>
|
||||
android:strokeWidth="3.09"
|
||||
android:strokeColor="?attr/colorControlNormal" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M26.3,28.124a1.113,1.107 0,1 0,4 0a1.113,1.107 0,1 0,-4 0z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M33.54,28.124a1.113,1.107 0,1 0,4 0a1.113,1.107 0,1 0,-4 0z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z" />
|
||||
</vector>
|
||||
|
|
|
@ -3,15 +3,20 @@
|
|||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M36.472,7.728c-2.167,-1.778 -20.58,21.776 -18.727,34.474c1.511,10.356 8.067,18.397 18.727,18.626c10.775,0.231 17.757,-7.836 18.727,-18.626c1.144,-12.715 -16.12,-36.225 -18.727,-34.474Z"
|
||||
android:strokeWidth="3.09"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z"
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z" />
|
||||
<path
|
||||
android:pathData="M36.472,7.728c-2.167,-1.778 -20.58,21.776 -18.727,34.474c1.511,10.356 8.067,18.397 18.727,18.626c10.775,0.231 17.757,-7.836 18.727,-18.626c1.144,-12.715 -16.12,-36.225 -18.727,-34.474Z"
|
||||
android:strokeWidth="3.09"
|
||||
android:strokeColor="?attr/colorControlNormal" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M26,42a1.113,1.107 0,1 0,7 0a1.113,1.107 0,1 0,-7 0z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M40,42a1.113,1.107 0,1 0,7 0a1.113,1.107 0,1 0,-7 0z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z" />
|
||||
</vector>
|
||||
|
|
13
core/src/main/res/drawable/ic_patch_pump_outline.xml
Normal file
13
core/src/main/res/drawable/ic_patch_pump_outline.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="80"
|
||||
android:viewportHeight="80">
|
||||
|
||||
<path
|
||||
android:fillAlpha="0.5"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M 18 54 a 3 3 0 0 0 3 3 L 45 57 A 19 19 0 0 0 62 40 A 19 19 0 0 0 45 24 L 21 24 a 3 3 0 0 0 -3 3 Z M 67 40 A 22 22 0 0 1 45 62 L 19 62 a 6 6 0 0 1 -6 -6 L 13 25 a 6 6 0 0 1 6 -6 L 45 19 A 22 22 0 0 1 67 40"
|
||||
android:strokeAlpha="0.5" />
|
||||
|
||||
</vector>
|
|
@ -4,6 +4,6 @@
|
|||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#ffffff" android:pathData="M32,8C45.2461,8 56.0001,18.7541 56.0001,32.0001C56.0001,45.2462 45.2461,56.0002 32,56.0002C18.754,56.0002 8,45.2462 8,32.0001C8,18.7541 18.754,8 32,8ZM52.1291,31.6881C52.1301,31.6341 52.1301,31.5801 52.1301,31.5271C52.1301,20.2941 42.9931,11.175 31.739,11.175C20.485,11.175 11.349,20.2941 11.349,31.5271C11.349,42.7591 20.485,51.8782 31.739,51.8782L31.87,51.8772C31.914,51.8782 31.958,51.8782 32.001,51.8782C43.1101,51.8782 52.1301,42.9031 52.1301,31.8481C52.1301,31.7951 52.1301,31.7421 52.1291,31.6881Z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M32.001,9.381C42.7061,9.381 51.3971,18.1741 51.3971,29.0061C51.3971,39.8371 42.7061,48.6302 32.001,48.6302C21.296,48.6302 12.605,39.8371 12.605,29.0061C12.605,18.1741 21.296,9.381 32.001,9.381ZM29.841,29.9691C29.841,29.9821 29.841,29.9941 29.841,30.0071C29.841,31.1071 30.809,32.0001 32.001,32.0001C33.193,32.0001 34.16,31.1071 34.16,30.0071L34.16,29.9681C34.16,29.9561 34.16,29.9441 34.16,29.9311C34.16,28.8731 33.193,28.0141 32.001,28.0141C30.809,28.0141 29.841,28.8731 29.841,29.9311L29.841,29.9691Z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="36dp"
|
||||
android:height="36dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M32,8C45.2461,8 56.0001,18.7541 56.0001,32.0001C56.0001,45.2462 45.2461,56.0002 32,56.0002C18.754,56.0002 8,45.2462 8,32.0001C8,18.7541 18.754,8 32,8ZM52.1291,31.6881C52.1301,31.6341 52.1301,31.5801 52.1301,31.5271C52.1301,20.2941 42.9931,11.175 31.739,11.175C20.485,11.175 11.349,20.2941 11.349,31.5271C11.349,42.7591 20.485,51.8782 31.739,51.8782L31.87,51.8772C31.914,51.8782 31.958,51.8782 32.001,51.8782C43.1101,51.8782 52.1301,42.9031 52.1301,31.8481C52.1301,31.7951 52.1301,31.7421 52.1291,31.6881Z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M32.001,9.381C42.7061,9.381 51.3971,18.1741 51.3971,29.0061C51.3971,39.8371 42.7061,48.6302 32.001,48.6302C21.296,48.6302 12.605,39.8371 12.605,29.0061C12.605,18.1741 21.296,9.381 32.001,9.381ZM29.841,29.9691C29.841,29.9821 29.841,29.9941 29.841,30.0071C29.841,31.1071 30.809,32.0001 32.001,32.0001C33.193,32.0001 34.16,31.1071 34.16,30.0071L34.16,29.9681C34.16,29.9561 34.16,29.9441 34.16,29.9311C34.16,28.8731 33.193,28.0141 32.001,28.0141C30.809,28.0141 29.841,28.8731 29.841,29.9311L29.841,29.9691Z" />
|
||||
</vector>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
|
|
|
@ -5,13 +5,12 @@
|
|||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M41,53.0926C41,57.6742 33.0897,61.4847 23.2273,61.657C13.3648,61.8319 4.8549,58.3075 4.1102,53.7391C3.3654,49.1734 10.635,45.0953 20.4399,44.5785C30.2476,44.0592 39.3051,47.2761 40.7891,51.8047L41,53.0926ZM33.599,33.571C33.599,39.0032 29.1004,43.5239 23.4929,43.7279C17.8826,43.9346 13.0472,39.7531 12.6228,34.3394C12.1984,28.9231 16.3328,24.0871 21.9075,23.4723C27.4849,22.8575 32.6352,26.6733 33.4785,32.042L33.599,33.571Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M59.9421,12.9495C59.9421,7.0918 54.161,2.3354 47.0401,2.3354C39.9191,2.3354 34.138,7.0918 34.138,12.9495C34.138,15.849 35.5788,18.6213 38.1273,20.6243L34.138,28.8708L41.8559,22.6694C43.4901,23.259 45.2556,23.5637 47.0401,23.5637C54.161,23.5637 59.9421,18.8073 59.9421,12.9495Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillAlpha="0.96"/>
|
||||
android:fillColor="?attr/colorControlNormal"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillColor="?attr/colorBackgroundFloating"
|
||||
android:pathData="M39.0941,17.8588L39.0949,13.9134C39.0949,13.752 39.226,13.621 39.3873,13.6211L39.7008,13.6211C39.8546,13.6212 39.9806,13.74 39.9925,13.8905C40.0238,13.8875 40.0559,13.8859 40.0879,13.8859L41.0815,13.8861L41.0825,8.7741C41.0827,7.7211 41.8725,6.8662 42.8454,6.8664L53.1736,6.8685C54.1464,6.8687 54.9359,7.7238 54.9357,8.7769L54.9343,15.9526C54.9341,17.0056 54.1442,17.8605 53.1714,17.8603L42.8432,17.8582C42.7769,17.8582 42.7112,17.8542 42.6465,17.8466C42.5964,17.8542 42.5452,17.8582 42.4934,17.8582L40.0871,17.8577C40.0551,17.8577 40.0237,17.8564 39.9927,17.8534L39.9927,17.859C39.9927,18.0204 39.8613,18.1513 39.6999,18.1513L39.3864,18.1512C39.2251,18.1512 39.0941,18.0202 39.0941,17.8588ZM43.7517,9.1657L43.7507,14.2169L52.2649,14.2186L52.2659,9.1674L43.7517,9.1657ZM50.8092,15.1565L50.8088,16.7322L52.2646,15.9448L50.8092,15.1565ZM48.5703,15.9622C48.5703,15.956 48.5703,15.95 48.5703,15.9441C48.5704,15.4702 48.222,15.0857 47.7927,15.0856C47.363,15.0855 47.0145,15.4699 47.0144,15.9438L47.0144,15.9791C47.0143,16.4332 47.3627,16.8022 47.7923,16.8022C48.2217,16.8023 48.5702,16.4335 48.5703,15.9794C48.5703,15.9734 48.5703,15.9678 48.5703,15.9622ZM45.2062,15.1554L43.7504,15.9431L45.2059,16.7311L45.2062,15.1554Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -103,7 +103,7 @@
|
|||
<string name="notexists">yok</string>
|
||||
<string name="glucose">Glikoz</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="cob">AKRB</string>
|
||||
<string name="name_short">İsim:</string>
|
||||
<string name="time">Zaman</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
|
|
|
@ -600,6 +600,7 @@
|
|||
<string name="autotune_run_without_autoswitch">Autotune runned without profile switch</string>
|
||||
<string name="autotune_run_with_autoswitch">Autotune runned and profile automatically switched</string>
|
||||
<string name="autotune_run_with_error">Error during last Autotune run</string>
|
||||
<string name="autotune_run_cancelled">Another run of Autotune is detected, run cancelled</string>
|
||||
|
||||
<plurals name="days">
|
||||
<item quantity="one">%1$d day</item>
|
||||
|
|
|
@ -135,4 +135,5 @@
|
|||
<string name="diaconn_g8_errorcode_32">בעת השהייה עקב סוכר נמוך, ההזרקה מוגבלת</string>
|
||||
<string name="diaconn_g8_errorcode_33">מצב השהייה עקב סוכר נמוך מופעל, פקודת ON נדחתה.</string>
|
||||
<string name="diaconn_g8_errorcode_34">מצב השהייה עקב סוכר נמוך כבוי, פקודת OFF נדחתה.</string>
|
||||
<string name="diaconn_g8_cloudsend_summary">שלח יומני משאבה לענן Diaconn.</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
|||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.WakeAndTuneTask
|
||||
import info.nightscout.androidaps.plugins.pump.common.sync.PumpDbEntryTBR
|
||||
import info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncEntriesCreator
|
||||
import info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil
|
||||
import info.nightscout.androidaps.plugins.pump.common.utils.ProfileUtil
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry
|
||||
|
@ -90,7 +91,7 @@ class MedtronicPumpPlugin @Inject constructor(
|
|||
dateUtil: DateUtil,
|
||||
aapsSchedulers: AapsSchedulers,
|
||||
pumpSync: PumpSync,
|
||||
pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
pumpSyncStorage: PumpSyncStorage
|
||||
) : PumpPluginAbstract(
|
||||
PluginDescription() //
|
||||
.mainType(PluginType.PUMP) //
|
||||
|
|
|
@ -29,6 +29,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpSta
|
|||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.apache.commons.lang3.StringUtils
|
||||
import org.joda.time.LocalDateTime
|
||||
|
@ -57,7 +58,7 @@ class MedtronicHistoryData @Inject constructor(
|
|||
val medtronicPumpHistoryDecoder: MedtronicPumpHistoryDecoder,
|
||||
val medtronicPumpStatus: MedtronicPumpStatus,
|
||||
val pumpSync: PumpSync,
|
||||
val pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
val pumpSyncStorage: PumpSyncStorage
|
||||
) {
|
||||
|
||||
val allHistory: MutableList<PumpHistoryEntry> = mutableListOf()
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_refresh_status"
|
||||
|
@ -65,4 +68,4 @@
|
|||
android:text="@string/omnipod_common_overview_button_suspend_delivery"
|
||||
android:visibility="gone" />
|
||||
|
||||
</merge>
|
||||
</merge>
|
||||
|
|
|
@ -2,24 +2,26 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
|
||||
<!-- Unique ID -->
|
||||
<LinearLayout
|
||||
android:id="@+id/omnipod_common_overview_pod_unique_id_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_pod_unique_id"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -38,9 +40,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -49,17 +51,17 @@
|
|||
android:id="@+id/omnipod_common_overview_lot_number_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_lot_number"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -78,9 +80,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -88,17 +90,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_pod_sequence_number"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -117,9 +119,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -127,17 +129,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_firmware_version"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -156,9 +158,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -166,17 +168,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_time_on_pod"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -195,9 +197,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -206,17 +208,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_pod_expiry_date"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -235,9 +237,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -246,17 +248,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_pod_status"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -275,10 +277,10 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text=""
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -302,17 +304,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_last_connection"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -331,9 +333,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -350,17 +352,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_last_bolus"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -379,9 +381,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -398,17 +400,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_base_basal_rate"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -427,9 +429,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -446,17 +448,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_temp_basal_rate"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -475,9 +477,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -494,17 +496,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_reservoir"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -523,9 +525,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -542,17 +544,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_total_delivered"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -571,9 +573,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -590,17 +592,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_errors"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -619,9 +621,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -638,17 +640,17 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_common_overview_pod_active_alerts"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -667,9 +669,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -691,4 +693,5 @@
|
|||
android:rotationX="180"
|
||||
android:rotationY="180"
|
||||
app:drawableTopCompat="@drawable/ic_pod" />
|
||||
</merge>
|
||||
|
||||
</merge>
|
||||
|
|
|
@ -10,6 +10,6 @@
|
|||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:navGraph="@navigation/omnipod_common_pod_deactivation_wizard_navigation_graph" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_dash_overview_bluetooth_address"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -33,26 +35,27 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_dash_overview_bluetooth_status"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -71,9 +74,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="HardcodedText" />
|
||||
</LinearLayout>
|
||||
|
@ -82,18 +85,18 @@
|
|||
android:id="@+id/connectionQuality"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:focusable="true">
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_dash_overview_bluetooth_connection_quality"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -112,29 +115,30 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/deliveryStatus"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:focusable="true">
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/omnipod_dash_overview_delivery_status"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -153,11 +157,12 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
|
|
|
@ -49,24 +49,38 @@ public abstract class ErosPodStateManager {
|
|||
this.gsonInstance = createGson();
|
||||
}
|
||||
|
||||
/**
|
||||
* Discard Pod state
|
||||
*/
|
||||
public final void discardState() {
|
||||
this.podState = new PodState(this.podState.address);
|
||||
// Change on commit 4cea57acf6d74baffef83e1f04376b10bb5c1978 Nov 2021
|
||||
// As by commit, keep podState object but wipe address to 0x0 to signal hasPodState()
|
||||
// there is no state ( = no Pod address).
|
||||
this.podState = new PodState(0x0);
|
||||
storePodState();
|
||||
}
|
||||
|
||||
/**
|
||||
* Init Pod state but only if it has valid state.
|
||||
* @param address New Pod address
|
||||
*/
|
||||
public final void initState(int address) {
|
||||
if (hasPodState()) {
|
||||
throw new IllegalStateException("Can not init a new pod state: podState <> null");
|
||||
throw new IllegalStateException("Can not init a new pod state: State is " +
|
||||
"null or discarded?");
|
||||
}
|
||||
podState = new PodState(address);
|
||||
storePodState();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if we have a Pod state (which at least contains an address), indicating it is legal to call getters on PodStateManager
|
||||
* @return true if we have a Pod state (which at least contains an valid address), indicating
|
||||
* it is legal to call getters on PodStateManager
|
||||
*/
|
||||
public final boolean hasPodState() {
|
||||
return podState != null;
|
||||
|
||||
return this.podState != null
|
||||
&& this.podState.getAddress() != 0x0; // 0x0=discarded
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -287,9 +287,9 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
|
|||
podInfoBinding.timeOnPod.setTextColor(
|
||||
rh.gac(context,
|
||||
if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) {
|
||||
R.attr.defaultTextColor
|
||||
} else {
|
||||
R.attr.warningColor
|
||||
} else {
|
||||
R.attr.defaultTextColor
|
||||
})
|
||||
)
|
||||
val expiresAt = podStateManager.expiresAt
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:focusable="true">
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:textAlignment="viewEnd"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="@string/rileylink_status"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
|
@ -33,10 +35,10 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:text="{fa-bluetooth-b}"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class AapsErosPodStateManagerTest : TestBase() {
|
|||
val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
|
||||
DateTimeUtils.setCurrentMillisFixed(now.millis)
|
||||
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
|
||||
podStateManager.initState(0x0)
|
||||
podStateManager.initState(0x01)
|
||||
podStateManager.setInitializationParameters(
|
||||
0, 0, FirmwareVersion(1, 1, 1),
|
||||
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS
|
||||
|
@ -46,7 +46,7 @@ class AapsErosPodStateManagerTest : TestBase() {
|
|||
val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
|
||||
DateTimeUtils.setCurrentMillisFixed(now.millis)
|
||||
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
|
||||
podStateManager.initState(0x0)
|
||||
podStateManager.initState(0x01)
|
||||
podStateManager.setInitializationParameters(
|
||||
0, 0, FirmwareVersion(1, 1, 1),
|
||||
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS
|
||||
|
@ -70,7 +70,7 @@ class AapsErosPodStateManagerTest : TestBase() {
|
|||
val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
|
||||
DateTimeUtils.setCurrentMillisFixed(now.millis)
|
||||
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
|
||||
podStateManager.initState(0x0)
|
||||
podStateManager.initState(0x01)
|
||||
podStateManager.setInitializationParameters(
|
||||
0, 0, FirmwareVersion(1, 1, 1),
|
||||
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS
|
||||
|
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.content.ServiceConnection
|
||||
import android.text.format.DateFormat
|
||||
import com.google.gson.GsonBuilder
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
|
@ -26,6 +25,8 @@ import info.nightscout.androidaps.utils.DateUtil
|
|||
import info.nightscout.androidaps.utils.DecimalFormatter.to0Decimal
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter.to2Decimal
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
|
@ -39,9 +40,9 @@ import org.json.JSONObject
|
|||
*/
|
||||
// When using this class, make sure that your first step is to create mConnection (see MedtronicPumpPlugin)
|
||||
abstract class PumpPluginAbstract protected constructor(
|
||||
pluginDescription: PluginDescription?,
|
||||
pluginDescription: PluginDescription,
|
||||
pumpType: PumpType,
|
||||
injector: HasAndroidInjector?,
|
||||
injector: HasAndroidInjector,
|
||||
rh: ResourceHelper,
|
||||
aapsLogger: AAPSLogger,
|
||||
commandQueue: CommandQueue,
|
||||
|
@ -53,10 +54,10 @@ abstract class PumpPluginAbstract protected constructor(
|
|||
var dateUtil: DateUtil,
|
||||
var aapsSchedulers: AapsSchedulers,
|
||||
var pumpSync: PumpSync,
|
||||
var pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
|
||||
) : PumpPluginBase(pluginDescription!!, injector!!, aapsLogger, rh, commandQueue), Pump, Constraints, info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncEntriesCreator {
|
||||
var pumpSyncStorage: PumpSyncStorage
|
||||
) : PumpPluginBase(pluginDescription, injector, aapsLogger, rh, commandQueue), Pump, Constraints, info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncEntriesCreator {
|
||||
|
||||
val disposable = CompositeDisposable()
|
||||
private val disposable = CompositeDisposable()
|
||||
|
||||
// Pump capabilities
|
||||
final override var pumpDescription = PumpDescription()
|
||||
|
@ -242,8 +243,7 @@ abstract class PumpPluginAbstract protected constructor(
|
|||
val extended = JSONObject()
|
||||
try {
|
||||
battery.put("percent", pumpStatusData.batteryRemaining)
|
||||
// TODO check this status.put("status", pumpStatusData.pumpStatusType.status)
|
||||
status.put("status", pumpStatusData.pumpRunningState.status)
|
||||
status.put("status", pumpStatusData.pumpStatusType.status)
|
||||
extended.put("Version", version)
|
||||
try {
|
||||
extended.put("ActiveProfile", profileName)
|
||||
|
@ -277,50 +277,23 @@ abstract class PumpPluginAbstract protected constructor(
|
|||
override fun shortStatus(veryShort: Boolean): String {
|
||||
var ret = ""
|
||||
|
||||
if (pumpStatusData.lastConnection == 0L) {
|
||||
ret += "LastConn: never\n"
|
||||
ret += if (pumpStatusData.lastConnection == 0L) {
|
||||
"LastConn: never\n"
|
||||
} else {
|
||||
val agoMsec = System.currentTimeMillis() - pumpStatusData.lastConnection
|
||||
val agoMin = (agoMsec / 60.0 / 1000.0).toInt()
|
||||
ret += "LastConn: $agoMin min ago\n"
|
||||
val agoMin = ((System.currentTimeMillis() - pumpStatusData.lastConnection) / 60.0 / 1000.0).toInt()
|
||||
"LastConn: $agoMin min ago\n"
|
||||
}
|
||||
|
||||
if (pumpStatusData.lastBolusTime != null && pumpStatusData.lastBolusTime!!.time != 0L) {
|
||||
ret += """
|
||||
LastBolus: ${to2Decimal(pumpStatusData.lastBolusAmount!!)}U @${DateFormat.format("HH:mm", pumpStatusData.lastBolusTime)}
|
||||
|
||||
""".trimIndent()
|
||||
pumpStatusData.lastBolusTime?.let {
|
||||
if (it.time != 0L) {
|
||||
ret += "LastBolus: ${to2Decimal(pumpStatusData.lastBolusAmount!!)}U @${DateFormat.format("HH:mm", it)}\n"
|
||||
}
|
||||
}
|
||||
val activeTemp = pumpSync.expectedPumpState().temporaryBasal
|
||||
if (activeTemp != null) {
|
||||
ret += """
|
||||
Temp: ${activeTemp.toStringFull(dateUtil)}
|
||||
|
||||
""".trimIndent()
|
||||
}
|
||||
val activeExtendedBolus = pumpSync.expectedPumpState().extendedBolus
|
||||
if (activeExtendedBolus != null) {
|
||||
ret += """
|
||||
Extended: ${activeExtendedBolus.toStringFull(dateUtil)}
|
||||
|
||||
""".trimIndent()
|
||||
}
|
||||
// if (!veryShort) {
|
||||
// ret += "TDD: " + DecimalFormatter.to0Decimal(pumpStatus.dailyTotalUnits) + " / "
|
||||
// + pumpStatus.maxDailyTotalUnits + " U\n";
|
||||
// }
|
||||
ret += """
|
||||
IOB: ${pumpStatusData.iob}U
|
||||
|
||||
""".trimIndent()
|
||||
ret += """
|
||||
Reserv: ${to0Decimal(pumpStatusData.reservoirRemainingUnits)}U
|
||||
|
||||
""".trimIndent()
|
||||
ret += """
|
||||
Batt: ${pumpStatusData.batteryRemaining}
|
||||
|
||||
""".trimIndent()
|
||||
pumpSync.expectedPumpState().temporaryBasal?.let { ret += "Temp: ${it.toStringFull(dateUtil)}\n" }
|
||||
pumpSync.expectedPumpState().extendedBolus?.let { ret += "Extended: ${it.toStringFull(dateUtil)}\n" }
|
||||
ret += "IOB: ${pumpStatusData.iob}U\n"
|
||||
ret += "Reserv: ${to0Decimal(pumpStatusData.reservoirRemainingUnits)}U\n"
|
||||
ret += "Batt: ${pumpStatusData.batteryRemaining}\n"
|
||||
return ret
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@ package info.nightscout.shared
|
|||
object SafeParse {
|
||||
|
||||
// private static Logger log = StacktraceLoggerWrapper.getLogger(SafeParse.class);
|
||||
fun stringToDouble(inputString: String?): Double {
|
||||
var input = inputString ?: return 0.0
|
||||
var result = 0.0
|
||||
fun stringToDouble(inputString: String?, defaultValue: Double = 0.0): Double {
|
||||
var input = inputString ?: return defaultValue
|
||||
var result = defaultValue
|
||||
input = input.replace(",", ".")
|
||||
input = input.replace("−", "-")
|
||||
if (input == "") return 0.0
|
||||
if (input == "") return defaultValue
|
||||
try {
|
||||
result = input.toDouble()
|
||||
} catch (e: Exception) {
|
||||
|
|
|
@ -14,7 +14,11 @@ sealed class EventData : Event() {
|
|||
|
||||
companion object {
|
||||
|
||||
fun deserialize(json: String) = Json.decodeFromString(serializer(), json)
|
||||
fun deserialize(json: String) = try {
|
||||
Json.decodeFromString(serializer(), json)
|
||||
} catch (ignored: Exception) {
|
||||
Error(System.currentTimeMillis())
|
||||
}
|
||||
}
|
||||
|
||||
// Mobile <- Wear
|
||||
|
@ -238,7 +242,7 @@ sealed class EventData : Event() {
|
|||
|
||||
@Serializable // returnCommand is sent back to Mobile after confirmation
|
||||
data class ConfirmAction(val title: String, val message: String, val returnCommand: EventData?) : EventData()
|
||||
|
||||
|
||||
@Serializable
|
||||
data class SnoozeAlert(val timeStamp: Long) : EventData()
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import info.nightscout.androidaps.comm.DataLayerListenerServiceWear
|
|||
import info.nightscout.androidaps.complications.*
|
||||
import info.nightscout.androidaps.tile.*
|
||||
import info.nightscout.androidaps.watchfaces.*
|
||||
import info.nightscout.androidaps.watchfaces.utils.BaseWatchFace
|
||||
|
||||
@Module
|
||||
@Suppress("unused")
|
||||
|
|
|
@ -42,7 +42,7 @@ class BolusActivity : ViewSelectorActivity() {
|
|||
override fun instantiateItem(container: ViewGroup, row: Int, col: Int): View = when (col) {
|
||||
0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
|
||||
val initValue = if (editInsulin != null) SafeParse.stringToDouble(editInsulin?.editText?.text.toString()) else 0.0
|
||||
val initValue = SafeParse.stringToDouble(editInsulin?.editText?.text.toString(), 0.0)
|
||||
val maxBolus = sp.getDouble(getString(R.string.key_treatments_safety_max_bolus), 3.0)
|
||||
val title = getString(R.string.action_insulin)
|
||||
editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, maxBolus, stepValues, DecimalFormat("#0.0"), false, title)
|
||||
|
|
|
@ -42,12 +42,9 @@ class CarbActivity : ViewSelectorActivity() {
|
|||
0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
|
||||
val view = viewAdapter.root
|
||||
var def = 0.0
|
||||
if (editCarbs != null) {
|
||||
def = SafeParse.stringToDouble(editCarbs?.editText?.text.toString())
|
||||
}
|
||||
val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48)
|
||||
editCarbs = PlusMinusEditText(viewAdapter, def, 0.0, maxCarbs.toDouble(), stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
|
||||
var initValue = SafeParse.stringToDouble(editCarbs?.editText?.text.toString(), 0.0)
|
||||
val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48).toDouble()
|
||||
editCarbs = PlusMinusEditText(viewAdapter, initValue, 0.0, maxCarbs, stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
|
||||
container.addView(view)
|
||||
view.requestFocus()
|
||||
view
|
||||
|
|
|
@ -45,12 +45,9 @@ class ECarbActivity : ViewSelectorActivity() {
|
|||
0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
|
||||
val view = viewAdapter.root
|
||||
var def = 0.0
|
||||
if (editCarbs != null) {
|
||||
def = stringToDouble(editCarbs?.editText?.text.toString())
|
||||
}
|
||||
val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48)
|
||||
editCarbs = PlusMinusEditText(viewAdapter, def, 0.0, maxCarbs.toDouble(), stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
|
||||
var initValue = stringToDouble(editCarbs?.editText?.text.toString(), 0.0)
|
||||
val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48).toDouble()
|
||||
editCarbs = PlusMinusEditText(viewAdapter, initValue, 0.0, maxCarbs, stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
|
||||
container.addView(view)
|
||||
view.requestFocus()
|
||||
view
|
||||
|
@ -59,11 +56,8 @@ class ECarbActivity : ViewSelectorActivity() {
|
|||
1 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
var def = 0.0
|
||||
if (editStartTime != null) {
|
||||
def = stringToDouble(editStartTime?.editText?.text.toString())
|
||||
}
|
||||
editStartTime = PlusMinusEditText(viewAdapter, 15.0, def, -60.0, 300.0, DecimalFormat("0"), false, getString(R.string.action_start_min))
|
||||
var initValue = stringToDouble(editStartTime?.editText?.text.toString(), 0.0)
|
||||
editStartTime = PlusMinusEditText(viewAdapter, initValue, -60.0, 300.0, 15.0, DecimalFormat("0"), false, getString(R.string.action_start_min))
|
||||
container.addView(view)
|
||||
view
|
||||
}
|
||||
|
@ -71,11 +65,8 @@ class ECarbActivity : ViewSelectorActivity() {
|
|||
2 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
var def = 0.0
|
||||
if (editDuration != null) {
|
||||
def = stringToDouble(editDuration?.editText?.text.toString())
|
||||
}
|
||||
editDuration = PlusMinusEditText(viewAdapter, 1.0, def, 0.0, 8.0, DecimalFormat("0"), false, getString(R.string.action_duration_h))
|
||||
var initValue = stringToDouble(editDuration?.editText?.text.toString(), 0.0)
|
||||
editDuration = PlusMinusEditText(viewAdapter, initValue, 0.0, 8.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_duration_h))
|
||||
container.addView(view)
|
||||
view
|
||||
}
|
||||
|
|
|
@ -38,11 +38,8 @@ class FillActivity : ViewSelectorActivity() {
|
|||
0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
var def = 0.0
|
||||
if (editInsulin != null) {
|
||||
def = stringToDouble(editInsulin?.editText?.text.toString())
|
||||
}
|
||||
editInsulin = PlusMinusEditText(viewAdapter, def, 0.0, 30.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_insulin))
|
||||
var initValue = stringToDouble(editInsulin?.editText?.text.toString(), 0.0)
|
||||
editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, 30.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_insulin))
|
||||
container.addView(view)
|
||||
view.requestFocus()
|
||||
view
|
||||
|
|
|
@ -48,11 +48,8 @@ class ProfileSwitchActivity : ViewSelectorActivity() {
|
|||
0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
var def = timeshift.toDouble()
|
||||
if (editTimeshift != null) {
|
||||
def = SafeParse.stringToDouble(editTimeshift?.editText?.text.toString())
|
||||
}
|
||||
editTimeshift = PlusMinusEditText(viewAdapter, def, 0.0, 23.0, 1.0, DecimalFormat("0"), true, getString(R.string.action_timeshift), true)
|
||||
var initValue = SafeParse.stringToDouble(editTimeshift?.editText?.text.toString(), timeshift.toDouble())
|
||||
editTimeshift = PlusMinusEditText(viewAdapter, initValue, 0.0, 23.0, 1.0, DecimalFormat("0"), true, getString(R.string.action_timeshift), true)
|
||||
container.addView(view)
|
||||
view.requestFocus()
|
||||
view
|
||||
|
@ -61,12 +58,8 @@ class ProfileSwitchActivity : ViewSelectorActivity() {
|
|||
1 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
var def = percentage.toDouble()
|
||||
if (editPercentage != null) {
|
||||
def = SafeParse.stringToDouble(editPercentage?.editText?.text.toString())
|
||||
}
|
||||
editPercentage = PlusMinusEditText(viewAdapter, def, 30.0, 250.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_percentage))
|
||||
|
||||
var initValue = SafeParse.stringToDouble(editPercentage?.editText?.text.toString(), percentage.toDouble())
|
||||
editPercentage = PlusMinusEditText(viewAdapter, initValue, 30.0, 250.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_percentage))
|
||||
container.addView(view)
|
||||
view
|
||||
}
|
||||
|
|
|
@ -50,12 +50,8 @@ class TempTargetActivity : ViewSelectorActivity() {
|
|||
col == 0 -> {
|
||||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
time = if (time == null) {
|
||||
PlusMinusEditText(viewAdapter, 60.0, 0.0, 24 * 60.0, 5.0, DecimalFormat("0"), false, getString(R.string.action_duration))
|
||||
} else {
|
||||
val def = SafeParse.stringToDouble(time?.editText?.text.toString())
|
||||
PlusMinusEditText(viewAdapter, def, 0.0, 24 * 60.0, 5.0, DecimalFormat("0"), false, getString(R.string.action_duration))
|
||||
}
|
||||
val initValue = SafeParse.stringToDouble(time?.editText?.text.toString(), 60.0)
|
||||
time = PlusMinusEditText(viewAdapter, initValue, 0.0, 24 * 60.0, 5.0, DecimalFormat("0"), false, getString(R.string.action_duration))
|
||||
container.addView(view)
|
||||
view.requestFocus()
|
||||
view
|
||||
|
@ -66,13 +62,11 @@ class TempTargetActivity : ViewSelectorActivity() {
|
|||
val view = viewAdapter.root
|
||||
val title = if (isSingleTarget) getString(R.string.action_target) else getString(R.string.action_low)
|
||||
if (isMGDL) {
|
||||
var def = 100.0
|
||||
if (lowRange != null) def = SafeParse.stringToDouble(lowRange?.editText?.text.toString())
|
||||
lowRange = PlusMinusEditText(viewAdapter, def, 72.0, 180.0, 1.0, DecimalFormat("0"), false, title)
|
||||
var initValue = SafeParse.stringToDouble(lowRange?.editText?.text.toString(), 100.0)
|
||||
lowRange = PlusMinusEditText(viewAdapter, initValue, 72.0, 180.0, 1.0, DecimalFormat("0"), false, title)
|
||||
} else {
|
||||
var def = 5.5
|
||||
if (lowRange != null) def = SafeParse.stringToDouble(lowRange?.editText?.text.toString())
|
||||
lowRange = PlusMinusEditText(viewAdapter, def, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, title)
|
||||
var initValue = SafeParse.stringToDouble(lowRange?.editText?.text.toString(), 5.5)
|
||||
lowRange = PlusMinusEditText(viewAdapter, initValue, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, title)
|
||||
}
|
||||
container.addView(view)
|
||||
view
|
||||
|
@ -82,13 +76,11 @@ class TempTargetActivity : ViewSelectorActivity() {
|
|||
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
|
||||
val view = viewAdapter.root
|
||||
if (isMGDL) {
|
||||
var def = 100.0
|
||||
if (highRange != null) def = SafeParse.stringToDouble(highRange?.editText?.text.toString())
|
||||
highRange = PlusMinusEditText(viewAdapter, def, 72.0, 180.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_high))
|
||||
var initValue = SafeParse.stringToDouble(highRange?.editText?.text.toString(), 100.0)
|
||||
highRange = PlusMinusEditText(viewAdapter, initValue, 72.0, 180.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_high))
|
||||
} else {
|
||||
var def = 5.5
|
||||
if (highRange != null) def = SafeParse.stringToDouble(highRange?.editText?.text.toString())
|
||||
highRange = PlusMinusEditText(viewAdapter, def, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_high))
|
||||
var initValue = SafeParse.stringToDouble(highRange?.editText?.text.toString(), 5.5)
|
||||
highRange = PlusMinusEditText(viewAdapter, initValue, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_high))
|
||||
}
|
||||
container.addView(view)
|
||||
view
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue