Merge branch 'dev' into dagger3
This commit is contained in:
commit
fcf1966f58
|
@ -1,9 +1,6 @@
|
||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<code_scheme name="Project" version="173">
|
<code_scheme name="Project" version="173">
|
||||||
<option name="AUTODETECT_INDENTS" value="false" />
|
<option name="AUTODETECT_INDENTS" value="false" />
|
||||||
<AndroidXmlCodeStyleSettings>
|
|
||||||
<option name="ARRANGEMENT_SETTINGS_MIGRATED_TO_191" value="true" />
|
|
||||||
</AndroidXmlCodeStyleSettings>
|
|
||||||
<JetCodeStyleSettings>
|
<JetCodeStyleSettings>
|
||||||
<option name="ALIGN_IN_COLUMNS_CASE_BRANCH" value="true" />
|
<option name="ALIGN_IN_COLUMNS_CASE_BRANCH" value="true" />
|
||||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="6" />
|
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="6" />
|
||||||
|
|
|
@ -333,6 +333,7 @@ dependencies {
|
||||||
/* Dagger2 - default dependency */
|
/* Dagger2 - default dependency */
|
||||||
kapt 'com.google.dagger:dagger-compiler:2.25.2'
|
kapt 'com.google.dagger:dagger-compiler:2.25.2'
|
||||||
|
|
||||||
|
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -359,7 +360,37 @@ task copyLibs(dependsOn: downloadAndUnzipFile, type: Copy) {
|
||||||
task full_clean(type: Delete) {
|
task full_clean(type: Delete) {
|
||||||
delete file("src/main/jniLibs")
|
delete file("src/main/jniLibs")
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
// Run 'adb' shell command to clear application data of main app for 'debug' variant
|
||||||
|
task clearMainAppData(type: Exec) {
|
||||||
|
// we have to iterate to find the 'debug' variant to obtain a variant reference
|
||||||
|
android.applicationVariants.all { variant ->
|
||||||
|
if (variant.name == "fullDebug") {
|
||||||
|
def applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join()
|
||||||
|
def clearDataCommand = ['adb', 'shell', 'pm', 'clear', applicationId]
|
||||||
|
println "Clearing application data of ${variant.name} variant: [${clearDataCommand}]"
|
||||||
|
def stdout = new ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine clearDataCommand
|
||||||
|
standardOutput = stdout
|
||||||
|
}
|
||||||
|
String result = stdout.toString().trim()
|
||||||
|
if (!result.startsWith("Success")) {
|
||||||
|
println result
|
||||||
|
throw new GradleException(clearDataCommand.join(" "))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Clear Application Data (once) before running instrumentation test
|
||||||
|
tasks.whenTaskAdded { task ->
|
||||||
|
// Both of these targets are equivalent today, although in future connectedCheck
|
||||||
|
// will also include connectedUiAutomatorTest (not implemented yet)
|
||||||
|
if(task.name == "connectedAndroidTest" || task.name == "connectedCheck"){
|
||||||
|
task.dependsOn(clearMainAppData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
clean.dependsOn full_clean
|
clean.dependsOn full_clean
|
||||||
preBuild.dependsOn copyLibs
|
preBuild.dependsOn copyLibs
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@ import androidx.test.espresso.ViewAction
|
||||||
import androidx.test.espresso.ViewInteraction
|
import androidx.test.espresso.ViewInteraction
|
||||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
import androidx.test.espresso.matcher.ViewMatchers
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import androidx.test.uiautomator.UiSelector
|
||||||
|
|
||||||
fun ViewInteraction.isDisplayed(): Boolean {
|
fun ViewInteraction.isDisplayed(): Boolean {
|
||||||
try {
|
try {
|
||||||
|
@ -25,3 +28,8 @@ fun ViewInteraction.waitAndPerform(viewActions: ViewAction): ViewInteraction? {
|
||||||
return perform(viewActions)
|
return perform(viewActions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun clickOkInDialog() {
|
||||||
|
val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
val button = uiDevice.findObject(UiSelector().clickable(true).checkable(false).index(1))
|
||||||
|
if (button.exists() && button.isEnabled) button.click()
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
package info.nightscout.androidaps
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.filters.LargeTest
|
||||||
|
import androidx.test.rule.ActivityTestRule
|
||||||
|
import androidx.test.rule.GrantPermissionRule
|
||||||
|
import info.nightscout.androidaps.data.Profile
|
||||||
|
import info.nightscout.androidaps.interfaces.PluginBase
|
||||||
|
import info.nightscout.androidaps.interfaces.PluginType
|
||||||
|
import info.nightscout.androidaps.logging.L
|
||||||
|
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
||||||
|
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.insulin.InsulinOrefUltraRapidActingPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||||
|
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
|
||||||
|
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
|
||||||
|
import info.nightscout.androidaps.plugins.source.RandomBgPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||||
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
|
import info.nightscout.androidaps.utils.extensions.isRunningTest
|
||||||
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||||
|
import org.json.JSONObject
|
||||||
|
import org.junit.Assert
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.slf4j.LoggerFactory
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@LargeTest
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class RealPumpTest {
|
||||||
|
|
||||||
|
private val log = LoggerFactory.getLogger(L.CORE)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val R_PASSWORD = 1234
|
||||||
|
const val R_SERIAL = "PBB00013LR_P"
|
||||||
|
}
|
||||||
|
|
||||||
|
private val validProfile = "{\"dia\":\"6\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"10\"},{\"time\":\"2:00\",\"value\":\"11\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"0.1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4\"}],\"target_high\":[{\"time\":\"00:00\",\"value\":\"5\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
|
||||||
|
|
||||||
|
@Inject lateinit var pump : DanaRv2Plugin
|
||||||
|
@Inject lateinit var randomBgPlugin :RandomBgPlugin
|
||||||
|
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
|
||||||
|
@Inject lateinit var profileFunction: ProfileFunction
|
||||||
|
@Inject lateinit var insulinOrefUltraRapidActingPlugin: InsulinOrefUltraRapidActingPlugin
|
||||||
|
@Inject lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin
|
||||||
|
@Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
|
||||||
|
@Inject lateinit var loopPlugin: LoopPlugin
|
||||||
|
@Inject lateinit var actionsPlugin: ActionsPlugin
|
||||||
|
@Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
|
||||||
|
@Inject lateinit var objectivesPlugin: ObjectivesPlugin
|
||||||
|
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||||
|
@Inject lateinit var sp: SP
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
@JvmField
|
||||||
|
var mActivityTestRule = ActivityTestRule(MainActivity::class.java)
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
@JvmField
|
||||||
|
var mGrantPermissionRule: GrantPermissionRule =
|
||||||
|
GrantPermissionRule.grant(
|
||||||
|
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
|
android.Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
|
||||||
|
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||||
|
)
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun clear() {
|
||||||
|
sp.clear()
|
||||||
|
sp.putBoolean(R.string.key_setupwizard_processed, true)
|
||||||
|
sp.putString(R.string.key_aps_mode, "closed")
|
||||||
|
MainApp.getDbHelper().resetDatabases()
|
||||||
|
MainApp.devBranch = false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun preparePlugins() {
|
||||||
|
// Source
|
||||||
|
configBuilderPlugin.performPluginSwitch(randomBgPlugin,true, PluginType.BGSOURCE)
|
||||||
|
// Profile
|
||||||
|
configBuilderPlugin.performPluginSwitch(localProfilePlugin, true, PluginType.PROFILE)
|
||||||
|
val profile = Profile(JSONObject(validProfile), Constants.MGDL)
|
||||||
|
Assert.assertTrue(profile.isValid("Test"))
|
||||||
|
localProfilePlugin.profiles.clear()
|
||||||
|
localProfilePlugin.numOfProfiles = 0
|
||||||
|
val singleProfile = LocalProfilePlugin.SingleProfile().copyFrom(localProfilePlugin.rawProfile, profile, "TestProfile")
|
||||||
|
localProfilePlugin.addProfile(singleProfile)
|
||||||
|
val profileSwitch = profileFunction.prepareProfileSwitch(localProfilePlugin.createProfileStore(), "TestProfile", 0, 100, 0, DateUtil.now())
|
||||||
|
treatmentsPlugin.addToHistoryProfileSwitch(profileSwitch)
|
||||||
|
// Insulin
|
||||||
|
configBuilderPlugin.performPluginSwitch(insulinOrefUltraRapidActingPlugin, true, PluginType.INSULIN)
|
||||||
|
// Pump
|
||||||
|
sp.putInt(R.string.key_danar_password, R_PASSWORD)
|
||||||
|
sp.putString(R.string.key_danar_bt_name, R_SERIAL)
|
||||||
|
configBuilderPlugin.performPluginSwitch((pump as PluginBase), true, PluginType.PUMP)
|
||||||
|
// Sensitivity
|
||||||
|
configBuilderPlugin.performPluginSwitch(sensitivityOref1Plugin, true, PluginType.SENSITIVITY)
|
||||||
|
// APS
|
||||||
|
configBuilderPlugin.performPluginSwitch(openAPSSMBPlugin, true, PluginType.APS)
|
||||||
|
configBuilderPlugin.performPluginSwitch(loopPlugin, true, PluginType.LOOP)
|
||||||
|
|
||||||
|
// Enable common
|
||||||
|
configBuilderPlugin.performPluginSwitch(actionsPlugin, true, PluginType.GENERAL)
|
||||||
|
|
||||||
|
// Disable unneeded
|
||||||
|
MainApp.getPluginsList().remove(objectivesPlugin)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun doTest() {
|
||||||
|
Assert.assertTrue(isRunningTest())
|
||||||
|
preparePlugins()
|
||||||
|
|
||||||
|
while (!pump.isInitialized) {
|
||||||
|
log.debug("Waiting for initialization")
|
||||||
|
SystemClock.sleep(1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
log.debug("Tick")
|
||||||
|
SystemClock.sleep(1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package info.nightscout.androidaps
|
package info.nightscout.androidaps
|
||||||
|
|
||||||
|
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@ -9,7 +8,11 @@ import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.action.ViewActions
|
import androidx.test.espresso.action.ViewActions
|
||||||
import androidx.test.espresso.action.ViewActions.click
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
import androidx.test.espresso.action.ViewActions.scrollTo
|
import androidx.test.espresso.action.ViewActions.scrollTo
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.*
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withClassName
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withTagValue
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import androidx.test.filters.LargeTest
|
import androidx.test.filters.LargeTest
|
||||||
import androidx.test.rule.ActivityTestRule
|
import androidx.test.rule.ActivityTestRule
|
||||||
|
@ -38,7 +41,6 @@ import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
|
||||||
@LargeTest
|
@LargeTest
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class SetupWizardActivityTest {
|
class SetupWizardActivityTest {
|
||||||
|
@ -49,12 +51,12 @@ class SetupWizardActivityTest {
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
@JvmField
|
@JvmField
|
||||||
var mGrantPermissionRule =
|
var mGrantPermissionRule: GrantPermissionRule =
|
||||||
GrantPermissionRule.grant(
|
GrantPermissionRule.grant(
|
||||||
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
android.Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
|
android.Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
|
||||||
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
|
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||||
)
|
)
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun clear() {
|
fun clear() {
|
||||||
|
@ -73,9 +75,9 @@ adb shell settings put global transition_animation_scale 0 &
|
||||||
adb shell settings put global animator_duration_scale 0 &
|
adb shell settings put global animator_duration_scale 0 &
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun setupWizardActivityTest() {
|
fun setupWizardActivityTest() {
|
||||||
|
SP.clear()
|
||||||
Assert.assertTrue(isRunningTest())
|
Assert.assertTrue(isRunningTest())
|
||||||
// Welcome page
|
// Welcome page
|
||||||
onView(withId(R.id.next_button)).perform(click())
|
onView(withId(R.id.next_button)).perform(click())
|
||||||
|
@ -85,7 +87,7 @@ adb shell settings put global animator_duration_scale 0 &
|
||||||
// Agreement page
|
// Agreement page
|
||||||
onView(withText("I UNDERSTAND AND AGREE")).perform(scrollTo(), click())
|
onView(withText("I UNDERSTAND AND AGREE")).perform(scrollTo(), click())
|
||||||
onView(withId(R.id.next_button)).waitAndPerform(click())
|
onView(withId(R.id.next_button)).waitAndPerform(click())
|
||||||
// Loction permission
|
// Location permission
|
||||||
var askButton = onView(withText("Ask for permission"))
|
var askButton = onView(withText("Ask for permission"))
|
||||||
if (askButton.isDisplayed()) {
|
if (askButton.isDisplayed()) {
|
||||||
askButton.perform(scrollTo(), click())
|
askButton.perform(scrollTo(), click())
|
||||||
|
@ -98,6 +100,11 @@ adb shell settings put global animator_duration_scale 0 &
|
||||||
onView(withText("OK")).perform(click())
|
onView(withText("OK")).perform(click())
|
||||||
onView(withId(R.id.next_button)).waitAndPerform(click())
|
onView(withId(R.id.next_button)).waitAndPerform(click())
|
||||||
}
|
}
|
||||||
|
// Import settings : skip of found
|
||||||
|
askButton = onView(withText("IMPORT SETTINGS"))
|
||||||
|
if (askButton.isDisplayed()) {
|
||||||
|
onView(withId(R.id.next_button)).waitAndPerform(click())
|
||||||
|
}
|
||||||
// Units selection
|
// Units selection
|
||||||
onView(withText("mmol/L")).perform(scrollTo(), click())
|
onView(withText("mmol/L")).perform(scrollTo(), click())
|
||||||
onView(withId(R.id.next_button)).perform(click())
|
onView(withId(R.id.next_button)).perform(click())
|
||||||
|
@ -124,41 +131,44 @@ adb shell settings put global animator_duration_scale 0 &
|
||||||
// Local profile - IC
|
// Local profile - IC
|
||||||
onView(withId(R.id.ic_tab)).perform(scrollTo(), click())
|
onView(withId(R.id.ic_tab)).perform(scrollTo(), click())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("IC-1-0")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("IC-1-0")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("2"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("2"), ViewActions.closeSoftKeyboard())
|
||||||
// Local profile - ISF
|
// Local profile - ISF
|
||||||
onView(withId(R.id.isf_tab)).perform(scrollTo(), click())
|
onView(withId(R.id.isf_tab)).perform(scrollTo(), click())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("ISF-1-0")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("ISF-1-0")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("3"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("3"), ViewActions.closeSoftKeyboard())
|
||||||
// Local profile - BAS
|
// Local profile - BAS
|
||||||
onView(withId(R.id.basal_tab)).perform(scrollTo(), click())
|
onView(withId(R.id.basal_tab)).perform(scrollTo(), click())
|
||||||
onView(childAtPosition(Matchers.allOf(withId(R.id.localprofile_basal), childAtPosition(withClassName(Matchers.`is`("android.widget.LinearLayout")), 6)), 2))
|
onView(childAtPosition(Matchers.allOf(withId(R.id.localprofile_basal), childAtPosition(withClassName(Matchers.`is`("android.widget.LinearLayout")), 6)), 2))
|
||||||
.perform(scrollTo(), click())
|
.perform(scrollTo(), click())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("BASAL-1-0")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("BASAL-1-0")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("1.1"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("1.1"), ViewActions.closeSoftKeyboard())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("BASAL-1-1")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("BASAL-1-1")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("1.2"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("1.2"), ViewActions.closeSoftKeyboard())
|
||||||
onView(Matchers.allOf(withId(R.id.timelistedit_time), childAtPosition(childAtPosition(withId(R.id.localprofile_basal), 2), 0)))
|
onView(Matchers.allOf(withId(R.id.timelistedit_time), childAtPosition(childAtPosition(withId(R.id.localprofile_basal), 2), 0)))
|
||||||
.perform(scrollTo(), click())
|
.perform(scrollTo(), click())
|
||||||
onData(Matchers.anything()).inAdapterView(childAtPosition(withClassName(Matchers.`is`("android.widget.PopupWindow\$PopupBackgroundView")), 0)).atPosition(13)
|
onData(Matchers.anything()).inAdapterView(childAtPosition(withClassName(Matchers.`is`("android.widget.PopupWindow\$PopupBackgroundView")), 0)).atPosition(13)
|
||||||
.perform(click())
|
.perform(click())
|
||||||
// Local profile - TARGET
|
// Local profile - TARGET
|
||||||
onView(withId(R.id.target_tab)).perform(scrollTo(), click())
|
onView(withId(R.id.target_tab)).perform(scrollTo(), click())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("TARGET-1-0")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("TARGET-1-0")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("6"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("6"), ViewActions.closeSoftKeyboard())
|
||||||
onView(Matchers.allOf(withTagValue(Matchers.`is`("TARGET-2-0")), isDisplayed()))
|
onView(Matchers.allOf(withTagValue(Matchers.`is`("TARGET-2-0")), isDisplayed()))
|
||||||
.perform(ViewActions.replaceText("6.5"), ViewActions.closeSoftKeyboard())
|
.perform(ViewActions.replaceText("6.5"), ViewActions.closeSoftKeyboard())
|
||||||
onView(withText("Save")).perform(scrollTo(), click())
|
onView(withText("Save")).perform(scrollTo(), click())
|
||||||
onView(Matchers.allOf(withId(R.id.localprofile_profileswitch), isDisplayed()))
|
onView(Matchers.allOf(withId(R.id.localprofile_profileswitch), isDisplayed()))
|
||||||
.perform(scrollTo(), click())
|
.perform(scrollTo(), click())
|
||||||
onView(allOf(withId(R.id.ok), isDisplayed())).perform(click())
|
onView(allOf(withId(R.id.ok), isDisplayed())).perform(click())
|
||||||
onView(Matchers.allOf(withText("OK"), isDisplayed())).perform(click())
|
// confirm dialog
|
||||||
|
//onView(Matchers.allOf(withText("OK"), isDisplayed())).perform(click()) not working on real phone
|
||||||
|
clickOkInDialog()
|
||||||
onView(withId(R.id.next_button)).waitAndPerform(click())
|
onView(withId(R.id.next_button)).waitAndPerform(click())
|
||||||
// Profile switch
|
// Profile switch
|
||||||
askButton = onView(withText("Do Profile Switch"))
|
askButton = onView(withText("Do Profile Switch"))
|
||||||
if (askButton.isDisplayed()) {
|
if (askButton.isDisplayed()) {
|
||||||
askButton.perform(scrollTo(), click())
|
askButton.perform(scrollTo(), click())
|
||||||
onView(allOf(withId(R.id.ok), isDisplayed())).perform(click())
|
onView(allOf(withId(R.id.ok), isDisplayed())).perform(click())
|
||||||
onView(Matchers.allOf(withText("OK"), isDisplayed())).perform(click())
|
// onView(Matchers.allOf(withText("OK"), isDisplayed())).perform(click()) not working on real phone
|
||||||
|
clickOkInDialog()
|
||||||
while (ProfileFunctions.getInstance().profile == null) SystemClock.sleep(100)
|
while (ProfileFunctions.getInstance().profile == null) SystemClock.sleep(100)
|
||||||
onView(withId(R.id.next_button)).waitAndPerform(click())
|
onView(withId(R.id.next_button)).waitAndPerform(click())
|
||||||
}
|
}
|
||||||
|
@ -203,7 +213,7 @@ adb shell settings put global animator_duration_scale 0 &
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun childAtPosition(
|
private fun childAtPosition(
|
||||||
parentMatcher: Matcher<View>, position: Int): Matcher<View> {
|
parentMatcher: Matcher<View>, position: Int): Matcher<View> {
|
||||||
|
|
||||||
return object : TypeSafeMatcher<View>() {
|
return object : TypeSafeMatcher<View>() {
|
||||||
override fun describeTo(description: Description) {
|
override fun describeTo(description: Description) {
|
||||||
|
@ -214,7 +224,7 @@ adb shell settings put global animator_duration_scale 0 &
|
||||||
public override fun matchesSafely(view: View): Boolean {
|
public override fun matchesSafely(view: View): Boolean {
|
||||||
val parent = view.parent
|
val parent = view.parent
|
||||||
return parent is ViewGroup && parentMatcher.matches(parent)
|
return parent is ViewGroup && parentMatcher.matches(parent)
|
||||||
&& view == parent.getChildAt(position)
|
&& view == parent.getChildAt(position)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,6 +66,8 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
|
|
||||||
|
import static info.nightscout.androidaps.utils.extensions.EspressoTestHelperKt.isRunningRealPumpTest;
|
||||||
|
|
||||||
public class MainActivity extends NoSplashAppCompatActivity {
|
public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
|
|
||||||
private CompositeDisposable disposable = new CompositeDisposable();
|
private CompositeDisposable disposable = new CompositeDisposable();
|
||||||
|
@ -149,7 +151,7 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
.subscribe(this::processPreferenceChange, exception -> FabricPrivacy.getInstance().logException(exception))
|
.subscribe(this::processPreferenceChange, exception -> FabricPrivacy.getInstance().logException(exception))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!sp.getBoolean(R.string.key_setupwizard_processed, false)) {
|
if (!sp.getBoolean(R.string.key_setupwizard_processed, false) && !isRunningRealPumpTest()) {
|
||||||
Intent intent = new Intent(this, SetupWizardActivity.class);
|
Intent intent = new Intent(this, SetupWizardActivity.class);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ class CalibrationDialog : DialogFragmentWithDate() {
|
||||||
if (bg > 0) {
|
if (bg > 0) {
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
|
aapsLogger.debug("USER ENTRY: CALIBRATION $bg")
|
||||||
XdripCalibrations.confirmAndSendCalibration(bg, context)
|
XdripCalibrations.confirmAndSendCalibration(bg, context)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
||||||
@Inject lateinit var defaultValueHelper: DefaultValueHelper
|
@Inject lateinit var defaultValueHelper: DefaultValueHelper
|
||||||
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin
|
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||||
@Inject lateinit var profileFunction: ProfileFunction
|
@Inject lateinit var profileFunction: ProfileFunction
|
||||||
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin;
|
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val FAV1_DEFAULT = 5
|
private const val FAV1_DEFAULT = 5
|
||||||
|
@ -189,6 +189,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
when {
|
when {
|
||||||
activitySelected -> {
|
activitySelected -> {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMPTARGET ACTIVITY $activityTT duration: $activityTTDuration")
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
.duration(activityTTDuration)
|
.duration(activityTTDuration)
|
||||||
|
@ -200,6 +201,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
eatingSoonSelected -> {
|
eatingSoonSelected -> {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration")
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
.duration(eatingSoonTTDuration)
|
.duration(eatingSoonTTDuration)
|
||||||
|
@ -211,6 +213,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
hypoSelected -> {
|
hypoSelected -> {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMPTARGET HYPO $hypoTT duration: $hypoTTDuration")
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
.duration(hypoTTDuration)
|
.duration(hypoTTDuration)
|
||||||
|
@ -223,8 +226,10 @@ class CarbsDialog : DialogFragmentWithDate() {
|
||||||
}
|
}
|
||||||
if (carbsAfterConstraints > 0) {
|
if (carbsAfterConstraints > 0) {
|
||||||
if (duration == 0) {
|
if (duration == 0) {
|
||||||
|
aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time")
|
||||||
CarbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes)
|
CarbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes)
|
||||||
} else {
|
} else {
|
||||||
|
aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time duration: $duration")
|
||||||
CarbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes)
|
CarbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes)
|
||||||
NSUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset))
|
NSUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset))
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,6 +184,7 @@ class CareDialog : DialogFragmentWithDate() {
|
||||||
EventType.EXERCISE -> CareportalEvent.EXERCISE
|
EventType.EXERCISE -> CareportalEvent.EXERCISE
|
||||||
}
|
}
|
||||||
careportalEvent.json = json.toString()
|
careportalEvent.json = json.toString()
|
||||||
|
aapsLogger.debug("USER ENTRY: CAREPORTAL ${careportalEvent.eventType} json: ${careportalEvent.json}")
|
||||||
MainApp.getDbHelper().createOrUpdate(careportalEvent)
|
MainApp.getDbHelper().createOrUpdate(careportalEvent)
|
||||||
NSUpload.uploadCareportalEntryToNS(json)
|
NSUpload.uploadCareportalEntryToNS(json)
|
||||||
}, null)
|
}, null)
|
||||||
|
|
|
@ -13,7 +13,6 @@ import info.nightscout.androidaps.MainApp
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.R
|
||||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||||
import info.nightscout.androidaps.logging.AAPSLogger
|
import info.nightscout.androidaps.logging.AAPSLogger
|
||||||
import info.nightscout.androidaps.logging.LTag
|
|
||||||
import info.nightscout.androidaps.services.AlarmSoundService
|
import info.nightscout.androidaps.services.AlarmSoundService
|
||||||
import kotlinx.android.synthetic.main.dialog_error.*
|
import kotlinx.android.synthetic.main.dialog_error.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -39,6 +38,7 @@ class ErrorDialog : DaggerDialogFragment() {
|
||||||
bundle.getString("title")?.let { title = it }
|
bundle.getString("title")?.let { title = it }
|
||||||
sound = bundle.getInt("sound", R.raw.error)
|
sound = bundle.getInt("sound", R.raw.error)
|
||||||
}
|
}
|
||||||
|
aapsLogger.debug("Error dialog displayed")
|
||||||
return inflater.inflate(R.layout.dialog_error, container, false)
|
return inflater.inflate(R.layout.dialog_error, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,11 +47,11 @@ class ErrorDialog : DaggerDialogFragment() {
|
||||||
|
|
||||||
error_title.text = title
|
error_title.text = title
|
||||||
overview_error_ok.setOnClickListener {
|
overview_error_ok.setOnClickListener {
|
||||||
aapsLogger.debug(LTag.UI, "Error dialog ok button pressed")
|
aapsLogger.debug("Error dialog ok button pressed")
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
overview_error_mute.setOnClickListener {
|
overview_error_mute.setOnClickListener {
|
||||||
aapsLogger.debug(LTag.UI, "Error dialog mute button pressed")
|
aapsLogger.debug("Error dialog mute button pressed")
|
||||||
stopAlarm()
|
stopAlarm()
|
||||||
}
|
}
|
||||||
startAlarm()
|
startAlarm()
|
||||||
|
|
|
@ -72,6 +72,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() {
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
|
aapsLogger.debug("USER ENTRY: EXTENDED BOLUS $insulinAfterConstraint duration: $durationInMinutes")
|
||||||
commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() {
|
commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
if (!result.success) {
|
if (!result.success) {
|
||||||
|
|
|
@ -116,13 +116,16 @@ class FillDialog : DialogFragmentWithDate() {
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.primefill), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.primefill), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
if (insulinAfterConstraints > 0) {
|
if (insulinAfterConstraints > 0) {
|
||||||
|
aapsLogger.debug("USER ENTRY: PRIME BOLUS $insulinAfterConstraints")
|
||||||
requestPrimeBolus(insulinAfterConstraints, notes)
|
requestPrimeBolus(insulinAfterConstraints, notes)
|
||||||
}
|
}
|
||||||
if (siteChange) {
|
if (siteChange) {
|
||||||
|
aapsLogger.debug("USER ENTRY: SITE CHANGE")
|
||||||
generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes)
|
generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes)
|
||||||
}
|
}
|
||||||
if (insulinChange) {
|
if (insulinChange) {
|
||||||
// add a second for case of both checked
|
// add a second for case of both checked
|
||||||
|
aapsLogger.debug("USER ENTRY: INSULIN CHANGE")
|
||||||
generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes)
|
generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes)
|
||||||
}
|
}
|
||||||
}, null)
|
}, null)
|
||||||
|
|
|
@ -154,6 +154,7 @@ class InsulinDialog : DialogFragmentWithDate() {
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
if (eatingSoonChecked) {
|
if (eatingSoonChecked) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration")
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
.duration(eatingSoonTTDuration)
|
.duration(eatingSoonTTDuration)
|
||||||
|
@ -171,9 +172,11 @@ class InsulinDialog : DialogFragmentWithDate() {
|
||||||
detailedBolusInfo.source = Source.USER
|
detailedBolusInfo.source = Source.USER
|
||||||
detailedBolusInfo.notes = notes
|
detailedBolusInfo.notes = notes
|
||||||
if (recordOnlyChecked) {
|
if (recordOnlyChecked) {
|
||||||
|
aapsLogger.debug("USER ENTRY: BOLUS RECORD ONLY $insulinAfterConstraints")
|
||||||
detailedBolusInfo.date = time
|
detailedBolusInfo.date = time
|
||||||
activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
|
activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
|
||||||
} else {
|
} else {
|
||||||
|
aapsLogger.debug("USER ENTRY: BOLUS $insulinAfterConstraints")
|
||||||
detailedBolusInfo.date = DateUtil.now()
|
detailedBolusInfo.date = DateUtil.now()
|
||||||
commandQueue.bolus(detailedBolusInfo, object : Callback() {
|
commandQueue.bolus(detailedBolusInfo, object : Callback() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
|
|
|
@ -102,6 +102,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
|
aapsLogger.debug("USER ENTRY: PROFILE SWITCH $profile percent: $percent timeshift: $timeShift duration: $duration")
|
||||||
treatmentsPlugin.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime)
|
treatmentsPlugin.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,10 +114,13 @@ class TempBasalDialog : DialogFragmentWithDate() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isPercentPump)
|
if (isPercentPump) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP BASAL $percent% duration: $durationInMinutes")
|
||||||
commandQueue.tempBasalPercent(percent, durationInMinutes, true, profile, callback)
|
commandQueue.tempBasalPercent(percent, durationInMinutes, true, profile, callback)
|
||||||
else
|
} else {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP BASAL $absolute duration: $durationInMinutes")
|
||||||
commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback)
|
commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -120,11 +120,11 @@ class TempTargetDialog : DialogFragmentWithDate() {
|
||||||
val reason = overview_temptarget_reason.selectedItem.toString()
|
val reason = overview_temptarget_reason.selectedItem.toString()
|
||||||
val unitResId = if (profileFunction.getUnits() == Constants.MGDL) R.string.mgdl else R.string.mmol
|
val unitResId = if (profileFunction.getUnits() == Constants.MGDL) R.string.mgdl else R.string.mmol
|
||||||
val target = overview_temptarget_temptarget.value
|
val target = overview_temptarget_temptarget.value
|
||||||
val duration = overview_temptarget_duration.value
|
val duration = overview_temptarget_duration.value.toInt()
|
||||||
if (target != 0.0 && duration != 0.0) {
|
if (target != 0.0 && duration != 0) {
|
||||||
actions.add(resourceHelper.gs(R.string.reason) + ": " + reason)
|
actions.add(resourceHelper.gs(R.string.reason) + ": " + reason)
|
||||||
actions.add(resourceHelper.gs(R.string.nsprofileview_target_label) + ": " + Profile.toCurrentUnitsString(target) + " " + resourceHelper.gs(unitResId))
|
actions.add(resourceHelper.gs(R.string.nsprofileview_target_label) + ": " + Profile.toCurrentUnitsString(target) + " " + resourceHelper.gs(unitResId))
|
||||||
actions.add(resourceHelper.gs(R.string.duration) + ": " + resourceHelper.gs(R.string.format_hours, duration))
|
actions.add(resourceHelper.gs(R.string.duration) + ": " + resourceHelper.gs(R.string.format_mins, duration))
|
||||||
} else {
|
} else {
|
||||||
actions.add(resourceHelper.gs(R.string.stoptemptarget))
|
actions.add(resourceHelper.gs(R.string.stoptemptarget))
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,8 @@ class TempTargetDialog : DialogFragmentWithDate() {
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
if (target == 0.0 || duration == 0.0) {
|
aapsLogger.debug("USER ENTRY: TEMP TARGET $target duration: $duration")
|
||||||
|
if (target == 0.0 || duration == 0) {
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(eventTime)
|
.date(eventTime)
|
||||||
.duration(0)
|
.duration(0)
|
||||||
|
@ -143,14 +144,14 @@ class TempTargetDialog : DialogFragmentWithDate() {
|
||||||
} else {
|
} else {
|
||||||
val tempTarget = TempTarget()
|
val tempTarget = TempTarget()
|
||||||
.date(eventTime)
|
.date(eventTime)
|
||||||
.duration(duration.toInt())
|
.duration(duration)
|
||||||
.reason(reason)
|
.reason(reason)
|
||||||
.source(Source.USER)
|
.source(Source.USER)
|
||||||
.low(Profile.toMgdl(target, profileFunction.getUnits()))
|
.low(Profile.toMgdl(target, profileFunction.getUnits()))
|
||||||
.high(Profile.toMgdl(target, profileFunction.getUnits()))
|
.high(Profile.toMgdl(target, profileFunction.getUnits()))
|
||||||
treatmentsPlugin.addToHistoryTempTarget(tempTarget)
|
treatmentsPlugin.addToHistoryTempTarget(tempTarget)
|
||||||
}
|
}
|
||||||
if (duration == 10.0) sp.putBoolean(R.string.key_objectiveusetemptarget, true)
|
if (duration == 10) sp.putBoolean(R.string.key_objectiveusetemptarget, true)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -109,6 +109,7 @@ class TreatmentDialog : DialogFragmentWithDate() {
|
||||||
if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) {
|
if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) {
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||||
|
aapsLogger.debug("USER ENTRY: BOLUS insulin $insulin carbs: $carbs")
|
||||||
val detailedBolusInfo = DetailedBolusInfo()
|
val detailedBolusInfo = DetailedBolusInfo()
|
||||||
if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION
|
if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION
|
||||||
if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS
|
if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS
|
||||||
|
|
|
@ -490,7 +490,7 @@ public class ConfigBuilderPlugin extends PluginBase implements ActivePluginProvi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void performPluginSwitch(PluginBase changedPlugin, boolean enabled, @NonNull PluginType type) {
|
public void performPluginSwitch(PluginBase changedPlugin, boolean enabled, @NonNull PluginType type) {
|
||||||
changedPlugin.setPluginEnabled(type, enabled);
|
changedPlugin.setPluginEnabled(type, enabled);
|
||||||
changedPlugin.setFragmentVisible(type, enabled);
|
changedPlugin.setFragmentVisible(type, enabled);
|
||||||
processOnEnabledCategoryChanged(changedPlugin, type);
|
processOnEnabledCategoryChanged(changedPlugin, type);
|
||||||
|
|
|
@ -18,6 +18,7 @@ import info.nightscout.androidaps.events.*
|
||||||
import info.nightscout.androidaps.historyBrowser.HistoryBrowseActivity
|
import info.nightscout.androidaps.historyBrowser.HistoryBrowseActivity
|
||||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||||
|
import info.nightscout.androidaps.logging.AAPSLogger
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
||||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
|
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
|
||||||
|
@ -34,10 +35,12 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import kotlinx.android.synthetic.main.actions_fragment.*
|
import kotlinx.android.synthetic.main.actions_fragment.*
|
||||||
import kotlinx.android.synthetic.main.careportal_stats_fragment.*
|
import kotlinx.android.synthetic.main.careportal_stats_fragment.*
|
||||||
|
import org.slf4j.LoggerFactory
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class ActionsFragment : DaggerFragment() {
|
class ActionsFragment : DaggerFragment() {
|
||||||
|
@Inject lateinit var aapsLogger: AAPSLogger
|
||||||
@Inject lateinit var rxBus: RxBusWrapper
|
@Inject lateinit var rxBus: RxBusWrapper
|
||||||
@Inject lateinit var sp: SP
|
@Inject lateinit var sp: SP
|
||||||
@Inject lateinit var profileFunction: ProfileFunction
|
@Inject lateinit var profileFunction: ProfileFunction
|
||||||
|
@ -77,6 +80,7 @@ class ActionsFragment : DaggerFragment() {
|
||||||
}
|
}
|
||||||
actions_extendedbolus_cancel.setOnClickListener {
|
actions_extendedbolus_cancel.setOnClickListener {
|
||||||
if (activePlugin.activeTreatments.isInHistoryExtendedBoluslInProgress) {
|
if (activePlugin.activeTreatments.isInHistoryExtendedBoluslInProgress) {
|
||||||
|
aapsLogger.debug("USER ENTRY: CANCEL EXTENDED BOLUS")
|
||||||
commandQueue.cancelExtended(object : Callback() {
|
commandQueue.cancelExtended(object : Callback() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
if (!result.success) {
|
if (!result.success) {
|
||||||
|
@ -96,6 +100,7 @@ class ActionsFragment : DaggerFragment() {
|
||||||
}
|
}
|
||||||
actions_canceltempbasal.setOnClickListener {
|
actions_canceltempbasal.setOnClickListener {
|
||||||
if (activePlugin.activeTreatments.isTempBasalInProgress) {
|
if (activePlugin.activeTreatments.isTempBasalInProgress) {
|
||||||
|
aapsLogger.debug("USER ENTRY: CANCEL TEMP BASAL")
|
||||||
commandQueue.cancelTempBasal(true, object : Callback() {
|
commandQueue.cancelTempBasal(true, object : Callback() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
if (!result.success) {
|
if (!result.success) {
|
||||||
|
|
|
@ -685,6 +685,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
if (profile == null)
|
if (profile == null)
|
||||||
return true;
|
return true;
|
||||||
if (item.getTitle().equals(resourceHelper.gs(R.string.disableloop))) {
|
if (item.getTitle().equals(resourceHelper.gs(R.string.disableloop))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: LOOP DISABLED");
|
||||||
loopPlugin.setPluginEnabled(PluginType.LOOP, false);
|
loopPlugin.setPluginEnabled(PluginType.LOOP, false);
|
||||||
loopPlugin.setFragmentVisible(PluginType.LOOP, false);
|
loopPlugin.setFragmentVisible(PluginType.LOOP, false);
|
||||||
configBuilderPlugin.storeSettings("DisablingLoop");
|
configBuilderPlugin.storeSettings("DisablingLoop");
|
||||||
|
@ -700,6 +701,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
loopPlugin.createOfflineEvent(24 * 60); // upload 24h, we don't know real duration
|
loopPlugin.createOfflineEvent(24 * 60); // upload 24h, we don't know real duration
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.enableloop))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.enableloop))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: LOOP ENABLED");
|
||||||
loopPlugin.setPluginEnabled(PluginType.LOOP, true);
|
loopPlugin.setPluginEnabled(PluginType.LOOP, true);
|
||||||
loopPlugin.setFragmentVisible(PluginType.LOOP, true);
|
loopPlugin.setFragmentVisible(PluginType.LOOP, true);
|
||||||
configBuilderPlugin.storeSettings("EnablingLoop");
|
configBuilderPlugin.storeSettings("EnablingLoop");
|
||||||
|
@ -708,6 +710,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.resume)) ||
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.resume)) ||
|
||||||
item.getTitle().equals(resourceHelper.gs(R.string.reconnect))) {
|
item.getTitle().equals(resourceHelper.gs(R.string.reconnect))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: RESUME");
|
||||||
loopPlugin.suspendTo(0L);
|
loopPlugin.suspendTo(0L);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
configBuilderPlugin.getCommandQueue().cancelTempBasal(true, new Callback() {
|
configBuilderPlugin.getCommandQueue().cancelTempBasal(true, new Callback() {
|
||||||
|
@ -722,39 +725,48 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
loopPlugin.createOfflineEvent(0);
|
loopPlugin.createOfflineEvent(0);
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor1h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor1h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: SUSPEND 1h");
|
||||||
loopPlugin.suspendLoop(60);
|
loopPlugin.suspendLoop(60);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor2h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor2h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: SUSPEND 2h");
|
||||||
loopPlugin.suspendLoop(120);
|
loopPlugin.suspendLoop(120);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor3h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor3h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: SUSPEND 3h");
|
||||||
loopPlugin.suspendLoop(180);
|
loopPlugin.suspendLoop(180);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor10h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor10h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: SUSPEND 10h");
|
||||||
loopPlugin.suspendLoop(600);
|
loopPlugin.suspendLoop(600);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor15m))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor15m))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: DISCONNECT 15m");
|
||||||
loopPlugin.disconnectPump(15, profile);
|
loopPlugin.disconnectPump(15, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor30m))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor30m))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: DISCONNECT 30m");
|
||||||
loopPlugin.disconnectPump(30, profile);
|
loopPlugin.disconnectPump(30, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor1h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor1h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: DISCONNECT 1h");
|
||||||
loopPlugin.disconnectPump(60, profile);
|
loopPlugin.disconnectPump(60, profile);
|
||||||
sp.putBoolean(R.string.key_objectiveusedisconnect, true);
|
sp.putBoolean(R.string.key_objectiveusedisconnect, true);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor2h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor2h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: DISCONNECT 2h");
|
||||||
loopPlugin.disconnectPump(120, profile);
|
loopPlugin.disconnectPump(120, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor3h))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor3h))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: DISCONNECT 3h");
|
||||||
loopPlugin.disconnectPump(180, profile);
|
loopPlugin.disconnectPump(180, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
|
@ -772,6 +784,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
if (manager != null)
|
if (manager != null)
|
||||||
pvd.show(manager, "ProfileViewDialog");
|
pvd.show(manager, "ProfileViewDialog");
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.eatingsoon))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.eatingsoon))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP TARGET EATING SOON");
|
||||||
double target = Profile.toMgdl(defaultValueHelper.determineEatingSoonTT(), ProfileFunctions.getSystemUnits());
|
double target = Profile.toMgdl(defaultValueHelper.determineEatingSoonTT(), ProfileFunctions.getSystemUnits());
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
|
@ -782,6 +795,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
.high(target);
|
.high(target);
|
||||||
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
|
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.activity))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.activity))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP TARGET ACTIVITY");
|
||||||
double target = Profile.toMgdl(defaultValueHelper.determineActivityTT(), ProfileFunctions.getSystemUnits());
|
double target = Profile.toMgdl(defaultValueHelper.determineActivityTT(), ProfileFunctions.getSystemUnits());
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(now())
|
.date(now())
|
||||||
|
@ -792,6 +806,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
.high(target);
|
.high(target);
|
||||||
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
|
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.hypo))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.hypo))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP TARGET HYPO");
|
||||||
double target = Profile.toMgdl(defaultValueHelper.determineHypoTT(), ProfileFunctions.getSystemUnits());
|
double target = Profile.toMgdl(defaultValueHelper.determineHypoTT(), ProfileFunctions.getSystemUnits());
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(now())
|
.date(now())
|
||||||
|
@ -806,6 +821,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
if (manager != null)
|
if (manager != null)
|
||||||
new TempTargetDialog().show(manager, "Overview");
|
new TempTargetDialog().show(manager, "Overview");
|
||||||
} else if (item.getTitle().equals(resourceHelper.gs(R.string.cancel))) {
|
} else if (item.getTitle().equals(resourceHelper.gs(R.string.cancel))) {
|
||||||
|
aapsLogger.debug("USER ENTRY: TEMP TARGET CANCEL");
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.source(Source.USER)
|
.source(Source.USER)
|
||||||
.date(now())
|
.date(now())
|
||||||
|
@ -922,6 +938,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
|
||||||
loopPlugin.invoke("Accept temp button", false);
|
loopPlugin.invoke("Accept temp button", false);
|
||||||
if (loopPlugin.lastRun != null && loopPlugin.lastRun.lastAPSRun != null && loopPlugin.lastRun.constraintsProcessed.isChangeRequested()) {
|
if (loopPlugin.lastRun != null && loopPlugin.lastRun.lastAPSRun != null && loopPlugin.lastRun.constraintsProcessed.isChangeRequested()) {
|
||||||
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.pump_tempbasal_label), loopPlugin.lastRun.constraintsProcessed.toSpanned(), () -> {
|
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.pump_tempbasal_label), loopPlugin.lastRun.constraintsProcessed.toSpanned(), () -> {
|
||||||
|
aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL");
|
||||||
hideTempRecommendation();
|
hideTempRecommendation();
|
||||||
clearNotification();
|
clearNotification();
|
||||||
loopPlugin.acceptChangeRequest();
|
loopPlugin.acceptChangeRequest();
|
||||||
|
|
|
@ -102,7 +102,7 @@ class LocalProfilePlugin @Inject constructor(
|
||||||
var isEdited: Boolean = false
|
var isEdited: Boolean = false
|
||||||
var profiles: ArrayList<SingleProfile> = ArrayList()
|
var profiles: ArrayList<SingleProfile> = ArrayList()
|
||||||
|
|
||||||
private var numOfProfiles = 0
|
var numOfProfiles = 0
|
||||||
internal var currentProfileIndex = 0
|
internal var currentProfileIndex = 0
|
||||||
|
|
||||||
fun currentProfile() = profiles[currentProfileIndex]
|
fun currentProfile() = profiles[currentProfileIndex]
|
||||||
|
|
|
@ -1548,6 +1548,12 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
|
||||||
data.put("created_at", DateUtil.toISOString(date));
|
data.put("created_at", DateUtil.toISOString(date));
|
||||||
data.put("eventType", CareportalEvent.NOTE);
|
data.put("eventType", CareportalEvent.NOTE);
|
||||||
data.put("notes", note);
|
data.put("notes", note);
|
||||||
|
CareportalEvent careportalEvent = new CareportalEvent();
|
||||||
|
careportalEvent.date = date;
|
||||||
|
careportalEvent.source = Source.USER;
|
||||||
|
careportalEvent.eventType = CareportalEvent.NOTE;
|
||||||
|
careportalEvent.json = data.toString();
|
||||||
|
MainApp.getDbHelper().createOrUpdate(careportalEvent);
|
||||||
NSUpload.uploadCareportalEntryToNS(data);
|
NSUpload.uploadCareportalEntryToNS(data);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception", e);
|
||||||
|
@ -1576,6 +1582,12 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
|
||||||
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
||||||
data.put("created_at", DateUtil.toISOString(date));
|
data.put("created_at", DateUtil.toISOString(date));
|
||||||
data.put("eventType", event);
|
data.put("eventType", event);
|
||||||
|
CareportalEvent careportalEvent = new CareportalEvent();
|
||||||
|
careportalEvent.date = date;
|
||||||
|
careportalEvent.source = Source.USER;
|
||||||
|
careportalEvent.eventType = event;
|
||||||
|
careportalEvent.json = data.toString();
|
||||||
|
MainApp.getDbHelper().createOrUpdate(careportalEvent);
|
||||||
NSUpload.uploadCareportalEntryToNS(data);
|
NSUpload.uploadCareportalEntryToNS(data);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception", e);
|
||||||
|
|
|
@ -529,6 +529,12 @@ public class MedtronicHistoryData {
|
||||||
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
||||||
data.put("created_at", DateUtil.toISOString(date));
|
data.put("created_at", DateUtil.toISOString(date));
|
||||||
data.put("eventType", event);
|
data.put("eventType", event);
|
||||||
|
CareportalEvent careportalEvent = new CareportalEvent();
|
||||||
|
careportalEvent.date = date;
|
||||||
|
careportalEvent.source = Source.USER;
|
||||||
|
careportalEvent.eventType = event;
|
||||||
|
careportalEvent.json = data.toString();
|
||||||
|
MainApp.getDbHelper().createOrUpdate(careportalEvent);
|
||||||
NSUpload.uploadCareportalEntryToNS(data);
|
NSUpload.uploadCareportalEntryToNS(data);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
LOG.error("Unhandled exception", e);
|
LOG.error("Unhandled exception", e);
|
||||||
|
|
|
@ -9,6 +9,8 @@ import info.nightscout.androidaps.R
|
||||||
import info.nightscout.androidaps.activities.RequestDexcomPermissionActivity
|
import info.nightscout.androidaps.activities.RequestDexcomPermissionActivity
|
||||||
import info.nightscout.androidaps.db.BgReading
|
import info.nightscout.androidaps.db.BgReading
|
||||||
import info.nightscout.androidaps.db.CareportalEvent
|
import info.nightscout.androidaps.db.CareportalEvent
|
||||||
|
import info.nightscout.androidaps.db.Source
|
||||||
|
import info.nightscout.androidaps.dialogs.CareDialog
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface
|
import info.nightscout.androidaps.interfaces.BgSourceInterface
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase
|
import info.nightscout.androidaps.interfaces.PluginBase
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||||
|
@ -96,6 +98,13 @@ class DexcomPlugin @Inject constructor(
|
||||||
jsonObject.put("glucoseType", "Finger")
|
jsonObject.put("glucoseType", "Finger")
|
||||||
jsonObject.put("glucose", meter.getInt("meterValue"))
|
jsonObject.put("glucose", meter.getInt("meterValue"))
|
||||||
jsonObject.put("units", Constants.MGDL)
|
jsonObject.put("units", Constants.MGDL)
|
||||||
|
|
||||||
|
val careportalEvent = CareportalEvent()
|
||||||
|
careportalEvent.date = timestamp
|
||||||
|
careportalEvent.source = Source.USER
|
||||||
|
careportalEvent.eventType = CareportalEvent.BGCHECK
|
||||||
|
careportalEvent.json = jsonObject.toString()
|
||||||
|
MainApp.getDbHelper().createOrUpdate(careportalEvent)
|
||||||
NSUpload.uploadCareportalEntryToNS(jsonObject)
|
NSUpload.uploadCareportalEntryToNS(jsonObject)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,6 +119,12 @@ class DexcomPlugin @Inject constructor(
|
||||||
jsonObject.put("enteredBy", "AndroidAPS-Dexcom$sensorType")
|
jsonObject.put("enteredBy", "AndroidAPS-Dexcom$sensorType")
|
||||||
jsonObject.put("created_at", DateUtil.toISOString(sensorInsertionTime))
|
jsonObject.put("created_at", DateUtil.toISOString(sensorInsertionTime))
|
||||||
jsonObject.put("eventType", CareportalEvent.SENSORCHANGE)
|
jsonObject.put("eventType", CareportalEvent.SENSORCHANGE)
|
||||||
|
val careportalEvent = CareportalEvent()
|
||||||
|
careportalEvent.date = sensorInsertionTime
|
||||||
|
careportalEvent.source = Source.USER
|
||||||
|
careportalEvent.eventType = CareportalEvent.SENSORCHANGE
|
||||||
|
careportalEvent.json = jsonObject.toString()
|
||||||
|
MainApp.getDbHelper().createOrUpdate(careportalEvent)
|
||||||
NSUpload.uploadCareportalEntryToNS(jsonObject)
|
NSUpload.uploadCareportalEntryToNS(jsonObject)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ class RandomBgPlugin @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun specialEnableCondition(): Boolean {
|
override fun specialEnableCondition(): Boolean {
|
||||||
return virtualPumpPlugin.isEnabled(PluginType.PUMP) && (MainApp.engineeringMode || isRunningTest())
|
return isRunningTest() || virtualPumpPlugin.isEnabled(PluginType.PUMP) && MainApp.engineeringMode
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleNewData(intent: Intent) {
|
override fun handleNewData(intent: Intent) {
|
||||||
|
@ -76,7 +76,7 @@ class RandomBgPlugin @Inject constructor(
|
||||||
|
|
||||||
val cal = GregorianCalendar()
|
val cal = GregorianCalendar()
|
||||||
val currentMinute = cal.get(Calendar.MINUTE) + (cal.get(Calendar.HOUR_OF_DAY) % 2) * 60
|
val currentMinute = cal.get(Calendar.MINUTE) + (cal.get(Calendar.HOUR_OF_DAY) % 2) * 60
|
||||||
val bgMgdl = min + (max - min) * sin(currentMinute / 120.0 * 2 * PI)
|
val bgMgdl = min + (max - min) + (max - min) * sin(currentMinute / 120.0 * 2 * PI)
|
||||||
|
|
||||||
val bgReading = BgReading()
|
val bgReading = BgReading()
|
||||||
bgReading.value = bgMgdl
|
bgReading.value = bgMgdl
|
||||||
|
|
|
@ -133,20 +133,23 @@ public class AndroidPermission {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized void notifyForSystemWindowPermissions(Activity activity) {
|
public static synchronized void notifyForSystemWindowPermissions(Activity activity) {
|
||||||
if (!Settings.canDrawOverlays(activity)) {
|
// Check if Android Q or higher
|
||||||
NotificationWithAction notification = new NotificationWithAction(MainApp.instance(), Notification.PERMISSION_SYSTEM_WINDOW, MainApp.gs(R.string.needsystemwindowpermission), Notification.URGENT);
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
|
||||||
notification.action(R.string.request, () -> {
|
if (!Settings.canDrawOverlays(activity)) {
|
||||||
// Check if Android Q or higher
|
NotificationWithAction notification = new NotificationWithAction(MainApp.instance(), Notification.PERMISSION_SYSTEM_WINDOW, MainApp.gs(R.string.needsystemwindowpermission), Notification.URGENT);
|
||||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
|
notification.action(R.string.request, () -> {
|
||||||
// Show alert dialog to the user saying a separate permission is needed
|
// Check if Android Q or higher
|
||||||
// Launch the settings activity if the user prefers
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
|
||||||
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
// Show alert dialog to the user saying a separate permission is needed
|
||||||
Uri.parse("package:" + activity.getPackageName()));
|
// Launch the settings activity if the user prefers
|
||||||
activity.startActivity(intent);
|
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
||||||
}
|
Uri.parse("package:" + activity.getPackageName()));
|
||||||
});
|
activity.startActivity(intent);
|
||||||
RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
|
}
|
||||||
} else
|
});
|
||||||
RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_SYSTEM_WINDOW));
|
RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
|
||||||
|
} else
|
||||||
|
RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_SYSTEM_WINDOW));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,3 +9,13 @@ fun isRunningTest(): Boolean {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
fun isRunningRealPumpTest(): Boolean {
|
||||||
|
return try {
|
||||||
|
Class.forName("info.nightscout.androidaps.RealPumpTest")
|
||||||
|
true
|
||||||
|
} catch (e: ClassNotFoundException) {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--Generated by crowdin.com-->
|
|
||||||
<resources>
|
<resources>
|
||||||
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
||||||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||||
|
@ -946,6 +945,7 @@
|
||||||
<string name="startobjective">Започнете първа цел</string>
|
<string name="startobjective">Започнете първа цел</string>
|
||||||
<string name="permission">Разрешение</string>
|
<string name="permission">Разрешение</string>
|
||||||
<string name="askforpermission">Питане за разрешение</string>
|
<string name="askforpermission">Питане за разрешение</string>
|
||||||
|
<string name="needsystemwindowpermission">ААПС изисква разрешение за да може да Ви уведомява</string>
|
||||||
<string name="needlocationpermission">Приложението се нуждае от достъп до вашето местоположение за да активира BT сканиране</string>
|
<string name="needlocationpermission">Приложението се нуждае от достъп до вашето местоположение за да активира BT сканиране</string>
|
||||||
<string name="needstoragepermission">Приложението се нуждае от разрешение да съхранява данни за да може съхранява лог файлове</string>
|
<string name="needstoragepermission">Приложението се нуждае от разрешение да съхранява данни за да може съхранява лог файлове</string>
|
||||||
<string name="request">Искане</string>
|
<string name="request">Искане</string>
|
||||||
|
@ -1449,4 +1449,8 @@
|
||||||
<string name="phonechecker">\"PhoneChecker\"</string>
|
<string name="phonechecker">\"PhoneChecker\"</string>
|
||||||
<string name="chartmenu">Меню на графиката</string>
|
<string name="chartmenu">Меню на графиката</string>
|
||||||
<string name="sensitivity_short">АS</string>
|
<string name="sensitivity_short">АS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Диапазон между изпълнение на SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Макс. време за изпълнение за SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Диапазон между временни базали</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Продължителност на временни базали</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -846,7 +846,7 @@
|
||||||
<string name="combo_error_failure_reading_changed_basal_rate">Das Einlesen der geänderten Basalrate in der Pumpe schlug fehl</string>
|
<string name="combo_error_failure_reading_changed_basal_rate">Das Einlesen der geänderten Basalrate in der Pumpe schlug fehl</string>
|
||||||
<string name="combo_activity_checking_for_history_changes">Änderungen der Historie werden gesucht</string>
|
<string name="combo_activity_checking_for_history_changes">Änderungen der Historie werden gesucht</string>
|
||||||
<string name="combo_error_multiple_boluses_with_identical_timestamp">Der Import mehrerer Boli der gleichen Menge, abgegeben in der gleichen Minute, ist gescheitert: Nur ein Datensatz konnte den Behandlungen hinzugefügt werden. Bitte überprüfe die Pumpe und verwende das Careportal, um fehlende Einträge hinzuzufügen. Stelle sicher, dass keine Einträge für genau dieselbe Minute mit derselben Menge hinzugefügt werden.</string>
|
<string name="combo_error_multiple_boluses_with_identical_timestamp">Der Import mehrerer Boli der gleichen Menge, abgegeben in der gleichen Minute, ist gescheitert: Nur ein Datensatz konnte den Behandlungen hinzugefügt werden. Bitte überprüfe die Pumpe und verwende das Careportal, um fehlende Einträge hinzuzufügen. Stelle sicher, dass keine Einträge für genau dieselbe Minute mit derselben Menge hinzugefügt werden.</string>
|
||||||
<string name="about_link_urls">\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nSupport:\nhttps://de.loopercommunity.org/ (de)\nhttp://facebook.androidaps.org</string>
|
<string name="about_link_urls">\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nSupport:\nhttps://de.loopercommunity.org/\nhttp://facebook.androidaps.org</string>
|
||||||
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
|
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
|
||||||
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
|
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
|
||||||
<string name="profileswitch_ismissing">Profil-Wechsel fehlt, bitte nimm einen Profil-Wechsel vor oder drücke \"AKTIVIERE PROFIL\" im lokalen Profil.</string>
|
<string name="profileswitch_ismissing">Profil-Wechsel fehlt, bitte nimm einen Profil-Wechsel vor oder drücke \"AKTIVIERE PROFIL\" im lokalen Profil.</string>
|
||||||
|
@ -946,6 +946,7 @@
|
||||||
<string name="startobjective">Starte deine erste Zielsetzung</string>
|
<string name="startobjective">Starte deine erste Zielsetzung</string>
|
||||||
<string name="permission">Berechtigung</string>
|
<string name="permission">Berechtigung</string>
|
||||||
<string name="askforpermission">Nach Berechtigung fragen</string>
|
<string name="askforpermission">Nach Berechtigung fragen</string>
|
||||||
|
<string name="needsystemwindowpermission">Die App benötigt die Systemberechtigung für App-Benachrichtigungen</string>
|
||||||
<string name="needlocationpermission">AndroidAPS benötigt die Standortfreigabe für den BT-Scan.</string>
|
<string name="needlocationpermission">AndroidAPS benötigt die Standortfreigabe für den BT-Scan.</string>
|
||||||
<string name="needstoragepermission">AndroidAPS benötigt Zugriff auf den Speicher, um Log-Dateien speichern zu können.</string>
|
<string name="needstoragepermission">AndroidAPS benötigt Zugriff auf den Speicher, um Log-Dateien speichern zu können.</string>
|
||||||
<string name="request">Anfordern</string>
|
<string name="request">Anfordern</string>
|
||||||
|
@ -1446,8 +1447,12 @@ Unerwartetes Verhalten.</string>
|
||||||
<string name="clearqueueconfirm">Warteschlange löschen? Alle Daten in der Warteschlange gehen verloren!</string>
|
<string name="clearqueueconfirm">Warteschlange löschen? Alle Daten in der Warteschlange gehen verloren!</string>
|
||||||
<string name="ebstopsloop">Die Verwendung eines Verzögerungsbolus unterbricht dem Closed Loop Modus für die Dauer des Verzögerungsbolus. Willst Du das wirklich?</string>
|
<string name="ebstopsloop">Die Verwendung eines Verzögerungsbolus unterbricht dem Closed Loop Modus für die Dauer des Verzögerungsbolus. Willst Du das wirklich?</string>
|
||||||
<string name="closed_loop_disabled_with_eb">Closed Loop wegen Verzögerungsbolus unterbrochen</string>
|
<string name="closed_loop_disabled_with_eb">Closed Loop wegen Verzögerungsbolus unterbrochen</string>
|
||||||
<string name="extended_bolus_short">VB</string>
|
<string name="extended_bolus_short">VerzB</string>
|
||||||
<string name="phonechecker">\"PhoneChecker\"</string>
|
<string name="phonechecker">\"PhoneChecker\"</string>
|
||||||
<string name="chartmenu">Diagrammmenü</string>
|
<string name="chartmenu">Diagrammmenü</string>
|
||||||
<string name="sensitivity_short">AS</string>
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">SMB Anfragezeit</string>
|
||||||
|
<string name="loop_smbexecution_time_label">SMB Ausführungszeit</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Temp. BR Anfragezeit</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Temp. BR Ausführungszeit</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--Generated by crowdin.com-->
|
|
||||||
<resources>
|
<resources>
|
||||||
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
||||||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||||
|
@ -1446,4 +1445,8 @@
|
||||||
<string name="ebstopsloop">El uso de la función de bolo extendido detendrá el modo de bucle cerrado durante el tiempo de ejecución del bolo extendido. ¿Realmente quieres esto?</string>
|
<string name="ebstopsloop">El uso de la función de bolo extendido detendrá el modo de bucle cerrado durante el tiempo de ejecución del bolo extendido. ¿Realmente quieres esto?</string>
|
||||||
<string name="closed_loop_disabled_with_eb">Bucle cerrado inhabilitado debido a la ejecución del bolo extendido</string>
|
<string name="closed_loop_disabled_with_eb">Bucle cerrado inhabilitado debido a la ejecución del bolo extendido</string>
|
||||||
<string name="extended_bolus_short">EB</string>
|
<string name="extended_bolus_short">EB</string>
|
||||||
|
<string name="chartmenu">Menú gráfico</string>
|
||||||
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Tiempo requerido de SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Tiempo de ejecución de SMB</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--Generated by crowdin.com-->
|
|
||||||
<resources>
|
<resources>
|
||||||
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
||||||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||||
|
@ -157,7 +156,7 @@
|
||||||
<string name="changeyourinput">Changez vos entrées !</string>
|
<string name="changeyourinput">Changez vos entrées !</string>
|
||||||
<string name="configbuilder_bgsource">Source des glycémies</string>
|
<string name="configbuilder_bgsource">Source des glycémies</string>
|
||||||
<string name="configbuilder_bgsource_description">Quelle source de données doit être utilisée par AndroidAPS ?</string>
|
<string name="configbuilder_bgsource_description">Quelle source de données doit être utilisée par AndroidAPS ?</string>
|
||||||
<string name="xdrip">xDrip</string>
|
<string name="xdrip">xDrip+</string>
|
||||||
<string name="apsmode_title">Mode APS</string>
|
<string name="apsmode_title">Mode APS</string>
|
||||||
<string name="closedloop">Boucle Fermée</string>
|
<string name="closedloop">Boucle Fermée</string>
|
||||||
<string name="openloop">Boucle Ouverte</string>
|
<string name="openloop">Boucle Ouverte</string>
|
||||||
|
@ -196,7 +195,7 @@
|
||||||
<string name="careportal_newnstreatment_sensor">Capteur</string>
|
<string name="careportal_newnstreatment_sensor">Capteur</string>
|
||||||
<string name="careportal_newnstreatment_carbs_label">Glucides</string>
|
<string name="careportal_newnstreatment_carbs_label">Glucides</string>
|
||||||
<string name="careportal_newnstreatment_insulin_label">Insuline</string>
|
<string name="careportal_newnstreatment_insulin_label">Insuline</string>
|
||||||
<string name="careportal_newnstreatment_carbtime_label">Heure glucides</string>
|
<string name="careportal_newnstreatment_carbtime_label">Décalage horaire</string>
|
||||||
<string name="careportal_newnstreatment_split_label">Diviser</string>
|
<string name="careportal_newnstreatment_split_label">Diviser</string>
|
||||||
<string name="careportal_newnstreatment_duration_label">Durée</string>
|
<string name="careportal_newnstreatment_duration_label">Durée</string>
|
||||||
<string name="careportal_newnstreatment_percent_label">Pourcentage</string>
|
<string name="careportal_newnstreatment_percent_label">Pourcentage</string>
|
||||||
|
@ -220,7 +219,7 @@
|
||||||
<string name="nav_import">Importer les paramètres</string>
|
<string name="nav_import">Importer les paramètres</string>
|
||||||
<string name="openapsma_maxbasal_title">Max. U/hr pour le débit temp Basal</string>
|
<string name="openapsma_maxbasal_title">Max. U/hr pour le débit temp Basal</string>
|
||||||
<string name="openapsma_maxbasal_summary">Cette valeur est appelée Basal Maximum dans le contexte OpenAPS</string>
|
<string name="openapsma_maxbasal_summary">Cette valeur est appelée Basal Maximum dans le contexte OpenAPS</string>
|
||||||
<string name="openapsma_maxiob_title">Le Basal IA maximum que l\'OpenAPS pourra délivrer [U]</string>
|
<string name="openapsma_maxiob_title">IA basale max que OpenAPS pourra délivrer [U]</string>
|
||||||
<string name="openapsma_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contexte OpenAPS\nC\'estlle maximum d\'insuline en [U] que APS peut délivrer en une seule fois.</string>
|
<string name="openapsma_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contexte OpenAPS\nC\'estlle maximum d\'insuline en [U] que APS peut délivrer en une seule fois.</string>
|
||||||
<string name="dismiss">FERMER</string>
|
<string name="dismiss">FERMER</string>
|
||||||
<string name="danarpump">DanaR</string>
|
<string name="danarpump">DanaR</string>
|
||||||
|
@ -385,7 +384,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="resend_all_data">Renvoyer toutes les données</string>
|
<string name="resend_all_data">Renvoyer toutes les données</string>
|
||||||
<string name="open_settings_on_wear">Afficher les Paramètres sur la Montre</string>
|
<string name="open_settings_on_wear">Afficher les Paramètres sur la Montre</string>
|
||||||
<string name="pumperror">Erreur Pompe</string>
|
<string name="pumperror">Erreur Pompe</string>
|
||||||
<string name="lowbattery">Niveau Batterie Bas</string>
|
<string name="lowbattery">Piles Faibles</string>
|
||||||
<string name="pumpshutdown">Arrêt de la Pompe</string>
|
<string name="pumpshutdown">Arrêt de la Pompe</string>
|
||||||
<string name="batterydischarged">Batterie Pompe Déchargée</string>
|
<string name="batterydischarged">Batterie Pompe Déchargée</string>
|
||||||
<string name="danarkoreanpump">DanaR Coréenne</string>
|
<string name="danarkoreanpump">DanaR Coréenne</string>
|
||||||
|
@ -644,7 +643,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="insulin_peak_time">Temps du Pic [min]</string>
|
<string name="insulin_peak_time">Temps du Pic [min]</string>
|
||||||
<string name="free_peak_oref">Profil d\'insuline ajustable Oref</string>
|
<string name="free_peak_oref">Profil d\'insuline ajustable Oref</string>
|
||||||
<string name="rapid_acting_oref">Insuline à Action Rapide Oref </string>
|
<string name="rapid_acting_oref">Insuline à Action Rapide Oref </string>
|
||||||
<string name="ultrarapid_oref">Insuline à Action Ultra Rapide Oref</string>
|
<string name="ultrarapid_oref">Insuline Ultra Rapide Oref</string>
|
||||||
<string name="dia_too_short">Durée d’Action pour %1$f trop courte - utiliser %2$f à la place !</string>
|
<string name="dia_too_short">Durée d’Action pour %1$f trop courte - utiliser %2$f à la place !</string>
|
||||||
<string name="activate_profile">Activer le profil</string>
|
<string name="activate_profile">Activer le profil</string>
|
||||||
<string name="date"> Date</string>
|
<string name="date"> Date</string>
|
||||||
|
@ -701,7 +700,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="pumpdrivercorrected">Pilote pompe corrigé</string>
|
<string name="pumpdrivercorrected">Pilote pompe corrigé</string>
|
||||||
<string name="pump_unreachable">Pompe hors de portée</string>
|
<string name="pump_unreachable">Pompe hors de portée</string>
|
||||||
<string name="missed_bg_readings">Valeurs de glycémie manquantes</string>
|
<string name="missed_bg_readings">Valeurs de glycémie manquantes</string>
|
||||||
<string name="raise_notifications_as_android_notifications">Utiliser le système des notifications</string>
|
<string name="raise_notifications_as_android_notifications">Utiliser les notifications système pour les alertes et notifications</string>
|
||||||
<string name="localalertsettings_title">Alertes locales</string>
|
<string name="localalertsettings_title">Alertes locales</string>
|
||||||
<string name="enable_missed_bg_readings_alert">Alerte pas nouvelle donnée glycémique</string>
|
<string name="enable_missed_bg_readings_alert">Alerte pas nouvelle donnée glycémique</string>
|
||||||
<string name="enable_pump_unreachable_alert">Alerte si la pompe est hors de portée</string>
|
<string name="enable_pump_unreachable_alert">Alerte si la pompe est hors de portée</string>
|
||||||
|
@ -766,7 +765,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="danar_history">Historique pompe</string>
|
<string name="danar_history">Historique pompe</string>
|
||||||
<string name="combo_activity_setting_basal_profile">Définir le profil basal</string>
|
<string name="combo_activity_setting_basal_profile">Définir le profil basal</string>
|
||||||
<string name="combo_pump_cartridge_low_warrning">Niveau réservoir pompe bas</string>
|
<string name="combo_pump_cartridge_low_warrning">Niveau réservoir pompe bas</string>
|
||||||
<string name="combo_pump_battery_low_warrning">Niveau batterie pompe bas</string>
|
<string name="combo_pump_battery_low_warrning">Pile pompe faible</string>
|
||||||
<string name="combo_is_in_error_state">La pompe affiche l’erreur E%1$d: %2$s</string>
|
<string name="combo_is_in_error_state">La pompe affiche l’erreur E%1$d: %2$s</string>
|
||||||
<string name="combo_reservoir_low">Bas</string>
|
<string name="combo_reservoir_low">Bas</string>
|
||||||
<string name="combo_reservoir_empty">Vide</string>
|
<string name="combo_reservoir_empty">Vide</string>
|
||||||
|
@ -885,7 +884,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="reset">réinitialiser</string>
|
<string name="reset">réinitialiser</string>
|
||||||
<string name="waitingfortimesynchronization">En attente de synchronisation de l\'heure (%1$d sec)</string>
|
<string name="waitingfortimesynchronization">En attente de synchronisation de l\'heure (%1$d sec)</string>
|
||||||
<string name="loopdisconnectedfor">Déconnecté (%1$d m)</string>
|
<string name="loopdisconnectedfor">Déconnecté (%1$d m)</string>
|
||||||
<string name="openapssmb_maxiob_title">Maximum Insuline Active IA pour OpenAPS [U]</string>
|
<string name="openapssmb_maxiob_title">IA totale maximale pour OpenAPS [U]</string>
|
||||||
<string name="openapssmb_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS n’ajoutera pas plus d’insuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur</string>
|
<string name="openapssmb_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS n’ajoutera pas plus d’insuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur</string>
|
||||||
<string name="pump_stopped">Pompe arrêtée</string>
|
<string name="pump_stopped">Pompe arrêtée</string>
|
||||||
<string name="pump_started">Pompe démarrée</string>
|
<string name="pump_started">Pompe démarrée</string>
|
||||||
|
@ -909,15 +908,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="cgm">MGC</string>
|
<string name="cgm">MGC</string>
|
||||||
<string name="ns_wifionly">Utilisez uniquement connexion Wi-fi</string>
|
<string name="ns_wifionly">Utilisez uniquement connexion Wi-fi</string>
|
||||||
<string name="ns_wifi_ssids">Wi-fi SSID</string>
|
<string name="ns_wifi_ssids">Wi-fi SSID</string>
|
||||||
<string name="ns_chargingonly">Wi-fi uniquement pendant la charge</string>
|
<string name="ns_chargingonly">Uniquement si en charge</string>
|
||||||
<string name="connectionsettings_title">Paramètres de connexion</string>
|
<string name="connectionsettings_title">Paramètres de connexion</string>
|
||||||
<string name="ns_wifi_allowedssids">SSIDs autorisés (séparés par point-virgule)</string>
|
<string name="ns_wifi_allowedssids">SSIDs autorisés (séparés par point-virgule)</string>
|
||||||
<string name="ns_allowroaming">Autoriser connexion données itinérance</string>
|
<string name="ns_allowroaming">Autoriser connexion données itinérance</string>
|
||||||
<string name="openapsama_autosens_max">Maximum Ratio Autosens</string>
|
<string name="openapsama_autosens_max">Maximum Ratio Autosens</string>
|
||||||
<string name="openapsama_autosens_min">Minimum Ratio Autosens</string>
|
<string name="openapsama_autosens_min">Minimum Ratio Autosens</string>
|
||||||
<string name="openapsama_bolussnooze_dia_divisor">Diviseur de Bolus snooze DIA</string>
|
<string name="openapsama_bolussnooze_dia_divisor">Snooze bolus Diviseur de DAI</string>
|
||||||
<string name="openapsama_max_daily_safety_multiplier">Maximum multiplicateur quotidien de sécurité</string>
|
<string name="openapsama_max_daily_safety_multiplier">Multiplicateur max quotidien de sécurité</string>
|
||||||
<string name="openapsama_current_basal_safety_multiplier">Multiplicateur actuel de sécurité du Basal</string>
|
<string name="openapsama_current_basal_safety_multiplier">Multiplicateur de sécurité basale courante</string>
|
||||||
<string name="value_unavailable_short">ND</string>
|
<string name="value_unavailable_short">ND</string>
|
||||||
<string name="virtualpump_type">Type de pompe virtuelle</string>
|
<string name="virtualpump_type">Type de pompe virtuelle</string>
|
||||||
<string name="virtualpump_definition">Définition de pompe</string>
|
<string name="virtualpump_definition">Définition de pompe</string>
|
||||||
|
@ -947,6 +946,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="startobjective">Démarrez votre premier objectif</string>
|
<string name="startobjective">Démarrez votre premier objectif</string>
|
||||||
<string name="permission">Autorisation</string>
|
<string name="permission">Autorisation</string>
|
||||||
<string name="askforpermission">Demande d\'autorisation</string>
|
<string name="askforpermission">Demande d\'autorisation</string>
|
||||||
|
<string name="needsystemwindowpermission">L\'application a besoin de l\'autorisation d\'accès à la fenêtre système pour les notifications</string>
|
||||||
<string name="needlocationpermission">L\'application requiert l\'autorisation de localisation pour le balayage Bluetooth</string>
|
<string name="needlocationpermission">L\'application requiert l\'autorisation de localisation pour le balayage Bluetooth</string>
|
||||||
<string name="needstoragepermission">L\'application requiert une autorisation de stockage de données afin de pouvoir sauvegarder les fichiers journaux</string>
|
<string name="needstoragepermission">L\'application requiert une autorisation de stockage de données afin de pouvoir sauvegarder les fichiers journaux</string>
|
||||||
<string name="request">Demande</string>
|
<string name="request">Demande</string>
|
||||||
|
@ -1015,7 +1015,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="commanderror">Erreur de commande</string>
|
<string name="commanderror">Erreur de commande</string>
|
||||||
<string name="speederror">Erreur de vitesse</string>
|
<string name="speederror">Erreur de vitesse</string>
|
||||||
<string name="insulinlimitviolation">Violation d\'une limite d\'insuline</string>
|
<string name="insulinlimitviolation">Violation d\'une limite d\'insuline</string>
|
||||||
<string name="loop_openmode_min_change">Changement minimum possible [%]</string>
|
<string name="loop_openmode_min_change">Changement minimum [%]</string>
|
||||||
<string name="loop_openmode_min_change_summary">Le fonctionnement de la Boucle demandera une confirmation uniquement si le changement est supérieur à cette valeur en %. Par défaut, la valeur est 20%</string>
|
<string name="loop_openmode_min_change_summary">Le fonctionnement de la Boucle demandera une confirmation uniquement si le changement est supérieur à cette valeur en %. Par défaut, la valeur est 20%</string>
|
||||||
<string name="pairfirst">Appairez SVP votre pompe avec votre téléphone !</string>
|
<string name="pairfirst">Appairez SVP votre pompe avec votre téléphone !</string>
|
||||||
<string name="searching_for_devices">Recherche d\'appareils en cours…</string>
|
<string name="searching_for_devices">Recherche d\'appareils en cours…</string>
|
||||||
|
@ -1244,7 +1244,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="medtronic_pump_frequency_worldwide">Mondial (868 Mhz)</string>
|
<string name="medtronic_pump_frequency_worldwide">Mondial (868 Mhz)</string>
|
||||||
<string name="medtronic_pump_encoding_4b6b_local">Encodage logiciel 4b6b</string>
|
<string name="medtronic_pump_encoding_4b6b_local">Encodage logiciel 4b6b</string>
|
||||||
<string name="medtronic_pump_encoding_4b6b_rileylink">Encodage matériel 4b6b</string>
|
<string name="medtronic_pump_encoding_4b6b_rileylink">Encodage matériel 4b6b</string>
|
||||||
<string name="medtronic_custom_action_wake_and_tune">Réveil et mise au point</string>
|
<string name="medtronic_custom_action_wake_and_tune">Réveil et Réglage</string>
|
||||||
<string name="medtronic_custom_action_clear_bolus_block">Effacer le bloc Bolus</string>
|
<string name="medtronic_custom_action_clear_bolus_block">Effacer le bloc Bolus</string>
|
||||||
<string name="medtronic_custom_action_reset_rileylink">Réinitialiser la config. RileyLink</string>
|
<string name="medtronic_custom_action_reset_rileylink">Réinitialiser la config. RileyLink</string>
|
||||||
<string name="medtronic_pump_battery_select">Type de batterie (vue d\'alimentation)</string>
|
<string name="medtronic_pump_battery_select">Type de batterie (vue d\'alimentation)</string>
|
||||||
|
@ -1270,8 +1270,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<!-- RL Status Page -->
|
<!-- RL Status Page -->
|
||||||
<string name="rileylink_settings_tab1">Paramètres</string>
|
<string name="rileylink_settings_tab1">Paramètres</string>
|
||||||
<string name="rileylink_settings_tab2">Historique</string>
|
<string name="rileylink_settings_tab2">Historique</string>
|
||||||
<string name="rileylink_status">Statut du RileyLink</string>
|
<string name="rileylink_status">État du RileyLink</string>
|
||||||
<string name="medtronic_pump_status">Statut de la pompe</string>
|
<string name="medtronic_pump_status">État de la pompe</string>
|
||||||
<string name="title_activity_rileylink_settings">Paramètres RileyLink</string>
|
<string name="title_activity_rileylink_settings">Paramètres RileyLink</string>
|
||||||
<string name="rileylink_title">RileyLink</string>
|
<string name="rileylink_title">RileyLink</string>
|
||||||
<string name="rileylink_configured_address">Adresse configurée</string>
|
<string name="rileylink_configured_address">Adresse configurée</string>
|
||||||
|
@ -1300,7 +1300,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="rileylink_error_bt_disabled">Bluetooth est désactivé</string>
|
<string name="rileylink_error_bt_disabled">Bluetooth est désactivé</string>
|
||||||
<string name="rileylink_error_no_bt_adapter">Aucun adaptateur Bluetooth</string>
|
<string name="rileylink_error_no_bt_adapter">Aucun adaptateur Bluetooth</string>
|
||||||
<string name="rileylink_error_tuneup_failed">Échec du réglage</string>
|
<string name="rileylink_error_tuneup_failed">Échec du réglage</string>
|
||||||
<string name="rileylink_error_pump_unreachable">Pompe inaccessible</string>
|
<string name="rileylink_error_pump_unreachable">Pompe hors de portée</string>
|
||||||
<string name="rileylink_error_pod_unreachable">Pod inaccessible</string>
|
<string name="rileylink_error_pod_unreachable">Pod inaccessible</string>
|
||||||
<string name="rileylink_error_address_not_set_short">Non configuré</string>
|
<string name="rileylink_error_address_not_set_short">Non configuré</string>
|
||||||
<!-- RL Target Device -->
|
<!-- RL Target Device -->
|
||||||
|
@ -1448,4 +1448,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="closed_loop_disabled_with_eb">Boucle fermée désactivée à cause du bolus étendu</string>
|
<string name="closed_loop_disabled_with_eb">Boucle fermée désactivée à cause du bolus étendu</string>
|
||||||
<string name="extended_bolus_short">EB</string>
|
<string name="extended_bolus_short">EB</string>
|
||||||
<string name="phonechecker">\"Vérif. du téléphone\"</string>
|
<string name="phonechecker">\"Vérif. du téléphone\"</string>
|
||||||
|
<string name="chartmenu">Menu Graph</string>
|
||||||
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Heure de demande SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Heure d\'exécution SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Heure de demande basal temp</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Heure d\'exécution basal temp</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -946,6 +946,7 @@
|
||||||
<string name="startobjective">Avvia il tuo primo obiettivo</string>
|
<string name="startobjective">Avvia il tuo primo obiettivo</string>
|
||||||
<string name="permission">Permesso</string>
|
<string name="permission">Permesso</string>
|
||||||
<string name="askforpermission">Chiedi il permesso</string>
|
<string name="askforpermission">Chiedi il permesso</string>
|
||||||
|
<string name="needsystemwindowpermission">L\'applicazione richiede il permesso finestra di sistema per le notifiche</string>
|
||||||
<string name="needlocationpermission">L\'applicazione richiede l\'accesso alla posizione per eseguire lo scan bluetooth</string>
|
<string name="needlocationpermission">L\'applicazione richiede l\'accesso alla posizione per eseguire lo scan bluetooth</string>
|
||||||
<string name="needstoragepermission">L\'applicazione richiede l\'accesso alla memoria per salvare i file di log</string>
|
<string name="needstoragepermission">L\'applicazione richiede l\'accesso alla memoria per salvare i file di log</string>
|
||||||
<string name="request">Richiesta</string>
|
<string name="request">Richiesta</string>
|
||||||
|
@ -1449,4 +1450,8 @@
|
||||||
<string name="phonechecker">\"PhoneChecker\"</string>
|
<string name="phonechecker">\"PhoneChecker\"</string>
|
||||||
<string name="chartmenu">Menu grafico</string>
|
<string name="chartmenu">Menu grafico</string>
|
||||||
<string name="sensitivity_short">AS</string>
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Tempo richiesta SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Tempo esecuzione SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Tempo richiesta basale temporanea</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Tempo esecuzione basale temporanea</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -131,12 +131,12 @@
|
||||||
<string name="isf_profile">변경사항을 적용하는데 프로파일에서 ISF 값 변경하는 것으로 충분합니다.</string>
|
<string name="isf_profile">변경사항을 적용하는데 프로파일에서 ISF 값 변경하는 것으로 충분합니다.</string>
|
||||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Usage/Profiles.html</string>
|
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Usage/Profiles.html</string>
|
||||||
<string name="ic_label">Topic: IC(인슐린 대 탄수화물) 비율</string>
|
<string name="ic_label">주제: IC(인슐린-탄수화물 비)</string>
|
||||||
<string name="ic_increasingvalue">높은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
|
<string name="ic_increasingvalue">높은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
|
||||||
<string name="ic_decreasingvalue">낮은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
|
<string name="ic_decreasingvalue">낮은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
|
||||||
<string name="ic_noeffect">COB가 0 인 경우 IC 비율을 변경하면 혈당을 교정하기 위해 다른 양의 인슐린이 주입됩니다.</string>
|
<string name="ic_noeffect">COB가 0 인 경우 IC 비율을 변경하면 혈당을 교정하기 위해 다른 양의 인슐린이 주입됩니다.</string>
|
||||||
<string name="ic_different">Bread Unit을 10g 혹은 12g으로 계산한다면 IC 값도 달라집니다.</string>
|
<string name="ic_different">빵유닛(Bread Unit)을 10g 혹은 12g으로 계산한다면 IC 값도 달라집니다.</string>
|
||||||
<string name="ic_meaning">IC의 의미는 다음과 같습니다: 1U의 인슐린에 대한 적정 Bread Unit 양</string>
|
<string name="ic_meaning">IC의 의미는 다음과 같습니다: 1U의 인슐린으로 얼마나 많은 빵유닛(Bread Units)이 처리되는지.</string>
|
||||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||||
<string name="profileswitch_label">주제: 프로파일 변경</string>
|
<string name="profileswitch_label">주제: 프로파일 변경</string>
|
||||||
<string name="profileswitch_pctwillchange">프로파일을 90%로 설정하면 어떻게 됩니까?</string>
|
<string name="profileswitch_pctwillchange">프로파일을 90%로 설정하면 어떻게 됩니까?</string>
|
||||||
|
|
|
@ -28,13 +28,13 @@
|
||||||
<string name="accomplished">완료: %1$s</string>
|
<string name="accomplished">완료: %1$s</string>
|
||||||
<string name="objectives_usage_objective">AndroidAPS를 사용하는 방법을 배워봅니다</string>
|
<string name="objectives_usage_objective">AndroidAPS를 사용하는 방법을 배워봅니다</string>
|
||||||
<string name="objectives_usage_gate">AndroidAPS에서 다양한 작업을 수행해보세요</string>
|
<string name="objectives_usage_gate">AndroidAPS에서 다양한 작업을 수행해보세요</string>
|
||||||
<string name="objectives_useprofileswitch">10분동안 프로파일 90%를 설정해보세요(개요에서 프로파일명을 길게 눌러보세요)</string>
|
<string name="objectives_useprofileswitch">10분동안 프로파일 90%를 설정해보세요(홈에서 프로파일명을 길게 눌러보세요)</string>
|
||||||
<string name="objectives_usedisconnectpump">샤워한다고 가정하고 펌프를 1시간 동안 펌프를 일시중지하세요 (개요에서 Open Loop를 길게 눌러보세요)</string>
|
<string name="objectives_usedisconnectpump">샤워한다고 가정하고 펌프를 1시간 동안 펌프를 일시중지하세요 (홈에서 Open Loop를 길게 눌러보세요)</string>
|
||||||
<string name="objectives_usereconnectpump">... 그리고 같은 방법으로 펌프를 재연결하세요</string>
|
<string name="objectives_usereconnectpump">... 그리고 같은 방법으로 펌프를 재연결하세요</string>
|
||||||
<string name="objectives_usetemptarget">10분의 사용자정의 임시 목표를 생성해 보세요 (개요에서 본인의 현재 목표혈당을 길게 눌러보세요)</string>
|
<string name="objectives_usetemptarget">사용자정의 임시 목표를 10분동안 실행해보세요 (홈에서 본인의 현재 목표혈당을 길게 눌러보세요)</string>
|
||||||
<string name="objectives_useactions">구성관리자에서 실행 플러그인을 활성화하고 메뉴에서 표시되게 합니다</string>
|
<string name="objectives_useactions">구성관리자에서 실행 플러그인을 활성화하고 메뉴에서 표시되게 합니다</string>
|
||||||
<string name="objectives_useloop">Loop 플러그인 내용을 표시합니다</string>
|
<string name="objectives_useloop">Loop 플러그인 내용을 표시합니다</string>
|
||||||
<string name="objectives_usescale">개요의 혈당 차트를 길게 눌러 차트 시간을 변경하세요</string>
|
<string name="objectives_usescale">홈의 혈당 차트를 길게 눌러 차트 시간을 변경하세요</string>
|
||||||
<string name="objectives_button_enter">입력</string>
|
<string name="objectives_button_enter">입력</string>
|
||||||
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">당신이 OpenAPS 사용자였고 당신의 NS가 최소 3개월의 Loop 데이터가 저장되어 있다면, objectives@androidaps.org로 메일을 보내 당신의 NS주소를 알려주시고 목표를 건너뛸 수 있는 코드를 요청하세요. 그리고 개발자로 부터 받은 코드를 입력하세요.</string>
|
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">당신이 OpenAPS 사용자였고 당신의 NS가 최소 3개월의 Loop 데이터가 저장되어 있다면, objectives@androidaps.org로 메일을 보내 당신의 NS주소를 알려주시고 목표를 건너뛸 수 있는 코드를 요청하세요. 그리고 개발자로 부터 받은 코드를 입력하세요.</string>
|
||||||
<string name="codeaccepted">코드 인증</string>
|
<string name="codeaccepted">코드 인증</string>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--Generated by crowdin.com-->
|
|
||||||
<resources>
|
<resources>
|
||||||
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
||||||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||||
|
@ -105,7 +104,7 @@
|
||||||
<string name="reason">근거</string>
|
<string name="reason">근거</string>
|
||||||
<string name="glucose">혈당</string>
|
<string name="glucose">혈당</string>
|
||||||
<string name="delta">증분</string>
|
<string name="delta">증분</string>
|
||||||
<string name="sms_delta">증분:</string>
|
<string name="sms_delta">Delta:</string>
|
||||||
<string name="configbuilder">구성 관리자</string>
|
<string name="configbuilder">구성 관리자</string>
|
||||||
<string name="objectives">목표</string>
|
<string name="objectives">목표</string>
|
||||||
<string name="openapsma">OpenAPS MA</string>
|
<string name="openapsma">OpenAPS MA</string>
|
||||||
|
@ -155,7 +154,7 @@
|
||||||
<string name="sms_basal">Basal:</string>
|
<string name="sms_basal">Basal:</string>
|
||||||
<string name="carbs">탄수화물</string>
|
<string name="carbs">탄수화물</string>
|
||||||
<string name="changeyourinput">입력값을 변경하세요!</string>
|
<string name="changeyourinput">입력값을 변경하세요!</string>
|
||||||
<string name="configbuilder_bgsource">혈당 소스</string>
|
<string name="configbuilder_bgsource">혈당 출처</string>
|
||||||
<string name="configbuilder_bgsource_description">AndroidAPS가 어디에서 데이터를 가져옵니까?</string>
|
<string name="configbuilder_bgsource_description">AndroidAPS가 어디에서 데이터를 가져옵니까?</string>
|
||||||
<string name="xdrip">xDrip</string>
|
<string name="xdrip">xDrip</string>
|
||||||
<string name="apsmode_title">APS 모드</string>
|
<string name="apsmode_title">APS 모드</string>
|
||||||
|
@ -183,7 +182,7 @@
|
||||||
<string name="careportal_insulincartridgechange">인슐린 카트리지 교체</string>
|
<string name="careportal_insulincartridgechange">인슐린 카트리지 교체</string>
|
||||||
<string name="careportal_profileswitch">프로파일 변경</string>
|
<string name="careportal_profileswitch">프로파일 변경</string>
|
||||||
<string name="careportal_snackbolus">간식Bolus</string>
|
<string name="careportal_snackbolus">간식Bolus</string>
|
||||||
<string name="careportal_mealbolus">식사Bolus</string>
|
<string name="careportal_mealbolus">Meal Bolus</string>
|
||||||
<string name="careportal_correctionbolus">교정Bolus</string>
|
<string name="careportal_correctionbolus">교정Bolus</string>
|
||||||
<string name="careportal_combobolus">콤보Bolus</string>
|
<string name="careportal_combobolus">콤보Bolus</string>
|
||||||
<string name="careportal_tempbasalstart">임시Basal 시작</string>
|
<string name="careportal_tempbasalstart">임시Basal 시작</string>
|
||||||
|
@ -254,7 +253,7 @@
|
||||||
<string name="smscommunicator_allowednumbers">허가된 전화번호</string>
|
<string name="smscommunicator_allowednumbers">허가된 전화번호</string>
|
||||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||||
<string name="smscommunicator_bolusreplywithcode">Bolus %1$.2fU 을 주입하려면 %2$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_bolusreplywithcode">Bolus %1$.2fU 을 주입하려면 %2$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_mealbolusreplywithcode">식사Bolus %1$.2f을 주입하려면 %2$s를 입력하고 답장하세요</string>
|
<string name="smscommunicator_mealbolusreplywithcode">MEAL Bolus %1$.2f을 주입하려면 %2$s를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_temptargetwithcode">임시목표 %1$s를 설정하려면 %2$s를 입력하고 답장하세요</string>
|
<string name="smscommunicator_temptargetwithcode">임시목표 %1$s를 설정하려면 %2$s를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_temptargetcancel">임시목표를 취소하려면 %1$s를 입력하고 답장하세요</string>
|
<string name="smscommunicator_temptargetcancel">임시목표를 취소하려면 %1$s를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_stopsmswithcode">SMS 원격 기능을 비활성화려면 %1$s를 입력하고 답장하세요.\n\nAAPS 마스터폰을 통해서만 다시 활성화할 수 있습니다.</string>
|
<string name="smscommunicator_stopsmswithcode">SMS 원격 기능을 비활성화려면 %1$s를 입력하고 답장하세요.\n\nAAPS 마스터폰을 통해서만 다시 활성화할 수 있습니다.</string>
|
||||||
|
@ -267,13 +266,13 @@
|
||||||
<string name="bolusdelivered">Bolus %1$.2fU이 주입 완료되었습니다.</string>
|
<string name="bolusdelivered">Bolus %1$.2fU이 주입 완료되었습니다.</string>
|
||||||
<string name="bolusrequested">%1$.2fU을 주입합니다</string>
|
<string name="bolusrequested">%1$.2fU을 주입합니다</string>
|
||||||
<string name="smscommunicator_bolusdelivered">Bolus %1$.2fU이 주입 완료되었습니다</string>
|
<string name="smscommunicator_bolusdelivered">Bolus %1$.2fU이 주입 완료되었습니다</string>
|
||||||
<string name="smscommunicator_mealbolusdelivered">식사Bolus %1$.2f이 주입 완료되었습니다</string>
|
<string name="smscommunicator_mealbolusdelivered">Meal Bolus %1$.2f이 주입 완료되었습니다</string>
|
||||||
<string name="smscommunicator_mealbolusdelivered_tt">%2$d 분 동안 목표 %1$s</string>
|
<string name="smscommunicator_mealbolusdelivered_tt">%2$d 분 동안 목표 %1$s</string>
|
||||||
<string name="smscommunicator_tt_set">%2$d 분 동안 목표 %1$s 설정이 완료되었습니다</string>
|
<string name="smscommunicator_tt_set">%2$d 분 동안 목표 %1$s 설정이 완료되었습니다</string>
|
||||||
<string name="smscommunicator_tt_canceled">임시 목표 취소가 완료되었습니다</string>
|
<string name="smscommunicator_tt_canceled">임시 목표 취소가 완료되었습니다</string>
|
||||||
<string name="bolusdelivering">%1$.2fU 주입중</string>
|
<string name="bolusdelivering">%1$.2fU 주입중</string>
|
||||||
<string name="smscommunicator_remotecommandsallowed">SMS 원격 명령 사용하기</string>
|
<string name="smscommunicator_remotecommandsallowed">SMS 원격 명령 사용하기</string>
|
||||||
<string name="glucosetype_finger">체혈</string>
|
<string name="glucosetype_finger">채혈</string>
|
||||||
<string name="glucosetype_sensor">센서</string>
|
<string name="glucosetype_sensor">센서</string>
|
||||||
<string name="manual">수동</string>
|
<string name="manual">수동</string>
|
||||||
<string name="careportal_temporarytarget">임시 목표</string>
|
<string name="careportal_temporarytarget">임시 목표</string>
|
||||||
|
@ -328,24 +327,24 @@
|
||||||
<string name="smscommunicator_remotecommandnotallowed">원격 명령이 허가되지 않았습니다</string>
|
<string name="smscommunicator_remotecommandnotallowed">원격 명령이 허가되지 않았습니다</string>
|
||||||
<string name="smscommunicator_remotebolusnotallowed">원격 주입이 불가능합니다. 나중에 다시 시도해주세요.</string>
|
<string name="smscommunicator_remotebolusnotallowed">원격 주입이 불가능합니다. 나중에 다시 시도해주세요.</string>
|
||||||
<string name="smscommunicator_basalreplywithcode">%2$d분 동안 Basal %1$.2fU/h 주입하려면 %3$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_basalreplywithcode">%2$d분 동안 Basal %1$.2fU/h 주입하려면 %3$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_profilereplywithcode">프로파일을 %1$s %2$d%%로 변경하려면 %3$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_profilereplywithcode">프로파일 %1$s %2$d%%로 변경하려면 %3$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_extendedreplywithcode">%2$d분 동안 확장 Bolus %1$.2fU 주입하려면 %3$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_extendedreplywithcode">%2$d분 동안 확장 Bolus %1$.2fU 주입하려면 %3$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_carbsreplywithcode">%2$s에 %1$dg을 입력하려면 %3$s를 입력하고 답장하세요</string>
|
<string name="smscommunicator_carbsreplywithcode">%2$s에 %1$dg을 입력하려면 %3$s를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_basalpctreplywithcode">%2$d 분 동안 Basal %1$d%% 주입하려면 %3$s을 입력하고 답장하세요</string>
|
<string name="smscommunicator_basalpctreplywithcode">%2$d 분 동안 Basal %1$d%% 주입하려면 %3$s을 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_suspendreplywithcode">%1$d분동안 Loop 일시중지하려면 %2$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_suspendreplywithcode">%1$d분동안 Loop 일시중지하려면 %2$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_tempbasalset">Temp Basal %1$.2fU/h for %2$d min started successfully</string>
|
<string name="smscommunicator_tempbasalset">Temp Basal %1$.2fU/h for %2$d min started successfully</string>
|
||||||
<string name="smscommunicator_extendedset">%2$d분 동안 확장Bolus %1$.2fU주입이 성공적으로 시작되었습니다</string>
|
<string name="smscommunicator_extendedset">Extended bolus %1$.2fU for %2$d min started successfully</string>
|
||||||
<string name="smscommunicator_carbsset">탄수화물 %1$dg 입력이 완료되었습니다</string>
|
<string name="smscommunicator_carbsset">탄수화물 %1$dg 입력이 완료되었습니다</string>
|
||||||
<string name="smscommunicator_carbsfailed">탄수화물 %1$dg 입력이 실패하였습니다</string>
|
<string name="smscommunicator_carbsfailed">탄수화물 %1$dg 입력이 실패하였습니다</string>
|
||||||
<string name="smscommunicator_tempbasalset_percent">%2$d분 동안 임시Basal %1$d%%주입이 성공적으로 시작되었습니다</string>
|
<string name="smscommunicator_tempbasalset_percent">Temp basal %1$d%% for %2$d min started successfully</string>
|
||||||
<string name="smscommunicator_tempbasalfailed">Temp Basal start failed</string>
|
<string name="smscommunicator_tempbasalfailed">Temp Basal start failed</string>
|
||||||
<string name="smscommunicator_extendedfailed">확장 Bolus 실행 실패</string>
|
<string name="smscommunicator_extendedfailed">Extended bolus start failed</string>
|
||||||
<string name="smscommunicator_basalstopreplywithcode">임시Basal을 중지하려면 %1$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_basalstopreplywithcode">임시Basal을 중지하려면 %1$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_extendedstopreplywithcode">확장 Bolus를 중지하려면 %1$s 를 입력하고 답장하세요</string>
|
<string name="smscommunicator_extendedstopreplywithcode">확장 Bolus를 중지하려면 %1$s 를 입력하고 답장하세요</string>
|
||||||
<string name="smscommunicator_tempbasalcanceled">Temp Basal canceled</string>
|
<string name="smscommunicator_tempbasalcanceled">Temp Basal canceled</string>
|
||||||
<string name="smscommunicator_extendedcanceled">확장 Bolus 취소</string>
|
<string name="smscommunicator_extendedcanceled">Extended bolus canceled</string>
|
||||||
<string name="smscommunicator_tempbasalcancelfailed">Canceling Temp Basal failed</string>
|
<string name="smscommunicator_tempbasalcancelfailed">Canceling Temp Basal failed</string>
|
||||||
<string name="smscommunicator_extendedcancelfailed">확장 Bolus 취소가 실패하였습니다.</string>
|
<string name="smscommunicator_extendedcancelfailed">Canceling extended bolus failed</string>
|
||||||
<string name="smscommunicator_unknowncommand">알려지지 않은 명령이거나 잘못된 답장입니다</string>
|
<string name="smscommunicator_unknowncommand">알려지지 않은 명령이거나 잘못된 답장입니다</string>
|
||||||
<string name="quickwizard">빠른마법사</string>
|
<string name="quickwizard">빠른마법사</string>
|
||||||
<string name="quickwizardsettings">빠른마법사 설정</string>
|
<string name="quickwizardsettings">빠른마법사 설정</string>
|
||||||
|
@ -355,12 +354,12 @@
|
||||||
<string name="overview_editquickwizardlistactivity_add">추가</string>
|
<string name="overview_editquickwizardlistactivity_add">추가</string>
|
||||||
<string name="overview_quickwizard_item_edit_button">수정</string>
|
<string name="overview_quickwizard_item_edit_button">수정</string>
|
||||||
<string name="overview_quickwizard_item_remove_button">삭제</string>
|
<string name="overview_quickwizard_item_remove_button">삭제</string>
|
||||||
<string name="mealbolus">식사</string>
|
<string name="mealbolus">Meal</string>
|
||||||
<string name="correctionbous">교정주입</string>
|
<string name="correctionbous">교정주입</string>
|
||||||
<string name="actions">실행</string>
|
<string name="actions">실행</string>
|
||||||
<string name="androidaps_start">AndroidAPS 시작</string>
|
<string name="androidaps_start">AndroidAPS 시작</string>
|
||||||
<string name="ns_upload_only">NS에 업로드만 하기(동기화 안됨)</string>
|
<string name="ns_upload_only">NS에 업로드만 하기(동기화 안됨)</string>
|
||||||
<string name="ns_upload_only_summary">NS에 업로드만 하기. 로컬소스(xDrip)가 선택되지 않으면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다.</string>
|
<string name="ns_upload_only_summary">NS에 업로드만 하기. xDrip같은 로컬 혈당 출처가 선택되지 않다면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다.</string>
|
||||||
<string name="pumpNotInitialized">펌프가 초기화 되지 않았습니다!</string>
|
<string name="pumpNotInitialized">펌프가 초기화 되지 않았습니다!</string>
|
||||||
<string name="pumpNotInitializedProfileNotSet">펌프가 초기화와 프로파일 설정이 되지 않았습니다!</string>
|
<string name="pumpNotInitializedProfileNotSet">펌프가 초기화와 프로파일 설정이 되지 않았습니다!</string>
|
||||||
<string name="primefill">교체/채움</string>
|
<string name="primefill">교체/채움</string>
|
||||||
|
@ -641,7 +640,7 @@
|
||||||
<string name="enableuam_summary">알리지 않은 식사 감지</string>
|
<string name="enableuam_summary">알리지 않은 식사 감지</string>
|
||||||
<string name="insulin_oref_peak">IOB 커브 피크 시간</string>
|
<string name="insulin_oref_peak">IOB 커브 피크 시간</string>
|
||||||
<string name="insulin_peak_time">피크 시간 [min]</string>
|
<string name="insulin_peak_time">피크 시간 [min]</string>
|
||||||
<string name="free_peak_oref">자유-피크 Oref</string>
|
<string name="free_peak_oref">사용자지정-피크 Oref</string>
|
||||||
<string name="rapid_acting_oref">초속효성 Oref</string>
|
<string name="rapid_acting_oref">초속효성 Oref</string>
|
||||||
<string name="ultrarapid_oref">초-초속효성 Oref</string>
|
<string name="ultrarapid_oref">초-초속효성 Oref</string>
|
||||||
<string name="dia_too_short">DIA %1$f는 너무 짧습니다. 대신 %2$f을 사용하세요!</string>
|
<string name="dia_too_short">DIA %1$f는 너무 짧습니다. 대신 %2$f을 사용하세요!</string>
|
||||||
|
@ -668,7 +667,7 @@
|
||||||
<string name="default_temptargets">임시목표 기본값</string>
|
<string name="default_temptargets">임시목표 기본값</string>
|
||||||
<string name="eatingsoon_duration">식사직전 기간</string>
|
<string name="eatingsoon_duration">식사직전 기간</string>
|
||||||
<string name="eatingsoon_target">식사직전 목표</string>
|
<string name="eatingsoon_target">식사직전 목표</string>
|
||||||
<string name="activity_duration">activity 기간</string>
|
<string name="activity_duration">활동 기간</string>
|
||||||
<string name="activity_target">활동 목표</string>
|
<string name="activity_target">활동 목표</string>
|
||||||
<string name="hypo_duration">저혈당 기간</string>
|
<string name="hypo_duration">저혈당 기간</string>
|
||||||
<string name="hypo_target">저혈당 목표</string>
|
<string name="hypo_target">저혈당 목표</string>
|
||||||
|
@ -783,15 +782,15 @@
|
||||||
<string name="ago">전</string>
|
<string name="ago">전</string>
|
||||||
<string name="format_hours">%1$.2f 시간</string>
|
<string name="format_hours">%1$.2f 시간</string>
|
||||||
<string name="format_mins">%1$d 분</string>
|
<string name="format_mins">%1$d 분</string>
|
||||||
<string name="enablesmbalways">항상 SMB를 사용합니다.</string>
|
<string name="enablesmbalways">항상 SMB 사용하기</string>
|
||||||
<string name="enablesmbalways_summary">Bolus와 독립적으로 항상 SMB를 사용합니다. G5처럼 잘 필터된 혈당소스와만 사용이 가능합니다.</string>
|
<string name="enablesmbalways_summary">Bolus와 독립적으로 항상 SMB를 사용합니다. G5처럼 잘 필터된 혈당출처와만 사용이 가능합니다.</string>
|
||||||
<string name="enablesmbaftercarbs">탄수화물 이후 SMB를 사용합니다.</string>
|
<string name="enablesmbaftercarbs">탄수화물 이후 SMB를 사용합니다.</string>
|
||||||
<string name="enablesmbaftercarbs_summary">탄수화물 이후 6시간동안 SMB를 사용합니다, 0 COB이라도 적용됩니다. G5처럼 잘 필터된 혈당소스와만 사용이 가능합니다.</string>
|
<string name="enablesmbaftercarbs_summary">탄수화물 이후 6시간동안 SMB를 사용합니다, 0 COB이라도 적용됩니다. G5처럼 잘 필터된 혈당출처와만 사용이 가능합니다.</string>
|
||||||
<string name="enablesmbwithcob">COB와 SMB를 사용합니다.</string>
|
<string name="enablesmbwithcob">COB와 SMB를 사용합니다.</string>
|
||||||
<string name="enablesmbwithcob_summary">활성화된 COB가 있으면 SMB를 사용합니다.</string>
|
<string name="enablesmbwithcob_summary">활성화된 COB가 있으면 SMB를 사용합니다.</string>
|
||||||
<string name="enablesmbwithtemptarget">임시 목표와 SMB를 사용합니다.</string>
|
<string name="enablesmbwithtemptarget">임시 목표에서 SMB 사용하기</string>
|
||||||
<string name="enablesmbwithtemptarget_summary">활성화된 임시 목표(식사직전, 운동)가 있으면 SMB를 사용합니다.</string>
|
<string name="enablesmbwithtemptarget_summary">활성화된 임시 목표(식사직전, 운동)가 있으면 SMB를 사용합니다.</string>
|
||||||
<string name="enablesmbwithhightemptarget">높은임시 목표와 SMB를 사용합니다.</string>
|
<string name="enablesmbwithhightemptarget">높은 임시 목표에서 SMB 사용하기</string>
|
||||||
<string name="enablesmbwithhightemptarget_summary">활성화된 높은 임시 목표(운동)가 있으면 SMB를 사용합니다.</string>
|
<string name="enablesmbwithhightemptarget_summary">활성화된 높은 임시 목표(운동)가 있으면 SMB를 사용합니다.</string>
|
||||||
<string name="let_temp_basal_run">임시Basal 허용</string>
|
<string name="let_temp_basal_run">임시Basal 허용</string>
|
||||||
<string name="mute">음소거</string>
|
<string name="mute">음소거</string>
|
||||||
|
@ -878,7 +877,7 @@
|
||||||
<string name="readstatusfailed">상태를 읽지 못했습니다.</string>
|
<string name="readstatusfailed">상태를 읽지 못했습니다.</string>
|
||||||
<string name="record_pump_site_change">펌프 위치 변경 기록</string>
|
<string name="record_pump_site_change">펌프 위치 변경 기록</string>
|
||||||
<string name="record_insulin_cartridge_change">인슐린 카트리지 변경 기록</string>
|
<string name="record_insulin_cartridge_change">인슐린 카트리지 변경 기록</string>
|
||||||
<string name="smbalwaysdisabled">선택한 BG 소스가 고급 필터링을 지원하지 않기 때문에 SMB가 항상 비활성화됩니다.</string>
|
<string name="smbalwaysdisabled">선택한 혈당 출처가 고급 필터링을 지원하지 않기 때문에 SMB가 항상 비활성화됩니다.</string>
|
||||||
<string name="smbnotallowedinopenloopmode">Open Loop모드에선 SMB가 허용되지 않습니다.</string>
|
<string name="smbnotallowedinopenloopmode">Open Loop모드에선 SMB가 허용되지 않습니다.</string>
|
||||||
<string name="food_short">Food</string>
|
<string name="food_short">Food</string>
|
||||||
<string name="reset">재설정</string>
|
<string name="reset">재설정</string>
|
||||||
|
@ -940,12 +939,13 @@
|
||||||
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
|
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
|
||||||
<string name="nsclientinfotext">NSClient는 Nightscout와의 연결을 처리합니다. 이 부분을 건너뛸 수 있지만 설정하기 전엔 목적을 수행할 수 없습니다.</string>
|
<string name="nsclientinfotext">NSClient는 Nightscout와의 연결을 처리합니다. 이 부분을 건너뛸 수 있지만 설정하기 전엔 목적을 수행할 수 없습니다.</string>
|
||||||
<string name="diawarning">새로운 인슐린 프로파일은 최소 5시간의 DIA가 요구됩니다. 새로운 프로파일의 DIA 5-6시간은 구식 인슐린 프로파일의 DIA 3시간과 동일합니다.</string>
|
<string name="diawarning">새로운 인슐린 프로파일은 최소 5시간의 DIA가 요구됩니다. 새로운 프로파일의 DIA 5-6시간은 구식 인슐린 프로파일의 DIA 3시간과 동일합니다.</string>
|
||||||
<string name="bgsourcesetup">혈당소스 설정하기</string>
|
<string name="bgsourcesetup">혈당 출처 설정하기</string>
|
||||||
<string name="setupwizard_profile_description">프로파일 소스를 선택해주세요. 당뇨인이 어린이라면 NS 프로파일을 선택하여야 합니다. Nightscout으로 관리해줄 사람이 없다면 당신은 로컬 프로파일을 선호할 수도 있습니다. 여기선 프로파일의 소스를 선택할 뿐이라는 것을 명심하세요. 그 프로파일을 실제 사용하려면 \"프로파일 변경\"을 실행하여 프로파일을 활성화 시켜야합니다.</string>
|
<string name="setupwizard_profile_description">프로파일 소스를 선택해주세요. 당뇨인이 어린이라면 NS 프로파일을 선택하여야 합니다. Nightscout으로 관리해줄 사람이 없다면 당신은 로컬 프로파일을 선호할 수도 있습니다. 여기선 프로파일의 소스를 선택할 뿐이라는 것을 명심하세요. 그 프로파일을 실제 사용하려면 \"프로파일 변경\"을 실행하여 프로파일을 활성화 시켜야합니다.</string>
|
||||||
<string name="setupwizard_aps_description">사용 가능한 알고리즘 중 하나를 선택하세요. 과거부터 최신의 순으로 정렬이 되어 있습니다. 일반적으로 새로운 알고리즘은 보다 강력하고 공격적입니다. 따라서 당신이 신규 사용자라면 최신의 알고리즘보단 AMA로 시작하는것이 나을 수 있습니다. 사용 전에 OpenAPS 문서를 읽어보고 설정하는 것을 잊지마세요.</string>
|
<string name="setupwizard_aps_description">사용 가능한 알고리즘 중 하나를 선택하세요. 과거부터 최신의 순으로 정렬이 되어 있습니다. 일반적으로 새로운 알고리즘은 보다 강력하고 공격적입니다. 따라서 당신이 신규 사용자라면 최신의 알고리즘보단 AMA로 시작하는것이 나을 수 있습니다. 사용 전에 OpenAPS 문서를 읽어보고 설정하는 것을 잊지마세요.</string>
|
||||||
<string name="startobjective">첫번째 목표를 시작하세요.</string>
|
<string name="startobjective">첫번째 목표를 시작하세요.</string>
|
||||||
<string name="permission">권한</string>
|
<string name="permission">권한</string>
|
||||||
<string name="askforpermission">권한 요청하기</string>
|
<string name="askforpermission">권한 요청하기</string>
|
||||||
|
<string name="needsystemwindowpermission">알림에 대한 시스템 창 권한이 필요합니다</string>
|
||||||
<string name="needlocationpermission">블루투스 스캔을 위해 위치 권한이 필요로 합니다.</string>
|
<string name="needlocationpermission">블루투스 스캔을 위해 위치 권한이 필요로 합니다.</string>
|
||||||
<string name="needstoragepermission">로그 파일을 저장하기 위해 저장공간 권한이 필요로 합니다.</string>
|
<string name="needstoragepermission">로그 파일을 저장하기 위해 저장공간 권한이 필요로 합니다.</string>
|
||||||
<string name="request">요청</string>
|
<string name="request">요청</string>
|
||||||
|
@ -1449,4 +1449,8 @@
|
||||||
<string name="phonechecker">\"전화확인\"</string>
|
<string name="phonechecker">\"전화확인\"</string>
|
||||||
<string name="chartmenu">차트 메뉴</string>
|
<string name="chartmenu">차트 메뉴</string>
|
||||||
<string name="sensitivity_short">AS</string>
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">SMB 요청시간</string>
|
||||||
|
<string name="loop_smbexecution_time_label">SMB 실행시간</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">임시 Basal 요청시간</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">임시 Basal 실행시간</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -122,7 +122,7 @@
|
||||||
<string name="nsclient_xdripfollower">xDrip app in volg-modus.</string>
|
<string name="nsclient_xdripfollower">xDrip app in volg-modus.</string>
|
||||||
<string name="nsclient_looponiphone">Loop app op de iPhone.</string>
|
<string name="nsclient_looponiphone">Loop app op de iPhone.</string>
|
||||||
<string name="nsclient_spikeiphone">Spike app op de iPhone.</string>
|
<string name="nsclient_spikeiphone">Spike app op de iPhone.</string>
|
||||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Children/kinderen.html</string>
|
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Children/Children.html</string>
|
||||||
<string name="isf_label">Onderwerp: Insulinegevoeligheidsfactor</string>
|
<string name="isf_label">Onderwerp: Insulinegevoeligheidsfactor</string>
|
||||||
<string name="isf_increasingvalue">Hogere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.</string>
|
<string name="isf_increasingvalue">Hogere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.</string>
|
||||||
<string name="isf_decreasingvalue">Lagere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.</string>
|
<string name="isf_decreasingvalue">Lagere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.</string>
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
<string name="isf_preferences">U moet ISF invoeren in Instellingen.</string>
|
<string name="isf_preferences">U moet ISF invoeren in Instellingen.</string>
|
||||||
<string name="isf_profile">Het wijzigen van de ISF-waarde in uw profiel is voldoende om de wijziging toe te passen.</string>
|
<string name="isf_profile">Het wijzigen van de ISF-waarde in uw profiel is voldoende om de wijziging toe te passen.</string>
|
||||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#insuline-gevoeligheids-factor-insulin-sensitivity-factor-ISF-mmol-l-E-of-mg-dl-E</string>
|
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#insuline-gevoeligheids-factor-insulin-sensitivity-factor-ISF-mmol-l-E-of-mg-dl-E</string>
|
||||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profielen.html</string>
|
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profiles.html</string>
|
||||||
<string name="ic_label">Onderwerp: De KH ratio</string>
|
<string name="ic_label">Onderwerp: De KH ratio</string>
|
||||||
<string name="ic_increasingvalue">Hogere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
<string name="ic_increasingvalue">Hogere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
||||||
<string name="ic_decreasingvalue">Lagere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
<string name="ic_decreasingvalue">Lagere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
||||||
|
|
|
@ -1447,4 +1447,6 @@
|
||||||
<string name="closed_loop_disabled_with_eb">Closed Loop desabilitado por causa da execução do Bólus Estendido</string>
|
<string name="closed_loop_disabled_with_eb">Closed Loop desabilitado por causa da execução do Bólus Estendido</string>
|
||||||
<string name="extended_bolus_short">BE</string>
|
<string name="extended_bolus_short">BE</string>
|
||||||
<string name="phonechecker">\"VerificadorTelefone\"</string>
|
<string name="phonechecker">\"VerificadorTelefone\"</string>
|
||||||
|
<string name="chartmenu">Menu do Gráfico</string>
|
||||||
|
<string name="sensitivity_short">AS</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -946,6 +946,7 @@
|
||||||
<string name="startobjective">Iniciar primeiro objectivo</string>
|
<string name="startobjective">Iniciar primeiro objectivo</string>
|
||||||
<string name="permission">Permissão</string>
|
<string name="permission">Permissão</string>
|
||||||
<string name="askforpermission">Pedir permissão</string>
|
<string name="askforpermission">Pedir permissão</string>
|
||||||
|
<string name="needsystemwindowpermission">Aplicação precisa de permissão de janela do sistema para notificações</string>
|
||||||
<string name="needlocationpermission">Aplicação requer permissão de localização para pesquisa BT</string>
|
<string name="needlocationpermission">Aplicação requer permissão de localização para pesquisa BT</string>
|
||||||
<string name="needstoragepermission">Aplicação necessita da permissão de armazenamento para ser capaz de armazenar ficheiros de registo</string>
|
<string name="needstoragepermission">Aplicação necessita da permissão de armazenamento para ser capaz de armazenar ficheiros de registo</string>
|
||||||
<string name="request">Pedido</string>
|
<string name="request">Pedido</string>
|
||||||
|
@ -1449,4 +1450,8 @@
|
||||||
<string name="phonechecker">\"VerificadorTelefone\"</string>
|
<string name="phonechecker">\"VerificadorTelefone\"</string>
|
||||||
<string name="chartmenu">Menu do Gráfico</string>
|
<string name="chartmenu">Menu do Gráfico</string>
|
||||||
<string name="sensitivity_short">AS</string>
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Hora de solicitação SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Hora de execução do SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Hora de solicitação Basal Temp</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Hora de execução Basal Temp</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -948,6 +948,7 @@ Context | Edit Context</string>
|
||||||
<string name="startobjective">Начните первую Цель</string>
|
<string name="startobjective">Начните первую Цель</string>
|
||||||
<string name="permission">Права доступа</string>
|
<string name="permission">Права доступа</string>
|
||||||
<string name="askforpermission">Запросить права доступа</string>
|
<string name="askforpermission">Запросить права доступа</string>
|
||||||
|
<string name="needsystemwindowpermission">Приложению требуется разрешение системного окна для уведомлений</string>
|
||||||
<string name="needlocationpermission">Приложение нуждается в разрешении на доступ к определению местоположения для сканирования bluetooth</string>
|
<string name="needlocationpermission">Приложение нуждается в разрешении на доступ к определению местоположения для сканирования bluetooth</string>
|
||||||
<string name="needstoragepermission">Приложение нуждается в разрешении доступа к хранению данных для хранения лог-файлов</string>
|
<string name="needstoragepermission">Приложение нуждается в разрешении доступа к хранению данных для хранения лог-файлов</string>
|
||||||
<string name="request">Запрос</string>
|
<string name="request">Запрос</string>
|
||||||
|
@ -1451,4 +1452,8 @@ Context | Edit Context</string>
|
||||||
<string name="phonechecker">\"PhoneChecker\"</string>
|
<string name="phonechecker">\"PhoneChecker\"</string>
|
||||||
<string name="chartmenu">Меню графика</string>
|
<string name="chartmenu">Меню графика</string>
|
||||||
<string name="sensitivity_short">Авточувств</string>
|
<string name="sensitivity_short">Авточувств</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Время запроса микроболюса SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Время выполнения микроболюса SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Время запроса временной базальной скорости</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Время выполнения временной базальной скорости</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -946,6 +946,7 @@
|
||||||
<string name="startobjective">Spusťte prvý cieľ</string>
|
<string name="startobjective">Spusťte prvý cieľ</string>
|
||||||
<string name="permission">Povolenie</string>
|
<string name="permission">Povolenie</string>
|
||||||
<string name="askforpermission">Vyžiadať si povolenie</string>
|
<string name="askforpermission">Vyžiadať si povolenie</string>
|
||||||
|
<string name="needsystemwindowpermission">Aplikácia vyžaduje pre oznámenia systémové oprávnenie</string>
|
||||||
<string name="needlocationpermission">Aplikácia vyžaduje povolenie \"polohy\", aby mohla vyhľadávať BT zariadenia</string>
|
<string name="needlocationpermission">Aplikácia vyžaduje povolenie \"polohy\", aby mohla vyhľadávať BT zariadenia</string>
|
||||||
<string name="needstoragepermission">Aplikácia vyžaduje prístup k úložisku, aby mohla ukladať logy</string>
|
<string name="needstoragepermission">Aplikácia vyžaduje prístup k úložisku, aby mohla ukladať logy</string>
|
||||||
<string name="request">Požiadavka</string>
|
<string name="request">Požiadavka</string>
|
||||||
|
@ -1449,4 +1450,8 @@
|
||||||
<string name="phonechecker">PhoneChecker</string>
|
<string name="phonechecker">PhoneChecker</string>
|
||||||
<string name="chartmenu">Grafové menu</string>
|
<string name="chartmenu">Grafové menu</string>
|
||||||
<string name="sensitivity_short">AS</string>
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">Čas požiadavky SMB</string>
|
||||||
|
<string name="loop_smbexecution_time_label">Čas aplikácie SMB</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Čas požiadavky dočasného bazálu</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Čas spustenia dočasného bazálu</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
3
app/src/main/res/values-sl-rSI/exam.xml
Normal file
3
app/src/main/res/values-sl-rSI/exam.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
3
app/src/main/res/values-sl-rSI/insight_alert_codes.xml
Normal file
3
app/src/main/res/values-sl-rSI/insight_alert_codes.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
3
app/src/main/res/values-sl-rSI/insight_alert_titles.xml
Normal file
3
app/src/main/res/values-sl-rSI/insight_alert_titles.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
3
app/src/main/res/values-sl-rSI/insight_exceptions.xml
Normal file
3
app/src/main/res/values-sl-rSI/insight_exceptions.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
3
app/src/main/res/values-sl-rSI/objectives.xml
Normal file
3
app/src/main/res/values-sl-rSI/objectives.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
20
app/src/main/res/values-sl-rSI/strings.xml
Normal file
20
app/src/main/res/values-sl-rSI/strings.xml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources>
|
||||||
|
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
|
||||||
|
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||||
|
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||||
|
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||||
|
<!-- Pump Abstract -->
|
||||||
|
<!-- Medtronic (MDT) - Base -->
|
||||||
|
<!-- MDT Configuration -->
|
||||||
|
<!-- RL BLE Scanning -->
|
||||||
|
<!-- RL Status Page -->
|
||||||
|
<!-- RL State -->
|
||||||
|
<!-- RL Errors -->
|
||||||
|
<!-- RL Target Device -->
|
||||||
|
<!-- MDT Errors -->
|
||||||
|
<!-- MDT History -->
|
||||||
|
<!-- MDT Pump Status -->
|
||||||
|
<!-- <string name="medtronic_cmd_profile_not_set">Remote Basal profile setting is not supported. Please modify Basal profile on your pump manually.</string> -->
|
||||||
|
</resources>
|
|
@ -947,6 +947,7 @@ Eversense-appen.</string>
|
||||||
<string name="startobjective">Påbörja ditt första mål</string>
|
<string name="startobjective">Påbörja ditt första mål</string>
|
||||||
<string name="permission">Behörighet</string>
|
<string name="permission">Behörighet</string>
|
||||||
<string name="askforpermission">Be om behörighet</string>
|
<string name="askforpermission">Be om behörighet</string>
|
||||||
|
<string name="needsystemwindowpermission">Applikationen behöver förhöjd behörighet för aviseringar</string>
|
||||||
<string name="needlocationpermission">Appen behöver behörighet att använda Platsinfo för att kunna söka efter Bluetooth-enheter</string>
|
<string name="needlocationpermission">Appen behöver behörighet att använda Platsinfo för att kunna söka efter Bluetooth-enheter</string>
|
||||||
<string name="needstoragepermission">Appen behöver behörighet att använda Lagring för att kunna spara loggfiler</string>
|
<string name="needstoragepermission">Appen behöver behörighet att använda Lagring för att kunna spara loggfiler</string>
|
||||||
<string name="request">Begäran</string>
|
<string name="request">Begäran</string>
|
||||||
|
@ -1448,4 +1449,10 @@ Eversense-appen.</string>
|
||||||
<string name="closed_loop_disabled_with_eb">Closed Loop-läget inaktiverat pga att en förlängd bolus är aktiv</string>
|
<string name="closed_loop_disabled_with_eb">Closed Loop-läget inaktiverat pga att en förlängd bolus är aktiv</string>
|
||||||
<string name="extended_bolus_short">FB</string>
|
<string name="extended_bolus_short">FB</string>
|
||||||
<string name="phonechecker">Telefonkontroll</string>
|
<string name="phonechecker">Telefonkontroll</string>
|
||||||
|
<string name="chartmenu">Diagrammeny</string>
|
||||||
|
<string name="sensitivity_short">AS</string>
|
||||||
|
<string name="loop_smbrequest_time_label">SMB begärd</string>
|
||||||
|
<string name="loop_smbexecution_time_label">SMB utförd</string>
|
||||||
|
<string name="loop_tbrrequest_time_label">Basalförändring begärd</string>
|
||||||
|
<string name="loop_tbrexecution_time_label">Basalförändring utförd</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--Generated by crowdin.com-->
|
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">AAPS</string>
|
<string name="app_name">AAPS</string>
|
||||||
<string name="label_actions_activity">AAPS</string>
|
<string name="label_actions_activity">AAPS</string>
|
||||||
|
@ -51,6 +50,7 @@
|
||||||
<string name="pref_low">Bajo</string>
|
<string name="pref_low">Bajo</string>
|
||||||
<string name="pref_medium">Medio</string>
|
<string name="pref_medium">Medio</string>
|
||||||
<string name="pref_high">Alto</string>
|
<string name="pref_high">Alto</string>
|
||||||
|
<string name="pref_auto">Auto</string>
|
||||||
<string name="pref_big_numbers">Números grandes</string>
|
<string name="pref_big_numbers">Números grandes</string>
|
||||||
<string name="pref_ring_history">Historial de Ring</string>
|
<string name="pref_ring_history">Historial de Ring</string>
|
||||||
<string name="pref_light_ring_history">Historial de Ring Light</string>
|
<string name="pref_light_ring_history">Historial de Ring Light</string>
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
<string name="pref_show_ago">Afficher Min Passées</string>
|
<string name="pref_show_ago">Afficher Min Passées</string>
|
||||||
<string name="pref_dark" comment="Enables dark visual theme">Sombre</string>
|
<string name="pref_dark" comment="Enables dark visual theme">Sombre</string>
|
||||||
<string name="pref_highlight_basals">Surbrillance Basale</string>
|
<string name="pref_highlight_basals">Surbrillance Basale</string>
|
||||||
<string name="pref_matching_divider" comment="To make divider match its background with background of whole watchface">Séparateur Noir</string>
|
<string name="pref_matching_divider" comment="To make divider match its background with background of whole watchface">Séparateur Invisible</string>
|
||||||
<string name="pref_chart_timeframe">Echelle Graphique</string>
|
<string name="pref_chart_timeframe">Echelle Graphique</string>
|
||||||
<string name="pref_1_hour">1 heure</string>
|
<string name="pref_1_hour">1 heure</string>
|
||||||
<string name="pref_2_hours">2 heures</string>
|
<string name="pref_2_hours">2 heures</string>
|
||||||
|
|
3
wear/src/main/res/values-sl-rSI/strings.xml
Normal file
3
wear/src/main/res/values-sl-rSI/strings.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--Generated by crowdin.com-->
|
||||||
|
<resources></resources>
|
Loading…
Reference in a new issue