Merge branch 'dev' into pump_common

This commit is contained in:
Andy Rozman 2022-07-13 19:49:06 +01:00
commit 4c0ac4ec02
137 changed files with 1667 additions and 1528 deletions

View file

@ -105,7 +105,7 @@ android {
defaultConfig { defaultConfig {
multiDexEnabled true multiDexEnabled true
versionCode 1500 versionCode 1500
version "3.0.0.2-dev-n" version "3.0.0.2-dev-o"
buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'

View file

@ -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.PasswordCheck
import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.* import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.*
import info.nightscout.androidaps.interfaces.ResourceHelper import info.nightscout.androidaps.interfaces.ResourceHelper
import info.nightscout.androidaps.plugins.aps.openAPSSMBDynamicISF.OpenAPSSMBDynamicISFPlugin
import info.nightscout.shared.SafeParse import info.nightscout.shared.SafeParse
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import javax.inject.Inject import javax.inject.Inject
@ -79,6 +80,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
@Inject lateinit var nsClientPlugin: NSClientPlugin @Inject lateinit var nsClientPlugin: NSClientPlugin
@Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin @Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
@Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin @Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
@Inject lateinit var openAPSSMBDynamicISFPlugin: OpenAPSSMBDynamicISFPlugin
@Inject lateinit var safetyPlugin: SafetyPlugin @Inject lateinit var safetyPlugin: SafetyPlugin
@Inject lateinit var sensitivityAAPSPlugin: SensitivityAAPSPlugin @Inject lateinit var sensitivityAAPSPlugin: SensitivityAAPSPlugin
@Inject lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin @Inject lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin
@ -171,6 +173,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, config.APS) addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, config.APS)
addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, config.APS) addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, config.APS)
addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, config.APS) addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, config.APS)
addPreferencesFromResourceIfEnabled(openAPSSMBDynamicISFPlugin, rootKey, config.APS)
addPreferencesFromResourceIfEnabled(sensitivityAAPSPlugin, rootKey) addPreferencesFromResourceIfEnabled(sensitivityAAPSPlugin, rootKey)
addPreferencesFromResourceIfEnabled(sensitivityWeightedAveragePlugin, rootKey) addPreferencesFromResourceIfEnabled(sensitivityWeightedAveragePlugin, rootKey)
addPreferencesFromResourceIfEnabled(sensitivityOref1Plugin, rootKey) addPreferencesFromResourceIfEnabled(sensitivityOref1Plugin, rootKey)

View file

@ -2,9 +2,9 @@ package info.nightscout.androidaps.activities
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.view.Menu
import android.text.TextWatcher
import android.view.MenuItem import android.view.MenuItem
import androidx.appcompat.widget.SearchView
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import info.nightscout.androidaps.R import info.nightscout.androidaps.R
@ -15,6 +15,7 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
private var preferenceId = 0 private var preferenceId = 0
private var myPreferenceFragment: MyPreferenceFragment? = null private var myPreferenceFragment: MyPreferenceFragment? = null
private var searchView: SearchView? = null
private lateinit var binding: ActivityPreferencesBinding private lateinit var binding: ActivityPreferencesBinding
@ -24,15 +25,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
binding = ActivityPreferencesBinding.inflate(layoutInflater) binding = ActivityPreferencesBinding.inflate(layoutInflater)
setContentView(binding.root) 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) title = rh.gs(R.string.nav_preferences)
supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true)
@ -40,12 +32,29 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
preferenceId = intent.getIntExtra("id", -1) preferenceId = intent.getIntExtra("id", -1)
myPreferenceFragment?.arguments = Bundle().also { myPreferenceFragment?.arguments = Bundle().also {
it.putInt("id", preferenceId) it.putInt("id", preferenceId)
it.putString("filter", binding.prefFilter.text.toString())
} }
if (savedInstanceState == null) if (savedInstanceState == null)
supportFragmentManager.beginTransaction().replace(R.id.frame_layout, myPreferenceFragment!!).commit() 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 { override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean {
val fragment = MyPreferenceFragment() val fragment = MyPreferenceFragment()
fragment.arguments = Bundle().also { fragment.arguments = Bundle().also {
@ -60,10 +69,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
super.attachBaseContext(LocaleHelper.wrap(newBase)) super.attachBaseContext(LocaleHelper.wrap(newBase))
} }
private fun filterPreferences() {
myPreferenceFragment?.setFilter(binding.prefFilter.text.toString())
}
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
android.R.id.home -> { android.R.id.home -> {

View file

@ -1,13 +1,13 @@
package info.nightscout.androidaps.activities package info.nightscout.androidaps.activities
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.res.ColorStateList
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
import android.view.Menu import android.widget.ArrayAdapter
import android.widget.PopupMenu
import android.widget.TextView 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.R
import info.nightscout.androidaps.data.ProfileSealed import info.nightscout.androidaps.data.ProfileSealed
import info.nightscout.androidaps.data.PureProfile 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.extensions.toVisibility
import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.ActivePlugin
import info.nightscout.androidaps.interfaces.ProfileFunction 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.LocalProfilePlugin
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
@ -72,61 +71,49 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
binding = ActivityProfilehelperBinding.inflate(layoutInflater) binding = ActivityProfilehelperBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
binding.menu1.setOnClickListener { binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
switchTab(0, typeSelected[0]) override fun onTabSelected(tab: TabLayout.Tab) {
} switchTab(tab.position, typeSelected[tab.position])
binding.menu2.setOnClickListener { }
switchTab(1, typeSelected[1])
}
binding.profileType.setOnClickListener { override fun onTabUnselected(tab: TabLayout.Tab) {}
PopupMenu(this, binding.profileType).apply { override fun onTabReselected(tab: TabLayout.Tab) {}
menuInflater.inflate(R.menu.menu_profilehelper, menu) })
setOnMenuItemClickListener { item ->
binding.profileType.setText(item.title) val profileTypeList = Lists.newArrayList(
when (item.itemId) { rh.gs(R.string.motoldefaultprofile),
R.id.menu_default -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT) rh.gs(R.string.dpvdefaultprofile),
R.id.menu_default_dpv -> switchTab(tabSelected, ProfileType.DPV_DEFAULT) rh.gs(R.string.currentprofile),
R.id.menu_current -> switchTab(tabSelected, ProfileType.CURRENT) rh.gs(R.string.availableprofile),
R.id.menu_available -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE) rh.gs(R.string.careportal_profileswitch)
R.id.menu_profileswitch -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH) )
} binding.profileType.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileTypeList))
true
} binding.profileType.setOnItemClickListener { _, _, _, _ ->
show() 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 // Active profile
profileList = activePlugin.activeProfileSource.profile?.getProfileList() ?: ArrayList() profileList = activePlugin.activeProfileSource.profile?.getProfileList() ?: ArrayList()
binding.availableProfileList.setOnClickListener { binding.availableProfileList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileList))
PopupMenu(this, binding.availableProfileList).apply { binding.availableProfileList.setOnItemClickListener { _, _, index, _ ->
var order = 0 profileUsed[tabSelected] = index
for (name in profileList) menu.add(Menu.NONE, order, order++, name)
setOnMenuItemClickListener { item ->
binding.availableProfileList.setText(item.title)
profileUsed[tabSelected] = item.itemId
true
}
show()
}
} }
// Profile switch // Profile switch
profileSwitch = repository.getEffectiveProfileSwitchDataFromTime(dateUtil.now() - T.months(2).msecs(), true).blockingGet() profileSwitch = repository.getEffectiveProfileSwitchDataFromTime(dateUtil.now() - T.months(2).msecs(), true).blockingGet()
binding.profileswitchList.setOnClickListener { val profileswitchListNames = profileSwitch.map { it.originalCustomizedName }
PopupMenu(this, binding.profileswitchList).apply { binding.profileswitchList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileswitchListNames))
var order = 0 binding.profileswitchList.setOnItemClickListener { _, _, index, _ ->
for (name in profileSwitch) menu.add(Menu.NONE, order, order++, name.originalCustomizedName) profileSwitchUsed[tabSelected] = index
setOnMenuItemClickListener { item ->
binding.profileswitchList.setText(item.title)
profileSwitchUsed[tabSelected] = item.itemId
true
}
show()
}
} }
// Default profile // Default profile
@ -250,7 +237,7 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
} }
private fun getProfile(age: Double, tdd: Double, weight: Double, basalPct: Double, tab: Int): PureProfile? = 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]) { when (typeSelected[tab]) {
ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits()) ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
ProfileType.DPV_DEFAULT -> defaultProfileDPV.profile(age, tdd, basalPct, 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) { private fun switchTab(tab: Int, newContent: ProfileType, storeOld: Boolean = true) {
setBackgroundColorOnSelected(tab)
// Store values for selected tab. listBox values are stored on selection change // Store values for selected tab. listBox values are stored on selection change
if (storeOld) storeValues() if (storeOld) storeValues()
tabSelected = tab tabSelected = tab
typeSelected[tabSelected] = newContent 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( binding.profileType.setText(
when (typeSelected[tabSelected]) { when (typeSelected[tabSelected]) {
ProfileType.MOTOL_DEFAULT -> rh.gs(R.string.motoldefaultprofile) ProfileType.MOTOL_DEFAULT -> rh.gs(R.string.motoldefaultprofile)
@ -295,28 +280,27 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
ProfileType.CURRENT -> rh.gs(R.string.currentprofile) ProfileType.CURRENT -> rh.gs(R.string.currentprofile)
ProfileType.AVAILABLE_PROFILE -> rh.gs(R.string.availableprofile) ProfileType.AVAILABLE_PROFILE -> rh.gs(R.string.availableprofile)
ProfileType.PROFILE_SWITCH -> rh.gs(R.string.careportal_profileswitch) ProfileType.PROFILE_SWITCH -> rh.gs(R.string.careportal_profileswitch)
} },
false
) )
binding.defaultProfile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility() binding.defaultProfile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility()
binding.currentProfile.visibility = (newContent == ProfileType.CURRENT).toVisibility() binding.currentProfile.visibility = (newContent == ProfileType.CURRENT).toVisibility()
binding.availableProfile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility() binding.availableProfile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility()
binding.profileSwitch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility() binding.profileSwitch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility()
// restore selected values // Restore selected values
binding.age.value = ageUsed[tabSelected] binding.age.value = ageUsed[tabSelected]
binding.weight.value = weightUsed[tabSelected] binding.weight.value = weightUsed[tabSelected]
binding.tdd.value = tddUsed[tabSelected] binding.tdd.value = tddUsed[tabSelected]
binding.basalPctFromTdd.value = pctUsed[tabSelected] binding.basalPctFromTdd.value = pctUsed[tabSelected]
binding.basalPctFromTddRow.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility() binding.basalPctFromTddRow.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility()
if (profileList.isNotEmpty()) if (profileList.isNotEmpty()) {
binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString()) binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString(), false)
if (profileSwitch.isNotEmpty()) }
binding.profileswitchList.setText(profileSwitch[profileSwitchUsed[tabSelected]].originalCustomizedName) 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))
}
} }

View file

@ -345,6 +345,7 @@ class WizardDialog : DaggerDialogFragment() {
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round() val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
runOnUiThread { runOnUiThread {
_binding ?: return@runOnUiThread
if (carbsPassedIntoWizard != 0.0) { if (carbsPassedIntoWizard != 0.0) {
binding.carbsInput.value = carbsPassedIntoWizard binding.carbsInput.value = carbsPassedIntoWizard
} }

View file

@ -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_negiob, true))
.option(Option(R.string.iob_posiob, 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") tasks.add(ExamTask(this, R.string.breadgrams_label, R.string.blank, "breadgrams")
.option(Option(R.string.breadgrams_grams, true)) .option(Option(R.string.breadgrams_grams, true))
.option(Option(R.string.breadgrams_exchange, false)) .option(Option(R.string.breadgrams_exchange, false))

View file

@ -100,7 +100,6 @@ class AutotuneFragment : DaggerFragment() {
) )
binding.autotuneRun.setOnClickListener { binding.autotuneRun.setOnClickListener {
val daysBack = SafeParse.stringToInt(binding.tuneDays.text) val daysBack = SafeParse.stringToInt(binding.tuneDays.text)
autotunePlugin.calculationRunning = true
autotunePlugin.lastNbDays = daysBack.toString() autotunePlugin.lastNbDays = daysBack.toString()
log("Run Autotune $profileName, $daysBack days") log("Run Autotune $profileName, $daysBack days")
Thread { Thread {
@ -126,7 +125,7 @@ class AutotuneFragment : DaggerFragment() {
autotunePlugin.tunedProfile?.let { tunedProfile -> autotunePlugin.tunedProfile?.let { tunedProfile ->
showConfirmation(requireContext(), showConfirmation(requireContext(),
rh.gs(R.string.autotune_copy_localprofile_button), 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 { Runnable {
localProfilePlugin.addProfile(localProfilePlugin.copyFrom(tunedProfile.getProfile(circadian), localName)) localProfilePlugin.addProfile(localProfilePlugin.copyFrom(tunedProfile.getProfile(circadian), localName))
rxBus.send(EventLocalProfileChanged()) rxBus.send(EventLocalProfileChanged())

View file

@ -39,7 +39,7 @@ open class AutotuneIob @Inject constructor(
private val autotuneFS: AutotuneFS private val autotuneFS: AutotuneFS
) { ) {
private val nsTreatments = ArrayList<NsTreatment>() private var nsTreatments = ArrayList<NsTreatment>()
private var dia: Double = Constants.defaultDIA private var dia: Double = Constants.defaultDIA
var boluses: ArrayList<Bolus> = ArrayList() var boluses: ArrayList<Bolus> = ArrayList()
var meals = ArrayList<Carbs>() var meals = ArrayList<Carbs>()
@ -59,14 +59,28 @@ open class AutotuneIob @Inject constructor(
initializeTreatmentData(from - range(), to) initializeTreatmentData(from - range(), to)
initializeTempBasalData(from - range(), to, tunedProfile) initializeTempBasalData(from - range(), to, tunedProfile)
initializeExtendedBolusData(from - range(), to, tunedProfile) initializeExtendedBolusData(from - range(), to, tunedProfile)
tempBasals.sortWith { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() } sortTempBasal()
// Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running addNeutralTempBasal(from - range(), to, tunedProfile) // Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
addNeutralTempBasal(from - range(), to, tunedProfile) sortNsTreatments()
nsTreatments.sortWith { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() } sortBoluses()
this.boluses.sortWith { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() }
aapsLogger.debug(LTag.AUTOTUNE, "Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size) 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) { private fun initializeBgreadings(from: Long, to: Long) {
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet() 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 // 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 // to be able to compare results between oref0 algo and aaps
@Synchronized
private fun addNeutralTempBasal(from: Long, to: Long, tunedProfile: ATProfile) { private fun addNeutralTempBasal(from: Long, to: Long, tunedProfile: ATProfile) {
var previousStart = to var previousStart = to
for (i in tempBasals.indices) { 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 // 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 // even if profile rate is not the same
@Synchronized
private fun toSplittedTimestampTB(tb: TemporaryBasal, tunedProfile: ATProfile) { private fun toSplittedTimestampTB(tb: TemporaryBasal, tunedProfile: ATProfile) {
var splittedTimestamp = tb.timestamp var splittedTimestamp = tb.timestamp
val cutInMilliSec = T.mins(60).msecs() //30 min to compare with oref0, 60 min to improve accuracy 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 return result
} }
@Synchronized
fun glucoseToJSON(): String { fun glucoseToJSON(): String {
val glucoseJson = JSONArray() val glucoseJson = JSONArray()
for (bgreading in glucose) for (bgreading in glucose)
@ -303,6 +319,7 @@ open class AutotuneIob @Inject constructor(
return glucoseJson.toString(2) return glucoseJson.toString(2)
} }
@Synchronized
fun bolusesToJSON(): String { fun bolusesToJSON(): String {
val bolusesJson = JSONArray() val bolusesJson = JSONArray()
for (bolus in boluses) for (bolus in boluses)
@ -310,6 +327,7 @@ open class AutotuneIob @Inject constructor(
return bolusesJson.toString(2) return bolusesJson.toString(2)
} }
@Synchronized
fun nsHistoryToJSON(): String { fun nsHistoryToJSON(): String {
val json = JSONArray() val json = JSONArray()
for (t in nsTreatments) { for (t in nsTreatments) {

View file

@ -22,6 +22,7 @@ import info.nightscout.androidaps.utils.MidnightTime
import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.interfaces.BuildHelper import info.nightscout.androidaps.interfaces.BuildHelper
import info.nightscout.shared.logging.AAPSLogger import info.nightscout.shared.logging.AAPSLogger
import info.nightscout.shared.logging.LTag
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
@ -65,7 +66,7 @@ class AutotunePlugin @Inject constructor(
), Autotune { ), Autotune {
@Volatile override var lastRunSuccess: Boolean = false @Volatile override var lastRunSuccess: Boolean = false
@Volatile var result: String = "" @Volatile var result: String = ""
@Volatile var calculationRunning: Boolean = false @Volatile override var calculationRunning: Boolean = false
@Volatile var lastRun: Long = 0 @Volatile var lastRun: Long = 0
@Volatile var selectedProfile = "" @Volatile var selectedProfile = ""
@Volatile var lastNbDays: String = "" @Volatile var lastNbDays: String = ""
@ -76,21 +77,34 @@ class AutotunePlugin @Inject constructor(
private lateinit var profile: Profile private lateinit var profile: Profile
val autotuneStartHour: Int = 4 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 tunedProfile = null
updateButtonVisibility = View.GONE updateButtonVisibility = View.GONE
lastRunSuccess = false
var logResult = "" var logResult = ""
result = "" result = ""
if (profileFunction.getProfile() == null) { if (profileFunction.getProfile() == null) {
result = rh.gs(R.string.profileswitch_ismissing) 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) val detailedLog = sp.getBoolean(R.string.key_autotune_additional_log, false)
calculationRunning = true calculationRunning = true
lastNbDays = "" + daysBack lastNbDays = "" + daysBack
lastRun = dateUtil.now() 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 selectedProfile = if (profileToTune.isEmpty()) profileFunction.getProfileName() else profileToTune
profileFunction.getProfile()?.let { currentProfile -> profileFunction.getProfile()?.let { currentProfile ->
profile = profileStore.getSpecificProfile(profileToTune)?.let { ProfileSealed.Pure(it) } ?: currentProfile profile = profileStore.getSpecificProfile(profileToTune)?.let { ProfileSealed.Pure(it) } ?: currentProfile
@ -144,11 +158,11 @@ class AutotunePlugin @Inject constructor(
if (tunedProfile == null) { if (tunedProfile == null) {
result = rh.gs(R.string.autotune_error) result = rh.gs(R.string.autotune_error)
log("TunedProfile is null on day ${i + 1}") log("TunedProfile is null on day ${i + 1}")
calculationRunning = false
rxBus.send(EventAutotuneUpdateGui())
autotuneFS.exportResult(result) autotuneFS.exportResult(result)
autotuneFS.exportLogAndZip(lastRun) autotuneFS.exportLogAndZip(lastRun)
return result rxBus.send(EventAutotuneUpdateGui())
calculationRunning = false
return
} }
} }
result = rh.gs(R.string.autotune_result, dateUtil.dateAndTimeString(lastRun)) result = rh.gs(R.string.autotune_result, dateUtil.dateAndTimeString(lastRun))
@ -193,13 +207,16 @@ class AutotunePlugin @Inject constructor(
} }
tunedProfile?.let { tunedProfile?.let {
lastRunSuccess = true
saveLastRun() saveLastRun()
lastRunSuccess = true
rxBus.send(EventAutotuneUpdateGui()) rxBus.send(EventAutotuneUpdateGui())
calculationRunning = false 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 { private fun showResults(tunedProfile: ATProfile?, pumpProfile: ATProfile): String {

View file

@ -134,7 +134,7 @@ class DataLayerListenerServiceMobile : WearableListenerService() {
aapsLogger.debug(LTag.WEAR, "Nodes: ${capabilityInfo.nodes.joinToString(", ") { it.displayName + "(" + it.id + ")" }}") aapsLogger.debug(LTag.WEAR, "Nodes: ${capabilityInfo.nodes.joinToString(", ") { it.displayName + "(" + it.id + ")" }}")
val bestNode = pickBestNodeId(capabilityInfo.nodes) val bestNode = pickBestNodeId(capabilityInfo.nodes)
transcriptionNodeId = bestNode?.id transcriptionNodeId = bestNode?.id
wearPlugin.connectedDevice = bestNode?.displayName ?: "---" wearPlugin.connectedDevice = bestNode?.displayName ?: rh.gs(R.string.no_watch_connected)
rxBus.send(EventWearUpdateGui()) rxBus.send(EventWearUpdateGui())
aapsLogger.debug(LTag.WEAR, "Selected node: ${bestNode?.displayName} $transcriptionNodeId") aapsLogger.debug(LTag.WEAR, "Selected node: ${bestNode?.displayName} $transcriptionNodeId")
rxBus.send(EventMobileToWear(EventData.ActionPing(System.currentTimeMillis()))) rxBus.send(EventMobileToWear(EventData.ActionPing(System.currentTimeMillis())))

View file

@ -23,6 +23,7 @@ import info.nightscout.androidaps.extensions.toVisibility
import info.nightscout.androidaps.interfaces.ActivePlugin import info.nightscout.androidaps.interfaces.ActivePlugin
import info.nightscout.androidaps.interfaces.GlucoseUnit import info.nightscout.androidaps.interfaces.GlucoseUnit
import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.interfaces.Profile
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.plugins.bus.RxBus import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
@ -52,6 +53,7 @@ class LocalProfileFragment : DaggerFragment() {
@Inject lateinit var activePlugin: ActivePlugin @Inject lateinit var activePlugin: ActivePlugin
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var localProfilePlugin: LocalProfilePlugin @Inject lateinit var localProfilePlugin: LocalProfilePlugin
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var hardLimits: HardLimits @Inject lateinit var hardLimits: HardLimits
@Inject lateinit var protectionCheck: ProtectionCheck @Inject lateinit var protectionCheck: ProtectionCheck
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
@ -117,6 +119,11 @@ class LocalProfileFragment : DaggerFragment() {
}) })
binding.diaLabel.labelFor = binding.dia.editTextId binding.diaLabel.labelFor = binding.dia.editTextId
binding.unlock.setOnClickListener { queryProtection() } 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() { fun build() {
@ -387,13 +394,14 @@ class LocalProfileFragment : DaggerFragment() {
private fun processVisibility(position: Int) { private fun processVisibility(position: Int) {
binding.diaPlaceholder.visibility = (position == 0).toVisibility() binding.diaPlaceholder.visibility = (position == 0).toVisibility()
binding.ic.visibility = (position == 1).toVisibility() binding.ic.visibility = (position == 1).toVisibility()
binding.isf.visibility = (position == 2).toVisibility() binding.isf.visibility = (position == 2).toVisibility()
binding.basal.visibility = (position == 3).toVisibility() binding.basal.visibility = (position == 3).toVisibility()
binding.target.visibility = (position == 4).toVisibility() binding.target.visibility = (position == 4).toVisibility()
} }
private fun updateProtectedUi() { private fun updateProtectedUi() {
_binding ?: return
val isLocked = protectionCheck.isLocked(ProtectionCheck.Protection.PREFERENCES) val isLocked = protectionCheck.isLocked(ProtectionCheck.Protection.PREFERENCES)
binding.mainLayout.visibility = isLocked.not().toVisibility() binding.mainLayout.visibility = isLocked.not().toVisibility()
binding.unlock.visibility = isLocked.toVisibility() binding.unlock.visibility = isLocked.toVisibility()

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.utils.stats package info.nightscout.androidaps.utils.stats
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Typeface import android.graphics.Typeface
import android.util.LongSparseArray import android.util.LongSparseArray
@ -99,9 +98,19 @@ class TddCalculator @Inject constructor(
return result 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 { fun calculateDaily(startHours: Long, endHours: Long): TotalDailyDose {
val startTime = dateUtil.now() + T.hours(hour = startHours).msecs() val startTime = dateUtil.now() + T.hours(hour = startHours).msecs()
val endTime = dateUtil.now() + T.hours(hour = endHours).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) val tdd = TotalDailyDose(timestamp = startTime)
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet() repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
.filter { it.type != Bolus.Type.PRIMING } .filter { it.type != Bolus.Type.PRIMING }
@ -147,10 +156,10 @@ class TddCalculator @Inject constructor(
return totalTdd return totalTdd
} }
@SuppressLint("SetTextI18n")
fun stats(context: Context): TableLayout { fun stats(context: Context): TableLayout {
val tdds = calculate(7) val tdds = calculate(7)
val averageTdd = averageTDD(tdds) val averageTdd = averageTDD(tdds)
val todayTdd = calculateToday()
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT) val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)
return TableLayout(context).also { layout -> return TableLayout(context).also { layout ->
layout.layoutParams = TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f) 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(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))
} }
} }
} }

View file

@ -182,7 +182,7 @@ public class TimeListEdit {
numberPickers1[position].setTextWatcher(new TextWatcher() { numberPickers1[position].setTextWatcher(new TextWatcher() {
@Override @Override
public void afterTextChanged(Editable s) { 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); Double value2 = value2(position);
if (data2 != null && value1 > value2) { if (data2 != null && value1 > value2) {
value2 = value1; value2 = value1;
@ -209,7 +209,7 @@ public class TimeListEdit {
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
Double value1 = value1(position); 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) { if (data2 != null && value2 < value1) {
value1 = value2; value1 = value2;
numberPickers1[position].setValue(value1); numberPickers1[position].setValue(value1);

View file

@ -2,7 +2,6 @@
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:autoMirrored="true" android:autoMirrored="true"
android:tint="#FFFFFF"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path

View file

@ -5,28 +5,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> 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 <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View file

@ -12,52 +12,38 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/defaultBackground" android:layout_marginBottom="10dp">
android:orientation="horizontal"
android:paddingBottom="10dp">
<TextView <com.google.android.material.tabs.TabItem
android:id="@+id/menu1" android:layout_width="wrap_content"
android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:text="@string/profile1" /> android:text="@string/profile1" />
<TextView <com.google.android.material.tabs.TabItem
android:id="@+id/menu2" android:layout_width="wrap_content"
android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:text="@string/profile2" /> android:text="@string/profile2" />
</LinearLayout> </com.google.android.material.tabs.TabLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/profile_type_title" 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_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp" 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:id="@+id/profile_type"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clickable="true" android:inputType="none" />
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -206,21 +192,18 @@
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout <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_width="match_parent"
android:layout_height="wrap_content" 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:id="@+id/available_profile_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:clickable="true" android:inputType="none" />
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -233,21 +216,19 @@
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout <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_width="match_parent"
android:layout_height="wrap_content" 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:id="@+id/profileswitch_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:clickable="true"
android:cursorVisible="false" android:inputType="none" />
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>

View file

@ -22,6 +22,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_marginEnd="3dp"
android:contentDescription="@string/chart_menu" android:contentDescription="@string/chart_menu"
android:paddingTop="5dp" android:paddingTop="5dp"
app:srcCompat="@drawable/ic_arrow_drop_down_white_24dp" /> app:srcCompat="@drawable/ic_arrow_drop_down_white_24dp" />

View file

@ -13,7 +13,7 @@
android:gravity="center_vertical|center_horizontal" android:gravity="center_vertical|center_horizontal"
android:paddingTop="10dp" android:paddingTop="10dp"
android:paddingBottom="10dp" android:paddingBottom="10dp"
android:text="---" android:text="@string/no_watch_connected"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="@style/TextAppearance.AppCompat.Medium"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />

View 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>

View file

@ -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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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_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="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_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_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_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> <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>

View file

@ -1043,4 +1043,5 @@
<string name="description_source_aidex">Přijímat hodnoty glykémie ze senzoru GlucoRx Aidex.</string> <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_charging">Zablokováno možností nabíjení</string>
<string name="blocked_by_connectivity">Zablokováno možností připojení</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> </resources>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="wronginsulin_donothing">Unternimm nichts und lass AndroidAPS die entstehenden hohen Glukosewerte korrigieren.</string>
<string name="iob_label">Aktives Insulin (IOB)</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_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_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> <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>

View file

@ -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_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_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="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_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_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_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> <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>

View file

@ -1043,4 +1043,5 @@
<string name="description_source_aidex">Recibir los valores de glucosa de GlucoRx Aidex CGMS</string> <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_charging">Bloqueado por opciones de carga</string>
<string name="blocked_by_connectivity">Bloqueado por opciones de conectividad</string> <string name="blocked_by_connectivity">Bloqueado por opciones de conectividad</string>
<string name="no_watch_connected">(Ningún reloj conectado)</string>
</resources> </resources>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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="ns_localbroadcasts_title">Activer les transmissions locales</string>
<string name="openapssmb">OpenAPS SMB</string> <string name="openapssmb">OpenAPS SMB</string>
<string name="openaps_smb_dynamic_isf">SI dynamique</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="enableuam">Activer RNS</string>
<string name="enablesmb">Activer SMB</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> <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_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_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_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="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="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> <string name="overview_editquickwizard_show_on_device">Afficher l\'entrée sur l\'appareil :</string>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -136,8 +136,20 @@
<string name="wronginsulin_compare">השוו את הרשומות שב-AndroidAPS עם היסטוריית המשאבה (אם המשאבה תומכת בכך).</string> <string name="wronginsulin_compare">השוו את הרשומות שב-AndroidAPS עם היסטוריית המשאבה (אם המשאבה תומכת בכך).</string>
<string name="wronginsulin_prime">מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime).</string> <string name="wronginsulin_prime">מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime).</string>
<string name="wronginsulin_donothing">לא לעשות דבר ולאפשר ל-AndroidAPS לתקן כל רמת סוכר גבוהה.</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_label">אינסולין פעיל בגוף (IOB)</string>
<string name="iob_which">סמנו את כל התשובות הנכונות.</string>
<string name="iob_value">ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו.</string> <string name="iob_value">ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו.</string>
<string name="iob_hightemp">מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה.</string> <string name="iob_hightemp">מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה.</string>
<string name="iob_negiob">אינסולין פעיל שלילי לאורך זמן בו לא נעשית פעילות מצביע על כך שהפרופיל חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בפרופיל.</string> <string name="iob_negiob">אינסולין פעיל שלילי לאורך זמן בו לא נעשית פעילות מצביע על כך שהפרופיל חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בפרופיל.</string>

View file

@ -1039,4 +1039,5 @@
<string name="description_source_aidex">קבלת נתוני סוכר מחיישני GlucoRx Aidex.</string> <string name="description_source_aidex">קבלת נתוני סוכר מחיישני GlucoRx Aidex.</string>
<string name="blocked_by_charging">חסום ע\"י הגדרות טעינה</string> <string name="blocked_by_charging">חסום ע\"י הגדרות טעינה</string>
<string name="blocked_by_connectivity">חסום ע\"י הגדרות חיבור</string> <string name="blocked_by_connectivity">חסום ע\"י הגדרות חיבור</string>
<string name="no_watch_connected">(השעון לא מחובר)</string>
</resources> </resources>

View file

@ -134,7 +134,6 @@
<string name="wronginsulin_prime">\"주입되지 않은\" 인슐린양을 계산하여 시린지/펜 또는 prime 기능을 사용하여 인슐린을 주입합니다.</string> <string name="wronginsulin_prime">\"주입되지 않은\" 인슐린양을 계산하여 시린지/펜 또는 prime 기능을 사용하여 인슐린을 주입합니다.</string>
<string name="wronginsulin_donothing">특별한 조치를 취하지 않고, AndroidAPS가 결과적으로 높은 혈당 정도를 조정할 수 있도록 합니다.</string> <string name="wronginsulin_donothing">특별한 조치를 취하지 않고, AndroidAPS가 결과적으로 높은 혈당 정도를 조정할 수 있도록 합니다.</string>
<string name="iob_label">활성 인슐린 (IOB)</string> <string name="iob_label">활성 인슐린 (IOB)</string>
<string name="iob_which">올바른 답변을 모두 체크하세요.</string>
<string name="iob_value">IOB 값은 실행된 임시 basal의 영향을 받습니다.</string> <string name="iob_value">IOB 값은 실행된 임시 basal의 영향을 받습니다.</string>
<string name="iob_hightemp">혈당이 목표보다 낮을 경우 높은 임시 basal은 실행되지 않습니다.</string> <string name="iob_hightemp">혈당이 목표보다 낮을 경우 높은 임시 basal은 실행되지 않습니다.</string>
<string name="iob_negiob">운동 없이도 음수의 IOB (마이너스 IOB) 구간이 많을 경우, 프로파일이 너무 강한 것이며 인슐린 양을 적게 설정해야 합니다.</string> <string name="iob_negiob">운동 없이도 음수의 IOB (마이너스 IOB) 구간이 많을 경우, 프로파일이 너무 강한 것이며 인슐린 양을 적게 설정해야 합니다.</string>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -136,8 +136,14 @@
<string name="wronginsulin_compare">Sammenlign verdiene i AndroidAPS og pumpehistorikken (hvis pumpen støtter dette).</string> <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_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="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_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_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_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> <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>

View file

@ -1043,4 +1043,5 @@
<string name="description_source_aidex">Motta BS verdier fra GlucoRx Aidex CGM.</string> <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_charging">Blokkert på grunn av ladealternativer</string>
<string name="blocked_by_connectivity">Blokkert på grunn av tilkoblingsalternativer</string> <string name="blocked_by_connectivity">Blokkert på grunn av tilkoblingsalternativer</string>
<string name="no_watch_connected">(Ingen klokke tilkoblet)</string>
</resources> </resources>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -137,7 +137,6 @@
<string name="wronginsulin_prime">Рассчитать и ввести «пропущенный» вами инсулин шприцем/ручкой или через кнопку заполнения канюли.</string> <string name="wronginsulin_prime">Рассчитать и ввести «пропущенный» вами инсулин шприцем/ручкой или через кнопку заполнения канюли.</string>
<string name="wronginsulin_donothing">Ничего не делать и позволить AndroidAPS исправить возможный высокий уровень ГК.</string> <string name="wronginsulin_donothing">Ничего не делать и позволить AndroidAPS исправить возможный высокий уровень ГК.</string>
<string name="iob_label">Активный инсулин (IOB)</string> <string name="iob_label">Активный инсулин (IOB)</string>
<string name="iob_which">Отметьте все правильные ответы.</string>
<string name="iob_value">На величину IOB влияют устанавливаемые ВБС.</string> <string name="iob_value">На величину IOB влияют устанавливаемые ВБС.</string>
<string name="iob_hightemp">Высокая ВБС не будет применяться, если уровень сахара в крови ниже целевого.</string> <string name="iob_hightemp">Высокая ВБС не будет применяться, если уровень сахара в крови ниже целевого.</string>
<string name="iob_negiob">Отрицательный IOB в течение длительного периода при отсутствии физнагрузки указывает на то, что ваш профиль завышен и требуется снизить кол-во инсулина в настройках.</string> <string name="iob_negiob">Отрицательный IOB в течение длительного периода при отсутствии физнагрузки указывает на то, что ваш профиль завышен и требуется снизить кол-во инсулина в настройках.</string>

View file

@ -6,7 +6,7 @@
<string name="objectivenotstarted">Цель %1$d не начата</string> <string name="objectivenotstarted">Цель %1$d не начата</string>
<string name="objectivenotfinished">Цель %1$d не завершена</string> <string name="objectivenotfinished">Цель %1$d не завершена</string>
<string name="objectives_0_objective">Настройка визуализации и мониторинга, анализ базала и коэффициентов</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_objective">Старт незамкнутого цикла</string>
<string name="objectives_openloop_gate">Начинайте работу в режиме незамкнутого цикла и ручной подстройки величины временного базала. Установите и применяйте временные цели и временные цели по умолчанию (напр. углеводы при нагрузке или купировании гипо)</string> <string name="objectives_openloop_gate">Начинайте работу в режиме незамкнутого цикла и ручной подстройки величины временного базала. Установите и применяйте временные цели и временные цели по умолчанию (напр. углеводы при нагрузке или купировании гипо)</string>
<string name="objectives_maxbasal_objective">Глубже понимаем незакольцованную систему Open Loop, включая ее рекомендации по временным базалам</string> <string name="objectives_maxbasal_objective">Глубже понимаем незакольцованную систему Open Loop, включая ее рекомендации по временным базалам</string>

View file

@ -6,6 +6,7 @@
<string name="treatmentssafety_title">Безопасность терапии</string> <string name="treatmentssafety_title">Безопасность терапии</string>
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string> <string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
<string name="treatmentssafety_maxcarbs_title">Макс разрешенные углеводы (г)</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_plugin">Настройки %1$s</string>
<string name="nav_preferences">Настройки</string> <string name="nav_preferences">Настройки</string>
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string> <string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
@ -432,6 +433,8 @@
<string name="ns_localbroadcasts_title">Активировать локальную передачу</string> <string name="ns_localbroadcasts_title">Активировать локальную передачу</string>
<string name="openapssmb">Супер микро болюс OpenAPS</string> <string name="openapssmb">Супер микро болюс OpenAPS</string>
<string name="openaps_smb_dynamic_isf">Динамический ISF</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="enableuam">Включить непредвиденный прием пищи UAM</string>
<string name="enablesmb">Включить супер микро болюс SMB</string> <string name="enablesmb">Включить супер микро болюс SMB</string>
<string name="enablesmb_summary">Для ускорения действия используйте супер микро болюсы 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="openapssmb_maxiob_summary">Эта величина называется Max IOB в OpenAPS context\nOpenAPS не будет добавлять инсулин если текущий активный инсулин ее превысит</string>
<string name="absorption_cutoff_title">Максимальное время усваимости пищи [h]</string> <string name="absorption_cutoff_title">Максимальное время усваимости пищи [h]</string>
<string name="absorption_cutoff_summary">Время, за которое любая еда считается усвоившейся. Оставшиеся углеводы не будут учтены.</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="overview_show_notes_field_in_dialogs_title">Показать поле примечаний в диалогах назначений</string>
<string name="next_button">Далее</string> <string name="next_button">Далее</string>
<string name="previous_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_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_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_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="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="wizard_result">Мастер:\nИнсулин: %1$.2fЕд\nУгл: %2$dg</string>
<string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string> <string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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="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_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_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_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> <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>

View file

@ -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_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_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="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="cob_label">Aktif Karbonhidrat (AKRB)</string>
<string name="iob_which">Tüm doğru cevapları kontrol edin.</string> <string name="cob_question">İDF değerinin değiştirilmesi AKRB (Aktif karbonhidrat) hesaplamasını nasıl etkiler?</string>
<string name="iob_value">IOB değeri, verilen geçici bazallardan etkilenir.</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_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="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_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_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_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_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="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> <string name="extendedcarbs_label">yayma-karbonhidratlar</string>
@ -158,11 +164,11 @@
<string name="nsclient_label">Uzaktan İzleme</string> <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_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_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_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_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="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_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_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> <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_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_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_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_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_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> <string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>

View file

@ -6,6 +6,7 @@
<string name="treatmentssafety_title">Tedavi güvenliği</string> <string name="treatmentssafety_title">Tedavi güvenliği</string>
<string name="treatmentssafety_maxbolus_title">Maks izin verilen bolus [U]</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_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_plugin">%1$s Tercihler</string>
<string name="nav_preferences">Tercihler</string> <string name="nav_preferences">Tercihler</string>
<string name="nav_refreshtreatments">NS\'tan tedavileri güncelle</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="description_sms_communicator">SMS komutlarını kullanarak uzaktan AndroidAPS kontrolü.</string>
<string name="treatments_insulin_label_string">İnsülin:</string> <string name="treatments_insulin_label_string">İnsülin:</string>
<string name="treatments_carbs_label_string">Karbonhidrat:</string> <string name="treatments_carbs_label_string">Karbonhidrat:</string>
<string name="treatments_iob_label_string">IOB:</string> <string name="treatments_iob_label_string">AİNS:</string>
<string name="sms_iob">IOB:</string> <string name="sms_iob">AİNS:</string>
<string name="treatments_iobtotal_label_string">Toplam IOB:</string> <string name="treatments_iobtotal_label_string">Toplam AİNS:</string>
<string name="treatments_iobactivitytotal_label_string">Toplam IOB etkinliği:</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_realduration_label_string">Süre:</string>
<string name="tempbasals_netratio_label_string">Oran:</string> <string name="tempbasals_netratio_label_string">Oran:</string>
<string name="tempbasals_netinsulin_label_string">İns:</string> <string name="tempbasals_netinsulin_label_string">İns:</string>
<string name="tempbasals_iob_label_string">IOB:</string> <string name="tempbasals_iob_label_string">AİNS:</string>
<string name="tempbasals_iobtotal_label_string">Toplam IOB:</string> <string name="tempbasals_iobtotal_label_string">Toplam AİNS:</string>
<string name="treatments_wizard_bg_label"></string> <string name="treatments_wizard_bg_label"></string>
<string name="treatments_wizard_tt_label">GH</string> <string name="treatments_wizard_tt_label">GH</string>
<string name="treatments_wizard_carbs_label">Karbonhidrat</string> <string name="treatments_wizard_carbs_label">Karbonhidrat</string>
<string name="treatments_wizard_correction_label">Düzeltme</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="openapsma_run">Şimdi Çalıştır</string>
<string name="vitualpump_label">SANAL POMPA</string> <string name="vitualpump_label">SANAL POMPA</string>
<string name="openapsma_lastrun_label">Son Çalıştırma</string> <string name="openapsma_lastrun_label">Son Çalıştırma</string>
<string name="openapsma_inputparameters_label">Girdi Parametreleri</string> <string name="openapsma_inputparameters_label">Girdi Parametreleri</string>
<string name="openapsma_glucosestatus_label">Glikoz durumu</string> <string name="openapsma_glucosestatus_label">Glikoz durumu</string>
<string name="openapsma_currenttemp_label">Mevcut Geçici Bazal</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_profile_label">Profil</string>
<string name="openapsma_mealdata_label">Yemek Verisi</string> <string name="openapsma_mealdata_label">Yemek Verisi</string>
<string name="result">Sonuç</string> <string name="result">Sonuç</string>
@ -115,7 +116,7 @@
<string name="openloop_newsuggestion">Yeni öneri mevcut</string> <string name="openloop_newsuggestion">Yeni öneri mevcut</string>
<string name="carbssuggestion">Karbonhidrat Önerisi</string> <string name="carbssuggestion">Karbonhidrat Önerisi</string>
<string name="unsupportednsversion">Nightscout\'un desteklenmeyen sürümü</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="bolusconstraintapplied">Bolus kısıtlaması uygulandı</string>
<string name="carbsconstraintapplied">Karbonhidrat kısıtlaması uygulandı</string> <string name="carbsconstraintapplied">Karbonhidrat kısıtlaması uygulandı</string>
<string name="careportal_newnstreatment_other">Diğer</string> <string name="careportal_newnstreatment_other">Diğer</string>
@ -139,8 +140,8 @@
<string name="nav_import">İçe aktarma ayarları</string> <string name="nav_import">İçe aktarma ayarları</string>
<string name="openapsma_maxbasal_title">Maks Ü/s geçici Bazal ayarlanabilir</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_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_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 IOB denir.\nAPS\'de bir kerede verilebilen maksimum 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_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="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> <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="clearlog">Günlüğü temizle</string>
<string name="nowritepermission">NSCLIENT yazma izni yok. Yanlış API Anahtarı?</string> <string name="nowritepermission">NSCLIENT yazma izni yok. Yanlış API Anahtarı?</string>
<string name="wear_settings">Wear ayarları</string> <string name="wear_settings">Wear ayarları</string>
<string name="wear_detailedIOB_title">Ayrıntılı IOB göster</string> <string name="wear_detailedIOB_title">Ayrıntılı AİNS 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_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="nosuccess">başarısız - lütfen telefonu kontrol edin</string>
<string name="notavailable">n/a</string> <string name="notavailable">n/a</string>
<string name="patientage">Hasta tipi</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_loopsuspended">Döngü duraklatıldı</string>
<string name="smscommunicator_loopresumed">Döngü devam ettirildi</string> <string name="smscommunicator_loopresumed">Döngü devam ettirildi</string>
<string name="bg_trend_label">15 dk eğilim</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="superbolus">Süperbolus</string>
<string name="ns_logappstartedevent">NS\'a uygulama başlangıcını kaydet</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> <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">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="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="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_time">Tepe zamanı [min]</string>
<string name="insulin_peak">Tepe</string> <string name="insulin_peak">Tepe</string>
<string name="free_peak_oref">Serbest tepe Oref</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="nsclientbg">Nightscout Client KŞ</string>
<string name="nsclientbgshort">NS KŞ</string> <string name="nsclientbgshort">NS KŞ</string>
<string name="overview_editquickwizard_usebg">KŞ Hesaplaması</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_usebolusiob">Bolus AİNS hesaplaması</string>
<string name="overview_editquickwizard_usebasaliob">Bazal IOB (Aktif İnsülin) hesaplaması</string> <string name="overview_editquickwizard_usebasaliob">Bazal AİNS hesaplaması</string>
<string name="overview_editquickwizard_usetrend">Trend hesapla</string> <string name="overview_editquickwizard_usetrend">Trend hesapla</string>
<string name="overview_editquickwizard_usesuperbolus">Süperbolus hesapla</string> <string name="overview_editquickwizard_usesuperbolus">Süperbolus hesapla</string>
<string name="positiveonly">Sadece pozitif</string> <string name="positiveonly">Sadece pozitif</string>
<string name="negativeonly">Sadece negatif</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_usetemptarget">Geçici hedef hesaplaması</string>
<string name="overview_editquickwizard_usepercentage">Yüzde Hesaplaması</string> <string name="overview_editquickwizard_usepercentage">Yüzde Hesaplaması</string>
<string name="loopenabled">Döngü etkin</string> <string name="loopenabled">Döngü etkin</string>
<string name="apsselected">APS Seçildi</string> <string name="apsselected">APS Seçildi</string>
<string name="nsclienthaswritepermission">NSClient\'in yazma izni var</string> <string name="nsclienthaswritepermission">NSClient\'in yazma izni var</string>
<string name="closedmodeenabled">Kapalı mod etkin</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="hasbgdata">Seçili kaynaktan KŞ kullanılabilir</string>
<string name="extendedbolusdeliveryerror">Yayma bolus iletim hatası</string> <string name="extendedbolusdeliveryerror">Yayma bolus iletim hatası</string>
<string name="enablesmbalways">SMB\'yi her zaman etkinleştir</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="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">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="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 COB ile etkinleştir</string> <string name="enablesmbwithcob">SMB\'yi AKRB ile etkinleştir</string>
<string name="enablesmbwithcob_summary">COB (Aktif Karbonhidrat) aktif olduğunda SMB\'yi (Super Micro Bolus) etkinleştirin.</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">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="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> <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="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="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="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="maxvalueinpreferences">tercihlerde maksimum değer</string>
<string name="hardlimit">sert sınır</string> <string name="hardlimit">sert sınır</string>
<string name="readstatusfailed">Durumu okumak başarısız oldu</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">ık Döngü modunda SMB\'ye (Super Micro Bolus) izin verilmiyor</string> <string name="smbnotallowedinopenloopmode">ık Döngü modunda SMB\'ye (Super Micro Bolus) izin verilmiyor</string>
<string name="food_short">Yiyecek</string> <string name="food_short">Yiyecek</string>
<string name="reset">sıfırla</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_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 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_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_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="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> <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="readstatus">Durum oku</string>
<string name="exitwizard">Kurulum sihirbazını atla</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_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="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="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 56 saat, eski insülin profillerinde DIA 3saat\'e eşittir.</string> <string name="diawarning">Lütfen unutmayın: yeni insülin profilleri en az 5 saat DIA gerektirir. Yeni profildeki DIA 56 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_app_patched">BYODA</string>
<string name="dexcom_short">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="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="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="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="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> <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="smscommunicator_messagebody">Geçersiz mesaj</string>
<string name="format_bg_isf">%1$s ISF: %2$.1f</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_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 : %2$.1f</string>
<string name="format_percent">%1$d%%</string> <string name="format_percent">%1$d%%</string>
<string name="unit_minute_short">dk.</string> <string name="unit_minute_short">dk.</string>
<string name="profile_name">Profil adı:</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">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_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">İ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">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_carbs_summary">NS veya NSClient aracılığıyla girilen karbonhidratları kabul edin</string>
<string name="ns_receive_therapy_events">Terapi etkinlikleri alın</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="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_actual_bg">Hesaplamayı temel alacak yeni bir KŞ yok!</string>
<string name="wizard_no_active_profile">Etkin profil ayarlanmadı!</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_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_calc">Hesap (KİO: %1$.1f, İDF: %2$.1f)</string>
<string name="wizard_explain_carbs">Karb: %1$.2fÜ</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_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_superbolus">Süperbolus: %1$.2fÜ</string>
<string name="wizard_explain_trend">15\' trend: %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> <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="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_charging">Şarj seçenekleri tarafından engellendi</string>
<string name="blocked_by_connectivity">Bağlantı 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> </resources>

View file

@ -137,7 +137,6 @@
<string name="wronginsulin_prime">通过注射器或胰岛素笔输注你计算出的“遗漏”胰岛素的一部分。</string> <string name="wronginsulin_prime">通过注射器或胰岛素笔输注你计算出的“遗漏”胰岛素的一部分。</string>
<string name="wronginsulin_donothing">不做任何事情允许AndroidAPS纠正高血糖导致的任何结果。</string> <string name="wronginsulin_donothing">不做任何事情允许AndroidAPS纠正高血糖导致的任何结果。</string>
<string name="iob_label">活性胰岛素(IOB)</string> <string name="iob_label">活性胰岛素(IOB)</string>
<string name="iob_which">选择所有正确的答案。</string>
<string name="iob_value">活性胰岛素IOB数值受发布的临时基础率影响。</string> <string name="iob_value">活性胰岛素IOB数值受发布的临时基础率影响。</string>
<string name="iob_hightemp">当您的血糖低于目标值时,不会被给予高临时基础率。</string> <string name="iob_hightemp">当您的血糖低于目标值时,不会被给予高临时基础率。</string>
<string name="iob_negiob">在没有运动的情况下活性胰岛素IOB长时间负数表明你的个人配置太强你需要在配置中减少的胰岛素用量。</string> <string name="iob_negiob">在没有运动的情况下活性胰岛素IOB长时间负数表明你的个人配置太强你需要在配置中减少的胰岛素用量。</string>

View file

@ -136,8 +136,20 @@
<string name="wronginsulin_compare">Compare values in AndroidAPS and pump history (if pump supports this).</string> <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_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="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_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_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_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> <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>

View file

@ -1242,13 +1242,15 @@
<string name="a11y_only_on_watch">only on watch</string> <string name="a11y_only_on_watch">only on watch</string>
<string name="a11y_only_on_phone">only on phone</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="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">GlucoRx Aidex</string>
<string name="aidex_short">Aidex</string> <string name="aidex_short">Aidex</string>
<string name="description_source_aidex">Receive BG values from GlucoRx Aidex CGMS.</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_charging">Blocked by charging options</string>
<string name="blocked_by_connectivity">Blocked by connectivity options</string> <string name="blocked_by_connectivity">Blocked by connectivity options</string>
<string name="no_watch_connected">(No Watch Connected)</string>
</resources> </resources>

View file

@ -4,7 +4,7 @@
<PreferenceCategory <PreferenceCategory
android:key="@string/key_autotune_plugin" android:key="@string/key_autotune_plugin"
android:title="@string/autotune_settings" android:title="@string/autotune_settings"
app:initialExpandedChildrenCount="10"> app:initialExpandedChildrenCount="0">
<SwitchPreference <SwitchPreference
android:defaultValue="false" android:defaultValue="false"

View file

@ -33,6 +33,7 @@ abstract class AutomationModule {
@ContributesAndroidInjector abstract fun triggerWifiSsidInjector(): TriggerWifiSsid @ContributesAndroidInjector abstract fun triggerWifiSsidInjector(): TriggerWifiSsid
@ContributesAndroidInjector abstract fun actionInjector(): Action @ContributesAndroidInjector abstract fun actionInjector(): Action
@ContributesAndroidInjector abstract fun actionStopProcessingInjector(): ActionStopProcessing
@ContributesAndroidInjector abstract fun actionLoopDisableInjector(): ActionLoopDisable @ContributesAndroidInjector abstract fun actionLoopDisableInjector(): ActionLoopDisable
@ContributesAndroidInjector abstract fun actionLoopEnableInjector(): ActionLoopEnable @ContributesAndroidInjector abstract fun actionLoopEnableInjector(): ActionLoopEnable
@ContributesAndroidInjector abstract fun actionLoopResumeInjector(): ActionLoopResume @ContributesAndroidInjector abstract fun actionLoopResumeInjector(): ActionLoopResume

View file

@ -4,6 +4,7 @@ import dagger.android.HasAndroidInjector
import info.nightscout.shared.logging.AAPSLogger import info.nightscout.shared.logging.AAPSLogger
import info.nightscout.androidaps.plugins.general.automation.actions.Action 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.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.TriggerConnector
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
@ -52,6 +53,11 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
return result return result
} }
fun hasStopProcessing(): Boolean {
for (action in actions) if (action is ActionStopProcessing) return true
return false
}
fun toJSON(): String { fun toJSON(): String {
val array = JSONArray() val array = JSONArray()
for (a in actions) array.put(a.toJSON()) for (a in actions) array.put(a.toJSON())

View file

@ -212,8 +212,12 @@ class AutomationPlugin @Inject constructor(
while (iterator.hasNext()) { while (iterator.hasNext()) {
val event = iterator.next() val event = iterator.next()
if (event.isEnabled && !event.userAction && event.shouldRun()) 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 // we cannot detect connected BT devices
// so let's collect all connection/disconnections between 2 runs of processActions() // so let's collect all connection/disconnections between 2 runs of processActions()
// TriggerBTDevice can pick up and process these events // TriggerBTDevice can pick up and process these events
@ -329,6 +333,7 @@ class AutomationPlugin @Inject constructor(
//ActionLoopEnable(injector), //ActionLoopEnable(injector),
//ActionLoopResume(injector), //ActionLoopResume(injector),
//ActionLoopSuspend(injector), //ActionLoopSuspend(injector),
ActionStopProcessing(injector),
ActionStartTempTarget(injector), ActionStartTempTarget(injector),
ActionStopTempTarget(injector), ActionStopTempTarget(injector),
ActionNotification(injector), ActionNotification(injector),

View file

@ -42,13 +42,19 @@ class ActionRunAutotune(injector: HasAndroidInjector) : Action(injector) {
val profileName = if (inputProfileName.value == rh.gs(R.string.active)) "" else inputProfileName.value 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 var message = if (autoSwitch) R.string.autotune_run_with_autoswitch else R.string.autotune_run_without_autoswitch
Thread { Thread {
autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch") if (!autotunePlugin.calculationRunning) {
autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName) autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch")
if (!autotunePlugin.lastRunSuccess) { autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName)
message = R.string.autotune_run_with_error if (!autotunePlugin.lastRunSuccess) {
aapsLogger.error(LTag.AUTOMATION, "Error during Autotune Run") 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() }.start()
return return
} }

View file

@ -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
}

View file

@ -93,8 +93,8 @@
<string name="target_u">Hedef [%1$s]:</string> <string name="target_u">Hedef [%1$s]:</string>
<string name="lastboluslabel">Son bolus önce</string> <string name="lastboluslabel">Son bolus önce</string>
<string name="lastboluscompared">Son bolus zamanı %1$s %2$s dakika önce</string> <string name="lastboluscompared">Son bolus zamanı %1$s %2$s dakika önce</string>
<string name="triggercoblabel">COB</string> <string name="triggercoblabel">AKRB</string>
<string name="cobcompared">AK (COB) %1$s %2$.0f</string> <string name="cobcompared">AKRB %1$s %2$.0f</string>
<string name="iob_u">IOB [U]:</string> <string name="iob_u">IOB [U]:</string>
<string name="distance_short">Mesafe [m]:</string> <string name="distance_short">Mesafe [m]:</string>
<string name="recurringTime">Yinelenen zaman</string> <string name="recurringTime">Yinelenen zaman</string>

View file

@ -126,5 +126,6 @@
<string name="run_automations">Run automations</string> <string name="run_automations">Run automations</string>
<string name="add_automation">Add rule</string> <string name="add_automation">Add rule</string>
<string name="remove_sort">Remove/sort</string> <string name="remove_sort">Remove/sort</string>
<string name="stop_processing">Stop processing</string>
</resources> </resources>

View file

@ -5,13 +5,14 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.interfaces.ConfigBuilder import info.nightscout.androidaps.interfaces.ConfigBuilder
import info.nightscout.androidaps.interfaces.Loop import info.nightscout.androidaps.interfaces.Loop
import info.nightscout.androidaps.interfaces.ResourceHelper
import info.nightscout.androidaps.plugins.bus.RxBus import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.general.automation.actions.Action 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.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.TriggerConnector
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
import info.nightscout.androidaps.interfaces.ResourceHelper
import org.json.JSONObject import org.json.JSONObject
import org.junit.Assert import org.junit.Assert
import org.junit.Test import org.junit.Test
@ -70,4 +71,14 @@ class AutomationEventTest : TestBase() {
Assert.assertFalse(event.actions === clone.actions) // not the same object reference Assert.assertFalse(event.actions === clone.actions) // not the same object reference
Assert.assertEquals(clone.toJSON(), clone.toJSON()) 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())
}
} }

View file

@ -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)
}
})
}
}

View file

@ -144,6 +144,9 @@ ActionsTestBase : TestBaseWithProfile() {
it.profileFunction = profileFunction it.profileFunction = profileFunction
it.uel = uel it.uel = uel
} }
if (it is ActionStopProcessing) {
it.rh = rh
}
if (it is PumpEnactResult) { if (it is PumpEnactResult) {
it.rh = rh it.rh = rh
} }

View file

@ -2,7 +2,7 @@
buildscript { buildscript {
ext { ext {
kotlin_version = '1.7.0' kotlin_version = '1.7.10'
core_version = '1.8.0' core_version = '1.8.0'
rxjava_version = '3.1.5' rxjava_version = '3.1.5'
rxandroid_version = '3.0.0' rxandroid_version = '3.0.0'
@ -66,7 +66,7 @@ plugins {
id "io.gitlab.arturbosch.detekt" version "1.20.0" id "io.gitlab.arturbosch.detekt" version "1.20.0"
id "org.jlleitschuh.gradle.ktlint" version "10.3.0" id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
id 'org.barfuin.gradle.jacocolog' version '2.0.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 { allprojects {

View file

@ -2,8 +2,9 @@ package info.nightscout.androidaps.interfaces
interface Autotune { interface Autotune {
fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String = ""): String fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String = "")
fun atLog(message: String) fun atLog(message: String)
var lastRunSuccess: Boolean var lastRunSuccess: Boolean
var calculationRunning: Boolean
} }

View file

@ -91,9 +91,9 @@ class UserEntryPresentationHelper @Inject constructor(
Sources.Insight -> R.drawable.ic_insight_128 Sources.Insight -> R.drawable.ic_insight_128
Sources.Combo -> R.drawable.ic_combo_128 Sources.Combo -> R.drawable.ic_combo_128
Sources.Medtronic -> R.drawable.ic_veo_128 Sources.Medtronic -> R.drawable.ic_veo_128
Sources.Omnipod -> R.drawable.ic_pod_128 Sources.Omnipod -> R.drawable.ic_patch_pump_outline
Sources.OmnipodEros -> R.drawable.ic_pod_128 Sources.OmnipodEros -> R.drawable.ic_patch_pump_outline
Sources.OmnipodDash -> R.drawable.ic_pod_128 Sources.OmnipodDash -> R.drawable.ic_patch_pump_outline
Sources.MDI -> R.drawable.ic_ict Sources.MDI -> R.drawable.ic_ict
Sources.VirtualPump -> R.drawable.ic_virtual_pump Sources.VirtualPump -> R.drawable.ic_virtual_pump
Sources.SMS -> R.drawable.ic_sms Sources.SMS -> R.drawable.ic_sms

View file

@ -1,10 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <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" /> 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> </vector>

View file

@ -1,45 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp" android:width="64dp"
android:height="64dp" android:height="64dp"
android:viewportWidth="64" android:viewportWidth="64"
android:viewportHeight="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 <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: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 <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: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"/> android:fillType="nonZero"/>
<path <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: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"/> android:fillType="nonZero"/>
<path <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: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"/> android:fillType="nonZero"/>
</vector> </vector>

View file

@ -3,85 +3,86 @@
android:height="64dp" android:height="64dp"
android:viewportWidth="64" android:viewportWidth="64"
android:viewportHeight="64"> android:viewportHeight="64">
<path <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:fillColor="@android:color/transparent"
android:strokeAlpha="0.96" 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:strokeWidth="0.84"
android:fillColor="@android:color/transparent" android:strokeAlpha="0.96"
android:strokeColor="#fff"/> android:strokeColor="?attr/colorControlNormal" />
<path <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="?attr/colorControlNormal"
android:fillColor="#fff" android:fillType="nonZero"
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 <path
android:pathData="M17.119,8.385h1.107v10.439h-1.107z" android:fillColor="?attr/colorControlNormal"
android:fillColor="#fff" android:fillType="nonZero"
android:fillType="nonZero"/> android:pathData="M17.119,8.385h1.107v10.439h-1.107z" />
<path <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="?attr/colorControlNormal"
android:fillColor="#fff" android:fillType="nonZero"
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 <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="?attr/colorControlNormal"
android:fillColor="#fff" android:fillType="nonZero"
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 <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="?attr/colorControlNormal"
android:fillColor="#fff" android:fillType="nonZero"
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 <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="?attr/colorControlNormal"
android:fillColor="#fff"/> 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 <path
android:fillColor="@android:color/white" android:fillAlpha="0.96"
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:fillColor="?attr/colorControlNormal"
android:fillAlpha="0.96"/> 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 <path
android:fillColor="@android:color/white" android:fillAlpha="0.96"
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:fillColor="?attr/colorControlNormal"
android:fillAlpha="0.96"/> 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z" />
android:fillColor="@android:color/white" <path
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z" android:fillAlpha="0.96"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorControlNormal"
<path 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:fillColor="@android:color/white" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorBackgroundFloating"
<path 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:fillColor="@android:color/darker_gray" <path
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"
android:fillAlpha="0.96"/> android:fillColor="?attr/colorBackgroundFloating"
<path 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:fillColor="@android:color/darker_gray" <path
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"
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> </vector>

View file

@ -3,28 +3,16 @@
android:height="64dp" android:height="64dp"
android:viewportWidth="64" android:viewportWidth="64"
android:viewportHeight="64"> android:viewportHeight="64">
<path <path
android:pathData="M40.644,18.931l-17.75,-0l4.224,-4.292l9.595,-0l3.931,4.292Z" android:fillColor="?attr/colorControlNormal"
android:fillColor="?attr/colorControlNormal"/> android:pathData="M27.061,11.374h9.853v3.277h-9.853z" />
<path <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"
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 <path
android:pathData="M27.061,11.374h9.853v3.277h-9.853z" android:fillColor="?attr/colorControlNormal"
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 <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"
android:fillColor="?attr/colorControlNormal"/> android:pathData="M39.151,17.344l-14.905,-0l2.815,-2.693l9.853,-0l2.237,2.693Z" />
<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"/>
</vector> </vector>

View file

@ -1,10 +1,23 @@
<vector android:height="36dp" android:viewportHeight="64" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android"> android:width="36dp"
<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"/> android:height="36dp"
<path android:fillColor="#00000000" 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: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"/> 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"/> android:strokeColor="?attr/colorControlNormal" />
<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
<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: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> </vector>

View file

@ -1,11 +1,27 @@
<vector android:height="36dp" android:viewportHeight="64" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android"> android:width="36dp"
<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"/> android:height="36dp"
<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"/> android:viewportWidth="64"
<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"/> android:viewportHeight="64">
<path android:fillColor="?attr/colorControlNormal" <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: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"/> 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"/> android:strokeColor="?attr/colorControlNormal" />
<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"/> <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> </vector>

View file

@ -3,15 +3,20 @@
android:height="64dp" android:height="64dp"
android:viewportWidth="64" android:viewportWidth="64"
android:viewportHeight="64"> android:viewportHeight="64">
<path <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"
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 <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: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:strokeWidth="3.09"
android:fillColor="#00000000" android:strokeColor="?attr/colorControlNormal" />
android:strokeColor="?attr/colorControlNormal"/> <path
<path android:fillColor="?attr/colorBackgroundFloating"
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:pathData="M26,42a1.113,1.107 0,1 0,7 0a1.113,1.107 0,1 0,-7 0z" />
android:fillColor="?attr/colorControlNormal"/> <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> </vector>

View 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>

View file

@ -4,6 +4,6 @@
android:viewportWidth="24.0" android:viewportWidth="24.0"
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <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"/> 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> </vector>

View file

@ -1,5 +1,12 @@
<vector android:height="36dp" android:viewportHeight="64" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android"> android:width="36dp"
<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"/> android:height="36dp"
<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"/> 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> </vector>

View file

@ -2,7 +2,6 @@
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:autoMirrored="true" android:autoMirrored="true"
android:tint="#FFFFFF"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path

View file

@ -5,13 +5,12 @@
android:viewportHeight="64"> android:viewportHeight="64">
<path <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: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"/> android:fillType="nonZero"/>
<path <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: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:fillColor="?attr/colorControlNormal"/>
android:fillAlpha="0.96"/>
<path <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"/> 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> </vector>

View file

@ -103,7 +103,7 @@
<string name="notexists">yok</string> <string name="notexists">yok</string>
<string name="glucose">Glikoz</string> <string name="glucose">Glikoz</string>
<string name="iob">IOB</string> <string name="iob">IOB</string>
<string name="cob">COB</string> <string name="cob">AKRB</string>
<string name="name_short">İsim:</string> <string name="name_short">İsim:</string>
<string name="time">Zaman</string> <string name="time">Zaman</string>
<string name="ns_wifi_ssids">WiFi SSID</string> <string name="ns_wifi_ssids">WiFi SSID</string>

View file

@ -600,6 +600,7 @@
<string name="autotune_run_without_autoswitch">Autotune runned without profile switch</string> <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_autoswitch">Autotune runned and profile automatically switched</string>
<string name="autotune_run_with_error">Error during last Autotune run</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"> <plurals name="days">
<item quantity="one">%1$d day</item> <item quantity="one">%1$d day</item>

View file

@ -135,4 +135,5 @@
<string name="diaconn_g8_errorcode_32">בעת השהייה עקב סוכר נמוך, ההזרקה מוגבלת</string> <string name="diaconn_g8_errorcode_32">בעת השהייה עקב סוכר נמוך, ההזרקה מוגבלת</string>
<string name="diaconn_g8_errorcode_33">מצב השהייה עקב סוכר נמוך מופעל, פקודת ON נדחתה.</string> <string name="diaconn_g8_errorcode_33">מצב השהייה עקב סוכר נמוך מופעל, פקודת ON נדחתה.</string>
<string name="diaconn_g8_errorcode_34">מצב השהייה עקב סוכר נמוך כבוי, פקודת OFF נדחתה.</string> <string name="diaconn_g8_errorcode_34">מצב השהייה עקב סוכר נמוך כבוי, פקודת OFF נדחתה.</string>
<string name="diaconn_g8_cloudsend_summary">שלח יומני משאבה לענן Diaconn.</string>
</resources> </resources>

View file

@ -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.hw.rileylink.service.tasks.WakeAndTuneTask
import info.nightscout.androidaps.plugins.pump.common.sync.PumpDbEntryTBR 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.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.DateTimeUtil
import info.nightscout.androidaps.plugins.pump.common.utils.ProfileUtil import info.nightscout.androidaps.plugins.pump.common.utils.ProfileUtil
import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry
@ -90,7 +91,7 @@ class MedtronicPumpPlugin @Inject constructor(
dateUtil: DateUtil, dateUtil: DateUtil,
aapsSchedulers: AapsSchedulers, aapsSchedulers: AapsSchedulers,
pumpSync: PumpSync, pumpSync: PumpSync,
pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage pumpSyncStorage: PumpSyncStorage
) : PumpPluginAbstract( ) : PumpPluginAbstract(
PluginDescription() // PluginDescription() //
.mainType(PluginType.PUMP) // .mainType(PluginType.PUMP) //

View file

@ -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.MedtronicConst
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil
import info.nightscout.androidaps.interfaces.ResourceHelper import info.nightscout.androidaps.interfaces.ResourceHelper
import info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import org.apache.commons.lang3.StringUtils import org.apache.commons.lang3.StringUtils
import org.joda.time.LocalDateTime import org.joda.time.LocalDateTime
@ -57,7 +58,7 @@ class MedtronicHistoryData @Inject constructor(
val medtronicPumpHistoryDecoder: MedtronicPumpHistoryDecoder, val medtronicPumpHistoryDecoder: MedtronicPumpHistoryDecoder,
val medtronicPumpStatus: MedtronicPumpStatus, val medtronicPumpStatus: MedtronicPumpStatus,
val pumpSync: PumpSync, val pumpSync: PumpSync,
val pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage val pumpSyncStorage: PumpSyncStorage
) { ) {
val allHistory: MutableList<PumpHistoryEntry> = mutableListOf() val allHistory: MutableList<PumpHistoryEntry> = mutableListOf()

View file

@ -1,6 +1,9 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android" <merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" 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 <com.google.android.material.button.MaterialButton
android:id="@+id/button_refresh_status" android:id="@+id/button_refresh_status"

View file

@ -2,24 +2,26 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" 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 --> <!-- Unique ID -->
<LinearLayout <LinearLayout
android:id="@+id/omnipod_common_overview_pod_unique_id_layout" android:id="@+id/omnipod_common_overview_pod_unique_id_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_pod_unique_id" android:text="@string/omnipod_common_overview_pod_unique_id"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -38,9 +40,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -49,17 +51,17 @@
android:id="@+id/omnipod_common_overview_lot_number_layout" android:id="@+id/omnipod_common_overview_lot_number_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_lot_number" android:text="@string/omnipod_common_overview_lot_number"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -78,9 +80,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -88,17 +90,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_pod_sequence_number" android:text="@string/omnipod_common_overview_pod_sequence_number"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -117,9 +119,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -127,17 +129,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_firmware_version" android:text="@string/omnipod_common_overview_firmware_version"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -156,9 +158,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -166,17 +168,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_time_on_pod" android:text="@string/omnipod_common_overview_time_on_pod"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -195,9 +197,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -206,17 +208,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_pod_expiry_date" android:text="@string/omnipod_common_overview_pod_expiry_date"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -235,9 +237,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -246,17 +248,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_pod_status" android:text="@string/omnipod_common_overview_pod_status"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -275,10 +277,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="" android:text=""
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -302,17 +304,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_last_connection" android:text="@string/omnipod_common_overview_last_connection"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -331,9 +333,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -350,17 +352,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_last_bolus" android:text="@string/omnipod_common_overview_last_bolus"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -379,9 +381,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -398,17 +400,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_base_basal_rate" android:text="@string/omnipod_common_overview_base_basal_rate"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -427,9 +429,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -446,17 +448,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_temp_basal_rate" android:text="@string/omnipod_common_overview_temp_basal_rate"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -475,9 +477,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -494,17 +496,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_reservoir" android:text="@string/omnipod_common_overview_reservoir"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -523,9 +525,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -542,17 +544,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_total_delivered" android:text="@string/omnipod_common_overview_total_delivered"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -571,9 +573,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -590,17 +592,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_errors" android:text="@string/omnipod_common_overview_errors"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -619,9 +621,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -638,17 +640,17 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_common_overview_pod_active_alerts" android:text="@string/omnipod_common_overview_pod_active_alerts"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -667,9 +669,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@ -691,4 +693,5 @@
android:rotationX="180" android:rotationX="180"
android:rotationY="180" android:rotationY="180"
app:drawableTopCompat="@drawable/ic_pod" /> app:drawableTopCompat="@drawable/ic_pod" />
</merge> </merge>

View file

@ -10,6 +10,6 @@
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:navGraph="@navigation/omnipod_common_pod_deactivation_wizard_navigation_graph" /> app:navGraph="@navigation/omnipod_common_pod_deactivation_wizard_navigation_graph" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,20 +1,22 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android" <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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_dash_overview_bluetooth_address" android:text="@string/omnipod_dash_overview_bluetooth_address"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -33,26 +35,27 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_dash_overview_bluetooth_status" android:text="@string/omnipod_dash_overview_bluetooth_status"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -71,9 +74,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" android:textSize="14sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
@ -82,18 +85,18 @@
android:id="@+id/connectionQuality" android:id="@+id/connectionQuality"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:focusable="true"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone" android:visibility="gone">
android:focusable="true">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_dash_overview_bluetooth_connection_quality" android:text="@string/omnipod_dash_overview_bluetooth_connection_quality"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -112,29 +115,30 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" android:textSize="14sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/deliveryStatus" android:id="@+id/deliveryStatus"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:focusable="true"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone" android:visibility="gone">
android:focusable="true">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/omnipod_dash_overview_delivery_status" android:text="@string/omnipod_dash_overview_delivery_status"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -153,11 +157,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:textAlignment="viewStart"
android:textSize="14sp" android:textSize="14sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<View <View

View file

@ -49,24 +49,38 @@ public abstract class ErosPodStateManager {
this.gsonInstance = createGson(); this.gsonInstance = createGson();
} }
/**
* Discard Pod state
*/
public final void discardState() { 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(); storePodState();
} }
/**
* Init Pod state but only if it has valid state.
* @param address New Pod address
*/
public final void initState(int address) { public final void initState(int address) {
if (hasPodState()) { 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); podState = new PodState(address);
storePodState(); 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() { public final boolean hasPodState() {
return podState != null;
return this.podState != null
&& this.podState.getAddress() != 0x0; // 0x0=discarded
} }
/** /**

View file

@ -287,9 +287,9 @@ class OmnipodErosOverviewFragment : DaggerFragment() {
podInfoBinding.timeOnPod.setTextColor( podInfoBinding.timeOnPod.setTextColor(
rh.gac(context, rh.gac(context,
if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) { if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) {
R.attr.defaultTextColor
} else {
R.attr.warningColor R.attr.warningColor
} else {
R.attr.defaultTextColor
}) })
) )
val expiresAt = podStateManager.expiresAt val expiresAt = podStateManager.expiresAt

View file

@ -1,20 +1,22 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android" <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 <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:focusable="true"
android:focusable="true"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1.5" android:layout_weight="1.5"
android:textAlignment="viewEnd"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="@string/rileylink_status" android:text="@string/rileylink_status"
android:textAlignment="viewEnd"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@ -33,10 +35,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textAlignment="viewStart"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:text="{fa-bluetooth-b}" android:text="{fa-bluetooth-b}"
android:textAlignment="viewStart"
android:textSize="14sp" android:textSize="14sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />

View file

@ -27,7 +27,7 @@ class AapsErosPodStateManagerTest : TestBase() {
val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone) val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
DateTimeUtils.setCurrentMillisFixed(now.millis) DateTimeUtils.setCurrentMillisFixed(now.millis)
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus) val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
podStateManager.initState(0x0) podStateManager.initState(0x01)
podStateManager.setInitializationParameters( podStateManager.setInitializationParameters(
0, 0, FirmwareVersion(1, 1, 1), 0, 0, FirmwareVersion(1, 1, 1),
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS 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) val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
DateTimeUtils.setCurrentMillisFixed(now.millis) DateTimeUtils.setCurrentMillisFixed(now.millis)
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus) val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
podStateManager.initState(0x0) podStateManager.initState(0x01)
podStateManager.setInitializationParameters( podStateManager.setInitializationParameters(
0, 0, FirmwareVersion(1, 1, 1), 0, 0, FirmwareVersion(1, 1, 1),
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS 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) val now = DateTime(2020, 1, 1, 1, 2, 3, timeZone)
DateTimeUtils.setCurrentMillisFixed(now.millis) DateTimeUtils.setCurrentMillisFixed(now.millis)
val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus) val podStateManager = AapsErosPodStateManager(aapsLogger, sp, rxBus)
podStateManager.initState(0x0) podStateManager.initState(0x01)
podStateManager.setInitializationParameters( podStateManager.setInitializationParameters(
0, 0, FirmwareVersion(1, 1, 1), 0, 0, FirmwareVersion(1, 1, 1),
FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS FirmwareVersion(2, 2, 2), timeZone, PodProgressStatus.ABOVE_FIFTY_UNITS

View file

@ -4,7 +4,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.ServiceConnection import android.content.ServiceConnection
import android.text.format.DateFormat import android.text.format.DateFormat
import com.google.gson.GsonBuilder
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.data.DetailedBolusInfo import info.nightscout.androidaps.data.DetailedBolusInfo
import info.nightscout.androidaps.data.PumpEnactResult 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.to0Decimal
import info.nightscout.androidaps.utils.DecimalFormatter.to2Decimal import info.nightscout.androidaps.utils.DecimalFormatter.to2Decimal
import info.nightscout.androidaps.utils.FabricPrivacy 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.androidaps.utils.rx.AapsSchedulers
import info.nightscout.shared.logging.AAPSLogger import info.nightscout.shared.logging.AAPSLogger
import info.nightscout.shared.logging.LTag 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) // When using this class, make sure that your first step is to create mConnection (see MedtronicPumpPlugin)
abstract class PumpPluginAbstract protected constructor( abstract class PumpPluginAbstract protected constructor(
pluginDescription: PluginDescription?, pluginDescription: PluginDescription,
pumpType: PumpType, pumpType: PumpType,
injector: HasAndroidInjector?, injector: HasAndroidInjector,
rh: ResourceHelper, rh: ResourceHelper,
aapsLogger: AAPSLogger, aapsLogger: AAPSLogger,
commandQueue: CommandQueue, commandQueue: CommandQueue,
@ -53,10 +54,10 @@ abstract class PumpPluginAbstract protected constructor(
var dateUtil: DateUtil, var dateUtil: DateUtil,
var aapsSchedulers: AapsSchedulers, var aapsSchedulers: AapsSchedulers,
var pumpSync: PumpSync, var pumpSync: PumpSync,
var pumpSyncStorage: info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncStorage var pumpSyncStorage: PumpSyncStorage
) : PumpPluginBase(pluginDescription!!, injector!!, aapsLogger, rh, commandQueue), Pump, Constraints, info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncEntriesCreator { ) : 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 // Pump capabilities
final override var pumpDescription = PumpDescription() final override var pumpDescription = PumpDescription()
@ -242,8 +243,7 @@ abstract class PumpPluginAbstract protected constructor(
val extended = JSONObject() val extended = JSONObject()
try { try {
battery.put("percent", pumpStatusData.batteryRemaining) battery.put("percent", pumpStatusData.batteryRemaining)
// TODO check this status.put("status", pumpStatusData.pumpStatusType.status) status.put("status", pumpStatusData.pumpStatusType.status)
status.put("status", pumpStatusData.pumpRunningState.status)
extended.put("Version", version) extended.put("Version", version)
try { try {
extended.put("ActiveProfile", profileName) extended.put("ActiveProfile", profileName)
@ -277,50 +277,23 @@ abstract class PumpPluginAbstract protected constructor(
override fun shortStatus(veryShort: Boolean): String { override fun shortStatus(veryShort: Boolean): String {
var ret = "" var ret = ""
if (pumpStatusData.lastConnection == 0L) { ret += if (pumpStatusData.lastConnection == 0L) {
ret += "LastConn: never\n" "LastConn: never\n"
} else { } else {
val agoMsec = System.currentTimeMillis() - pumpStatusData.lastConnection val agoMin = ((System.currentTimeMillis() - pumpStatusData.lastConnection) / 60.0 / 1000.0).toInt()
val agoMin = (agoMsec / 60.0 / 1000.0).toInt() "LastConn: $agoMin min ago\n"
ret += "LastConn: $agoMin min ago\n"
} }
if (pumpStatusData.lastBolusTime != null && pumpStatusData.lastBolusTime!!.time != 0L) { pumpStatusData.lastBolusTime?.let {
ret += """ if (it.time != 0L) {
LastBolus: ${to2Decimal(pumpStatusData.lastBolusAmount!!)}U @${DateFormat.format("HH:mm", pumpStatusData.lastBolusTime)} ret += "LastBolus: ${to2Decimal(pumpStatusData.lastBolusAmount!!)}U @${DateFormat.format("HH:mm", it)}\n"
}
""".trimIndent()
} }
val activeTemp = pumpSync.expectedPumpState().temporaryBasal pumpSync.expectedPumpState().temporaryBasal?.let { ret += "Temp: ${it.toStringFull(dateUtil)}\n" }
if (activeTemp != null) { pumpSync.expectedPumpState().extendedBolus?.let { ret += "Extended: ${it.toStringFull(dateUtil)}\n" }
ret += """ ret += "IOB: ${pumpStatusData.iob}U\n"
Temp: ${activeTemp.toStringFull(dateUtil)} ret += "Reserv: ${to0Decimal(pumpStatusData.reservoirRemainingUnits)}U\n"
ret += "Batt: ${pumpStatusData.batteryRemaining}\n"
""".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()
return ret return ret
} }

View file

@ -3,12 +3,12 @@ package info.nightscout.shared
object SafeParse { object SafeParse {
// private static Logger log = StacktraceLoggerWrapper.getLogger(SafeParse.class); // private static Logger log = StacktraceLoggerWrapper.getLogger(SafeParse.class);
fun stringToDouble(inputString: String?): Double { fun stringToDouble(inputString: String?, defaultValue: Double = 0.0): Double {
var input = inputString ?: return 0.0 var input = inputString ?: return defaultValue
var result = 0.0 var result = defaultValue
input = input.replace(",", ".") input = input.replace(",", ".")
input = input.replace("", "-") input = input.replace("", "-")
if (input == "") return 0.0 if (input == "") return defaultValue
try { try {
result = input.toDouble() result = input.toDouble()
} catch (e: Exception) { } catch (e: Exception) {

View file

@ -14,7 +14,11 @@ sealed class EventData : Event() {
companion object { 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 // Mobile <- Wear

View file

@ -6,6 +6,7 @@ import info.nightscout.androidaps.comm.DataLayerListenerServiceWear
import info.nightscout.androidaps.complications.* import info.nightscout.androidaps.complications.*
import info.nightscout.androidaps.tile.* import info.nightscout.androidaps.tile.*
import info.nightscout.androidaps.watchfaces.* import info.nightscout.androidaps.watchfaces.*
import info.nightscout.androidaps.watchfaces.utils.BaseWatchFace
@Module @Module
@Suppress("unused") @Suppress("unused")

View file

@ -42,7 +42,7 @@ class BolusActivity : ViewSelectorActivity() {
override fun instantiateItem(container: ViewGroup, row: Int, col: Int): View = when (col) { override fun instantiateItem(container: ViewGroup, row: Int, col: Int): View = when (col) {
0 -> { 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true) 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 maxBolus = sp.getDouble(getString(R.string.key_treatments_safety_max_bolus), 3.0)
val title = getString(R.string.action_insulin) val title = getString(R.string.action_insulin)
editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, maxBolus, stepValues, DecimalFormat("#0.0"), false, title) editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, maxBolus, stepValues, DecimalFormat("#0.0"), false, title)

View file

@ -42,12 +42,9 @@ class CarbActivity : ViewSelectorActivity() {
0 -> { 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
val view = viewAdapter.root val view = viewAdapter.root
var def = 0.0 var initValue = SafeParse.stringToDouble(editCarbs?.editText?.text.toString(), 0.0)
if (editCarbs != null) { val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48).toDouble()
def = SafeParse.stringToDouble(editCarbs?.editText?.text.toString()) editCarbs = PlusMinusEditText(viewAdapter, initValue, 0.0, maxCarbs, stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
}
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))
container.addView(view) container.addView(view)
view.requestFocus() view.requestFocus()
view view

View file

@ -45,12 +45,9 @@ class ECarbActivity : ViewSelectorActivity() {
0 -> { 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
val view = viewAdapter.root val view = viewAdapter.root
var def = 0.0 var initValue = stringToDouble(editCarbs?.editText?.text.toString(), 0.0)
if (editCarbs != null) { val maxCarbs = sp.getInt(getString(R.string.key_treatments_safety_max_carbs), 48).toDouble()
def = stringToDouble(editCarbs?.editText?.text.toString()) editCarbs = PlusMinusEditText(viewAdapter, initValue, 0.0, maxCarbs, stepValues, DecimalFormat("0"), true, getString(R.string.action_carbs))
}
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))
container.addView(view) container.addView(view)
view.requestFocus() view.requestFocus()
view view
@ -59,11 +56,8 @@ class ECarbActivity : ViewSelectorActivity() {
1 -> { 1 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
var def = 0.0 var initValue = stringToDouble(editStartTime?.editText?.text.toString(), 0.0)
if (editStartTime != null) { editStartTime = PlusMinusEditText(viewAdapter, initValue, -60.0, 300.0, 15.0, DecimalFormat("0"), false, getString(R.string.action_start_min))
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))
container.addView(view) container.addView(view)
view view
} }
@ -71,11 +65,8 @@ class ECarbActivity : ViewSelectorActivity() {
2 -> { 2 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
var def = 0.0 var initValue = stringToDouble(editDuration?.editText?.text.toString(), 0.0)
if (editDuration != null) { editDuration = PlusMinusEditText(viewAdapter, initValue, 0.0, 8.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_duration_h))
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))
container.addView(view) container.addView(view)
view view
} }

View file

@ -38,11 +38,8 @@ class FillActivity : ViewSelectorActivity() {
0 -> { 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
var def = 0.0 var initValue = stringToDouble(editInsulin?.editText?.text.toString(), 0.0)
if (editInsulin != null) { editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, 30.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_insulin))
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))
container.addView(view) container.addView(view)
view.requestFocus() view.requestFocus()
view view

View file

@ -48,11 +48,8 @@ class ProfileSwitchActivity : ViewSelectorActivity() {
0 -> { 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
var def = timeshift.toDouble() var initValue = SafeParse.stringToDouble(editTimeshift?.editText?.text.toString(), timeshift.toDouble())
if (editTimeshift != null) { editTimeshift = PlusMinusEditText(viewAdapter, initValue, 0.0, 23.0, 1.0, DecimalFormat("0"), true, getString(R.string.action_timeshift), true)
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)
container.addView(view) container.addView(view)
view.requestFocus() view.requestFocus()
view view
@ -61,12 +58,8 @@ class ProfileSwitchActivity : ViewSelectorActivity() {
1 -> { 1 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
var def = percentage.toDouble() var initValue = SafeParse.stringToDouble(editPercentage?.editText?.text.toString(), percentage.toDouble())
if (editPercentage != null) { editPercentage = PlusMinusEditText(viewAdapter, initValue, 30.0, 250.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_percentage))
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))
container.addView(view) container.addView(view)
view view
} }

View file

@ -50,12 +50,8 @@ class TempTargetActivity : ViewSelectorActivity() {
col == 0 -> { col == 0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
time = if (time == null) { val initValue = SafeParse.stringToDouble(time?.editText?.text.toString(), 60.0)
PlusMinusEditText(viewAdapter, 60.0, 0.0, 24 * 60.0, 5.0, DecimalFormat("0"), false, getString(R.string.action_duration)) time = PlusMinusEditText(viewAdapter, initValue, 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))
}
container.addView(view) container.addView(view)
view.requestFocus() view.requestFocus()
view view
@ -66,13 +62,11 @@ class TempTargetActivity : ViewSelectorActivity() {
val view = viewAdapter.root val view = viewAdapter.root
val title = if (isSingleTarget) getString(R.string.action_target) else getString(R.string.action_low) val title = if (isSingleTarget) getString(R.string.action_target) else getString(R.string.action_low)
if (isMGDL) { if (isMGDL) {
var def = 100.0 var initValue = SafeParse.stringToDouble(lowRange?.editText?.text.toString(), 100.0)
if (lowRange != null) def = SafeParse.stringToDouble(lowRange?.editText?.text.toString()) lowRange = PlusMinusEditText(viewAdapter, initValue, 72.0, 180.0, 1.0, DecimalFormat("0"), false, title)
lowRange = PlusMinusEditText(viewAdapter, def, 72.0, 180.0, 1.0, DecimalFormat("0"), false, title)
} else { } else {
var def = 5.5 var initValue = SafeParse.stringToDouble(lowRange?.editText?.text.toString(), 5.5)
if (lowRange != null) def = SafeParse.stringToDouble(lowRange?.editText?.text.toString()) lowRange = PlusMinusEditText(viewAdapter, initValue, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, title)
lowRange = PlusMinusEditText(viewAdapter, def, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, title)
} }
container.addView(view) container.addView(view)
view view
@ -82,13 +76,11 @@ class TempTargetActivity : ViewSelectorActivity() {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false) val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, false)
val view = viewAdapter.root val view = viewAdapter.root
if (isMGDL) { if (isMGDL) {
var def = 100.0 var initValue = SafeParse.stringToDouble(highRange?.editText?.text.toString(), 100.0)
if (highRange != null) def = SafeParse.stringToDouble(highRange?.editText?.text.toString()) highRange = PlusMinusEditText(viewAdapter, initValue, 72.0, 180.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_high))
highRange = PlusMinusEditText(viewAdapter, def, 72.0, 180.0, 1.0, DecimalFormat("0"), false, getString(R.string.action_high))
} else { } else {
var def = 5.5 var initValue = SafeParse.stringToDouble(highRange?.editText?.text.toString(), 5.5)
if (highRange != null) def = SafeParse.stringToDouble(highRange?.editText?.text.toString()) highRange = PlusMinusEditText(viewAdapter, initValue, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_high))
highRange = PlusMinusEditText(viewAdapter, def, 4.0, 10.0, 0.1, DecimalFormat("#0.0"), false, getString(R.string.action_high))
} }
container.addView(view) container.addView(view)
view view

Some files were not shown because too many files have changed in this diff Show more