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 {
multiDexEnabled true
versionCode 1500
version "3.0.0.2-dev-n"
version "3.0.0.2-dev-o"
buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'

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

View file

@ -2,9 +2,9 @@ package info.nightscout.androidaps.activities
import android.content.Context
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.widget.SearchView
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen
import info.nightscout.androidaps.R
@ -15,6 +15,7 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
private var preferenceId = 0
private var myPreferenceFragment: MyPreferenceFragment? = null
private var searchView: SearchView? = null
private lateinit var binding: ActivityPreferencesBinding
@ -24,15 +25,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
binding = ActivityPreferencesBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.prefFilter.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
filterPreferences()
}
override fun afterTextChanged(s: Editable) {}
})
title = rh.gs(R.string.nav_preferences)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
@ -40,12 +32,29 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
preferenceId = intent.getIntExtra("id", -1)
myPreferenceFragment?.arguments = Bundle().also {
it.putInt("id", preferenceId)
it.putString("filter", binding.prefFilter.text.toString())
}
if (savedInstanceState == null)
supportFragmentManager.beginTransaction().replace(R.id.frame_layout, myPreferenceFragment!!).commit()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_preferences, menu)
val searchItem = menu.findItem(R.id.menu_search)
searchView = searchItem.actionView as SearchView
searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String): Boolean {
myPreferenceFragment?.setFilter(newText)
return false
}
override fun onQueryTextSubmit(query: String): Boolean {
return false
}
})
return super.onCreateOptionsMenu(menu)
}
override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean {
val fragment = MyPreferenceFragment()
fragment.arguments = Bundle().also {
@ -60,10 +69,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
super.attachBaseContext(LocaleHelper.wrap(newBase))
}
private fun filterPreferences() {
myPreferenceFragment?.setFilter(binding.prefFilter.text.toString())
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {

View file

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

View file

@ -345,6 +345,7 @@ class WizardDialog : DaggerDialogFragment() {
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
runOnUiThread {
_binding ?: return@runOnUiThread
if (carbsPassedIntoWizard != 0.0) {
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_posiob, true))
)
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob_question, "cob1")
.option(Option(R.string.cob_longer, true))
.option(Option(R.string.cob_shorter, false))
.option(Option(R.string.cob_no_effect, false))
)
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob2_question, "cob2")
.option(Option(R.string.cob2_longer, false))
.option(Option(R.string.cob2_shorter, true))
.option(Option(R.string.cob2_no_effect, false))
)
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob3_question, "cob3")
.option(Option(R.string.cob3_longer, false))
.option(Option(R.string.cob3_shorter, false))
.option(Option(R.string.cob3_no_effect, true))
)
tasks.add(ExamTask(this, R.string.breadgrams_label, R.string.blank, "breadgrams")
.option(Option(R.string.breadgrams_grams, true))
.option(Option(R.string.breadgrams_exchange, false))

View file

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

View file

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

View file

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

View file

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

View file

@ -23,6 +23,7 @@ import info.nightscout.androidaps.extensions.toVisibility
import info.nightscout.androidaps.interfaces.ActivePlugin
import info.nightscout.androidaps.interfaces.GlucoseUnit
import info.nightscout.androidaps.interfaces.Profile
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
@ -52,6 +53,7 @@ class LocalProfileFragment : DaggerFragment() {
@Inject lateinit var activePlugin: ActivePlugin
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var hardLimits: HardLimits
@Inject lateinit var protectionCheck: ProtectionCheck
@Inject lateinit var dateUtil: DateUtil
@ -117,6 +119,11 @@ class LocalProfileFragment : DaggerFragment() {
})
binding.diaLabel.labelFor = binding.dia.editTextId
binding.unlock.setOnClickListener { queryProtection() }
val profiles = localProfilePlugin.profile?.getProfileList() ?: ArrayList()
val activeProfile = profileFunction.getProfileName()
val profileIndex = profiles.indexOf(activeProfile)
localProfilePlugin.currentProfileIndex = if (profileIndex >= 0) profileIndex else 0
}
fun build() {
@ -394,6 +401,7 @@ class LocalProfileFragment : DaggerFragment() {
}
private fun updateProtectedUi() {
_binding ?: return
val isLocked = protectionCheck.isLocked(ProtectionCheck.Protection.PREFERENCES)
binding.mainLayout.visibility = isLocked.not().toVisibility()
binding.unlock.visibility = isLocked.toVisibility()

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.utils.stats
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Typeface
import android.util.LongSparseArray
@ -99,9 +98,19 @@ class TddCalculator @Inject constructor(
return result
}
fun calculateToday(): TotalDailyDose {
var startTime = MidnightTime.calc(dateUtil.now())
val endTime = dateUtil.now()
return calculate(startTime, endTime)
}
fun calculateDaily(startHours: Long, endHours: Long): TotalDailyDose {
val startTime = dateUtil.now() + T.hours(hour = startHours).msecs()
val endTime = dateUtil.now() + T.hours(hour = endHours).msecs()
return calculate(startTime, endTime)
}
fun calculate(startTime: Long, endTime: Long): TotalDailyDose {
val tdd = TotalDailyDose(timestamp = startTime)
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
.filter { it.type != Bolus.Type.PRIMING }
@ -147,10 +156,10 @@ class TddCalculator @Inject constructor(
return totalTdd
}
@SuppressLint("SetTextI18n")
fun stats(context: Context): TableLayout {
val tdds = calculate(7)
val averageTdd = averageTDD(tdds)
val todayTdd = calculateToday()
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)
return TableLayout(context).also { layout ->
layout.layoutParams = TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)
@ -172,6 +181,13 @@ class TddCalculator @Inject constructor(
})
layout.addView(averageTdd.toTableRow(context, rh, tdds.size(), includeCarbs = true))
}
layout.addView(TextView(context).apply {
text = rh.gs(R.string.today)
setTypeface(typeface, Typeface.BOLD)
gravity = Gravity.CENTER_HORIZONTAL
setTextAppearance(android.R.style.TextAppearance_Material_Medium)
})
layout.addView(todayTdd.toTableRow(context, rh, dateUtil, includeCarbs = true))
}
}
}

View file

@ -182,7 +182,7 @@ public class TimeListEdit {
numberPickers1[position].setTextWatcher(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText());
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText(), 0.0);
Double value2 = value2(position);
if (data2 != null && value1 > value2) {
value2 = value1;
@ -209,7 +209,7 @@ public class TimeListEdit {
@Override
public void afterTextChanged(Editable s) {
Double value1 = value1(position);
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText());
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText(), 0.0);
if (data2 != null && value2 < value1) {
value1 = value2;
numberPickers1[position].setValue(value1);

View file

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

View file

@ -5,28 +5,6 @@
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/filter"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/pref_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:autofillHints="@string/filter"
android:gravity="start"
android:textStyle="bold"
android:inputType="text"
android:background="@color/transparent"/>
</com.google.android.material.textfield.TextInputLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"

View file

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

View file

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

View file

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

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_donothing">No fer res i permetre que AndroidAPS corregeixi els possibles valors alts de glucèmia que es produeixin.</string>
<string name="iob_label">Insulina \"a bord\" (IOB)</string>
<string name="iob_which">Marqueu totes les respostes correctes.</string>
<string name="iob_value">El valor d\'IOB es veu afectat per les basals temporals lliurades.</string>
<string name="iob_hightemp">Una basal temporal alta no serà lliurada si la glucèmia està per sota de l\'objectiu.</string>
<string name="iob_posiob">Un valor d\'IOB positiu durant un període de temps important suggereix resistència a la insulina o àpats no anunciats.</string>

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_prime">Pošlete bolus na vypočtený „chybějící“ inzulín buď injekční stříkačkou nebo perem nebo pomocí plnění na pumpě.</string>
<string name="wronginsulin_donothing">Neudělejte nic a dovolte AndroidAPS opravit jakoukoliv výslednou vysokou hladinu glukózy v krvi.</string>
<string name="cob_label">Zbývající sacharidy (COB)</string>
<string name="cob_question">Jak změna hodnoty citlivosti ovlivňuje výpočet COB?</string>
<string name="cob_longer">Zvýšení hodnoty citlivosti prodlouží dobu pohlcování sacharidů</string>
<string name="cob_shorter">Zvýšení hodnoty citlivosti zkrátí dobu pohlcování sacharidů</string>
<string name="cob_no_effect">Zvýšení citlivosti neovlivní vypočtenou absorpci sacharidů</string>
<string name="cob2_question">Jak změna inzulíno-sacharidového poměru ovlivňuje výpočet COB?</string>
<string name="cob2_longer">Zvýšení hodnoty inzulíno-sacharidového poměru prodlouží dobu pohlcování sacharidů</string>
<string name="cob2_shorter">Zvýšení hodnoty inzulíno-sacharidového poměru zkrátí dobu pohlcování sacharidů</string>
<string name="cob2_no_effect">Zvýšení inzulíno-sacharidového poměru neovlivní vypočtenou absorpci sacharidů</string>
<string name="cob3_question">Jak procentuální změna profilu ovlivňuje výpočet COB?</string>
<string name="cob3_longer">Nastavením profilu na 150% dojde k prodloužení doby pohlcování sacharidů</string>
<string name="cob3_shorter">Nastavením profilu na 150% dojde ke zkrácení doby pohlcování sacharidů</string>
<string name="cob3_no_effect">Nastavení profilu na 150% neovlivní vypočtenou absorpci sacharidů</string>
<string name="iob_label">Aktivní inzulín (IOB)</string>
<string name="iob_which">Zatrhněte všechny správné odpovědi.</string>
<string name="iob_value">Hodnota IOB je ovlivněna vydanými dočasnými bazály.</string>
<string name="iob_hightemp">Vysoký dočasný bazál nebude spuštěn, pokud je Vaše glykémie nižší než cíl.</string>
<string name="iob_negiob">Negativní IOB po značnou dobu bez cvičení naznačuje, že váš profil je příliš \"silný\" a ve vašem profilu je potřeba méně inzulínu.</string>

View file

@ -1043,4 +1043,5 @@
<string name="description_source_aidex">Přijímat hodnoty glykémie ze senzoru GlucoRx Aidex.</string>
<string name="blocked_by_charging">Zablokováno možností nabíjení</string>
<string name="blocked_by_connectivity">Zablokováno možností připojení</string>
<string name="no_watch_connected">(Žádné hodinky nejsou připojeny)</string>
</resources>

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_donothing">Gør ingenting og tillad AndroidAPS at rette op på højt blodsukker.</string>
<string name="iob_label">Insulin om bord (IOB)</string>
<string name="iob_which">Tjek alle de korrekte svar.</string>
<string name="iob_value">IOB-værdi påvirkes af midlertidige basaler.</string>
<string name="iob_hightemp">Høj midlertidlig basal vil ikke blive givet, når dit blodsukker er under målet.</string>
<string name="iob_negiob">Negative IOB i en længere periode uden motion tyder på, at din profil er for stærk, og at der er behov for mindre insulin i dine indstillinger.</string>

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_donothing">Unternimm nichts und lass AndroidAPS die entstehenden hohen Glukosewerte korrigieren.</string>
<string name="iob_label">Aktives Insulin (IOB)</string>
<string name="iob_which">Kreuze alle richtigen Antworten an.</string>
<string name="iob_value">IOB wird von den abgegebenen temporären Basalraten beeinflusst.</string>
<string name="iob_hightemp">Eine hohe temporäre Basalrate wird nicht abgegeben, wenn der BZ unterhalb des Zielwerts liegt.</string>
<string name="iob_negiob">Ein negativer IOB über einen längeren Zeitraum bei fehlender Bewegung deutet darauf hin, dass Dein Profil zu stark ist und weniger Insulin in Deinen Einstellungen benötigt wird.</string>

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_prime">Bolo una proporción de la insulina calculada “perdida” por jeringa/pluma o usando menú de llenado.</string>
<string name="wronginsulin_donothing">No haga nada y permite que AndroidAPS corrija cualquier nivel alto de glucosa en la sangre resultante.</string>
<string name="cob_label">Carbohidratos activos (COB)</string>
<string name="cob_question">¿Cómo afecta el cambio del valor ISF al cálculo de COB?</string>
<string name="cob_no_effect">Incrementar el ISF no afectará la absorción calculada de carbohidratos</string>
<string name="cob2_question">¿Cómo afecta cambiar los valores de IC a los cálculos de COB?</string>
<string name="cob2_no_effect">Incrementar el IC no afectará la absorción calculada de carbohidratos</string>
<string name="cob3_question">¿Cómo afecta el cambio de porcentaje del perfil al cálculo de los COB?</string>
<string name="cob3_no_effect">Establecer el perfil a 150% no afectará la absorción calculada de carbohidratos</string>
<string name="iob_label">Insulina a bordo (IOB)</string>
<string name="iob_which">Marca todas las respuestas correctas.</string>
<string name="iob_value">El valor del IOB se ve afectado por las bases temporales ejecutadas.</string>
<string name="iob_hightemp">No se dará alta tasa basal temporal cuando su nivel de azúcar en sangre esté por debajo del objetivo.</string>
<string name="iob_negiob">El IOB negativo durante un período sustancial en ausencia de ejercicio sugiere que tu perfil es demasiado fuerte y que se necesita menos insulina en tus ajustes.</string>

View file

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

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_donothing">Ne faites rien et laissez AndroidAPS corriger tout taux élevé de glycémie qui en résulte.</string>
<string name="iob_label">Insuline Active (IA)</string>
<string name="iob_which">Sélectionnez toutes les bonnes réponses.</string>
<string name="iob_value">La valeur de l\'IA est impactée par les débits de basal temporaires émis.</string>
<string name="iob_hightemp">Une basale temp haute ne sera pas donnée quand votre glycémie est en dessous de la cible.</string>
<string name="iob_negiob">Une IA négative pendant une période significative en l\'absence d\'exercice indique que votre profil est trop fort et qu\'il faut moins d\'insuline dans vos paramètres.</string>

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="openapssmb">OpenAPS SMB</string>
<string name="openaps_smb_dynamic_isf">SI dynamique</string>
<string name="DynISFAdjust_title" formatted="false">Facteur d\'ajustement Si dynamique %</string>
<string name="DynISFAdjust_summary" formatted="false">Facteur d\'ajustement pour Si dynamique. Définissez plus de 100 % pour des corrections plus agressives et moins de 100 % pour des corrections moins agressives.</string>
<string name="enableuam">Activer RNS</string>
<string name="enablesmb">Activer SMB</string>
<string name="enablesmb_summary">Utiliser les Super Micro Bolus au lieu des débits de base temporaires pour une action rapide</string>
@ -968,6 +970,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="wear_action_tempt_max_bg_error">Gly maxi hors limite!</string>
<string name="wear_action_tempt_manual_range_message">Cible temporaire:\nMin: %1$s\nMax : %2$s\nDurée : %3$s</string>
<string name="wear_action_tempt_manual_message">Cible temporaire:\nCible: %1$s\nDurée: %2$s</string>
<string name="wear_action_tempt_preset_message">Cible temp:\nRaison: %1$s\nCible : %2$s\nDurée : %3$s</string>
<string name="quick_wizard_message">Assistant: %1$s\nInsuline : %2$.2fU\nGlucides : %3$dg</string>
<string name="wizard_result">Assistant Calc :\nInsuline : %1$.2fU\nGlucides : %2$dg</string>
<string name="overview_editquickwizard_show_on_device">Afficher l\'entrée sur l\'appareil :</string>

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_donothing">Non fare nulla e permettere ad AndroidAPS di correggere eventuali glicemie alte.</string>
<string name="iob_label">Insulina attiva (IOB)</string>
<string name="iob_which">Seleziona tutte le risposte corrette.</string>
<string name="iob_value">Il valore IOB è influenzato dalle basali temporanee emesse.</string>
<string name="iob_hightemp">Non verrà emessa una basale temporanea alta quando la tua glicemia è al di sotto del target.</string>
<string name="iob_negiob">IOB negativo per un periodo considerevole in assenza di esercizio fisico suggerisce che il tuo profilo è troppo incisivo e che è necessaria meno insulina nelle tue impostazioni.</string>

View file

@ -136,8 +136,20 @@
<string name="wronginsulin_compare">השוו את הרשומות שב-AndroidAPS עם היסטוריית המשאבה (אם המשאבה תומכת בכך).</string>
<string name="wronginsulin_prime">מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime).</string>
<string name="wronginsulin_donothing">לא לעשות דבר ולאפשר ל-AndroidAPS לתקן כל רמת סוכר גבוהה.</string>
<string name="cob_label">פחמ\' פעילות</string>
<string name="cob_question">איך שינויים ביחס התיקון משפיעים על חישוב הפחמימות הפעילות?</string>
<string name="cob_longer">הגדלת ערך יחס התיקון תגרום להארכת משך ספיגת הפחמימות</string>
<string name="cob_shorter">הגדלת ערך יחס התיקון תגרום לקיצור משך ספיגת הפחמימות</string>
<string name="cob_no_effect">הגדלת ערך יחס התיקון לא תשפיע על חישוב ספיגת הפחמימות</string>
<string name="cob2_question">איך שינויים ביחס הפחמימות משפיעים על חישוב הפחמימות הפעילות?</string>
<string name="cob2_longer">הגדלת ערך יחס הפחמימות תגרום להארכת משך ספיגת הפחמימות</string>
<string name="cob2_shorter">הגדלת ערך יחס הפחמימות תגרום לקיצור משך ספיגת הפחמימות</string>
<string name="cob2_no_effect">הגדלת ערך יחס הפחמימות לא תשפיע על חישוב ספיגת הפחמימות</string>
<string name="cob3_question">איך שינויים באחוזי הפרופיל משפיעים על חישוב הפחמימות הפעילות?</string>
<string name="cob3_longer">הגדרת 150% פרופיל תגרום להארכת משך ספיגת הפחמימות</string>
<string name="cob3_shorter">הגדרת 150% פרופיל תגרום לקיצור משך ספיגת הפחמימות</string>
<string name="cob3_no_effect">הגדרת 150% פרופיל לא תשפיע על חישוב משך ספיגת הפחמימות</string>
<string name="iob_label">אינסולין פעיל בגוף (IOB)</string>
<string name="iob_which">סמנו את כל התשובות הנכונות.</string>
<string name="iob_value">ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו.</string>
<string name="iob_hightemp">מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה.</string>
<string name="iob_negiob">אינסולין פעיל שלילי לאורך זמן בו לא נעשית פעילות מצביע על כך שהפרופיל חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בפרופיל.</string>

View file

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

View file

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

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_donothing">Nieko nedaryti ir leisti AndroidAPS koreguoti padidėjusį gliukozės kiekį kraujyje.</string>
<string name="iob_label">Aktyvus insulinas organizme (AIO)</string>
<string name="iob_which">Pasirinkite visus teisingus atsakymus.</string>
<string name="iob_value">AIO reikšmei įtakos turi nustatyta laikina valandinė bazė.</string>
<string name="iob_hightemp">Padidinta laikina bazė nebus nustatyta, jei kraujo glikemija yra žemiau nustatyto tikslo.</string>
<string name="iob_negiob">Jei ilgą laiką stebima neigiama AIO reikšmė ir nėra fizinio aktyvumo, tai rodo, kad jūsų nustatymai yra per „agresyvūs“ ir kad jums reikia mažiau insulino nei nustatyta.</string>

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_donothing">Doe niets en laat AndroidAPS de resulterende hoge bloedglucosespiegel corrigeren.</string>
<string name="iob_label">Insuline aan boord (IOB)</string>
<string name="iob_which">Selecteer alle juiste antwoorden.</string>
<string name="iob_value">De IOB-waarde wordt beïnvloed door eerdere tijdelijke basaalstanden.</string>
<string name="iob_hightemp">Een hoge tijdelijke basaal zal niet worden ingesteld wanneer je bloedsuiker onder het streefdoel ligt.</string>
<string name="iob_negiob">Negatieve IOB voor een aanzienlijke periode vrij van inspanning, suggereert dat je profiel te hoog is ingesteld, dus dat er minder insuline nodig is.</string>

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_prime">Gi en bolus med en del av det insulinet du mangler enten med penn eller ved å bruke prime funksjonen.</string>
<string name="wronginsulin_donothing">Ikke gjør noe og la AndroidAPS korrigere eventuelle høye blodsukkerverdier.</string>
<string name="cob_label">Karbohydrater ombord (COB)</string>
<string name="cob_question">Hvordan vil endring av ISF-verdi påvirke COB-beregning?</string>
<string name="cob_no_effect">Økning av ISF påvirker ikke beregningen av absorbering av karbohydrater</string>
<string name="cob2_question">Hvordan vil endring av IC-verdi påvirke COB-beregning?</string>
<string name="cob2_no_effect">Økning av IC påvirker ikke beregningen av absorbering av karbohydrater</string>
<string name="cob3_question">Hvordan vil endring av profil-prosent påvirke COB-beregning?</string>
<string name="cob3_no_effect">Ved å sette profilen til 150% påvirkes ikke beregningen av absorbering av karbohydrater</string>
<string name="iob_label">Aktivt insulin (IOB)</string>
<string name="iob_which">Marker alle riktige svar.</string>
<string name="iob_value">IOB verdi påvirkes av midlertidige temp basaler.</string>
<string name="iob_hightemp">Høy temp basal vil ikke bli gitt når ditt blodsukker er under målverdi.</string>
<string name="iob_negiob">Negativ IOB i en lengre periode selv om du ikke trener tyder på at profilen din gir for mye insulin og kanskje bør reduseres i innstillingene.</string>

View file

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

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_donothing">Nie rób nic i pozwól AndroidAPS na skorygowanie każdego uzyskanego wysokiego stężenia glukozy we krwi.</string>
<string name="iob_label">Aktywna insulina (IOB)</string>
<string name="iob_which">Sprawdź/Zaznacz wszystkie prawidłowe odpowiedzi.</string>
<string name="iob_value">Na wartość IOB mają wpływ wykonane tymczasowe dawki bazowe.</string>
<string name="iob_hightemp">Wysoka tymczasowa dawka bazowa nie zostanie podana, gdy twóje poziom cukru we krwi jest poniżej poziomu docelowego.</string>
<string name="iob_negiob">Negatywne IOB utrzymujące się przez znaczny okres czasu bez wysiłku fizycznego sugeruje, że Twój profil jest zbyt silny i mniej insuliny jest wymagane w Twoich ustawieniach.</string>

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_donothing">Não faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado resultante.</string>
<string name="iob_label">Insulina ativa (IA)</string>
<string name="iob_which">Marque todas as respostas corretas.</string>
<string name="iob_value">O valor de IA é afetado por basais temporárias efetuadas.</string>
<string name="iob_hightemp">Um basal alto temporário não será efetuado quando sua glicose estiver abaixo do alvo.</string>
<string name="iob_negiob">Insulina Ativa (IA) negativa por um período substancial na ausência de exercícios, sugere que seu perfil é muito agressivo e menos insulina deve ser considerada nas suas configurações.</string>

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_donothing">Faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado que daí resulte.</string>
<string name="iob_label">Insulina ativa (IA )</string>
<string name="iob_which">Marque todas as respostas corretas.</string>
<string name="iob_value">O valor do IA é afectado por basais temporárias emitidas.</string>
<string name="iob_hightemp">Basal temporária alta não será dada quando a sua glicose estiver abaixo do alvo.</string>
<string name="iob_negiob">IA negativa por um período substancial na ausência de exercício, sugere que o seu perfil é muito alto e é necessária menos insulina nas suas configurações.</string>

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_donothing">Nu faceți nimic și permiteți AndroidAPS să corecteze valorile mari ale glicemiei.</string>
<string name="iob_label">Insulină activă (IOB)</string>
<string name="iob_which">Bifați toate răspunsurile corecte.</string>
<string name="iob_value">Valoarea IOB este afectată de bazalele temporare emise.</string>
<string name="iob_hightemp">Rata bazala ridicata temporara nu va fi livrata atunci când glicemia este sub nivelul țintă.</string>
<string name="iob_negiob">Un IOB negativ pentru o perioadă substanțială în absența exercițiilor fizice sugerează că profilul tău este prea puternic și este nevoie de mai puţină insulină în setările inițiale.</string>

View file

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

View file

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

View file

@ -6,6 +6,7 @@
<string name="treatmentssafety_title">Безопасность терапии</string>
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
<string name="treatmentssafety_maxcarbs_title">Макс разрешенные углеводы (г)</string>
<string name="treatmentssafety_lgsThreshold_title">Уровень ГК, ниже которого происходит остановка подачи инсулина</string>
<string name="nav_preferences_plugin">Настройки %1$s</string>
<string name="nav_preferences">Настройки</string>
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
@ -432,6 +433,8 @@
<string name="ns_localbroadcasts_title">Активировать локальную передачу</string>
<string name="openapssmb">Супер микро болюс OpenAPS</string>
<string name="openaps_smb_dynamic_isf">Динамический ISF</string>
<string name="DynISFAdjust_title" formatted="false">Коэффициент регулировки динамического диапазона чувствительности ISF %</string>
<string name="DynISFAdjust_summary" formatted="false">Коэффициент корректировки динамического диапазона чувствительности ISF. Установите более 100% для агрессивных доз коррекции и менее 100% для менее агрессивной коррекции.</string>
<string name="enableuam">Включить непредвиденный прием пищи UAM</string>
<string name="enablesmb">Включить супер микро болюс SMB</string>
<string name="enablesmb_summary">Для ускорения действия используйте супер микро болюсы SMB вместо временного базала</string>
@ -590,6 +593,7 @@
<string name="openapssmb_maxiob_summary">Эта величина называется Max IOB в OpenAPS context\nOpenAPS не будет добавлять инсулин если текущий активный инсулин ее превысит</string>
<string name="absorption_cutoff_title">Максимальное время усваимости пищи [h]</string>
<string name="absorption_cutoff_summary">Время, за которое любая еда считается усвоившейся. Оставшиеся углеводы не будут учтены.</string>
<string name="treatmentssafety_lgsThreshold_summary">Значение уровня ГК, на котором происходит приостановка подачи инсулина. Значения по умолчанию являются стандартными для целевого диапазона. Пользователь может установить значения между 60 мг/дл (3.3 ммоль/л) и 100 мг/дл (5.5 ммоль/л) Параметры, заданные ниже 65/3.6 приводят к использованию значений по умолчанию</string>
<string name="overview_show_notes_field_in_dialogs_title">Показать поле примечаний в диалогах назначений</string>
<string name="next_button">Далее</string>
<string name="previous_button">Назад</string>
@ -965,6 +969,7 @@
<string name="wear_action_tempt_max_bg_error">Макс ГК вне диапазона!</string>
<string name="wear_action_tempt_manual_range_message">ВремЦель:\nМин: %1$s\nМакс.: %2$s\nДлительность: %3$s</string>
<string name="wear_action_tempt_manual_message">ВремЦель:\nЦель: %1$s\nДлительность: %2$s</string>
<string name="wear_action_tempt_preset_message">ВремЦель:\nПричина: %1$s\nЦель.: %2$s\nДлительность: %3$s</string>
<string name="quick_wizard_message">Мастер: %1$s\nИнсулин: %2$.2fЕд\nУгл: %3$dg</string>
<string name="wizard_result">Мастер:\nИнсулин: %1$.2fЕд\nУгл: %2$dg</string>
<string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string>

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_donothing">Nerobte nič a dovoľte AndroidAPS upraviť akúkoľvek výslednú vysokú hladinu glukózy v krvi.</string>
<string name="iob_label">Aktívny inzulín (IOB)</string>
<string name="iob_which">Zaškrtnite všetky správne odpovede.</string>
<string name="iob_value">Hodnota IOB je ovplyvnená vydanými dočasnými bazálmi.</string>
<string name="iob_hightemp">Vysoký dočasný bazál nebude spustený, pokiaľ je Vaša glykémia nižšia, ako cieľ.</string>
<string name="iob_negiob">Negatívne IOB po značnú dobu bez cvičenia naznačuje, že váš profil je príliš \"silný\" a vo vašom profile je potrebného menej inzulínu.</string>

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_donothing">Gör ingenting och låt AndroidAPS korrigera eventuella höga blodglukosnivåer.</string>
<string name="iob_label">Aktivt Insulin (IOB)</string>
<string name="iob_which">Markera ett eller flera alternativ.</string>
<string name="iob_value">IOB-värdet påverkas av temp basaler.</string>
<string name="iob_hightemp">Hög temp basal kommer inte att ges när ditt BG-värde är under målet.</string>
<string name="iob_negiob">Negativ IOB under en längre period även om du inte motionerat, tyder på att din profil ger för mycket insulin.</string>

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_prime">Şırınga/kalem veya başlatma kullanarak hesaplanan \"eksik\" insülininizi bolus olarak karşılayın.</string>
<string name="wronginsulin_donothing">Hiçbir şey yapmayın ve AndroidAPS\'in ortaya çıkabilecek yüksek kan şekeri seviyesini düzeltmesine müsade edin.</string>
<string name="iob_label">Aktif İnsülin (IOB)</string>
<string name="iob_which">Tüm doğru cevapları kontrol edin.</string>
<string name="iob_value">IOB değeri, verilen geçici bazallardan etkilenir.</string>
<string name="cob_label">Aktif Karbonhidrat (AKRB)</string>
<string name="cob_question">İDF değerinin değiştirilmesi AKRB (Aktif karbonhidrat) hesaplamasını nasıl etkiler?</string>
<string name="cob_no_effect">Artan İDF, hesaplanan karbonhidrat emilimini etkilemez</string>
<string name="cob2_question">Değişen Kİ değeri AKRB hesaplamasını nasıl etkiler?</string>
<string name="cob2_no_effect">Artan Kİ oranı, hesaplanan karbonhidrat emilimini etkilemez</string>
<string name="cob3_question">Değişen profil yüzdesi AKRB hesaplamasını nasıl etkiler?</string>
<string name="cob3_no_effect">Profili %150\'ye ayarlamak hesaplanan karbonhidrat emilimini etkilemez</string>
<string name="iob_label">Aktif İnsülin (AİNS)</string>
<string name="iob_value">AİNS değeri, verilen geçici bazallardan etkilenir.</string>
<string name="iob_hightemp">Kan şekeriniz hedefin altına düştüğünde yüksek geçici bazal verilmeyecektir.</string>
<string name="iob_negiob">Egzersiz yapmadığınız halde uzun bir dönem için negatif IOB, profilinizin çok güçlü olduğunu ve ayarlarınızda daha az insüline ihtiyaç duyulduğunu gösterir.</string>
<string name="iob_negiob">Egzersiz yapmadığınız halde uzun bir dönem için negatif AİNS, profilinizin çok güçlü olduğunu ve ayarlarınızda daha az insüline ihtiyaç duyulduğunu gösterir.</string>
<string name="iob_posiob">Önemli bir süre için pozitif IOB, insülin direncini veya habersiz öğünleri gösterir.</string>
<string name="breadgrams_label">Karbonhidrat girişi ve boluslar</string>
<string name="breadgrams_grams">Tüketilen karbonhidratları tahmin etmek ve kaydetmek için sadece gram kullanılmalıdır.</string>
<string name="breadgrams_exchange">Tüketilen karbonhidratlar uygun bir değişim sistemi kullanılarak kaydedilebilir (örn. DAFNE \"CHO\" değişimleri veya Avrupa \"Ekmek Birimleri\").</string>
<string name="breadgrams_decay">AndroidAPS, karbonhidrat \"çözünmesini\" tahmin etmek ve COB\'ı hesaplamak için dinamik bir model kullanır.</string>
<string name="breadgrams_decay">AndroidAPS, karbonhidrat \"çözünmesini\" tahmin etmek ve AKRB\'ı hesaplamak için dinamik bir model kullanır.</string>
<string name="breadgrams_calc">Kan şekeri seviyeleri kabul edilebilir değerlerin dışındaysa (çok düşük veya çok yüksek), karbonhidrat veya insülin düzeltmeleri için öneriler sağlamak için bolus hesaplayıcı kullanılabilir.</string>
<string name="breadgrams_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u</string>
<string name="extendedcarbs_label">yayma-karbonhidratlar</string>
@ -158,11 +164,11 @@
<string name="nsclient_label">Uzaktan İzleme</string>
<string name="nsclient_howcanyou">AndroidAPS\'i (örneğin çocuğunuz için) uzaktan nasıl izleyebilirsiniz?</string>
<string name="nsclient_nightscout">NS Client uygulaması, Nightscout uygulaması ve Nightscout web sayfasının tümü, AndroidAPS\'i uzaktan takip etmenize olanak tanır.</string>
<string name="nsclient_dexcomfollow">Diğer uygulamalar (ör. Dexcom takip, xDrip) bazı parametreleri (ör. kan şekeri/sensör değerleri) uzaktan takip etmenize izin verir, ancak farklı algoritma kullanımı, hatalı IOB veya COB değerlerine sebep olabilir.</string>
<string name="nsclient_dexcomfollow">Diğer uygulamalar (ör. Dexcom takip, xDrip) bazı parametreleri (ör. kan şekeri/sensör değerleri) uzaktan takip etmenize izin verir, ancak farklı algoritma kullanımı, hatalı AİNS veya AKRB değerlerine sebep olabilir.</string>
<string name="nsclient_data">AndroidAPS\'yi uzaktan takip etmek için her iki cihazın da internet erişimine sahip olması gerekir (ör. Wi-Fi veya mobil/hücresel ağ verileri aracılığıyla).</string>
<string name="nsclient_fullcontrol">Uzak takipçi olarak kullanılan NS İstemcisi, AndroidAPS\'i hem izleyecek hem de tam kontrol sağlayacaktır.</string>
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
<string name="isf_label_exam">İnsülin Duyarlılık Faktörü (ISF)</string>
<string name="isf_label_exam">İnsülin Duyarlılık Faktörü (İDF)</string>
<string name="isf_increasingvalue">ISF değerlerini yükseltmek, belirli bir karbonhidrat miktarını karşılamak için daha fazla insülin verilmesine yol açacaktır.</string>
<string name="isf_decreasingvalue">ISF değerinin düşürülmesi, hedeflenen kan şekerinin üzerinde bir düzeltme için daha fazla insülin verilmesine yol açar.</string>
<string name="isf_noeffect">Kan şekeri seviyeleri hedefin altında olduğunda ISF\'yi yükseltmenin veya düşürmenin insülin iletimi üzerinde hiçbir etkisi yoktur.</string>
@ -175,7 +181,7 @@
<string name="ic_label_exam">Karbonhidrat insülin Oranı (I:C oranı)</string>
<string name="ic_increasingvalue">Daha yüksek I:C oranları, belirli bir miktarda karbonhidrat için daha az insülin verilmesine yol açar.</string>
<string name="ic_decreasingvalue">Daha düşük I:C oranları, belirli bir miktarda karbonhidrat için daha az insülin verilmesine yol açar.</string>
<string name="ic_noeffect">0 COB\'niz varsa, IC oranını değiştirmek, belirli bir KŞ değerini düzeltmek için farklı insülin miktarına sebep olur.</string>
<string name="ic_noeffect">0 AKRB varsa, Kİ oranını değiştirmek, belirli bir KŞ değerini düzeltmek için farklı insülin miktarına sebep olur.</string>
<string name="ic_different">Ekmek (değişim) birimini 10g veya 12g olarak sayarsanız IC farklı olacaktır.</string>
<string name="ic_meaning">IC anlamı şudur: 1Ü insülin kaç ekmek birimi (değişim) kapsar.</string>
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>

View file

@ -6,6 +6,7 @@
<string name="treatmentssafety_title">Tedavi güvenliği</string>
<string name="treatmentssafety_maxbolus_title">Maks izin verilen bolus [U]</string>
<string name="treatmentssafety_maxcarbs_title">Maks izin verilen karbonhidrat [g]</string>
<string name="treatmentssafety_lgsThreshold_title">KŞ seviyesi altında düşük glikoz duraklatma meydana gelir</string>
<string name="nav_preferences_plugin">%1$s Tercihler</string>
<string name="nav_preferences">Tercihler</string>
<string name="nav_refreshtreatments">NS\'tan tedavileri güncelle</string>
@ -44,27 +45,27 @@
<string name="description_sms_communicator">SMS komutlarını kullanarak uzaktan AndroidAPS kontrolü.</string>
<string name="treatments_insulin_label_string">İnsülin:</string>
<string name="treatments_carbs_label_string">Karbonhidrat:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_iobtotal_label_string">Toplam IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Toplam IOB etkinliği:</string>
<string name="treatments_iob_label_string">AİNS:</string>
<string name="sms_iob">AİNS:</string>
<string name="treatments_iobtotal_label_string">Toplam AİNS:</string>
<string name="treatments_iobactivitytotal_label_string">Toplam AİNS etkinliği:</string>
<string name="tempbasals_realduration_label_string">Süre:</string>
<string name="tempbasals_netratio_label_string">Oran:</string>
<string name="tempbasals_netinsulin_label_string">İns:</string>
<string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Toplam IOB:</string>
<string name="tempbasals_iob_label_string">AİNS:</string>
<string name="tempbasals_iobtotal_label_string">Toplam AİNS:</string>
<string name="treatments_wizard_bg_label"></string>
<string name="treatments_wizard_tt_label">GH</string>
<string name="treatments_wizard_carbs_label">Karbonhidrat</string>
<string name="treatments_wizard_correction_label">Düzeltme</string>
<string name="bolus_iob_label">Bolus IOB</string>
<string name="bolus_iob_label">Bolus AİNS</string>
<string name="openapsma_run">Şimdi Çalıştır</string>
<string name="vitualpump_label">SANAL POMPA</string>
<string name="openapsma_lastrun_label">Son Çalıştırma</string>
<string name="openapsma_inputparameters_label">Girdi Parametreleri</string>
<string name="openapsma_glucosestatus_label">Glikoz durumu</string>
<string name="openapsma_currenttemp_label">Mevcut Geçici Bazal</string>
<string name="openapsma_iobdata_label">IOB Verisi</string>
<string name="openapsma_iobdata_label">AİNS Verisi</string>
<string name="openapsma_profile_label">Profil</string>
<string name="openapsma_mealdata_label">Yemek Verisi</string>
<string name="result">Sonuç</string>
@ -115,7 +116,7 @@
<string name="openloop_newsuggestion">Yeni öneri mevcut</string>
<string name="carbssuggestion">Karbonhidrat Önerisi</string>
<string name="unsupportednsversion">Nightscout\'un desteklenmeyen sürümü</string>
<string name="treatments_wizard_basaliob_label">Bazal IOB</string>
<string name="treatments_wizard_basaliob_label">Bazal AİNS</string>
<string name="bolusconstraintapplied">Bolus kısıtlaması uygulandı</string>
<string name="carbsconstraintapplied">Karbonhidrat kısıtlaması uygulandı</string>
<string name="careportal_newnstreatment_other">Diğer</string>
@ -139,8 +140,8 @@
<string name="nav_import">İçe aktarma ayarları</string>
<string name="openapsma_maxbasal_title">Maks Ü/s geçici Bazal ayarlanabilir</string>
<string name="openapsma_maxbasal_summary">Bu değer OpenAPS\'te \"maksimum bazal\" olarak adlandırılır</string>
<string name="openapsma_maxiob_title">OpenAPS\'nin vermesine izin verilen maksimum bazal IOB (Aktif insülin) [U]</string>
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Maks IOB denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
<string name="openapsma_maxiob_title">OpenAPS\'in gönderebileceği maksimum bazal AİNS (Aktif insülin) [U]</string>
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Maks AİNS denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
<string name="password_preferences_encrypt_prompt">Dışa aktarılan tercihleri şifrelemek için kullanılacak ana parola sorulacaktır.</string>
<string name="password_preferences_decrypt_prompt">İçe aktarılan tercihlerin şifresini çözmek için gerekli olan ana parola sorulacaktır.</string>
<string name="preferences_export_canceled">Aktarım iptal edildi! Tercihler dışa aktarılmadı!</string>
@ -316,8 +317,8 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="clearlog">Günlüğü temizle</string>
<string name="nowritepermission">NSCLIENT yazma izni yok. Yanlış API Anahtarı?</string>
<string name="wear_settings">Wear ayarları</string>
<string name="wear_detailedIOB_title">Ayrıntılı IOB göster</string>
<string name="wear_detailedIOB_summary">Saat arayüzü üzerinde IOB\'yi bolus ve bazal olarak ayırın</string>
<string name="wear_detailedIOB_title">Ayrıntılı AİNS göster</string>
<string name="wear_detailedIOB_summary">Saat arayüzü üzerinde AİNS\'i bolus ve bazal olarak ayırın</string>
<string name="nosuccess">başarısız - lütfen telefonu kontrol edin</string>
<string name="notavailable">n/a</string>
<string name="patientage">Hasta tipi</string>
@ -356,7 +357,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="smscommunicator_loopsuspended">Döngü duraklatıldı</string>
<string name="smscommunicator_loopresumed">Döngü devam ettirildi</string>
<string name="bg_trend_label">15 dk eğilim</string>
<string name="treatments_wizard_cob_label">COB</string>
<string name="treatments_wizard_cob_label">AKRB</string>
<string name="superbolus">Süperbolus</string>
<string name="ns_logappstartedevent">NS\'a uygulama başlangıcını kaydet</string>
<string name="restartingapp">Ayarları uygulamak için uygulamadan çıkılıyor.</string>
@ -439,7 +440,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="enablesmb">SMB (Super Micro Bolus) etkinleştir</string>
<string name="enablesmb_summary">Daha hızlı bir etki için geçici bazal yerine Super Micro Bolus kullanın</string>
<string name="enableuam_summary">(Uam) Bildirilmemiş öğünlerin tespiti</string>
<string name="insulin_oref_peak">IOB Eğrisi Tepe Zamanı</string>
<string name="insulin_oref_peak">AİNS Eğrisi Tepe Zamanı</string>
<string name="insulin_peak_time">Tepe zamanı [min]</string>
<string name="insulin_peak">Tepe</string>
<string name="free_peak_oref">Serbest tepe Oref</string>
@ -495,28 +496,28 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="nsclientbg">Nightscout Client KŞ</string>
<string name="nsclientbgshort">NS KŞ</string>
<string name="overview_editquickwizard_usebg">KŞ Hesaplaması</string>
<string name="overview_editquickwizard_usebolusiob">Bolus IOB (Aktif İnsülin) hesaplaması</string>
<string name="overview_editquickwizard_usebasaliob">Bazal IOB (Aktif İnsülin) hesaplaması</string>
<string name="overview_editquickwizard_usebolusiob">Bolus AİNS hesaplaması</string>
<string name="overview_editquickwizard_usebasaliob">Bazal AİNS hesaplaması</string>
<string name="overview_editquickwizard_usetrend">Trend hesapla</string>
<string name="overview_editquickwizard_usesuperbolus">Süperbolus hesapla</string>
<string name="positiveonly">Sadece pozitif</string>
<string name="negativeonly">Sadece negatif</string>
<string name="overview_editquickwizard_usecob">COB (Aktif Karbonhidrat) hesaplaması</string>
<string name="overview_editquickwizard_usecob">AKRB (Aktif Karbonhidrat) hesaplaması</string>
<string name="overview_editquickwizard_usetemptarget">Geçici hedef hesaplaması</string>
<string name="overview_editquickwizard_usepercentage">Yüzde Hesaplaması</string>
<string name="loopenabled">Döngü etkin</string>
<string name="apsselected">APS Seçildi</string>
<string name="nsclienthaswritepermission">NSClient\'in yazma izni var</string>
<string name="closedmodeenabled">Kapalı mod etkin</string>
<string name="maxiobset">Maksimal IOB doğru şekilde ayarlandı</string>
<string name="maxiobset">Maksimal AİNS doğru şekilde ayarlandı</string>
<string name="hasbgdata">Seçili kaynaktan KŞ kullanılabilir</string>
<string name="extendedbolusdeliveryerror">Yayma bolus iletim hatası</string>
<string name="enablesmbalways">SMB\'yi her zaman etkinleştir</string>
<string name="enablesmbalways_summary">SMB\'yi her zaman bağımsız olarak boluslarla etkinleştirin. G5 gibi verilerin yalnızca filtrelenmesiyle yalnızca KŞ kaynağıyla mümkündür</string>
<string name="enablesmbaftercarbs">Yemeklerden sonra SMB\'yi etkinleştir</string>
<string name="enablesmbaftercarbs_summary">Karbonhidrat alındıktan sonra 6 saat süreyle SMB\'yi (Super Micro Bolus) etkinleştirin.0 COB (Aktif Karbonhidrat) ile de çalışır, Şayet KŞ kaynağıyla kullanılacaksa verilerin iyice filtrelenmesiyle mümkündür.örn. Dexcom G5 gibi</string>
<string name="enablesmbwithcob">SMB\'yi COB ile etkinleştir</string>
<string name="enablesmbwithcob_summary">COB (Aktif Karbonhidrat) aktif olduğunda SMB\'yi (Super Micro Bolus) etkinleştirin.</string>
<string name="enablesmbaftercarbs_summary">0 AKRB (Aktif Karbonhidrat) olsa dahi, karbonhidrat alındıktan sonra 6 saat süreyle SMB\'yi (Süper Mikro Bolus) etkinleştirir. Şayet KŞ kaynağıyla kullanılacaksa verilerin iyice filtrelenmesiyle (Dexcom G5-G6 gibi) mümkündür.</string>
<string name="enablesmbwithcob">SMB\'yi AKRB ile etkinleştir</string>
<string name="enablesmbwithcob_summary">AKRB (Aktif Karbonhidrat) aktif olduğunda SMB\'yi (Süper Mikro Bolus) etkinleştirin.</string>
<string name="enablesmbwithtemptarget">Geçici hedeflerle SMB\'yi etkinleştir</string>
<string name="enablesmbwithtemptarget_summary">Geçici hedef aktif olduğunda SMB\'yi etkinleştir (yakında yeme, egzersiz)</string>
<string name="enablesmbwithhightemptarget">Yüksek geçici hedeflerle SMB\'yi etkinleştir</string>
@ -579,7 +580,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="basal_set_correctly">Bazal doğru ayarlanmış</string>
<string name="limitingextendedbolus">%2$s\'den dolayı yayma bolus %1$.1f Ü ile sınırlandırılıyor</string>
<string name="limitingcarbs">%2$s\'den dolayı karbonhidratlar %1$d g ile sınırlandırılıyor</string>
<string name="limitingiob">%2$s\'den dolayı IOB (Aktif İnsülin)%1$.1f Ü ile sınırlandırılıyor</string>
<string name="limitingiob">%2$s\'den dolayı AİNS %1$.1f Ü ile sınırlandırılıyor</string>
<string name="maxvalueinpreferences">tercihlerde maksimum değer</string>
<string name="hardlimit">sert sınır</string>
<string name="readstatusfailed">Durumu okumak başarısız oldu</string>
@ -589,8 +590,8 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="smbnotallowedinopenloopmode">ık Döngü modunda SMB\'ye (Super Micro Bolus) izin verilmiyor</string>
<string name="food_short">Yiyecek</string>
<string name="reset">sıfırla</string>
<string name="openapssmb_maxiob_title">OpenAPS tarafından aşılmayacak, maksimum toplam IOB(Aktif İnsülin)[U]</string>
<string name="openapssmb_maxiob_summary">Bu değer OpenAPS bağlamında Max IOB (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut IOB bu değerden daha büyükse daha fazla insülin eklemez</string>
<string name="openapssmb_maxiob_title">OpenAPS tarafından aşılamayacak maksimum toplam AİNS (Aktif İnsülin)[U]</string>
<string name="openapssmb_maxiob_summary">Bu değer OpenAPS bağlamında Max AİNS (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut AİNS bu değerden daha büyükse daha fazla insülin vermez</string>
<string name="absorption_cutoff_title">Besinin maksimum emilim süresi [h]</string>
<string name="absorption_cutoff_summary">Herhangi bir öğünün emildiği kabul edilen zaman. Kalan karbonhidratlar kesilecek.</string>
<string name="treatmentssafety_lgsThreshold_summary">Altına düştüğünde insülinin askıya alındığı KŞ değeri. Varsayılan değer, standart hedef modeli kullanır. Kullanıcı değeri 60mg/dl (3,3mmol/l) ile 100mg/dl(5.5mmol/l) arasında ayarlayabilir. 65/3,6\'nın altındaki değerler varsayılan modelin kullanılmasına neden olur</string>
@ -632,7 +633,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="readstatus">Durum oku</string>
<string name="exitwizard">Kurulum sihirbazını atla</string>
<string name="setupwizard_loop_description">AndroidAPS\'ın bazal değişiklikleri önerme/yapmasını sağlamak için aşağıdaki düğmeye basın</string>
<string name="setupwizard_sensitivity_description">Duyarlılık eklentisi, duyarlılık tespiti ve COB hesaplaması için kullanılır. Daha fazla bilgi için ziyaret edin:</string>
<string name="setupwizard_sensitivity_description">Duyarlılık eklentisi, duyarlılık tespiti ve AKRB hesaplaması için kullanılır. Daha fazla bilgi için ziyaret edin:</string>
<string name="setupwizard_sensitivity_url">https://androidaps.readthedocs.io/en/latest/Configuration/Sensitivity-detection-and-COB.html</string>
<string name="nsclientinfotext">NSClient, Nightscout\'a bağlantıyı sağlar. Şimdi bu kısmı atlayabilirsiniz, ancak ayarlamadan görevleri geçemezsiniz.</string>
<string name="diawarning">Lütfen unutmayın: yeni insülin profilleri en az 5 saat DIA gerektirir. Yeni profildeki DIA 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_short">BYODA</string>
<string name="description_source_dexcom">\'Kendi Dexcom Uygulamanızı Oluşturun\' uygulamasından KŞ değerlerini alın.</string>
<string name="cobvsiob">COB vs IOB</string>
<string name="cobvsiob">AKRB vs AİNS</string>
<string name="bolusconstraintappliedwarn">Bolus kısıtlaması uygulandı: %1$.2f Ü ile %2$.2f Ü</string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Yavaş karbonhidrat emilimi tespit edildi: zamanın %2$d%% si. Hesaplamanızı iki kez kontrol edin. Aktif Karbonhidrat (COB) olduğundan fazla tahmin edilebilir, bu nedenle daha fazla insülin verilebilir !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Yavaş karbonhidrat emilimi tespit edildi: zamanın %2$d%% si. Hesaplamanızı iki kez kontrol edin. Aktif Karbonhidrat (AKRB) olduğundan fazla tahmin edilebilir, bu nedenle daha fazla insülin verilebilir !!!!!</font>]]></string>
<string name="partialboluswizard">Bolus sihirbazı sonucunun bu kadarını ilet [%]</string>
<string name="deliverpartofboluswizard">Bolus sihirbazı hesaplamayı gerçekleştirir ancak hesaplanan insülinin yalnızca bu kısmı iletilir. SMB algoritması ile kullanışlıdır.</string>
<string name="snooze">Ertele</string>
@ -746,7 +747,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="smscommunicator_messagebody">Geçersiz mesaj</string>
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
<string name="format_cob_ic">%1$.1fg : %2$.1f</string>
<string name="format_percent">%1$d%%</string>
<string name="unit_minute_short">dk.</string>
<string name="profile_name">Profil adı:</string>
@ -897,7 +898,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="ns_receive_tbr_eb">GBO ve EB (Yayma Bolus) alın</string>
<string name="ns_receive_tbr_eb_summary">Başka bir örnek üzerinden girilen GBO ve EB (Yayma Bolusu) kabul edin</string>
<string name="ns_receive_insulin">İnsülinleri alın</string>
<string name="ns_receive_insulin_summary">NS veya NSClient aracılığıyla girilen insülini kabul edin (iletilmez, yalnızca aktif insüline göre (IOB) hesaplanır)</string>
<string name="ns_receive_insulin_summary">NS veya NSClient aracılığıyla girilen insülini kabul edin (iletilmez, yalnızca AİNS\'e göre hesaplanır)</string>
<string name="ns_receive_carbs">Karbonhidratları alın</string>
<string name="ns_receive_carbs_summary">NS veya NSClient aracılığıyla girilen karbonhidratları kabul edin</string>
<string name="ns_receive_therapy_events">Terapi etkinlikleri alın</string>
@ -977,13 +978,13 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="quick_wizard_not_available">Seçili hızlı asistan artık mevcut değil, lütfen kutucuğu yenileyin</string>
<string name="wizard_no_actual_bg">Hesaplamayı temel alacak yeni bir KŞ yok!</string>
<string name="wizard_no_active_profile">Etkin profil ayarlanmadı!</string>
<string name="wizard_no_cob">Aktif karbonhidrat bilinmiyor! KŞ okuması eksik veya son uygulama yeniden başlatılsın mı?</string>
<string name="wizard_no_cob">Aktif karbonhidrat (AKRB) bilinmiyor! KŞ okuması eksik veya son uygulama yeniden başlatılsın mı?</string>
<string name="wizard_carbs_constraint">Karbonhidrat kısıtlaması ihlali!</string>
<string name="wizard_explain_calc">Hesap (KİO: %1$.1f, İDF: %2$.1f)</string>
<string name="wizard_explain_carbs">Karb: %1$.2fÜ</string>
<string name="wizard_explain_cob">COB: %1$.0fg %2$.2fÜ</string>
<string name="wizard_explain_cob">AKRB: %1$.0fg %2$.2fÜ</string>
<string name="wizard_explain_bg">KŞ: %1$.2fÜ</string>
<string name="wizard_explain_iob">Aktif İnsülin: %1$.2fÜ</string>
<string name="wizard_explain_iob">AİNS: %1$.2fÜ</string>
<string name="wizard_explain_superbolus">Süperbolus: %1$.2fÜ</string>
<string name="wizard_explain_trend">15\' trend: %1$.2fÜ</string>
<string name="wizard_explain_percent">Yüzde: %1$.2fÜ x %2$d%% ≈ %3$.2fÜ</string>
@ -1043,4 +1044,5 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
<string name="description_source_aidex">GlucoRx Aidex CGMS\'den KŞ değerleri alır.</string>
<string name="blocked_by_charging">Şarj seçenekleri tarafından engellendi</string>
<string name="blocked_by_connectivity">Bağlantı seçenekleri tarafından engellendi</string>
<string name="no_watch_connected">(Saat Bağlı Değil)</string>
</resources>

View file

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

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_prime">Bolus a proportion of your calculated missed insulin by either syringe/pen or using a prime.</string>
<string name="wronginsulin_donothing">Do nothing and allow AndroidAPS to correct any resulting high blood glucose level.</string>
<string name="cob_label">Carbs on Board (COB)</string>
<string name="cob_question">How changing ISF value affects COB calculation?</string>
<string name="cob_longer">Increasing ISF will take absorbing carbs a longer time</string>
<string name="cob_shorter">Increasing ISF will take absorbing carbs a shorter time</string>
<string name="cob_no_effect">Increasing ISF will not affect calculated carbs absorption</string>
<string name="cob2_question">How changing IC value affects COB calculation?</string>
<string name="cob2_longer">Increasing IC will take absorbing carbs a longer time</string>
<string name="cob2_shorter">Increasing IC will take absorbing carbs a shorter time</string>
<string name="cob2_no_effect">Increasing IC will not affect calculated carbs absorption</string>
<string name="cob3_question">How changing profile percentage affects COB calculation?</string>
<string name="cob3_longer">Setting profile to 150% will take absorbing carbs a longer time</string>
<string name="cob3_shorter">Setting profile to 150% will take absorbing carbs a shorter time</string>
<string name="cob3_no_effect">Setting profile to 150% will not affect calculated carbs absorption</string>
<string name="iob_label">Insulin on Board (IOB)</string>
<string name="iob_which">Check all the correct answers.</string>
<string name="iob_value">IOB value is affected by issued temporary basals.</string>
<string name="iob_hightemp">High temp basal will not be given when your blood sugar is below target.</string>
<string name="iob_negiob">Negative IOB for a substantial period in the absence of exercise suggests your profile is too strong and less insulin is needed in your settings.</string>

View file

@ -1242,6 +1242,7 @@
<string name="a11y_only_on_watch">only on watch</string>
<string name="a11y_only_on_phone">only on phone</string>
<string name="a11y_drag_and_drop_handle">drag and drop handle</string>
<string name="search">Search</string>
<!-- Aidex Cgms -->
<string name="aidex">GlucoRx Aidex</string>
@ -1249,6 +1250,7 @@
<string name="description_source_aidex">Receive BG values from GlucoRx Aidex CGMS.</string>
<string name="blocked_by_charging">Blocked by charging options</string>
<string name="blocked_by_connectivity">Blocked by connectivity options</string>
<string name="no_watch_connected">(No Watch Connected)</string>
</resources>

View file

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

View file

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

View file

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

View file

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

View file

@ -42,6 +42,7 @@ class ActionRunAutotune(injector: HasAndroidInjector) : Action(injector) {
val profileName = if (inputProfileName.value == rh.gs(R.string.active)) "" else inputProfileName.value
var message = if (autoSwitch) R.string.autotune_run_with_autoswitch else R.string.autotune_run_without_autoswitch
Thread {
if (!autotunePlugin.calculationRunning) {
autotunePlugin.atLog("[Automation] Run Autotune $profileName, ${daysBack.value} days, Autoswitch $autoSwitch")
autotunePlugin.aapsAutotune(daysBack.value, autoSwitch, profileName)
if (!autotunePlugin.lastRunSuccess) {
@ -49,6 +50,11 @@ class ActionRunAutotune(injector: HasAndroidInjector) : Action(injector) {
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()
}
}.start()
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="lastboluslabel">Son bolus önce</string>
<string name="lastboluscompared">Son bolus zamanı %1$s %2$s dakika önce</string>
<string name="triggercoblabel">COB</string>
<string name="cobcompared">AK (COB) %1$s %2$.0f</string>
<string name="triggercoblabel">AKRB</string>
<string name="cobcompared">AKRB %1$s %2$.0f</string>
<string name="iob_u">IOB [U]:</string>
<string name="distance_short">Mesafe [m]:</string>
<string name="recurringTime">Yinelenen zaman</string>

View file

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

View file

@ -5,13 +5,14 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.interfaces.ConfigBuilder
import info.nightscout.androidaps.interfaces.Loop
import info.nightscout.androidaps.interfaces.ResourceHelper
import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.actions.ActionLoopEnable
import info.nightscout.androidaps.plugins.general.automation.actions.ActionStopProcessing
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnectorTest
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDummy
import info.nightscout.androidaps.interfaces.ResourceHelper
import org.json.JSONObject
import org.junit.Assert
import org.junit.Test
@ -70,4 +71,14 @@ class AutomationEventTest : TestBase() {
Assert.assertFalse(event.actions === clone.actions) // not the same object reference
Assert.assertEquals(clone.toJSON(), clone.toJSON())
}
@Test
fun hasStopProcessing() {
val event = AutomationEvent(injector)
event.title = "Test"
event.trigger = TriggerDummy(injector).instantiate(JSONObject(TriggerConnectorTest.oneItem)) as TriggerConnector
Assert.assertFalse(event.hasStopProcessing())
event.addAction(ActionStopProcessing(injector))
Assert.assertTrue(event.hasStopProcessing())
}
}

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.uel = uel
}
if (it is ActionStopProcessing) {
it.rh = rh
}
if (it is PumpEnactResult) {
it.rh = rh
}

View file

@ -2,7 +2,7 @@
buildscript {
ext {
kotlin_version = '1.7.0'
kotlin_version = '1.7.10'
core_version = '1.8.0'
rxjava_version = '3.1.5'
rxandroid_version = '3.0.0'
@ -66,7 +66,7 @@ plugins {
id "io.gitlab.arturbosch.detekt" version "1.20.0"
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
id 'org.barfuin.gradle.jacocolog' version '2.0.0'
id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}
allprojects {

View file

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

View file

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

View file

@ -1,10 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:fillColor="?attr/colorControlNormal"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>

View file

@ -1,45 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="30.4518"
android:startX="11.6122"
android:endY="30.419544"
android:endX="52.3879"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFB3B3B3"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FF000000"
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
<path
android:fillColor="#FF000000"
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
<path
android:pathData="M32,32m-27.5,0a27.5,27.5 0,1 1,55 0a27.5,27.5 0,1 1,-55 0"
android:fillColor="@android:color/white"/>
android:fillColor="?attr/colorControlNormal"/>
<path
android:fillColor="#FF000000"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M21.824,34.228l1.704,0.498c-0.358,1.621 -1,2.857 -1.928,3.708c-0.929,0.851 -2.063,1.277 -3.404,1.277c-1.388,-0 -2.517,-0.327 -3.387,-0.982c-0.869,-0.654 -1.531,-1.602 -1.985,-2.843c-0.454,-1.241 -0.681,-2.574 -0.681,-3.998c0,-1.553 0.257,-2.908 0.769,-4.064c0.512,-1.156 1.242,-2.034 2.187,-2.635c0.946,-0.6 1.987,-0.9 3.123,-0.9c1.288,0 2.372,0.38 3.25,1.14c0.879,0.759 1.491,1.827 1.836,3.204l-1.678,0.458c-0.298,-1.085 -0.732,-1.875 -1.3,-2.371c-0.568,-0.495 -1.282,-0.742 -2.143,-0.742c-0.99,-0 -1.817,0.275 -2.482,0.824c-0.664,0.549 -1.131,1.287 -1.401,2.212c-0.269,0.926 -0.404,1.881 -0.404,2.864c0,1.268 0.16,2.375 0.479,3.321c0.319,0.946 0.815,1.653 1.489,2.121c0.673,0.468 1.402,0.702 2.187,0.702c0.955,0 1.763,-0.319 2.425,-0.956c0.661,-0.638 1.109,-1.584 1.344,-2.838Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M31.653,33.607l0,-1.749l5.455,-0.011l-0,5.534c-0.837,0.773 -1.701,1.355 -2.591,1.745c-0.89,0.39 -1.804,0.585 -2.741,0.585c-1.265,-0 -2.414,-0.314 -3.448,-0.941c-1.033,-0.627 -1.814,-1.535 -2.341,-2.721c-0.527,-1.187 -0.79,-2.513 -0.79,-3.978c-0,-1.451 0.262,-2.806 0.786,-4.064c0.524,-1.258 1.278,-2.192 2.262,-2.802c0.984,-0.611 2.117,-0.916 3.399,-0.916c0.931,0 1.773,0.175 2.526,0.524c0.752,0.349 1.342,0.836 1.77,1.46c0.427,0.624 0.752,1.438 0.975,2.441l-1.537,0.489c-0.194,-0.76 -0.434,-1.357 -0.721,-1.791c-0.287,-0.434 -0.697,-0.781 -1.23,-1.042c-0.532,-0.262 -1.124,-0.392 -1.774,-0.392c-0.779,-0 -1.452,0.137 -2.02,0.412c-0.568,0.275 -1.027,0.636 -1.375,1.083c-0.348,0.448 -0.619,0.939 -0.813,1.475c-0.328,0.923 -0.491,1.923 -0.491,3.001c-0,1.329 0.197,2.442 0.592,3.337c0.396,0.895 0.971,1.56 1.727,1.994c0.755,0.434 1.557,0.651 2.406,0.651c0.738,-0 1.459,-0.165 2.161,-0.494c0.703,-0.329 1.236,-0.68 1.599,-1.053l-0,-2.777l-3.786,0Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M39.568,39.456l-0,-14.912l2.565,-0l3.048,10.559c0.281,0.983 0.486,1.719 0.614,2.207c0.147,-0.542 0.375,-1.339 0.686,-2.39l3.083,-10.376l2.293,-0l-0,14.912l-1.643,0l-0,-12.481l-3.742,12.481l-1.537,0l-3.725,-12.695l0,12.695l-1.642,0Z"
android:fillType="nonZero"/>
</vector>

View file

@ -4,84 +4,85 @@
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
android:strokeAlpha="0.96"
android:strokeWidth="0.84"
android:fillColor="@android:color/transparent"
android:strokeColor="#fff"/>
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
android:strokeWidth="0.84"
android:strokeAlpha="0.96"
android:strokeColor="?attr/colorControlNormal" />
<path
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z" />
<path
android:pathData="M17.119,8.385h1.107v10.439h-1.107z"
android:fillColor="#fff"
android:fillType="nonZero"/>
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M17.119,8.385h1.107v10.439h-1.107z" />
<path
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z" />
<path
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z" />
<path
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z" />
<path
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z"
android:fillColor="#fff"/>
android:fillColor="?attr/colorControlNormal"
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorControlNormal"
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z" />
<path
android:fillColor="@android:color/white"
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z" />
<path
android:fillColor="@android:color/darker_gray"
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z"
android:fillAlpha="0.96"/>
android:fillAlpha="0.96"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z" />
<path
android:fillColor="@android:color/darker_gray"
android:pathData="M60.657,36.693l-22.108,0c-0.966,0 -1.751,0.785 -1.751,1.752l-0,0.681c-0,0.447 0.363,0.811 0.811,0.811l23.048,-0l0,-3.244Z"
android:fillAlpha="0.96"/>
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>

View file

@ -4,27 +4,15 @@
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M40.644,18.931l-17.75,-0l4.224,-4.292l9.595,-0l3.931,4.292Z"
android:fillColor="?attr/colorControlNormal"/>
android:fillColor="?attr/colorControlNormal"
android:pathData="M27.061,11.374h9.853v3.277h-9.853z" />
<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
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
android:pathData="M39.992,7.46c-0,-0.72 -0.585,-1.305 -1.305,-1.305l-13.374,0c-0.72,0 -1.305,0.585 -1.305,1.305l0,2.61c0,0.72 0.585,1.304 1.305,1.304l13.374,0c0.72,0 1.305,-0.584 1.305,-1.304l-0,-2.61Z"
android:fillColor="?attr/colorControlNormal"/>
<path
android:pathData="M45.819,52.79c0,2.613 -2.244,4.628 -4.733,4.734c-5.822,0.248 -11.887,0.316 -18.408,-0c-2.715,-0.132 -4.735,-2.121 -4.735,-4.734l0,-30.713c0.687,-2.545 4.794,-4.453 6.303,-4.733l14.905,0c2.03,-0.013 5.653,2.356 6.668,4.733l0,3.536l-17.079,0l0,22.04l17.079,-0l0,5.137Z"
android:fillColor="?attr/colorControlNormal"/>
<path
android:pathData="M27.061,11.374h9.853v3.277h-9.853z"
android:fillColor="?attr/colorControlNormal"/>
<path
android:pathData="M39.992,7.46c-0,-0.72 -0.585,-1.305 -1.305,-1.305l-13.374,0c-0.72,0 -1.305,0.585 -1.305,1.305l0,2.61c0,0.72 0.585,1.304 1.305,1.304l13.374,0c0.72,0 1.305,-0.584 1.305,-1.304l-0,-2.61Z"
android:fillColor="?attr/colorControlNormal"/>
<path
android:pathData="M40.644,18.931l-17.75,-0l4.224,-4.292l9.595,-0l3.931,4.292Z"
android:fillColor="?attr/colorControlNormal"/>
android:fillColor="?attr/colorControlNormal"
android:pathData="M39.151,17.344l-14.905,-0l2.815,-2.693l9.853,-0l2.237,2.693Z" />
</vector>

View file

@ -1,10 +1,23 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
<path android:fillColor="#00000000"
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="36dp"
android:height="36dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z" />
<path
android:pathData="M48.482,34.89c1.19,0.985 11.298,-12.07 10.281,-19.108c-0.83,-5.741 -4.429,-10.197 -10.281,-10.324c-5.915,-0.129 -9.748,4.343 -10.28,10.324c-0.628,7.047 8.849,20.079 10.28,19.108Z"
android:strokeColor="?attr/colorControlNormal" android:strokeWidth="3.09"/>
<path android:fillColor="?attr/colorControlNormal" android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z"/>
<path android:fillColor="#FF000000" android:pathData="M43.147,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
<path android:fillColor="#FF000000" android:pathData="M50.951,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
android:strokeWidth="3.09"
android:strokeColor="?attr/colorControlNormal" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z" />
<path
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M42.6,16.153a1.373,1.378 0,1 0,4 0a1.373,1.378 0,1 0,-4 0z" />
<path
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M50.3,16.153a1.373,1.378 0,1 0,4 0a1.373,1.378 0,1 0,-4 0z" />
</vector>

View file

@ -1,11 +1,27 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?attr/colorControlNormal" android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z"/>
<path android:fillColor="#FF000000" android:pathData="M27.035,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
<path android:fillColor="#FF000000" android:pathData="M34.54,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
<path android:fillColor="?attr/colorControlNormal"
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="36dp"
android:height="36dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M31.98,46.071c1.15,0.944 10.925,-11.56 9.942,-18.302c-0.803,-5.498 -4.283,-9.766 -9.942,-9.888c-5.72,-0.123 -9.427,4.16 -9.942,9.888c-0.607,6.75 8.558,19.231 9.942,18.302Z"
android:strokeColor="?attr/colorControlNormal" android:strokeWidth="3.09"/>
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z"/>
<path android:fillColor="?attr/colorControlNormal" android:fillType="nonZero" android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z"/>
android:strokeWidth="3.09"
android:strokeColor="?attr/colorControlNormal" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z" />
<path
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M26.3,28.124a1.113,1.107 0,1 0,4 0a1.113,1.107 0,1 0,-4 0z" />
<path
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M33.54,28.124a1.113,1.107 0,1 0,4 0a1.113,1.107 0,1 0,-4 0z" />
<path
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z" />
<path
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"
android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z" />
</vector>

View file

@ -4,14 +4,19 @@
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z"
android:fillColor="?attr/colorControlNormal"/>
android:fillColor="?attr/colorControlNormal"
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z" />
<path
android:pathData="M36.472,7.728c-2.167,-1.778 -20.58,21.776 -18.727,34.474c1.511,10.356 8.067,18.397 18.727,18.626c10.775,0.231 17.757,-7.836 18.727,-18.626c1.144,-12.715 -16.12,-36.225 -18.727,-34.474Z"
android:strokeWidth="3.09"
android:fillColor="#00000000"
android:strokeColor="?attr/colorControlNormal" />
<path
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z"
android:fillColor="?attr/colorControlNormal"/>
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M26,42a1.113,1.107 0,1 0,7 0a1.113,1.107 0,1 0,-7 0z" />
<path
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M40,42a1.113,1.107 0,1 0,7 0a1.113,1.107 0,1 0,-7 0z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z" />
</vector>

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:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:fillColor="?attr/colorControlNormal"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/>
</vector>

View file

@ -1,5 +1,12 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ffffff" android:pathData="M32,8C45.2461,8 56.0001,18.7541 56.0001,32.0001C56.0001,45.2462 45.2461,56.0002 32,56.0002C18.754,56.0002 8,45.2462 8,32.0001C8,18.7541 18.754,8 32,8ZM52.1291,31.6881C52.1301,31.6341 52.1301,31.5801 52.1301,31.5271C52.1301,20.2941 42.9931,11.175 31.739,11.175C20.485,11.175 11.349,20.2941 11.349,31.5271C11.349,42.7591 20.485,51.8782 31.739,51.8782L31.87,51.8772C31.914,51.8782 31.958,51.8782 32.001,51.8782C43.1101,51.8782 52.1301,42.9031 52.1301,31.8481C52.1301,31.7951 52.1301,31.7421 52.1291,31.6881Z"/>
<path android:fillColor="#ffffff" android:pathData="M32.001,9.381C42.7061,9.381 51.3971,18.1741 51.3971,29.0061C51.3971,39.8371 42.7061,48.6302 32.001,48.6302C21.296,48.6302 12.605,39.8371 12.605,29.0061C12.605,18.1741 21.296,9.381 32.001,9.381ZM29.841,29.9691C29.841,29.9821 29.841,29.9941 29.841,30.0071C29.841,31.1071 30.809,32.0001 32.001,32.0001C33.193,32.0001 34.16,31.1071 34.16,30.0071L34.16,29.9681C34.16,29.9561 34.16,29.9441 34.16,29.9311C34.16,28.8731 33.193,28.0141 32.001,28.0141C30.809,28.0141 29.841,28.8731 29.841,29.9311L29.841,29.9691Z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="36dp"
android:height="36dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M32,8C45.2461,8 56.0001,18.7541 56.0001,32.0001C56.0001,45.2462 45.2461,56.0002 32,56.0002C18.754,56.0002 8,45.2462 8,32.0001C8,18.7541 18.754,8 32,8ZM52.1291,31.6881C52.1301,31.6341 52.1301,31.5801 52.1301,31.5271C52.1301,20.2941 42.9931,11.175 31.739,11.175C20.485,11.175 11.349,20.2941 11.349,31.5271C11.349,42.7591 20.485,51.8782 31.739,51.8782L31.87,51.8772C31.914,51.8782 31.958,51.8782 32.001,51.8782C43.1101,51.8782 52.1301,42.9031 52.1301,31.8481C52.1301,31.7951 52.1301,31.7421 52.1291,31.6881Z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M32.001,9.381C42.7061,9.381 51.3971,18.1741 51.3971,29.0061C51.3971,39.8371 42.7061,48.6302 32.001,48.6302C21.296,48.6302 12.605,39.8371 12.605,29.0061C12.605,18.1741 21.296,9.381 32.001,9.381ZM29.841,29.9691C29.841,29.9821 29.841,29.9941 29.841,30.0071C29.841,31.1071 30.809,32.0001 32.001,32.0001C33.193,32.0001 34.16,31.1071 34.16,30.0071L34.16,29.9681C34.16,29.9561 34.16,29.9441 34.16,29.9311C34.16,28.8731 33.193,28.0141 32.001,28.0141C30.809,28.0141 29.841,28.8731 29.841,29.9311L29.841,29.9691Z" />
</vector>

View file

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

View file

@ -5,13 +5,12 @@
android:viewportHeight="64">
<path
android:pathData="M41,53.0926C41,57.6742 33.0897,61.4847 23.2273,61.657C13.3648,61.8319 4.8549,58.3075 4.1102,53.7391C3.3654,49.1734 10.635,45.0953 20.4399,44.5785C30.2476,44.0592 39.3051,47.2761 40.7891,51.8047L41,53.0926ZM33.599,33.571C33.599,39.0032 29.1004,43.5239 23.4929,43.7279C17.8826,43.9346 13.0472,39.7531 12.6228,34.3394C12.1984,28.9231 16.3328,24.0871 21.9075,23.4723C27.4849,22.8575 32.6352,26.6733 33.4785,32.042L33.599,33.571Z"
android:fillColor="#ffffff"
android:fillColor="?attr/colorControlNormal"
android:fillType="nonZero"/>
<path
android:pathData="M59.9421,12.9495C59.9421,7.0918 54.161,2.3354 47.0401,2.3354C39.9191,2.3354 34.138,7.0918 34.138,12.9495C34.138,15.849 35.5788,18.6213 38.1273,20.6243L34.138,28.8708L41.8559,22.6694C43.4901,23.259 45.2556,23.5637 47.0401,23.5637C54.161,23.5637 59.9421,18.8073 59.9421,12.9495Z"
android:fillColor="#ffffff"
android:fillAlpha="0.96"/>
android:fillColor="?attr/colorControlNormal"/>
<path
android:fillColor="#FF000000"
android:fillColor="?attr/colorBackgroundFloating"
android:pathData="M39.0941,17.8588L39.0949,13.9134C39.0949,13.752 39.226,13.621 39.3873,13.6211L39.7008,13.6211C39.8546,13.6212 39.9806,13.74 39.9925,13.8905C40.0238,13.8875 40.0559,13.8859 40.0879,13.8859L41.0815,13.8861L41.0825,8.7741C41.0827,7.7211 41.8725,6.8662 42.8454,6.8664L53.1736,6.8685C54.1464,6.8687 54.9359,7.7238 54.9357,8.7769L54.9343,15.9526C54.9341,17.0056 54.1442,17.8605 53.1714,17.8603L42.8432,17.8582C42.7769,17.8582 42.7112,17.8542 42.6465,17.8466C42.5964,17.8542 42.5452,17.8582 42.4934,17.8582L40.0871,17.8577C40.0551,17.8577 40.0237,17.8564 39.9927,17.8534L39.9927,17.859C39.9927,18.0204 39.8613,18.1513 39.6999,18.1513L39.3864,18.1512C39.2251,18.1512 39.0941,18.0202 39.0941,17.8588ZM43.7517,9.1657L43.7507,14.2169L52.2649,14.2186L52.2659,9.1674L43.7517,9.1657ZM50.8092,15.1565L50.8088,16.7322L52.2646,15.9448L50.8092,15.1565ZM48.5703,15.9622C48.5703,15.956 48.5703,15.95 48.5703,15.9441C48.5704,15.4702 48.222,15.0857 47.7927,15.0856C47.363,15.0855 47.0145,15.4699 47.0144,15.9438L47.0144,15.9791C47.0143,16.4332 47.3627,16.8022 47.7923,16.8022C48.2217,16.8023 48.5702,16.4335 48.5703,15.9794C48.5703,15.9734 48.5703,15.9678 48.5703,15.9622ZM45.2062,15.1554L43.7504,15.9431L45.2059,16.7311L45.2062,15.1554Z"/>
</vector>

View file

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

View file

@ -600,6 +600,7 @@
<string name="autotune_run_without_autoswitch">Autotune runned without profile switch</string>
<string name="autotune_run_with_autoswitch">Autotune runned and profile automatically switched</string>
<string name="autotune_run_with_error">Error during last Autotune run</string>
<string name="autotune_run_cancelled">Another run of Autotune is detected, run cancelled</string>
<plurals name="days">
<item quantity="one">%1$d day</item>

View file

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

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

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

View file

@ -1,6 +1,9 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:parentTag="android.widget.LinearLayout">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_refresh_status"

View file

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

View file

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

View file

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

View file

@ -49,24 +49,38 @@ public abstract class ErosPodStateManager {
this.gsonInstance = createGson();
}
/**
* Discard Pod state
*/
public final void discardState() {
this.podState = new PodState(this.podState.address);
// Change on commit 4cea57acf6d74baffef83e1f04376b10bb5c1978 Nov 2021
// As by commit, keep podState object but wipe address to 0x0 to signal hasPodState()
// there is no state ( = no Pod address).
this.podState = new PodState(0x0);
storePodState();
}
/**
* Init Pod state but only if it has valid state.
* @param address New Pod address
*/
public final void initState(int address) {
if (hasPodState()) {
throw new IllegalStateException("Can not init a new pod state: podState <> null");
throw new IllegalStateException("Can not init a new pod state: State is " +
"null or discarded?");
}
podState = new PodState(address);
storePodState();
}
/**
* @return true if we have a Pod state (which at least contains an address), indicating it is legal to call getters on PodStateManager
* @return true if we have a Pod state (which at least contains an valid address), indicating
* it is legal to call getters on PodStateManager
*/
public final boolean hasPodState() {
return podState != null;
return this.podState != null
&& this.podState.getAddress() != 0x0; // 0x0=discarded
}
/**

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -14,7 +14,11 @@ sealed class EventData : Event() {
companion object {
fun deserialize(json: String) = Json.decodeFromString(serializer(), json)
fun deserialize(json: String) = try {
Json.decodeFromString(serializer(), json)
} catch (ignored: Exception) {
Error(System.currentTimeMillis())
}
}
// Mobile <- Wear

View file

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

View file

@ -42,7 +42,7 @@ class BolusActivity : ViewSelectorActivity() {
override fun instantiateItem(container: ViewGroup, row: Int, col: Int): View = when (col) {
0 -> {
val viewAdapter = EditPlusMinusViewAdapter.getViewAdapter(sp, applicationContext, container, true)
val initValue = if (editInsulin != null) SafeParse.stringToDouble(editInsulin?.editText?.text.toString()) else 0.0
val initValue = SafeParse.stringToDouble(editInsulin?.editText?.text.toString(), 0.0)
val maxBolus = sp.getDouble(getString(R.string.key_treatments_safety_max_bolus), 3.0)
val title = getString(R.string.action_insulin)
editInsulin = PlusMinusEditText(viewAdapter, initValue, 0.0, maxBolus, stepValues, DecimalFormat("#0.0"), false, title)

View file

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

View file

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

View file

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

View file

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

View file

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

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