Merge branch 'omnipod_eros_dev' into tbr_duration_validation

# Conflicts:
#	omnipod/src/main/res/values-de-rDE/strings.xml
This commit is contained in:
Sam Spycher 2020-10-21 16:11:32 +02:00
commit 71b8ef176f
212 changed files with 4827 additions and 1783 deletions

View file

@ -4,18 +4,9 @@
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
<package name="java.util" withSubpackages="false" static="false" />
<package name="kotlinx.android.synthetic" withSubpackages="true" static="false" />
<package name="io.ktor" withSubpackages="true" static="false" />
</value>
</option>
<option name="ALIGN_IN_COLUMNS_CASE_BRANCH" value="true" />

View file

@ -26,7 +26,7 @@ ext {
powermockVersion = "1.7.3"
dexmakerVersion = "1.2"
retrofit2Version = '2.9.0'
okhttp3Version = '4.7.2'
okhttp3Version = '4.9.0'
}
@ -103,13 +103,15 @@ def allCommited = { ->
commandLine 'git', 'status', '-s'
standardOutput = stdout
}
String commitObject = stdout.toString().trim()
stringBuilder.append(commitObject)
// ignore all changes done in .idea/codeStyles
String cleanedList = stdout.toString().replaceAll(/(?m)^\s*(M|A|D|\?\?)\s*.*?\.idea\/codeStyles\/.*?\s*$/, "")
// ignore all files added to project dir but not staged/known to GIT
cleanedList = cleanedList.replaceAll(/(?m)^\s*(\?\?)\s*.*?\s*$/, "")
stringBuilder.append(cleanedList.trim())
} catch (ignored) {
return false // NoGitSystemAvailable
}
return stringBuilder.toString().isEmpty()
}
tasks.matching { it instanceof Test }.all {
@ -126,7 +128,7 @@ android {
targetSdkVersion 28
multiDexEnabled true
versionCode 1500
version "2.7.0-omnipod-0.4-SNAPSHOT"
version "2.7-omnipod-0.4.1-SNAPSHOT"
buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
@ -249,12 +251,13 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.google.android.gms:play-services-wearable:17.0.0'
implementation "com.google.android.gms:play-services-location:17.0.0"
implementation 'com.google.firebase:firebase-core:17.4.3'
implementation 'com.google.firebase:firebase-auth:19.3.1'
implementation 'com.google.firebase:firebase-database:19.3.1'
implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation platform('com.google.firebase:firebase-bom:25.12.0')
implementation "com.google.firebase:firebase-analytics-ktx"
implementation 'com.google.firebase:firebase-auth-ktx'
implementation 'com.google.firebase:firebase-database-ktx'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation "androidx.appcompat:appcompat:$appcompat_verison"
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
@ -262,13 +265,13 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.percentlayout:percentlayout:1.0.0'
implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.preference:preference-ktx:$preferencektx_version"
implementation "androidx.activity:activity-ktx:${activityVersion}"
implementation "androidx.fragment:fragment:${fragmentVersion}"
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "androidx.fragment:fragment-ktx:${fragmentktx_version}"
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation 'com.google.android.material:material:1.1.0'
implementation "com.google.android.material:material:$material_version"
implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
@ -277,7 +280,7 @@ dependencies {
implementation("com.github.tony19:logback-android-classic:1.1.1-6") {
exclude group: "com.google.android", module: "android"
}
implementation 'org.apache.commons:commons-lang3:3.10'
implementation "org.apache.commons:commons-lang3:$commonslang3_version"
implementation 'org.slf4j:slf4j-api:1.7.30'
// Graphview cannot be upgraded
implementation "com.jjoe64:graphview:4.0.1"
@ -291,21 +294,21 @@ dependencies {
exclude group: "org.json", module: "json"
}
implementation "com.google.code.gson:gson:2.8.6"
implementation('com.google.guava:guava:29.0-jre') {
implementation('com.google.guava:guava:30.0-jre') {
exclude group: "com.google.code.findbugs", module: "jsr305"
}
implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation 'net.danlew:android.joda:2.10.6'
implementation 'org.mozilla:rhino:1.7.12'
implementation 'org.mozilla:rhino:1.7.13'
implementation 'com.github.DavidProdinger:weekdays-selector:1.1.0'
implementation 'com.github.kenglxn.QRGen:android:2.6.0'
implementation 'com.eatthepath:java-otp:0.2.0'
testImplementation "junit:junit:4.13"
testImplementation "junit:junit:$junit_version"
testImplementation 'org.json:json:20200518'
testImplementation "org.mockito:mockito-core:2.8.47"
testImplementation "org.powermock:powermock-api-mockito2:${powermockVersion}"
@ -355,11 +358,11 @@ dependencies {
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
//WorkManager
implementation 'androidx.work:work-runtime:2.3.4'
implementation 'androidx.work:work-runtime-ktx:2.3.4'
implementation 'androidx.work:work-rxjava2:2.3.4'
implementation "androidx.work:work-runtime:$work_version"
implementation "androidx.work:work-runtime-ktx:$work_version"
implementation "androidx.work:work-rxjava2:$work_version"
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:1.1.0'
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.0.0'
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
}

View file

@ -31,6 +31,7 @@ import info.nightscout.androidaps.plugins.general.persistentNotification.Persist
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
import info.nightscout.androidaps.plugins.general.wear.WearPlugin
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatusLinePlugin
import info.nightscout.androidaps.plugins.insulin.InsulinLyumjevPlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefRapidActingPlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefUltraRapidActingPlugin
@ -83,6 +84,12 @@ abstract class PluginsModule {
@IntKey(40)
abstract fun bindInsulinOrefUltraRapidActingPlugin(plugin: InsulinOrefUltraRapidActingPlugin): PluginBase
@Binds
@AllConfigs
@IntoMap
@IntKey(42)
abstract fun bindInsulinLyumjevPlugin(plugin: InsulinLyumjevPlugin): PluginBase
@Binds
@AllConfigs
@IntoMap

View file

@ -108,7 +108,7 @@ class WizardDialog : DaggerDialogFragment() {
if (profileFunction.getUnits() == Constants.MGDL)
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0.0"), false, ok, textWatcher)
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0"), false, ok, textWatcher)
else
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
?: 0.0, 0.0, 30.0, 0.1, DecimalFormat("0.0"), false, ok, textWatcher)

View file

@ -282,7 +282,7 @@ public class DetermineBasalAdapterSMBJS {
mProfile.put("A52_risk_enable", SMBDefaults.A52_risk_enable);
boolean smbEnabled = sp.getBoolean(resourceHelper.gs(R.string.key_use_smb), false);
mProfile.put("SMBInterval", sp.getInt("key_smbinterval", SMBDefaults.SMBInterval));
mProfile.put("SMBInterval", sp.getInt(R.string.key_smbinterval, SMBDefaults.SMBInterval));
mProfile.put("enableSMB_with_COB", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_COB, false));
mProfile.put("enableSMB_with_temptarget", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_temptarget, false));
mProfile.put("allowSMB_with_high_temptarget", smbEnabled && sp.getBoolean(R.string.key_allowSMB_with_high_temptarget, false));

View file

@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.constraints.objectives
import android.app.Activity
import androidx.fragment.app.FragmentActivity
import com.google.common.base.Charsets
import com.google.common.hash.Hashing
import dagger.android.HasAndroidInjector
@ -116,7 +116,7 @@ class ObjectivesPlugin @Inject constructor(
sp.putBoolean(R.string.key_objectiveusescale, false)
}
fun completeObjectives(activity: Activity, request: String) {
fun completeObjectives(activity: FragmentActivity, request: String) {
val requestCode = sp.getString(R.string.key_objectives_request_code, "")
var url = sp.getString(R.string.key_nsclientinternal_url, "").toLowerCase(Locale.getDefault())
if (!url.endsWith("/")) url = "$url/"
@ -145,7 +145,7 @@ class ObjectivesPlugin @Inject constructor(
}
}
fun allPriorAccomplished(position: Int) : Boolean {
fun allPriorAccomplished(position: Int): Boolean {
var accomplished = true
for (i in 0 until position) {
accomplished = accomplished && objectives[i].isAccomplished

View file

@ -8,6 +8,7 @@ import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.StringRes;
import androidx.fragment.app.FragmentActivity;
import java.util.ArrayList;
import java.util.List;
@ -110,7 +111,7 @@ public abstract class Objective {
return true;
}
public void specialAction(Activity activity, String input) {
public void specialAction(FragmentActivity activity, String input) {
}
public abstract class Task {

View file

@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import android.app.Activity;
import androidx.fragment.app.FragmentActivity;
import java.util.List;
@ -54,7 +54,7 @@ public class Objective3 extends Objective {
}
@Override
public void specialAction(Activity activity, String input) {
public void specialAction(FragmentActivity activity, String input) {
objectivesPlugin.completeObjectives(activity, input);
}
}

View file

@ -37,17 +37,17 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
@Singleton
public class SafetyPlugin extends PluginBase implements ConstraintsInterface {
private SP sp;
private RxBusWrapper rxBus;
private ConstraintChecker constraintChecker;
private OpenAPSAMAPlugin openAPSAMAPlugin;
private OpenAPSSMBPlugin openAPSSMBPlugin;
private SensitivityOref1Plugin sensitivityOref1Plugin;
private ActivePluginProvider activePlugin;
private HardLimits hardLimits;
private BuildHelper buildHelper;
private TreatmentsPlugin treatmentsPlugin;
private Config config;
private final SP sp;
private final RxBusWrapper rxBus;
private final ConstraintChecker constraintChecker;
private final OpenAPSAMAPlugin openAPSAMAPlugin;
private final OpenAPSSMBPlugin openAPSSMBPlugin;
private final SensitivityOref1Plugin sensitivityOref1Plugin;
private final ActivePluginProvider activePlugin;
private final HardLimits hardLimits;
private final BuildHelper buildHelper;
private final TreatmentsPlugin treatmentsPlugin;
private final Config config;
@Inject
public SafetyPlugin(

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.general.maintenance
import android.Manifest
import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.bluetooth.BluetoothAdapter
import android.content.Context
import android.content.Intent
@ -122,7 +122,7 @@ class ImportExportPrefs @Inject constructor(
private fun prefsEncryptionIsDisabled() =
buildHelper.isEngineeringMode() && !sp.getBoolean(resourceHelper.gs(R.string.key_maintenance_encrypt_exported_prefs), true)
private fun askForMasterPass(activity: Activity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
private fun askForMasterPass(activity: FragmentActivity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { password ->
then(password)
}, {
@ -130,7 +130,7 @@ class ImportExportPrefs @Inject constructor(
})
}
private fun askForEncryptionPass(activity: Activity, @StringRes canceledMsg: Int, @StringRes passwordName: Int, @StringRes passwordExplanation: Int?,
private fun askForEncryptionPass(activity: FragmentActivity, @StringRes canceledMsg: Int, @StringRes passwordName: Int, @StringRes passwordExplanation: Int?,
@StringRes passwordWarning: Int?, then: ((password: String) -> Unit)) {
passwordCheck.queryAnyPassword(activity, passwordName, R.string.key_master_password, passwordExplanation, passwordWarning, { password ->
then(password)
@ -139,7 +139,7 @@ class ImportExportPrefs @Inject constructor(
})
}
private fun askForMasterPassIfNeeded(activity: Activity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
private fun askForMasterPassIfNeeded(activity: FragmentActivity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
if (prefsEncryptionIsDisabled()) {
then("")
} else {
@ -147,7 +147,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun assureMasterPasswordSet(activity: Activity, @StringRes wrongPwdTitle: Int): Boolean {
private fun assureMasterPasswordSet(activity: FragmentActivity, @StringRes wrongPwdTitle: Int): Boolean {
if (!sp.contains(R.string.key_master_password) || (sp.getString(R.string.key_master_password, "") == "")) {
WarningDialog.showWarning(activity,
resourceHelper.gs(wrongPwdTitle),
@ -163,23 +163,22 @@ class ImportExportPrefs @Inject constructor(
return true
}
private fun askToConfirmExport(activity: Activity, fileToExport: File, then: ((password: String) -> Unit)) {
private fun askToConfirmExport(activity: FragmentActivity, fileToExport: File, then: ((password: String) -> Unit)) {
if (!prefsEncryptionIsDisabled() && !assureMasterPasswordSet(activity, R.string.nav_export)) return
TwoMessagesAlertDialog.showAlert(activity, resourceHelper.gs(R.string.nav_export),
resourceHelper.gs(R.string.export_to) + " " + fileToExport + " ?",
resourceHelper.gs(R.string.export_to) + " " + fileToExport.name + " ?",
resourceHelper.gs(R.string.password_preferences_encrypt_prompt), {
askForMasterPassIfNeeded(activity, R.string.preferences_export_canceled, then)
}, null, R.drawable.ic_header_export)
}
private fun askToConfirmImport(activity: Activity, fileToImport: PrefsFile, then: ((password: String) -> Unit)) {
private fun askToConfirmImport(activity: FragmentActivity, fileToImport: PrefsFile, then: ((password: String) -> Unit)) {
if (fileToImport.handler == PrefsFormatsHandler.ENCRYPTED) {
if (!assureMasterPasswordSet(activity, R.string.nav_import)) return
TwoMessagesAlertDialog.showAlert(activity, resourceHelper.gs(R.string.nav_import),
resourceHelper.gs(R.string.import_from) + " " + fileToImport.file + " ?",
resourceHelper.gs(R.string.import_from) + " " + fileToImport.name + " ?",
resourceHelper.gs(R.string.password_preferences_decrypt_prompt), {
askForMasterPass(activity, R.string.preferences_import_canceled, then)
}, null, R.drawable.ic_header_import)
@ -191,7 +190,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun promptForDecryptionPasswordIfNeeded(activity: Activity, prefs: Prefs, importOk: Boolean,
private fun promptForDecryptionPasswordIfNeeded(activity: FragmentActivity, prefs: Prefs, importOk: Boolean,
format: PrefsFormat, importFile: PrefsFile, then: ((prefs: Prefs, importOk: Boolean) -> Unit)) {
// current master password was not the one used for decryption, so we prompt for old password...
@ -213,7 +212,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun exportSharedPreferences(activity: Activity) {
private fun exportSharedPreferences(activity: FragmentActivity) {
prefFileList.ensureExportDirExists()
val legacyFile = prefFileList.legacyFile()
@ -278,7 +277,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun importSharedPreferences(activity: Activity, importFile: PrefsFile) {
private fun importSharedPreferences(activity: FragmentActivity, importFile: PrefsFile) {
askToConfirmImport(activity, importFile) { password ->
@ -345,7 +344,7 @@ class ImportExportPrefs @Inject constructor(
show(context, resourceHelper.gs(R.string.setting_imported), resourceHelper.gs(R.string.restartingapp), Runnable {
log.debug(TAG, "Exiting")
rxBus.send(EventAppExit())
if (context is Activity) {
if (context is AppCompatActivity) {
context.finish()
}
System.runFinalization()

View file

@ -1,20 +1,18 @@
package info.nightscout.androidaps.plugins.general.maintenance
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Environment
import android.os.Parcelable
import androidx.activity.result.contract.ActivityResultContract
import androidx.fragment.app.FragmentActivity
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.R
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils
import info.nightscout.androidaps.plugins.general.maintenance.activities.PrefImportListActivity
import info.nightscout.androidaps.plugins.general.maintenance.formats.*
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.storage.Storage
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.RawValue
@ -34,6 +32,7 @@ enum class PrefsImportDir {
@Parcelize
data class PrefsFile(
val name: String,
val file: File,
val baseDir: File,
val dirKind: PrefsImportDir,
@ -46,13 +45,14 @@ data class PrefsFile(
class PrefsFileContract : ActivityResultContract<Void, PrefsFile>() {
companion object {
const val OUTPUT_PARAM = "prefs_file"
}
override fun parseResult(resultCode: Int, intent: Intent?): PrefsFile? {
return when (resultCode) {
Activity.RESULT_OK -> intent?.getParcelableExtra(OUTPUT_PARAM)
else -> null
FragmentActivity.RESULT_OK -> intent?.getParcelableExtra(OUTPUT_PARAM)
else -> null
}
}
@ -74,6 +74,7 @@ class PrefFileListProvider @Inject constructor(
) {
companion object {
private val path = File(Environment.getExternalStorageDirectory().toString())
private val aapsPath = File(path, "AAPS" + File.separator + "preferences")
private const val IMPORT_AGE_NOT_YET_OLD_DAYS = 60
@ -96,7 +97,7 @@ class PrefFileListProvider @Inject constructor(
val detectedOld = !detectedNew && classicPrefsFormat.isPreferencesFile(it, contents)
if (detectedNew || detectedOld) {
val formatHandler = if (detectedNew) PrefsFormatsHandler.ENCRYPTED else PrefsFormatsHandler.CLASSIC
prefFiles.add(PrefsFile(it, path, PrefsImportDir.ROOT_DIR, formatHandler, metadataFor(loadMetadata, formatHandler, contents)))
prefFiles.add(PrefsFile(it.name, it, path, PrefsImportDir.ROOT_DIR, formatHandler, metadataFor(loadMetadata, formatHandler, contents)))
}
}
@ -104,7 +105,7 @@ class PrefFileListProvider @Inject constructor(
aapsPath.walk().filter { it.isFile && it.name.endsWith(".json") }.forEach {
val contents = storage.getFileContents(it)
if (encryptedPrefsFormat.isPreferencesFile(it, contents)) {
prefFiles.add(PrefsFile(it, aapsPath, PrefsImportDir.AAPS_DIR, PrefsFormatsHandler.ENCRYPTED, metadataFor(loadMetadata, PrefsFormatsHandler.ENCRYPTED, contents)))
prefFiles.add(PrefsFile(it.name, it, aapsPath, PrefsImportDir.AAPS_DIR, PrefsFormatsHandler.ENCRYPTED, metadataFor(loadMetadata, PrefsFormatsHandler.ENCRYPTED, contents)))
}
}

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.general.maintenance.activities
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
@ -9,6 +8,7 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import dagger.android.support.DaggerAppCompatActivity
@ -63,7 +63,7 @@ class PrefImportListActivity : DaggerAppCompatActivity() {
val i = Intent()
i.putExtra(PrefsFileContract.OUTPUT_PARAM, prefFile)
setResult(Activity.RESULT_OK, i)
setResult(FragmentActivity.RESULT_OK, i)
finish()
}
}

View file

@ -22,7 +22,7 @@ class ClassicPrefsFormat @Inject constructor(
override fun isPreferencesFile(file: File, preloadedContents: String?): Boolean {
val contents = preloadedContents ?: storage.getFileContents(file)
return contents.contains("units::" + Constants.MGDL) || contents.contains("units::" + Constants.MMOL)
return contents.contains("units::" + Constants.MGDL) || contents.contains("units::" + Constants.MMOL) || contents.contains("language::") || contents.contains("I_understand::")
}
override fun savePreferences(file: File, prefs: Prefs, masterPassword: String?) {

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.general.openhumans
import android.app.Activity
import android.app.Dialog
import android.content.Intent
import android.net.Uri
@ -11,6 +10,7 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.browser.customtabs.CustomTabsIntent
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
@ -26,7 +26,7 @@ class OpenHumansLoginActivity : NoSplashAppCompatActivity() {
val button = findViewById<Button>(R.id.button)
val checkbox = findViewById<CheckBox>(R.id.checkbox)
button.setOnClickListener { _ ->
button.setOnClickListener {
if (checkbox.isChecked) {
CustomTabsIntent.Builder().build().launchUrl(this, Uri.parse(OpenHumansUploader.AUTH_URL))
} else {
@ -55,7 +55,7 @@ class OpenHumansLoginActivity : NoSplashAppCompatActivity() {
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(activity!!)
return AlertDialog.Builder(requireActivity())
.setTitle(R.string.completing_login)
.setMessage(R.string.please_wait)
.create()
@ -65,10 +65,10 @@ class OpenHumansLoginActivity : NoSplashAppCompatActivity() {
super.onCreate(savedInstanceState)
disposable = openHumansUploader.login(arguments?.getString("authToken")!!).subscribeOn(Schedulers.io()).subscribe({
dismiss()
SetupDoneDialog().show(fragmentManager!!, "SetupDoneDialog")
SetupDoneDialog().show(parentFragmentManager, "SetupDoneDialog")
}, {
dismiss()
ErrorDialog(it.message).show(fragmentManager!!, "ErrorDialog")
ErrorDialog(it.message).show(parentFragmentManager, "ErrorDialog")
})
}
@ -96,7 +96,7 @@ class OpenHumansLoginActivity : NoSplashAppCompatActivity() {
val message = arguments?.getString("message")
val shownMessage = if (message == null) getString(R.string.there_was_an_error)
else "${getString(R.string.there_was_an_error)}\n\n$message"
return AlertDialog.Builder(activity!!)
return AlertDialog.Builder(requireActivity())
.setTitle(R.string.error)
.setMessage(shownMessage)
.setPositiveButton(R.string.close, null)
@ -122,14 +122,14 @@ class OpenHumansLoginActivity : NoSplashAppCompatActivity() {
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(activity!!)
return AlertDialog.Builder(requireActivity())
.setTitle(R.string.successfully_logged_in)
.setMessage(R.string.setup_will_continue_in_background)
.setCancelable(false)
.setPositiveButton(R.string.close) { _, _ ->
activity!!.run {
setResult(Activity.RESULT_OK)
activity!!.finish()
requireActivity().run {
setResult(FragmentActivity.RESULT_OK)
requireActivity().finish()
}
}
.create()

View file

@ -4,6 +4,7 @@ import com.jjoe64.graphview.DefaultLabelFormatter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
/**
* Created by mike on 09.06.2016.
@ -20,10 +21,22 @@ public class TimeAsXAxisLabelFormatter extends DefaultLabelFormatter {
public String formatLabel(double value, boolean isValueX) {
if (isValueX) {
// format as date
DateFormat dateFormat = new SimpleDateFormat(mFormat);
DateFormat dateFormat = new SimpleDateFormat(mFormat, Locale.getDefault());
return dateFormat.format((long) value);
} else {
return super.formatLabel(value, isValueX);
try {
// unknown reason for crashing on this
// Fatal Exception: java.lang.NullPointerException
// Attempt to invoke virtual method 'double com.jjoe64.graphview.Viewport.getMaxY(boolean)' on a null object reference
// com.jjoe64.graphview.DefaultLabelFormatter.formatLabel (DefaultLabelFormatter.java:89)
// info.nightscout.androidaps.plugins.general.overview.graphExtensions.TimeAsXAxisLabelFormatter.formatLabel (TimeAsXAxisLabelFormatter.java:26)
// com.jjoe64.graphview.GridLabelRenderer.drawVerticalSteps (GridLabelRenderer.java:1057)
// com.jjoe64.graphview.GridLabelRenderer.draw (GridLabelRenderer.java:866)
// com.jjoe64.graphview.GraphView.onDraw (GraphView.java:296)
return super.formatLabel(value, isValueX);
} catch (Exception ignored) {
return "";
}
}
}
}

View file

@ -578,12 +578,13 @@ class SmsCommunicatorPlugin @Inject constructor(
})
} else if (splitted[1].endsWith("%")) {
var tempBasalPct = SafeParse.stringToInt(StringUtils.removeEnd(splitted[1], "%"))
var durationStep = activePlugin.activePump.model().tbrSettings.durationStep
var duration = 30
if (splitted.size > 2) duration = SafeParse.stringToInt(splitted[2])
val profile = profileFunction.getProfile()
if (profile == null) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.noprofile)))
else if (tempBasalPct == 0 && splitted[1] != "0%") sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
else if (duration == 0) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
else if (duration <= 0 || duration % durationStep != 0) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongTbrDuration, durationStep)))
else {
tempBasalPct = constraintChecker.applyBasalPercentConstraints(Constraint(tempBasalPct), profile).value()
val passCode = generatePasscode()
@ -610,12 +611,13 @@ class SmsCommunicatorPlugin @Inject constructor(
}
} else {
var tempBasal = SafeParse.stringToDouble(splitted[1])
var durationStep = activePlugin.activePump.model().tbrSettings.durationStep
var duration = 30
if (splitted.size > 2) duration = SafeParse.stringToInt(splitted[2])
val profile = profileFunction.getProfile()
if (profile == null) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.noprofile)))
else if (tempBasal == 0.0 && splitted[1] != "0") sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
else if (duration == 0) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
else if (duration <= 0 || duration % durationStep != 0) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongTbrDuration, durationStep)))
else {
tempBasal = constraintChecker.applyBasalConstraints(Constraint(tempBasal), profile).value()
val passCode = generatePasscode()

View file

@ -3,9 +3,7 @@ package info.nightscout.androidaps.plugins.general.tidepool.elements
import com.google.gson.annotations.Expose
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.ProfileSwitch
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader
import info.nightscout.androidaps.utils.InstanceId
import java.util.*
import kotlin.collections.ArrayList

View file

@ -2,10 +2,8 @@ package info.nightscout.androidaps.plugins.general.tidepool.messages
import com.google.gson.annotations.Expose
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.InstanceId
import info.nightscout.androidaps.utils.T
import java.util.*

View file

@ -0,0 +1,35 @@
package info.nightscout.androidaps.plugins.insulin
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class InsulinLyumjevPlugin @Inject constructor(
injector: HasAndroidInjector,
resourceHelper: ResourceHelper,
profileFunction: ProfileFunction,
rxBus: RxBusWrapper, aapsLogger: AAPSLogger
) : InsulinOrefBasePlugin(injector, resourceHelper, profileFunction, rxBus, aapsLogger) {
override fun getId(): Int = InsulinInterface.OREF_LYUMJEV
override fun getFriendlyName(): String = resourceHelper.gs(R.string.lyumjev)
override fun commentStandardText(): String = resourceHelper.gs(R.string.lyumjev)
override val peak = 45
init {
pluginDescription
.pluginName(R.string.lyumjev)
.description(R.string.description_insulin_lyumjev)
}
}

View file

@ -41,5 +41,6 @@ class InsulinOrefRapidActingPlugin @Inject constructor(
.pluginName(R.string.rapid_acting_oref)
.description(R.string.description_insulin_rapid)
.setDefault()
.enableByDefault(true)
}
}

View file

@ -34,6 +34,5 @@ class InsulinOrefUltraRapidActingPlugin @Inject constructor(
pluginDescription
.pluginName(R.string.ultrarapid_oref)
.description(R.string.description_insulin_ultra_rapid)
.enableByDefault(true)
}
}

View file

@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.profile.local
import android.app.Activity
import androidx.fragment.app.FragmentActivity
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
@ -93,7 +93,7 @@ class LocalProfilePlugin @Inject constructor(
}
@Synchronized
fun storeSettings(activity: Activity? = null) {
fun storeSettings(activity: FragmentActivity? = null) {
for (i in 0 until numOfProfiles) {
profiles[i].run {
val localProfileNumbered = Constants.LOCAL_PROFILE + "_" + i + "_"

View file

@ -12,6 +12,7 @@ import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import javax.inject.Inject;
@ -98,7 +99,7 @@ public class ComboFragment extends DaggerFragment implements View.OnClickListene
}
private void runOnUiThread(Runnable action) {
Activity activity = getActivity();
FragmentActivity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(action);
}

View file

@ -30,6 +30,7 @@ import info.nightscout.androidaps.plugins.profile.local.LocalProfileFragment
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment
import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin
import info.nightscout.androidaps.setupwizard.elements.*
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
@ -324,6 +325,12 @@ class SWDefinition @Inject constructor(
val activePump = activePlugin.activePump
activePump is OmnipodPumpPlugin && !activePump.isRileyLinkReady
}))
.add( // Omnipod only
SWEventListener(injector, EventRileyLinkDeviceStatusChange::class.java)
.label(R.string.setupwizard_pump_riley_link_status)
.visibility(SWValidator {
activePlugin.activePump is OmnipodPumpPlugin
}))
.add(SWButton(injector)
.text(R.string.readstatus)
.action(Runnable { commandQueue.readStatus("Clicked connect to pump", null) })
@ -332,7 +339,8 @@ class SWDefinition @Inject constructor(
// Getting the status might not be possible
activePlugin.activePump !is OmnipodPumpPlugin
}))
.add(SWEventListener(injector, EventPumpStatusChanged::class.java))
.add(SWEventListener(injector, EventPumpStatusChanged::class.java)
.visibility(SWValidator { activePlugin.activePump !is OmnipodPumpPlugin }))
.validator(SWValidator {
isPumpInitialized()
})

View file

@ -11,7 +11,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
class SWEventListener constructor(
injector:HasAndroidInjector,
injector: HasAndroidInjector,
clazz: Class<out EventStatus>
) : SWItem(injector, Type.LISTENER) {
@ -19,6 +19,7 @@ class SWEventListener constructor(
private var textLabel = 0
private var status = ""
private var textView: TextView? = null
private var visibilityValidator: SWValidator? = null
// TODO: Adrian how to clear disposable in this case?
init {
@ -43,6 +44,11 @@ class SWEventListener constructor(
return this
}
fun visibility(visibilityValidator: SWValidator): SWEventListener {
this.visibilityValidator = visibilityValidator
return this
}
@SuppressLint("SetTextI18n")
override fun generateDialog(layout: LinearLayout) {
val context = layout.context
@ -51,4 +57,8 @@ class SWEventListener constructor(
textView?.text = (if (textLabel != 0) resourceHelper.gs(textLabel) else "") + " " + status
layout.addView(textView)
}
override fun processVisibility() {
if (visibilityValidator != null && !visibilityValidator!!.isValid) textView?.visibility = View.GONE else textView?.visibility = View.VISIBLE
}
}

View file

@ -2,7 +2,6 @@ package info.nightscout.androidaps.utils
import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
@ -13,6 +12,7 @@ import android.os.PowerManager
import android.provider.Settings
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.PluginType
@ -46,7 +46,7 @@ class AndroidPermission @Inject constructor(
private var permission_battery_optimization_failed = false
@SuppressLint("BatteryLife")
private fun askForPermission(activity: Activity, permission: Array<String>, requestCode: Int) {
private fun askForPermission(activity: FragmentActivity, permission: Array<String>, requestCode: Int) {
var test = false
var testBattery = false
for (s in permission) {
@ -73,7 +73,7 @@ class AndroidPermission @Inject constructor(
}
}
fun askForPermission(activity: Activity, permission: String, requestCode: Int) {
fun askForPermission(activity: FragmentActivity, permission: String, requestCode: Int) {
val permissions = arrayOf(permission)
askForPermission(activity, permissions, requestCode)
}
@ -91,7 +91,7 @@ class AndroidPermission @Inject constructor(
}
@Synchronized
fun notifyForSMSPermissions(activity: Activity, smsCommunicatorPlugin: SmsCommunicatorPlugin) {
fun notifyForSMSPermissions(activity: FragmentActivity, smsCommunicatorPlugin: SmsCommunicatorPlugin) {
if (smsCommunicatorPlugin.isEnabled(PluginType.GENERAL)) {
if (permissionNotGranted(activity, Manifest.permission.RECEIVE_SMS)) {
val notification = NotificationWithAction(injector, Notification.PERMISSION_SMS, resourceHelper.gs(R.string.smscommunicator_missingsmspermission), Notification.URGENT)
@ -114,7 +114,7 @@ class AndroidPermission @Inject constructor(
}
@Synchronized
fun notifyForBatteryOptimizationPermission(activity: Activity) {
fun notifyForBatteryOptimizationPermission(activity: FragmentActivity) {
if (permissionNotGranted(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)) {
val notification = NotificationWithAction(injector, Notification.PERMISSION_BATTERY, String.format(resourceHelper.gs(R.string.needwhitelisting), resourceHelper.gs(R.string.app_name)), Notification.URGENT)
notification.action(R.string.request, Runnable { askForPermission(activity, arrayOf(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS), CASE_BATTERY) })
@ -122,7 +122,7 @@ class AndroidPermission @Inject constructor(
} else rxBus.send(EventDismissNotification(Notification.PERMISSION_BATTERY))
}
@Synchronized fun notifyForStoragePermission(activity: Activity) {
@Synchronized fun notifyForStoragePermission(activity: FragmentActivity) {
if (permissionNotGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
val notification = NotificationWithAction(injector, Notification.PERMISSION_STORAGE, resourceHelper.gs(R.string.needstoragepermission), Notification.URGENT)
notification.action(R.string.request, Runnable {
@ -133,7 +133,7 @@ class AndroidPermission @Inject constructor(
} else rxBus.send(EventDismissNotification(Notification.PERMISSION_STORAGE))
}
@Synchronized fun notifyForLocationPermissions(activity: Activity) {
@Synchronized fun notifyForLocationPermissions(activity: FragmentActivity) {
if (permissionNotGranted(activity, Manifest.permission.ACCESS_FINE_LOCATION)) {
val notification = NotificationWithAction(injector, Notification.PERMISSION_LOCATION, resourceHelper.gs(R.string.needlocationpermission), Notification.URGENT)
notification.action(R.string.request, Runnable { askForPermission(activity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), CASE_LOCATION) })
@ -141,7 +141,7 @@ class AndroidPermission @Inject constructor(
} else rxBus.send(EventDismissNotification(Notification.PERMISSION_LOCATION))
}
@Synchronized fun notifyForSystemWindowPermissions(activity: Activity) {
@Synchronized fun notifyForSystemWindowPermissions(activity: FragmentActivity) {
// Check if Android Q or higher
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
if (!Settings.canDrawOverlays(activity)) {

View file

@ -66,7 +66,7 @@ object PrefImportSummaryDialog {
rowLayout.setOnClickListener {
val msg = "[${context.getString(metaKey.label)}] ${metaEntry.info}"
when (metaEntry.status) {
PrefsStatus.WARN -> ToastUtils.Long.warnToast(context, msg)
PrefsStatus.WARN -> ToastUtils.Long.warnToast(context, msg)
PrefsStatus.ERROR -> ToastUtils.Long.errorToast(context, msg)
else -> ToastUtils.Long.infoToast(context, msg)
}
@ -132,6 +132,9 @@ object PrefImportSummaryDialog {
}
val dialog = builder.show()
val textView = dialog.findViewById<View>(android.R.id.message) as TextView?
textView?.textSize = 12f
textView?.setPadding(10,0,0,0)
dialog.setCanceledOnTouchOutside(false)
}

View file

@ -25,7 +25,7 @@ class BuildHelper @Inject constructor(private val config: Config) {
if (!config.APS) true else engineeringMode || !devBranch
fun isEngineeringMode(): Boolean =
if (!config.APS) true else engineeringMode || !devBranch
engineeringMode
fun isDev(): Boolean = devBranch
}

View file

@ -31,7 +31,7 @@
android:layout_weight="1"
android:text="@string/exit"
android:onClick="exitPressed"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textStyle="bold" />
</LinearLayout>

View file

@ -36,7 +36,7 @@
android:id="@+id/automation_action_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_action_orange_48dp" />
app:srcCompat="@drawable/ic_action_orange_48dp" />
<TextView
android:id="@+id/automation_viewActionTitle"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/action"
android:src="@drawable/ic_action_orange_48dp" />
app:srcCompat="@drawable/ic_action_orange_48dp" />
<TextView
android:id="@+id/automation_actionTitle"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/please_choose_an_action_type"
android:src="@drawable/ic_action_orange_48dp" />
app:srcCompat="@drawable/ic_action_orange_48dp" />
<TextView
android:id="@+id/actions_care_title"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/please_choose_a_trigger_type"
android:src="@drawable/ic_trigger_green_48dp" />
app:srcCompat="@drawable/ic_trigger_green_48dp" />
<TextView
android:id="@+id/actions_care_title"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/triggers"
android:src="@drawable/ic_trigger_green_48dp" />
app:srcCompat="@drawable/ic_trigger_green_48dp" />
<TextView
android:id="@+id/automation_actionTitle"

View file

@ -26,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/automation"
android:src="@drawable/ic_action_orange_48dp" />
app:srcCompat="@drawable/ic_action_orange_48dp" />
<TextView
android:layout_width="match_parent"
@ -69,7 +69,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/ic_trigger_green_48dp" />
app:srcCompat="@drawable/ic_trigger_green_48dp" />
<TextView
android:layout_width="wrap_content"
@ -132,7 +132,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/ic_action_orange_48dp" />
app:srcCompat="@drawable/ic_action_orange_48dp" />
<TextView
android:layout_width="wrap_content"

View file

@ -42,7 +42,7 @@
android:layout_alignParentEnd="true"
android:contentDescription="@string/reorder_label"
android:orientation="horizontal"
android:src="@drawable/ic_reorder_gray_24dp" />
app:srcCompat="@drawable/ic_reorder_gray_24dp" />
<LinearLayout
android:id="@+id/iconLayout"

View file

@ -40,7 +40,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_flat" />
card_view:srcCompat="@drawable/ic_flat" />
<TextView
android:id="@+id/ns_sign"

View file

@ -52,7 +52,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="?android:selectableItemBackgroundBorderless"
android:background="?attr/selectableItemBackgroundBorderless"
app:srcCompat="@drawable/ic_settings" />
<CheckBox

View file

@ -12,7 +12,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/event_time_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />

View file

@ -1,30 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="10dp">
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/summary_table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:stretchColumns="2" />
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_content_frame"
android:layout_width="match_parent"
android:layout_height="210dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="10dp">
<Button
android:id="@+id/summary_details_btn"
style="?android:attr/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="3dp"
android:text="@string/check_preferences_details_btn"
android:textColor="@color/colorTreatmentButton"
android:visibility="gone" />
<TableLayout
android:id="@+id/summary_table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:stretchColumns="2" />
</LinearLayout>
<Button
android:id="@+id/summary_details_btn"
style="?android:attr/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="3dp"
android:text="@string/check_preferences_details_btn"
android:textColor="@color/colorTreatmentButton"
android:visibility="gone" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
android:padding="10dp">
<TextView
android:id="@+id/password_prompt_title"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -26,7 +27,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/overview_calibration"
android:src="@drawable/ic_calibration" />
app:srcCompat="@drawable/ic_calibration" />
<TextView
android:id="@+id/actions_care_title"
@ -63,7 +64,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/treatments_wizard_bg_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/carbs"
android:src="@drawable/ic_cp_bolus_carbs" />
app:srcCompat="@drawable/ic_cp_bolus_carbs" />
<TextView
android:layout_width="match_parent"
@ -86,7 +87,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/time_offset"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker
@ -119,7 +120,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -152,7 +153,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/overview_carbs_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -26,7 +27,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/careportal_profileswitch"
android:src="@drawable/ic_actions_profileswitch" />
app:srcCompat="@drawable/ic_actions_profileswitch" />
<TextView
android:id="@+id/actions_care_title"
@ -91,7 +92,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/treatments_wizard_bg_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -126,7 +127,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/virtualpump_extendedbolus_label"
android:src="@drawable/ic_actions_startextbolus" />
app:srcCompat="@drawable/ic_actions_startextbolus" />
<TextView
android:layout_width="match_parent"
@ -58,7 +59,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/overview_insulin_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -91,7 +92,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/primefill"
android:src="@drawable/ic_cp_pump_canula" />
app:srcCompat="@drawable/ic_cp_pump_canula" />
<TextView
android:layout_width="match_parent"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/overview_insulin_label"
android:src="@drawable/ic_bolus" />
app:srcCompat="@drawable/ic_bolus" />
<TextView
android:layout_width="match_parent"
@ -81,7 +82,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/time"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -114,7 +115,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/overview_insulin_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/careportal_profileswitch"
android:src="@drawable/ic_actions_profileswitch" />
app:srcCompat="@drawable/ic_actions_profileswitch" />
<TextView
android:layout_width="match_parent"
@ -59,7 +60,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker
@ -92,7 +93,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_profile_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<Spinner
@ -117,7 +118,7 @@
android:width="120dp"
android:padding="10dp"
android:text=""
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<Button
@ -151,7 +152,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_percentage_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -184,7 +185,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_timeshift_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/tempbasal_label"
android:src="@drawable/ic_cp_basal_start" />
app:srcCompat="@drawable/ic_cp_basal_start" />
<TextView
android:layout_width="match_parent"
@ -59,7 +60,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/basal_rate"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -93,7 +94,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/basal_rate"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -126,7 +127,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/careportal_temporarytarget"
android:src="@drawable/ic_actions_temptarget" />
app:srcCompat="@drawable/ic_actions_temptarget" />
<TextView
android:layout_width="match_parent"
@ -59,7 +60,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/reason"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<Spinner
@ -82,7 +83,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/target_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -117,7 +118,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.MinutesNumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/overview_treatment_label"
android:src="@drawable/ic_bolus" />
app:srcCompat="@drawable/ic_bolus" />
<TextView
android:layout_width="match_parent"
@ -73,7 +74,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/overview_insulin_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -106,7 +107,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/overview_carbs_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:contentDescription="@string/boluswizard"
android:src="@drawable/ic_calculator" />
app:srcCompat="@drawable/ic_calculator" />
<TextView
android:layout_width="match_parent"
@ -62,7 +63,7 @@
android:layout_weight="1"
android:padding="10dp"
android:text="@string/treatments_wizard_bg_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -92,7 +93,7 @@
android:layout_weight="1"
android:padding="10dp"
android:text="@string/treatments_wizard_carbs_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -123,7 +124,7 @@
android:layout_weight="1"
android:padding="10dp"
android:text="@string/treatments_wizard_correction_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -153,7 +154,7 @@
android:layout_weight="1"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_carbtime_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.ui.NumberPicker
@ -186,7 +187,7 @@
android:layout_height="wrap_content"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_profile_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<Spinner
@ -252,7 +253,7 @@
android:labelFor="@+id/treatment_wizard_notes"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_notes_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<EditText
@ -289,7 +290,7 @@
android:layout_height="wrap_content"
android:contentDescription="@string/show_calculation"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_visibility" />
app:srcCompat="@drawable/ic_visibility" />
<Button
android:id="@+id/cancel"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -25,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/carbs"
android:src="@drawable/ic_calculator" />
app:srcCompat="@drawable/ic_calculator" />
<TextView
android:layout_width="match_parent"

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
@ -10,7 +11,7 @@
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:src="@drawable/ic_toast_check" />
app:srcCompat="@drawable/ic_toast_check" />
<ImageView
android:id="@+id/summary_icon"
@ -19,7 +20,7 @@
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:src="@drawable/ic_meta_format"
app:srcCompat="@drawable/ic_meta_format"
android:tint="#ffffff" />
<TextView

View file

@ -1,4 +1,5 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -63,7 +64,7 @@
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp"
android:contentDescription="@string/addnew"
android:src="@drawable/ic_add" />
app:srcCompat="@drawable/ic_add" />
<ImageView
android:id="@+id/localprofile_profile_clone"
@ -72,7 +73,7 @@
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp"
android:contentDescription="@string/clone_label"
android:src="@drawable/ic_clone" />
app:srcCompat="@drawable/ic_clone" />
<ImageView
android:id="@+id/localprofile_profile_remove"
@ -83,7 +84,7 @@
android:contentDescription="@string/remove_label"
android:scaleX="1"
android:scaleY="1"
android:src="@drawable/ic_remove" />
app:srcCompat="@drawable/ic_remove" />
</LinearLayout>

View file

@ -28,7 +28,7 @@
android:layout_marginTop="4dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="1dp"
android:src="@drawable/ic_meta_format"
card_view:srcCompat="@drawable/ic_meta_format"
android:tint="@color/importListFileName" />
<TextView
@ -89,7 +89,7 @@
android:layout_marginTop="1dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="1dp"
android:src="@drawable/ic_meta_name"
card_view:srcCompat="@drawable/ic_meta_name"
android:tint="@color/importListAdditionalInfo" />
<TextView
@ -121,7 +121,7 @@
android:layout_marginTop="1dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="1dp"
android:src="@drawable/ic_meta_date"
card_view:srcCompat="@drawable/ic_meta_date"
android:tint="@color/importListAdditionalInfo" />
<TextView

View file

@ -13,7 +13,7 @@
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_notes_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textStyle="bold" />
<EditText

View file

@ -18,7 +18,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_buttontext"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<EditText
android:id="@+id/overview_editquickwizard_button_edit"
@ -31,7 +31,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_carbs"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<EditText
android:id="@+id/overview_editquickwizard_carbs_edit"
@ -44,7 +44,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_valid"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<LinearLayout
android:layout_width="match_parent"
@ -70,7 +70,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usebg"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usebg_spinner"
@ -82,7 +82,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usebolusiob"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usebolusiob_spinner"
@ -94,7 +94,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usebasaliob"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usebasaliob_spinner"
@ -106,7 +106,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usecob"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usecob_spinner"
@ -118,7 +118,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usetrend"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usetrend_spinner"
@ -130,7 +130,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usesuperbolus"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usesuperbolus_spinner"
@ -142,7 +142,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/overview_editquickwizard_usetemptarget"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Spinner
android:id="@+id/overview_editquickwizard_usetemptarget_spinner"

View file

@ -50,7 +50,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingTop="18dp"
android:src="@drawable/ic_flat" />
app:srcCompat="@drawable/ic_flat" />
<TextView
android:id="@+id/overview_deltashort"

View file

@ -28,7 +28,7 @@
app:layout_constraintStart_toEndOf="@+id/overview_bg"
app:layout_constraintTop_toTopOf="@+id/overview_bg"
android:paddingTop="18dp"
android:src="@drawable/ic_flat" />
app:srcCompat="@drawable/ic_flat" />
<LinearLayout
android:id="@+id/overview_deltas_llayout"
@ -121,7 +121,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="-4dp"
android:src="@drawable/ic_loop_closed" />
app:srcCompat="@drawable/ic_loop_closed" />
<TextView
android:id="@+id/overview_apsmode_text"
@ -150,7 +150,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_bolus" />
app:srcCompat="@drawable/ic_bolus" />
<TextView
android:id="@+id/overview_iob"
@ -208,7 +208,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_cp_basal_no_tbr" />
app:srcCompat="@drawable/ic_cp_basal_no_tbr" />
<TextView
android:id="@+id/overview_basebasal"
@ -236,7 +236,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_actions_startextbolus" />
app:srcCompat="@drawable/ic_actions_startextbolus" />
<TextView
android:id="@+id/overview_extendedbolus"
@ -265,7 +265,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_swap_vert_black_48dp_green" />
app:srcCompat="@drawable/ic_swap_vert_black_48dp_green" />
<TextView
android:id="@+id/overview_sensitivity"

View file

@ -46,7 +46,7 @@
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="Sample button text"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textStyle="normal|bold"
android:textColor="@color/cardObjectiveText" />
@ -56,7 +56,7 @@
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="36g"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/cardObjectiveText"
android:textStyle="normal|bold" />
@ -75,7 +75,7 @@
android:paddingLeft="10dp"
android:paddingRight="5dp"
android:text="@string/overview_editquickwizard_valid"
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<TextView
android:id="@+id/overview_quickwizard_item_from"
@ -84,7 +84,7 @@
android:layout_gravity="center_vertical"
android:paddingRight="10dp"
android:text="07:45"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textStyle="normal|bold" />
<TextView
@ -99,7 +99,7 @@
android:layout_gravity="center_vertical"
android:paddingLeft="10dp"
android:text="11:45"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textStyle="normal|bold" />
</LinearLayout>

View file

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/overview_statuslights"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:background="?android:attr/colorControlHighlight"
android:background="?attr/colorControlHighlight"
android:orientation="horizontal"
android:paddingTop="4dp"
android:paddingBottom="4dp">
@ -18,7 +19,7 @@
android:scaleType="centerInside"
android:scaleX="2"
android:scaleY="2"
android:src="@drawable/ic_cp_age_canula" />
app:srcCompat="@drawable/ic_cp_age_canula" />
<TextView
android:id="@+id/careportal_canulaage"
@ -37,7 +38,7 @@
android:scaleType="centerInside"
android:scaleX="1.8"
android:scaleY="1.8"
android:src="@drawable/ic_cp_age_insulin" />
app:srcCompat="@drawable/ic_cp_age_insulin" />
<TextView
android:id="@+id/careportal_insulinage"
@ -63,7 +64,7 @@
android:scaleType="centerInside"
android:scaleX="2"
android:scaleY="2"
android:src="@drawable/ic_cp_age_sensor" />
app:srcCompat="@drawable/ic_cp_age_sensor" />
<TextView
android:id="@+id/careportal_sensorage"
@ -82,7 +83,7 @@
android:scaleType="centerInside"
android:scaleX="2"
android:scaleY="2"
android:src="@drawable/ic_cp_age_battery" />
app:srcCompat="@drawable/ic_cp_age_battery" />
<TextView
android:id="@+id/careportal_pbage"

View file

@ -1,4 +1,5 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
@ -37,7 +38,7 @@
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_add" />
app:srcCompat="@drawable/ic_add" />
<ImageView
android:id="@+id/timelistedit_remove"
@ -45,5 +46,5 @@
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_remove" />
app:srcCompat="@drawable/ic_remove" />
</LinearLayout>

View file

@ -1,4 +1,5 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
@ -37,7 +38,7 @@
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_add" />
app:srcCompat="@drawable/ic_add" />
<ImageView
android:id="@+id/timelistedit_remove"
@ -45,5 +46,5 @@
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_remove" />
app:srcCompat="@drawable/ic_remove" />
</LinearLayout>

View file

@ -655,7 +655,7 @@
<string name="apssetup">Konfigureer APS plugin</string>
<string name="sensitivitysetup">Konfigureer Sensitiwiteits plugin</string>
<string name="setupwizard_sensitivity_description">Sensitiwiteit plugin vir sensitiwiteit opsporing en KAB berekening. Vir meer inligting besoek:</string>
<string name="setupwizard_sensitivity_url">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="diawarning">Onthou asseblief: dat nuwe insulien profiele vereis DIA van minstens 5h. DIA 5 6h op nuwe profiel is gelyk aan DIA 3h op ou insulien profiele.</string>
<string name="bgsourcesetup">Konfigureer BG bron</string>
<string name="setupwizard_profile_description">Kies asseblief bron van profiel. As Pasiënt \'n kind is gebruik NS profiel. As niemand jou volg op Nightscout sal jy waarskynlik plaaslike profiel kies. Onthou asseblief dat jy net die bron kies van profiel. Om dit te gebruik moet jy dit aktiveer deur uitvoering \"Profiel skakelaar\"</string>

View file

@ -21,6 +21,7 @@
<string name="description_food">Показва въведените в Nightscout храни</string>
<string name="description_insulin_rapid">Действие на инсулините Humalog и NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Действие на инсулин Fiasp</string>
<string name="description_insulin_lyumjev">Действие на инсулин Lyumjev</string>
<string name="description_insulin_free_peak">Позволява да зададете сами пика на инсулиновата активност (не използвайте, ако сте нови потребители)</string>
<string name="description_loop">Включва или изключва затворения кръг (loop).</string>
<string name="description_ns_client">Синхронизира локалните данни с Nightscout</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Със свободен пик по Oref</string>
<string name="rapid_acting_oref">Бързодействащ по Oref</string>
<string name="ultrarapid_oref">Ултра бързодействащ по Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA от %1$f е твърде кратка - използвай %2$f вместо това!</string>
<string name="activate_profile">Активирай профила</string>
<string name="invalid">НЕВАЛИДНО</string>
@ -797,6 +799,8 @@
<string name="bgsourcesetup">Конфигуриране на източник на КЗ</string>
<string name="setupwizard_profile_description">Моля изберете вид профил. Ако пациентът е дете, трябва да използвате NS профил. Ако никой освен Вас не ви проследява в Nightscout вероятно ще предпочетете Локален профил. Моля, не забравяйте, че тук само избирате източника на профил. За да го използвате трябва да го активирате с натискане на \"Смяна на профила\"</string>
<string name="setupwizard_aps_description">Изберете един от наличните алгоритми. Те са подредени от най-стария до най-новия. По-новите алгоритми са обикновено по-мощни и по-агресивни. Така ако сте новак в APS системите може да започнете с AMA. Не забравяйте да прочетете документацията на OpenAPS и да го конфигурирате преди употреба.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Изчакване на RileyLink връзка…\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Заб:</b> Можете да продължите след като помпата се инициализира.\n</string>
<string name="startobjective">Започнете първа цел</string>
<string name="permission">Разрешение</string>
<string name="askforpermission">Питане за разрешение</string>
@ -1213,4 +1217,5 @@
<string name="only_upload_if_charging">Качване само при зареждане</string>
<string name="worker_state">Статус: %s</string>
<string name="uploaded_data">Качени данни</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Следните данни ще бъдат качвани във вашия Open Humans акаунт: Глюкозни стойности, болуси, въглехидрати, удължени болуси, профилни смени, общи дневни дози, временни базали, временни цели, предпочитания, версия на AAPS, модел на телефона и размери на екрана. Тайна или лична информация, като например вашия адрес на Nightscout или API, няма да бъдат качени.</string>
</resources>

View file

@ -21,6 +21,7 @@
<string name="description_food">Zobrazení jídel definovaných v NS</string>
<string name="description_insulin_rapid">Předvolba pro Novorapid</string>
<string name="description_insulin_ultra_rapid">Předvolba pro Fiasp</string>
<string name="description_insulin_lyumjev">Předvolba pro Lyumjev</string>
<string name="description_insulin_free_peak">Možnost definice vrcholu účinnosti inzulínu pro pokročilé uživatele</string>
<string name="description_loop">Povolení nebo zakázání smyčky.</string>
<string name="description_ns_client">Synchronizace dat s NS</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Volitelný vrchol - Oref</string>
<string name="rapid_acting_oref">Rychle působící - Oref</string>
<string name="ultrarapid_oref">Ultra rychlý - Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA %1$f je příliš krátké - použito %2$f !</string>
<string name="activate_profile">Aktivovat profil</string>
<string name="invalid">NEPLATNÝ</string>
@ -797,6 +799,8 @@
<string name="bgsourcesetup">Konfigurace zdroje glykémií</string>
<string name="setupwizard_profile_description">Vyberte zdroj profilů. Pokud jde o dítě, využijte nejspíše NS profil. Pokud Vás nikdo přes NS nesleduje, budete patrně preferovat Místní profil. Uvědomte si, že nastavujete pouze zdroj profilů. Na to aby se opravdu profil začal používat, je třeba provést aktivaci profilu použitím \"Přepnutí profilu\"</string>
<string name="setupwizard_aps_description">Vyberte jeden z algoritmů. Jsou setříděné od nejstaršího po nejnovější. Novější je obvykle lepší a agresivnější, ale vyžaduje přesnější nastavení. Proto pokud se smyčkou začínáte, měli byste nejdříve vybrat jen AMA a ne ten poslední. Nezapomeňte si přečíst dokumentaci k OpenAPS a provést nastavení, než ho začnete používat.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Čekám na připojení RileyLink.... \n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Poznámka:</b> Po inicializaci pumpy můžete pokračovat v nastavení.\n</string>
<string name="startobjective">Spusťte první cíl</string>
<string name="permission">Povolení</string>
<string name="askforpermission">Získat povolení</string>

View file

@ -21,6 +21,7 @@
<string name="description_food">Zeigt die Essensvorlagen aus Nightscout an</string>
<string name="description_insulin_rapid">Insulinprofil für Humalog und NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Insulinprofil für Fiasp</string>
<string name="description_insulin_lyumjev">Insulin-Voreinstellung für Lyumjev</string>
<string name="description_insulin_free_peak">Erlaubt dir, das Wirkmaximum der Insulinaktivität zu definieren, und sollte nur von erfahrenen Anwendern genutzt werden</string>
<string name="description_loop">Aktiviere oder deaktiviere die Anwendung, die den Loop ausführt.</string>
<string name="description_ns_client">Synchronisiert deine Daten mit Nightscout</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Free-Peak Oref</string>
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA von %1$f ist zu kurz - AAPS nutzt stattdessen %2$f!</string>
<string name="activate_profile">Aktiviere Profil</string>
<string name="invalid">Ungültig</string>
@ -797,6 +799,8 @@
<string name="bgsourcesetup">BZ-Quelle konfigurieren</string>
<string name="setupwizard_profile_description">Wähle eine Profilquelle aus. Verwende für ein Kind das NS-Profil. Wenn Dir niemand auf Nightscout folgt, wirst Du wahrscheinlich das lokale Profil bevorzugen. Beachte, dass hier nur die Profilquelle festgelegt wird. Damit das Profil verwendet werden kann, muss es mit einem \"Profil-Wechsel\" aktiviert werden.</string>
<string name="setupwizard_aps_description">Wähle einen der verfügbaren Algorithmen aus. Sie sind vom Ältesten zum Neuesten sortiert. Neuere Algorithmen sind meist stärker und aggressiver. Wenn du ein Anfänger bist, solltest du nicht mit dem Neuesten sondern mit AMA starten. Vergiss nicht, die OpenAPS-Dokumentation zu lesen und die entsprechenden Einstellungen vor der Benutzung vorzunehmen.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Warte auf Verbindung mit RileyLink…\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Hinweis:</b> Du kannst das Setup fortsetzen, sobald die Pumpe initialisiert wurde.\n</string>
<string name="startobjective">Starte deine erste Zielsetzung</string>
<string name="permission">Berechtigung</string>
<string name="askforpermission">Nach Berechtigung fragen</string>
@ -819,7 +823,7 @@
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Erhöhe die Sensitivität für temporäre Ziele >= 100.]]></string>
<string name="low_temptarget_lowers_sensitivity_title">Niedrige temporäre Ziele senken die Sensitivität</string>
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Senke die Sensitivität für temporäre Ziele < 100.]]></string>
<string name="resistance_lowers_target_title">Resistenz senkt Zielwert</string>
<string name="resistance_lowers_target_title">Resistenz senkt den Zielwert</string>
<string name="resistance_lowers_target_summary">Wenn Resistenz festgestellt wird, senke den Glukose-Zielwert</string>
<string name="sensitivity_raises_target_title">Empfindlichkeit erhöht den Zielwert</string>
<string name="sensitivity_raises_target_summary">Wenn eine höhere Empfindlichkeit festgestellt wird, wird der Glukose-Zielwert erhöht.</string>
@ -1156,7 +1160,7 @@ Unerwartetes Verhalten.</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Scanne den Code zum Einrichten von AndroidAPS OTP-Codes</string>
<string name="smscommunicator_otp_step3_test_header">3. Teste das Einmal-Passwort</string>
<string name="smscommunicator_otp_reset_header">Authentifikators zurücksetzen</string>
<string name="smscommunicator_otp_install_info">Installiere auf jedem Folloer-Phone eine Authenticator-App, die RFC 6238 TOTP-Token unterstützt. Beliebte kostenlose Apps sind:\n Authy\n Google Authenticator\n LastPass Authenticator\n FreeOTP Authenticator</string>
<string name="smscommunicator_otp_install_info">Installiere auf jedem Follower-Phone eine Authenticator-App, die RFC 6238 TOTP-Token unterstützt. Beliebte kostenlose Apps sind:\n Authy\n Google Authenticator\n LastPass Authenticator\n FreeOTP Authenticator</string>
<string name="smscommunicator_otp_provisioning_warning">Diesen Code NICHT ONLINE TEILEN!\nVerwende ihn nur zur Einrichtung der Authenticator App auf den Follower-Phones.</string>
<string name="smscommunicator_otp_reset_warning">Wenn Du den Authentifikator zurücksetzt werden alle bestehenden Authentifikatoren ungültig. Du musst sie dann neu einrichten!</string>
<string name="onconnect">Beim Verbinden</string>
@ -1193,7 +1197,7 @@ Unerwartetes Verhalten.</string>
<string name="your_phone_is_upload_data">Dein Telefon lädt nun Daten zu Open Human hoch.</string>
<string name="setup_failed">Einrichtung fehlgeschlagen</string>
<string name="there_was_an_error">Es gab einen Fehler. Bitte logge Dich erneut ein, um fortzufahren. Entschuldigung &amp; Danke!</string>
<string name="open_humans_terms">Dies ist ein Open-Source-Tool, das Deine Daten nach Open Humans kopiert. Wir behalten uns keine Rechte vor, Deine Daten ohne Deine ausdrückliche Genehmigung an Dritte weiterzugeben. Die Daten, die das Projekt und die Anwendung erhalten, werden über eine zufällige Benutzer-ID identifiziert und nur dann sicher auf ein Open Humans-Konto übertragen, wenn Du diesem Vorgang zugestimmt habst. Du kannst das Hochladen beenden und Deine hochgeladenen Daten jederzeit über www.openhumans.org löschen.</string>
<string name="open_humans_terms">Dies ist ein Open-Source-Tool, das Deine Daten zu Open Humans hochlädt. Wir behalten uns keine Rechte vor, Deine Daten ohne Deine ausdrückliche Genehmigung an Dritte weiterzugeben. Die Daten, die das Projekt und die Anwendung erhalten, werden über eine zufällige Benutzer-ID identifiziert und nur nach Deiner Zustimmung sicher auf ein Open Humans-Konto übertragen. Du kannst das Hochladen beenden und Deine hochgeladenen Daten jederzeit über www.openhumans.org löschen.</string>
<string name="i_understand_and_agree">Verstanden und akzeptiert. </string>
<string name="login">Login</string>
<string name="logout">Logout</string>

View file

@ -21,6 +21,7 @@
<string name="description_food">Affiche les aliments définis par défaut dans Nightscout</string>
<string name="description_insulin_rapid">Réglages pour les insulines Humalog et NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Réglages pour l\'insuline Fiasp</string>
<string name="description_insulin_lyumjev">Réglages pour l\'insuline Lyumjev</string>
<string name="description_insulin_free_peak">Permet de définir le pic de lactivité de linsuline et ne doit être utilisé que par les utilisateurs avancés</string>
<string name="description_loop">Activer ou désactiver la mise en œuvre déclenchant la Boucle.</string>
<string name="description_ns_client">Synchronise vos données avec Nightscout</string>
@ -228,13 +229,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="smscommunicator">Communicateur SMS</string>
<string name="smscommunicator_allowednumbers">Numéros de tél autorisés</string>
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
<string name="smscommunicator_bolusreplywithcode">Renvoyer le code %2$s pour injecter le bolus %1$.2fU</string>
<string name="smscommunicator_mealbolusreplywithcode">Pour injecter le bolus repas de %1$.2fU renvoyer le code %2$s</string>
<string name="smscommunicator_temptargetwithcode">Pour définir la Cible Temp %1$s renvoyer le code %2$s</string>
<string name="smscommunicator_temptargetcancel">Pour annuler la Cible Temp renvoyer le code %1$s</string>
<string name="smscommunicator_stopsmswithcode">Pour désactiver les commandes à distance SMS renvoyer le code %1$s.\n\nGardez à l\'esprit que vous ne pourrez le réactiver que directement à partir de l\'application AAPS du smartphone maître.</string>
<string name="smscommunicator_bolusreplywithcode">Pour injecter le bolus de %1$.2f U, renvoyez le code %2$s</string>
<string name="smscommunicator_mealbolusreplywithcode">Pour injecter le bolus repas de %1$.2f U, renvoyez le code %2$s</string>
<string name="smscommunicator_temptargetwithcode">Pour définir la cible temp %1$s, renvoyez le code %2$s</string>
<string name="smscommunicator_temptargetcancel">Pour annuler la cible temp, renvoyez le code %1$s</string>
<string name="smscommunicator_stopsmswithcode">Pour désactiver les commandes à distance SMS, renvoyez le code %1$s.\n\nGardez à l\'esprit que vous ne pourrez le réactiver que directement à partir de l\'application AAPS du smartphone maître.</string>
<string name="smscommunicator_stoppedsms">Service de commande à distance SMS arrêté. Pour le réactiver, utilisez AAPS sur le smartphone maître.</string>
<string name="smscommunicator_calibrationreplywithcode">Renvoyer le code %2$s pour envoyer la calibration %1$.2f</string>
<string name="smscommunicator_calibrationreplywithcode">Pour envoyer la calibration %1$.2f, renvoyez le code %2$s</string>
<string name="smscommunicator_bolusfailed">Échec du Bolus</string>
<string name="smscommunicator_remotebolusmindistance_summary">Nombre minimum de minutes qu\'il doit y avoir entre un bolus distant et le suivant</string>
<string name="smscommunicator_remotebolusmindistance">Combien de minutes doit-il y avoir, au minimum, entre un bolus et le suivant</string>
@ -259,22 +260,22 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="smscommunicator_loopisenabled">La Boucle est activée</string>
<string name="valuelimitedto">%1$.2f limité à %2$.2f</string>
<string name="valueoutofrange">La valeur %1$s est en dehors des limites</string>
<string name="smscommunicator_pumpconnectwithcode">Pour connecter la pompe, répondre avec le code %1$s</string>
<string name="smscommunicator_pumpconnectwithcode">Pour connecter la pompe, renvoyez le code %1$s</string>
<string name="smscommunicator_pumpconnectfail">Echec de la connexion pompe</string>
<string name="smscommunicator_pumpdisconnectwithcode">Pour déconnecter la pompe pendant %1d minutes, répondre avec le code %2$s</string>
<string name="smscommunicator_pumpdisconnectwithcode">Pour déconnecter la pompe pendant %1d min, renvoyez le code %2$s</string>
<string name="smscommunicator_pumpdisconnected">Pompe déconnectée</string>
<string name="smscommunicator_reconnect">Pompe reconnectée</string>
<string name="smscommunicator_remotecommandnotallowed">La commande à distance n\'est pas autorisée</string>
<string name="smscommunicator_remotebolusnotallowed">Bolus à distance non disponible. Réessayez plus tard.</string>
<string name="smscommunicator_basalreplywithcode">Pour démarrer la basal de %1$.2f U/h pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_profilereplywithcode">Pour changer le profil vers %1$s %2$d%%, renvoyer le code %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Pour démarrer le bolus étendu de %1$.2f U/h pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_carbsreplywithcode">Pour entrer %1$dg à %2$s renvoyer le code %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer la Basal %1$d%% pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Envoyer le code %2$s pour suspendre la Boucle pour %1$d minutes</string>
<string name="smscommunicator_loopresumereplywithcode">Pour reprendre la veuillez répondre avec le code %1$s</string>
<string name="smscommunicator_loopenablereplywithcode">Pour activer la boucle veuillez répondre avec le code %1$s</string>
<string name="smscommunicator_loopdisablereplywithcode">Pour désactiver la boucle veuillez répondre avec le code %1$s</string>
<string name="smscommunicator_basalreplywithcode">Pour démarrer la basal de %1$.2f U/h pendant %2$d min, renvoyez le code %3$s</string>
<string name="smscommunicator_profilereplywithcode">Pour changer le profil vers %1$s %2$d%%, renvoyez le code %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Pour démarrer le bolus étendu de %1$.2f U/h pendant %2$d min, renvoyez le code %3$s</string>
<string name="smscommunicator_carbsreplywithcode">Pour entrer %1$dg à %2$s, renvoyez le code %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer la Basal %1$d%% pendant %2$d min, renvoyez le code %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Pour suspendre la boucle pendant %1$d min, renvoyez le code %2$s</string>
<string name="smscommunicator_loopresumereplywithcode">Pour reprendre la boucle, renvoyez le code %1$s</string>
<string name="smscommunicator_loopenablereplywithcode">Pour activer la boucle, renvoyez le code %1$s</string>
<string name="smscommunicator_loopdisablereplywithcode">Pour désactiver la boucle, renvoyez le code %1$s</string>
<string name="smscommunicator_tempbasalset">Démarrage réussi pour %1$.2fU/h de basal temporaire pour %2$d min</string>
<string name="smscommunicator_extendedset">Le Bolus étendu %1$.2fU pendant %2$d min a commencé avec succès</string>
<string name="smscommunicator_carbsset">%1$d g de glucides entrés avec succès</string>
@ -282,15 +283,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="smscommunicator_tempbasalset_percent">Démarrage réussi pour %1$d%% de Basal temporaire pour %2$d min</string>
<string name="smscommunicator_tempbasalfailed">Le démarrage du basal temporaire a échoué</string>
<string name="smscommunicator_extendedfailed">Le départ du Bolus étendu a échoué</string>
<string name="smscommunicator_basalstopreplywithcode">Envoyer le code %1$s pour arrêter la Basal temporaire</string>
<string name="smscommunicator_extendedstopreplywithcode">Pour arrêter le Bolus étendu, renvoyer le code %1$s</string>
<string name="smscommunicator_basalstopreplywithcode">Pour arrêter la basal temp, renvoyez le code %1$s</string>
<string name="smscommunicator_extendedstopreplywithcode">Pour arrêter le bolus étendu, renvoyez le code %1$s</string>
<string name="smscommunicator_tempbasalcanceled">Basal temporaire annulé</string>
<string name="smscommunicator_extendedcanceled">Bolus étendu annulé</string>
<string name="smscommunicator_tempbasalcancelfailed">Echec de l\'annulation du basal temporaire</string>
<string name="smscommunicator_extendedcancelfailed">Échec de l\'annulation du Bolus étendu</string>
<string name="smscommunicator_unknowncommand">Commande inconnue ou mauvaise réponse</string>
<string name="quickwizard">Assistant Rapide</string>
<string name="quickwizardsettings">Paramètres de l\'Assistant Rapide</string>
<string name="quickwizardsettings">Assistant Rapide</string>
<string name="overview_editquickwizard_buttontext">Texte du bouton :</string>
<string name="overview_editquickwizard_carbs">Glucides:</string>
<string name="overview_editquickwizard_valid">Valide:</string>
@ -306,7 +307,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="primefill">Amorcer/Remplir</string>
<string name="fillwarning">Veuillez à ce que la quantité corresponde aux caractéristiques de votre cathéter !</string>
<string name="othersettings_title">Autres</string>
<string name="fillbolus_title">Quantité d\'insuline par défaut pour Amorcer/Remplir</string>
<string name="fillbolus_title">Insuline par défaut pour Amorcer/Remplir</string>
<string name="button1">Bouton 1</string>
<string name="button2">Bouton 2</string>
<string name="button3">Bouton 3</string>
@ -475,7 +476,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="xdripstatus">Barre d\'état pour xDrip (Montre)</string>
<string name="xdripstatus_shortname">xds</string>
<string name="wear_showbgi_title">Afficher lImpact Glycémie</string>
<string name="wear_showbgi_summary">Ajouter lIG sur la vue générale</string>
<string name="wear_showbgi_summary">Ajouter lIGly sur la vue générale</string>
<string name="ns_noupload">Pas de téléchargement vers NS</string>
<string name="ns_noupload_summary">Toutes les données envoyées à NS sont abandonnées. AAPS est connecté à NS mais aucun changement nest fait dans NS</string>
<string name="overview_extendedbolus_cancel_button">Annuler Bolus étendu</string>
@ -536,6 +537,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="free_peak_oref">Profil d\'insuline ajustable Oref</string>
<string name="rapid_acting_oref">Insuline à Action Rapide Oref </string>
<string name="ultrarapid_oref">Insuline Ultra Rapide Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">Durée dAction pour %1$f trop courte - utiliser %2$f à la place !</string>
<string name="activate_profile">Activer le profil</string>
<string name="invalid">INVALIDE</string>
@ -798,6 +800,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="bgsourcesetup">Configurez la source des glycémies</string>
<string name="setupwizard_profile_description">Sélectionnez la source du profil. Si le patient est un enfant vous devriez utiliser un profil NS. Si personne ne vous suit sur Nightscout, vous préférerez probablement un profil local. N\'oubliez pas que vous êtes simplement en train de sélectionner la source du profil. Afin de pouvoir l\'utiliser vous devrez l\'activer via \"Changement de Profil\"</string>
<string name="setupwizard_aps_description">Sélectionnez un des algorithmes disponibles. Ils sont organisés du plus ancien au plus récent. Les algorithmes les plus récents sont habituellement plus puissants et plus agressifs. De ce fait, si vous êtes un nouvel utilisateur, vous devriez probablement démarrer avec AMA au lieu de choisir un algorithme plus récent. N\'oubliez pas de lire la documentation OpenAPS et en faire la configuration avant utilisation.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">En attente de connexion RileyLink...\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Remarque :</b> Vous pouvez continuer l\'installation une fois que la pompe a été initialisée.\n</string>
<string name="startobjective">Démarrez votre premier objectif</string>
<string name="permission">Autorisation</string>
<string name="askforpermission">Demande d\'autorisation</string>
@ -820,7 +824,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Augmente la Sensibilité pour les cibles temporaires >= 100]]></string>
<string name="low_temptarget_lowers_sensitivity_title">Cible temp. basse abaisse la sensibilité</string>
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Diminue la Sensibilité pour les cibles temporaires < 100]]></string>
<string name="resistance_lowers_target_title">La résistance diminue la cible</string>
<string name="resistance_lowers_target_title">Résistance diminue la cible</string>
<string name="resistance_lowers_target_summary">Quand une résistance est détectée, baisse de la glycémie cible</string>
<string name="sensitivity_raises_target_title">Sensibilité augmente la cible</string>
<string name="sensitivity_raises_target_summary">Quand une sensibilité est détectée, augmentation de la glycémie cible</string>
@ -1178,7 +1182,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="nav_profilehelper">Assistant Profil</string>
<string name="motoldefaultprofile">Profil par défaut</string>
<string name="currentprofile">Profil actuel</string>
<string name="availableprofile">Profil disponible</string>
<string name="availableprofile">Profils disponibles</string>
<string name="profiletype">Type de profil</string>
<string name="formatwithtdd">Âge: %1$.0f DTI: %2$.0f U</string>
<string name="formatwittddandpct">Âge: %1$.0f DTI: %2$.0f U %3$d%%</string>

View file

@ -21,6 +21,7 @@
<string name="description_food">Visualizza i preset dei cibi definiti in Nightscout</string>
<string name="description_insulin_rapid">Preset per insulina Humalog e NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Preset per insulina Fiasp</string>
<string name="description_insulin_lyumjev">Preset per insulina Lyumjev</string>
<string name="description_insulin_free_peak">Ti consente di definire il picco di attività dell\'insulina e deve essere utilizzato solo dagli utenti avanzati</string>
<string name="description_loop">Attiva o disattiva l\'implementazione per la gestione del loop.</string>
<string name="description_ns_client">Sincronizza i tuoi dati con Nightscout</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Free-Peak Oref</string>
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA di %1$f troppo breve - utilizzo %2$f.</string>
<string name="activate_profile">Attiva profilo</string>
<string name="invalid">NON VALIDO</string>
@ -797,6 +799,8 @@
<string name="bgsourcesetup">Configura sorgente BG</string>
<string name="setupwizard_profile_description">Seleziona il tipo di profilo. Se il paziente è un bambino dovresti utilizzare il profilo di NS. Se non c\'è nessuno a seguirti su Nightscout probabilmente preferirai il profilo locale. Ricorda che stai solo selezionando la sorgente del profilo. Per utilizzarlo devi attivarlo tramite l\'esecuzione del comando \"Cambio profilo\"</string>
<string name="setupwizard_aps_description">Seleziona uno degli algoritmi disponibili. Sono ordinati dal più vecchio al più recente. L\'algoritmo più recente è solitamente più potente e più aggressivo. Pertanto, se sei un nuovo utente, probabilmente dovresti iniziare con AMA e non con l\'ultimo. Non dimenticare di leggere la documentazione di OpenAPS e di configurarlo prima dell\'uso.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Attesa connessione RileyLink…\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Nota:</b> Puoi continuare la configurazione una volta che il micro è stato inizializzato.\n</string>
<string name="startobjective">Avvia il tuo primo obiettivo</string>
<string name="permission">Autorizzazione</string>
<string name="askforpermission">Chiedi l\'autorizzazione</string>

View file

@ -21,6 +21,7 @@
<string name="description_food">Rodyti maisto ruošinius iš Nightscout</string>
<string name="description_insulin_rapid">Nustatymai Humalog ir NovoRapid / NovoLog insulinams</string>
<string name="description_insulin_ultra_rapid">Nustatymai Fiasp insulinui</string>
<string name="description_insulin_lyumjev">Nustatymai Lyumjev insulinui</string>
<string name="description_insulin_free_peak">Leidžia pasirinkti insulino veikimo piką ir turėtų būti naudojama tik patyrusių vartotojų</string>
<string name="description_loop">Aktyvuoja arba deaktyvuoja Ciklo paleidimą.</string>
<string name="description_ns_client">Sinchronizuoja duomenis su Nightscout</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Oref be piko</string>
<string name="rapid_acting_oref">Greito veikimo Oref</string>
<string name="ultrarapid_oref">Staigaus veikimo Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">IVT %1$f per trumpa - bus naudojama %2$f!</string>
<string name="activate_profile">Aktyvuoti profilį</string>
<string name="invalid">KLAIDA</string>
@ -797,6 +799,8 @@
<string name="bgsourcesetup">Sukonfigūruoti KG šaltinį</string>
<string name="setupwizard_profile_description">Prašome pasirinkti profilį. Jei pacientas yra vaikas, turite naudoti NS profilį. Jei niekas neseka jūsų Nightscout platformoje, tada geriau pasirinkti Vietinį profilį. Atminkite, kad čia Jūs tik pasirenkate profilio šaltinį. Norėdami jį aktyvuoti, turite atlikti Profilio keitimą</string>
<string name="setupwizard_aps_description">Pasirinkite vieną iš esamų algoritmų. Jie yra išdėstyti nuo seniausio iki naujausio. Naujesni algoritmai yra galingesni ir agresyvesni. Taigi jei esate naujas vartotojas, geriau pradėti nuo AMA, o ne naujesnio. Nepamirškite perskaityti dokumentaciją ir sukonfigūruoti jį prieš naudojant.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Laukiama RileyLink ryšio...\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b> Pastaba:</b> sąranką galite tęsti, kai tik inicijuojama pompa.\n</string>
<string name="startobjective">Pradėti jūsų pirmąjį tikslą</string>
<string name="permission">Leidimas</string>
<string name="askforpermission">Prašyti leidimo</string>
@ -1213,4 +1217,5 @@
<string name="only_upload_if_charging">Įkelti tik akumuliatoriaus įkrovimo metu</string>
<string name="worker_state">Darbinė Būklė: %s</string>
<string name="uploaded_data">Įkelti duomenis</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Į jūsų Open Humans paskyrą bus įkelti šie duomenys: glikemijos reikšmės, bolusai, angliavandeniai, priežiūros portalo įvykiai (išskyrus pastabas), ištęstiniai bolusai, profilio pakeitimai, visos paros dozės, laikinos valandinės bazės, laikini tikslai, nustatymai, programos versija, įrenginio modelis ir ekrano matmenys. Konfidenciali ar privati informacija, pvz., Jūsų Nightscout URL arba API slaptažodis, nebus įkelta.</string>
</resources>

View file

@ -1,2 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="dia_whatmeansdia">Hva er riktig om DIA?</string>
<string name="dia_label_exam">Tema: Insulinvarighet (DIA)</string>
<string name="dia_minimumis3h">Minimumsverdien er 3 timer.</string>
<string name="dia_minimumis5h">Minimumsverdien er 5 timer.</string>
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
<string name="dia_meaningisequaltodiapump">Betydningen er lik DIA verdien angitt i pumpen.</string>
<string name="dia_valuemustbedetermined">Du må bestemme din individuelle verdi (men ikke mindre enn 5 timer).</string>
<string name="hypott_label">Tema: Hypo Temp Target</string>
<string name="hypott_whenhypott">Hva er hovedgrunnen til å velge en hypo TT?</string>
<string name="hypott_goinglow">Forhindre at BS går lavt hvis du allerede har en null temp gående.</string>
<string name="hypott_preventoversmb">Forhindre at AAPS skal doserer for mye insulin etter en BS stigning forårsaket av hurtigvirkende karbohydrater gitt for å behandle et lavt BS.</string>
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
<string name="offlineprofile_whatprofile">Hvilken profiltype kan brukes og konfigureres offline?</string>
<string name="offlineprofile_label">Tema: Offline profil</string>
<string name="offlineprofile_nsprofile">NS profil kan brukes, men ikke konfigureres.</string>
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
<string name="pumpdisconnect_label">Tema: koble fra pumpen</string>
<string name="pumpdisconnect_whattodo">Hva bør gjøres innen du kobler fra pumpen?</string>
<string name="pumpdisconnect_letknow">Trykk på \"Koble fra pumpen\" slik at AAPS vet at ingen insulin vil bli levert.</string>
<string name="pumpdisconnect_suspend">Trykk \"Pause loop\" så AAPS stopper å loope mens pumpen er frakoblet.</string>
<string name="pumpdisconnect_dontchnage">Endre ikke på noe i AAPS, koble bare fra pumpen.</string>
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
<string name="objectives_label">Tema: AndroidAPS innstillinger</string>
<string name="objectives_howtosave">Hva er beste praksis for å ta backup av dine innstillinger?</string>
<string name="objectives_exportsettings">Eksportere dem lokalt fra Vedlikeholds menyen.</string>
<string name="objectives_storeelsewhere">Lagre den eksporterte filen til en annen plass som epost, Dropbox, Google Drive…</string>
<string name="objectives_doexportonstart">Eksporter dem rett etter installeringen av AAPS.</string>
<string name="objectives_doexportafterchange">Eksporter dem rett etter at du har gjort endringer i dine innstillinger.</string>
<string name="objectives_doexportafterobjective">Eksporter dem etter at du har fullført et nytt læringsmål.</string>
<string name="objectives_doexportafterfirtssettings">Eksporter dem etter at du har avsluttet dine første innstillinger.</string>
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
<string name="noisycgm_label">Emne: CGM-målingern med støy</string>
<string name="noisycgm_whattodo">Hva bør gjøres hvis CGM data har støy?</string>
<string name="nothing">Ingenting, AAPS vil håndtere det.</string>
<string name="noisycgm_pause">Deaktiver loop for å unngå overdosering.</string>
<string name="noisycgm_replacesensor">Bytt CGM sensor.</string>
<string name="noisycgm_turnoffphone">Slå av telefonen.</string>
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
<string name="noisycgm_checksmoothing">Kontroller at CGM appen din jevner ut BS målinger.</string>
<string name="exercise_label">Tema: Trening</string>
<string name="exercise_whattodo">Hvordan kan du hjelpe systemet med å håndtere trening?</string>
<string name="exercise_setactivitytt">Ved å bruke funksjonen for temp target/mål.</string>
<string name="exercise_switchprofilebelow100">Gjør et profilbytte til under 100%.</string>
<string name="exercise_switchprofileabove100">Gjør et profilbytte til over 100%.</string>
<string name="exercise_stoploop">Stopp loop.</string>
<string name="exercise_doitbeforestart">Angi et \"aktivitet\" temp mål før du begynner treningen.</string>
<string name="exercise_afterstart">Å angi et \"aktivitet\" temp mål etter at du har startet treningen fører til dårligere resultater enn om man startet før.</string>
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#active temp-target</string>
<string name="suspendloop_label">Tema: Stanset/pauset loop</string>
<string name="suspendloop_doigetinsulin">Får jag insulin når loop er stanset/pauset?</string>
<string name="suspendloop_yes">Ja, basal insulin vil fortsatt bli levert.</string>
<string name="suspendloop_no">Nei, levering av insulin er stanset.</string>
<string name="basaltest_label">Tema: Basal, ISF og IC testing</string>
<string name="basaltest_when">Når bør jeg validere basal, ISF og IC verdier?</string>
<string name="basaltest_beforeloop">Før jeg begynner å loope.</string>
<string name="basaltest_havingregularhypo">Om du ofte opplever lave BS verdier.</string>
<string name="basaltest_havingregularhyper">Om du ofte opplever høye BS verdier.</string>
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
<string name="prerequisites_label">Tema: Forutsetninger før oppstart</string>
<string name="prerequisites_what">Hva trenger jeg?</string>
<string name="prerequisites_determinedcorrectprofile">Validert profil informasjon (basal, IC, ISF, DIA).</string>
<string name="prerequisites_computer">En datamaskin for å lage en APK.</string>
<string name="prerequisites_phone">En telefon som støttes.</string>
<string name="prerequisites_car">En bil.</string>
<string name="prerequisites_nightscout">Nightscout for å klare læringsmålene.</string>
<string name="prerequisites_tidepoolaccount">En Tidepool konto.</string>
<string name="prerequisites_googleaccount">En Google konto.</string>
<string name="prerequisites_githubaccount">En Github konto.</string>
<string name="prerequisites_beanandroiddeveloper">Erfaring med Android programmering.</string>
<string name="prerequisites_own670g">En MiniMed 670G pumpe.</string>
<string name="prerequisites_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html</string>
<string name="prerequisites_smartwatch">En smartklokke.</string>
<string name="prerequisites_supportedcgm">En CGM som støttes.</string>
<string name="update_label">Tema: Oppdatering av AndroidAPS</string>
<string name="whatistrue">Hva er sant?</string>
<string name="update_git">Du må ha Git installert.</string>
<string name="update_asap">Oppdater så snart den nye versjonen er publisert og du har nok tid til å gjøre det.</string>
<string name="update_keys">Du bør bruke de samme signeringsnøklene.</string>
<string name="update_neverupdate">Aldri oppdater hvis systemet fungerer bra.</string>
<string name="update_askfriend">Spør en venn om den nye APK filen.</string>
<string name="update_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch</string>
<string name="troubleshooting_label">Tema: Feilsøking</string>
<string name="troubleshooting_wheretoask">Hvor skal jeg lete etter hjelp?</string>
<string name="troubleshooting_fb">Bli medlem av AndroidAPS Facebook gruppen.</string>
<string name="troubleshooting_wiki">Les AndroidAPS dokumentasjonen.</string>
<string name="troubleshooting_gitter">Besøk AndroidAPS Gitter rommet.</string>
<string name="troubleshooting_googlesupport">Besøk AndroidAPS Google support</string>
<string name="troubleshooting_yourendo">Snakk med din diabeteslege.</string>
<string name="troubleshooting_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting</string>
<string name="troubleshooting_hint2">https://www.facebook.com/groups/AndroidAPSUsers/</string>
<string name="troubleshooting_hint3">https://gitter.im/MilosKozak/AndroidAPS</string>
<string name="insulin_label">Tema: Insulin plugin</string>
<string name="insulin_ultrarapid">Hvilke typer insulin kan brukes sammen med insulinprofilen \"Ultra-Rapid-Oref\"?</string>
<string name="insulin_fiasp">Fiasp®</string>
<string name="insulin_novorapid">Novorapid®</string>
<string name="insulin_humalog">Humalog®</string>
<string name="insulin_actrapid">Actrapid®</string>
<string name="insulin_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin</string>
<string name="sensitivity_label">Tema: Sensitivitet plugin</string>
<string name="sensitivity_which">Hvilken sensitivitetsalgoritme har et konfigurerbart tidsintervall?</string>
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
<string name="sensitivityuam_which">Hvilken sensitivitets plugin må anvendes for å bruke UAM funksjonen?</string>
<string name="wrongcarbs_label">Tema: Feilaktig registrering av karbohydrater</string>
<string name="wrongcarbs_whattodo">Hva skal du gjøre hvis du har gjort en feilaktig registrering av karbohydrater?</string>
<string name="wrongcarbs_treatmentstab">I Behandlinger, slett den feilaktige registreringen og legg inn karbohydrater på nytt.</string>
<string name="wrongcarbs_addfakeinsulin">Legg inn falsk insulin ved å bruke prime/fyll funksjonen</string>
<string name="extendedcarbs_label">Tema: Mat med fett og protein</string>
<string name="extendedcarbs_handling">Hva skal du gjøre om maten inneholder store mengder fett og/eller proteiner?</string>
<string name="extendedcarbs_useextendedcarbs">Regn om fett og proteiner til karbohydrater og bruk eKarbo funksjonen.</string>
<string name="extendedcarbs_add">Regn om fett og proteiner til karbohydrater og legg det til bolus beregningen.</string>
<string name="extendedcarbs_useextendedbolus">Bruk forlenget bolus til å dekke inntaket av fett og proteiner.</string>
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html</string>
<string name="nsclient_label">Tema: Fjernovervåking</string>
<string name="nsclient_howcanyou">Hvordan kan du overvåke AAPS for ditt barn på avstand?</string>
<string name="nsclient_nightscout">Ved å bruke Nightscout.</string>
<string name="nsclient_dexcomfollow">Dexcom Follow app hvis du bruker Dexcom appen (bare for BS).</string>
<string name="nsclient_dexcomfollowxdrip">Dexcom Follow hvis du bruker xDrip appen.</string>
<string name="nsclient_xdripfollower">xDrip app kjører i følger-modus.</string>
<string name="nsclient_looponiphone">Loop app på iPhone.</string>
<string name="nsclient_spikeiphone">Spike app på iPhone.</string>
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
<string name="isf_label_exam">Tema: Insulin sensitivitetsfaktor (ISF)</string>
<string name="isf_increasingvalue">Høyere ISF verdier fører til mindre insulintilførsel når AAPS korrigerer for høyt BS.</string>
<string name="isf_decreasingvalue">Lavere ISF verdier fører til mindre insulintilførsel når AAPS korrigerer for høyt BS.</string>
<string name="isf_noeffect">Endring av ISF verdier har ingen effekt på mengden insulin som tilføres når AAPS korrigerer høyt BS.</string>
<string name="isf_preferences">Du må angi ISF i Innstillinger.</string>
<string name="isf_profile">Å endre ISF verdien i din profil er tilstrekkelig for å ta i bruk endringen.</string>
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/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/EN/Usage/Profiles.html</string>
<string name="ic_label_exam">Tema: Insulin-karbo (IK) forholdet</string>
<string name="ic_increasingvalue">Høyere IC forhold fører til at mindre insulin leveres for en gitt mengde karbohydrater.</string>
<string name="ic_decreasingvalue">Lavere IC forhold fører til at mindre insulin leveres for en gitt mengde karbohydrater.</string>
<string name="ic_noeffect">Hvis du har 0 COB, vil endring av IC forholdet føre til endring av insulinmengden som trengs for å korrigere ditt BS nivå.</string>
<string name="ic_different">IC vil være forskjellig hvis du regner en skive brød som 10g eller 12g.</string>
<string name="ic_meaning">IC betyr: Hvor mange brødenheter som dekkes av 1E insulin.</string>
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
<string name="profileswitch_label">Tema: Profilbytte</string>
<string name="profileswitch_pctwillchange"> Når man angir 90% i profilbytte…</string>
<string name="profileswitch_basalhigher">Basal vil være 10% høyere.</string>
<string name="profileswitch_basallower">Basal vil være 10% lavere.</string>
<string name="profileswitch_ichigher">IC verdien vil være 10% høyere.</string>
<string name="profileswitch_iclower">IC verdien vil være 10% lavere.</string>
<string name="profileswitch_isfhigher">ISF verdien vil være 10% høyere.</string>
<string name="profileswitch_isflower">ISF verdien vil være 10% lavere.</string>
<string name="profileswitch_overall">Du vil få omtrent 10% mindre insulin totalt.</string>
<string name="profileswitch_targethigher">Mål BS vil bli 10% høyere.</string>
<string name="profileswitch_targetlower">Mål BS vil bli 10% lavere.</string>
<string name="profileswitch_targetbottom">Bare laveste BS grenseverdi vil bli 10% lavere.</string>
<string name="profileswitch_hint1" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch</string>
<string name="profileswitchtime_iwant">Hvis du våkner 1t tidligere enn normalt, hvordan skal du varsle AAPS om endringen i døgnrytmen din?</string>
<string name="profileswitchtime_1">Gjøre et profilbytte med en tidsforskyvning på 1t</string>
<string name="profileswitchtime__1">Gjøre et profil bytte med en tidsforskyvning på -1t</string>
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
<string name="profileswitchtime_60">Gjør et profilbytte med en tidsforskyvning på 60</string>
<string name="profileswitchtime__60">Gjør et profilbytte med en tidsforskyvning på -60</string>
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
<string name="basalhelp_label">Tema: Hjelp med basaldoser</string>
<string name="basalhelp_where">Hvor finner du hjelp for basaldoser m. m.</string>
<string name="basalhelp_diabetesteam">Ditt diabetesteam</string>
<string name="basalhelp_google">Google</string>
<string name="basalhelp_facebook">Facebook</string>
<string name="other_medication_label">Annen medisinering</string>
<string name="other_medication_text">AAPS senker basalen for å øke glukosemengden i blodet. Medisiner av typen SGLT2-hemmere (glifloziner) kan motvirke den forventede økningen i BS og som kan resultere i livsfarlig insulinmangel eller ketoacidose (DKA). \nVanlige merker i markedet: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\n
Jeg lover herved å ALDRI ta slike medisiner samtidig som jeg bruker AAPS, eller jeg kommer til å ta en pause i looping så lenge jeg bruker slik medisin.</string>
</resources>

View file

@ -1,2 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_r1_code">Påminnelses R1</string>
<string name="alert_r2_code">Påminnelse R2</string>
<string name="alert_r3_code">Påminnelse R3</string>
<string name="alert_r4_code">Påminnelse R4</string>
<string name="alert_r7_code">Påminnelse R7</string>
<string name="alert_w31_code">Advarsel W31</string>
<string name="alert_w32_code">Advarsel W32</string>
<string name="alert_w33_code">Advarsel W33</string>
<string name="alert_w34_code">Advarsel W34</string>
<string name="alert_w36_code">Advarsel W36</string>
<string name="alert_w38_code">8Advarsel W38</string>
<string name="alert_w39_code">Advarsel W39</string>
<string name="alert_m20_code">Vedlikehold M20</string>
<string name="alert_m21_code">Vedlikehold M21</string>
<string name="alert_m22_code">Vedlikehold M22</string>
<string name="alert_m23_code">Vedlikehold M23</string>
<string name="alert_m24_code">Vedlikehold M24</string>
<string name="alert_m25_code">Vedlikehold M25</string>
<string name="alert_m26_code">Vedlikehold M26</string>
<string name="alert_m27_code">Vedlikehold M27</string>
<string name="alert_m28_code">Vedlikehold M28</string>
<string name="alert_m29_code">Vedlikehold M29</string>
<string name="alert_m30_code">Vedlikehold M30</string>
<string name="alert_e6_code">Feil E6</string>
<string name="alert_e10_code">Feil E10</string>
<string name="alert_e13_code">Feil E13</string>
</resources>

View file

@ -1,2 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_r7_description"><![CDATA[Mengde: <b>%1$d%%</b>\nVarighet: <b>%2$s t</b>]]></string>
<string name="alert_w31_description"><![CDATA[Ampullens innhold: <b>%1$s E</b>]]></string>
<string name="alert_w32_description">Bytt batteri.</string>
<string name="alert_w33_description">Angi tidspunkt/dato.</string>
<string name="alert_w34_description">Kontakt Accu-Chek kundestøtte.</string>
<string name="alert_w36_description"><![CDATA[Mengde: <b>%1$d%%</b><br/>\nVarighet: <b>%2$s t</b>]]></string>
<string name="alert_w38_description"><![CDATA[Angitt: <b>%1$s E</b><br/>Levert: <b>%2$s E</b>]]></string>
<string name="alert_m20_description">Sett inn ampulle.</string>
<string name="alert_m21_description">Bytt ampulle.</string>
<string name="alert_m22_description">Bytt batteri.</string>
<string name="alert_m23_description">Kontroller pumpestatus.</string>
<string name="alert_m24_description">Bytt infusjonssett.</string>
<string name="alert_m25_description">Kontakt Accu-Chek kundestøtte.</string>
<string name="alert_m26_description">Bytt ampulle.</string>
<string name="alert_m27_description">Restart nedlasting av data.</string>
<string name="alert_m28_description">Kontroller pumpestatus.</string>
<string name="alert_m29_description">Angi batteritype.</string>
<string name="alert_m30_description">Angi ampulle type.</string>
<string name="alert_e6_description">Bytt batteri og ampulle.</string>
<string name="alert_e10_description">Bytt ampulle.</string>
<string name="alert_e13_description">Bytt språk.</string>
</resources>

View file

@ -1,2 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_r1_title">Tilfør bolus</string>
<string name="alert_r2_title">Manglende bolus</string>
<string name="alert_r3_title">Alarmklokke</string>
<string name="alert_r4_title">Bytt infusjonssett</string>
<string name="alert_r7_title">Midlertidig basaldose fullført</string>
<string name="alert_w31_title">Lavt ampulleinnhold</string>
<string name="alert_w32_title">Batteri lavt</string>
<string name="alert_w33_title">Ugyldig klokkeslett/dato</string>
<string name="alert_w34_title">Slutt på garanti</string>
<string name="alert_w36_title">Midlertidig basaldose avbrutt</string>
<string name="alert_w38_title">Bolus avbrutt</string>
<string name="alert_w39_title">Lånetidsadvarsel</string>
<string name="alert_m20_title">Ampulle ikke satt inn</string>
<string name="alert_m21_title">Ampulle tom</string>
<string name="alert_m22_title">Batteri tomt</string>
<string name="alert_m23_title">Automatisk av - pumpe stoppet</string>
<string name="alert_m24_title">Tilstopping</string>
<string name="alert_m25_title">Lånetid over - drift stoppes</string>
<string name="alert_m26_title">Bytte av ampulle ikke fullført</string>
<string name="alert_m27_title">Nedlasting av data mislyktes</string>
<string name="alert_m28_title">Tidsavbrudd for pausemodus</string>
<string name="alert_m29_title">Batteritype ikke angitt</string>
<string name="alert_m30_title">Ampulletype ikke angitt</string>
<string name="alert_e6_title">Mekanisk feil</string>
<string name="alert_e10_title">Tilbakespolingsfeil</string>
<string name="alert_e13_title">Språkfeil</string>
</resources>

View file

@ -1,2 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="connection_failed">Tilkobling mislyktes</string>
<string name="connection_lost">Mistet forbindelsen</string>
<string name="pairing_rejected">Sammenkobling avvist</string>
<string name="socket_creation_failed">Mislykket opprettelse av socket tilkobling</string>
<string name="timeout">Tidsavbrudd</string>
<string name="maximum_number_of_bolus_type_already_running">Maksimalt antall bolusdoser som allerede går</string>
<string name="no_active_tbr_to_cancel">Ingen aktiv midlertidig basaldose å kansellere</string>
<string name="no_active_tbr_to_change">Ingen aktiv midlertidig basaldose å endre</string>
<string name="no_such_bolus_to_cancel">Ingen slik bolus til å avbryte</string>
<string name="pump_already_in_that_state_exception">Pumpe allerede i den tilstanden</string>
<string name="run_mode_not_allowed">Kjør modus ikke tillatt</string>
</resources>

View file

@ -1,2 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="objectives_button_back">Tilbake</string>
<string name="objectives_button_start">Start</string>
<string name="objectives_button_verify">Kontroller</string>
<string name="nth_objective">%1$d. Læringsmål</string>
<string name="objectivenotstarted">Læringsmål %1$d ikke startet</string>
<string name="objectivenotfinished">Læringsmål %1$d er ikke ferdig</string>
<string name="objectives_0_objective">Stiller inn utseende og overvåking for analyser av basaler og forholdstall</string>
<string name="objectives_0_gate">Kontroller at BS er tilgjengelig i Nightscout og at insulindata fra pumpen lastes opp</string>
<string name="objectives_openloop_objective">Starter med åpen loop</string>
<string name="objectives_openloop_gate">Kjør i \"Åpen Loop\" modus i noen dager og aktiver flere temp basaler. Konfigurer og aktiver flere midlertidige og default temp BS mål (f.eks. for Aktivitet eller Hypo behandling)</string>
<string name="objectives_maxbasal_objective">Forstå din åpen loop, inkludert den temp basal anbefalingen</string>
<string name="objectives_maxbasal_gate">Ut ifra hva du har erfart og lært, avgjør hva din max basal skal være og still den inn i både pumpen og AAPS innstillinger</string>
<string name="objectives_maxiobzero_objective">Begynn å bruk lukket loop med aktivert funksjon for stopping av insulin ved lavt BS</string>
<string name="objectives_maxiobzero_gate">Aktiver closed loop med max IOB = 0 i noen dager uten for mange episoder hvor systemet stopper insulintilførsel på grunn av lavt BS</string>
<string name="objectives_maxiob_objective">Finjustering av lukket loop med gradvis økende maks IOB over 0 og redusering av BS målverdi</string>
<string name="objectives_maxiob_gate">Kjør i noen dager og opplev minst en natt uten lavt BS alarmer før du begynner å redusere målverdi for BS</string>
<string name="objectives_autosens_objective">Juster om nødvendig basal og forholdstall, og deretter aktiverer du autosens</string>
<string name="objectives_autosens_gate">1 uke vellykket looping på dagtid hvor alle måltider (KH) angis</string>
<string name="objectives_ama_objective">Aktiver ekstra funksjoner for bruk på dagtid, slik som avansert måltidsassistent (AMA)</string>
<string name="objectives_smb_objective">Aktiver ekstra funksjoner for bruk på dagtid, slik som SMB (Super Micro Bolus)</string>
<string name="objectives_auto_objective">Aktiver Automatisering</string>
<string name="objectives_smb_gate">Du må lese wiki og øke din maxIOB for å få SMB til å fungere. Et godt utgangspunkt er maxIOB = gjennomsnittlig måltidsbolus + 3*max daglig basal</string>
<string name="objectives_auto_gate">Les dokumentasjonen på hvordan Automatisering virker. Lag din første enkle regel. I stedet for å utføre en behandling, få AAPS AAPS til å bare vise en melding. Kun når du er sikker på at Automatisering virker riktig kan du erstatte meldingsvarselet med en behandlingskommando. (https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)</string>
<string name="objectives_bgavailableinns">BS tilgjengelig i NS</string>
<string name="objectives_pumpstatusavailableinns">Pumpe status tilgjengelig i NS</string>
<string name="objectives_manualenacts">Manuell kommando</string>
<string name="accomplished">Utført: %1$s</string>
<string name="objectives_usage_objective">Lær hvordan du kontrollerer AndroidAPS</string>
<string name="objectives_usage_gate">Utfør forskjellige handlinger i AndroidAPS</string>
<string name="objectives_useprofileswitch">Angi profil 90% for 10 min (langt-trykk på profilnavn i Oversikt)</string>
<string name="objectives_usedisconnectpump">Simuler dusjing. Frakoble pumpen i 1t (langt trykk på Åpen Loop)</string>
<string name="objectives_usereconnectpump">... og koble til igjen på samme måte</string>
<string name="objectives_usetemptarget">Opprett egendefinerte midlertidige BS mål med 10 min varighet (langt-trykk på gjeldende mål)</string>
<string name="objectives_useactions">I Konfigurasjonsverktøyet aktiverer du Hendelser plugin, og gjør det synlig og viser innholdet fra menyen i øverste linje</string>
<string name="objectives_useloop">Vis innholdet i Loop plugin</string>
<string name="objectives_usescale">Test skaleringsfunksjonen ved et langt trykk på BS grafen</string>
<string name="objectives_button_enter">Angi</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Hvis du har minst 3 måneder erfaring med andre lukkede loop systemer kan du kanskje kvalifisere for en kode som lar deg hoppe over Læringsmålene. Se https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives for mer detaljer.</string>
<string name="codeaccepted">Kode akseptert</string>
<string name="codeinvalid">Kode ugyldig</string>
<string name="objectives_exam_objective">Bevis kunnskapen din</string>
<string name="objectives_exam_gate">Studer og besvare spørsmålene riktig</string>
<string name="answerdisabledto">Besvarelser deaktivert til: %1$s</string>
<string name="wronganswer">Feil svar!</string>
<string name="unfinshed_button">Neste uferdig</string>
<string name="requestcode">Be om kode: %1$s</string>
<string name="objectives_hint">(kontroller alle riktige svar)</string>
<string name="disconnectpump_hint" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-to-do-when-taking-a-shower-or-bath</string>
<string name="usetemptarget_hint" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#the-homescreen</string>
<string name="useaction_hint" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#config-builder</string>
<string name="usescale_hint" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#the-homescreen</string>
<string name="notconnected">Ikke koblet til Internett</string>
<string name="failedretrievetime">Feil ved henting av tid</string>
<string name="requirementnotmet">Læringmålets krav er ikke oppfylt</string>
<plurals name="objective_days">
<item quantity="one">%1$d dag</item>
<item quantity="other">%1$d dager</item>
</plurals>
<plurals name="objective_hours">
<item quantity="one">%1$d time</item>
<item quantity="other">%1$d timer</item>
</plurals>
<plurals name="objective_minutes">
<item quantity="one">%1$d minutt</item>
<item quantity="other">%1$d minutter</item>
</plurals>
</resources>

File diff suppressed because it is too large Load diff

View file

@ -21,6 +21,7 @@
<string name="description_food">Wyświetla dane posiłków zdefiniowanych w Nightscout</string>
<string name="description_insulin_rapid">Profil insulinowy dla Humalog i Novorapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Profil insulinowy dla Fiasp</string>
<string name="description_insulin_lyumjev">Profil insulinowy dla Lyumjev</string>
<string name="description_insulin_free_peak">Pozwala na określenie czasu wartości szczytowej działania insuliny i powinno być używane tylko przez zaawansowanych użytkowników</string>
<string name="description_loop">Włącz lub wyłącz działanie pętli.</string>
<string name="description_ns_client">Synchronizuje twoje dane z Nightscout</string>
@ -84,12 +85,12 @@
<string name="overview">Przegląd</string>
<string name="nsprofile">Profil Nightscout</string>
<string name="simpleprofile">Prosty profil</string>
<string name="treatments">Leczenie</string>
<string name="treatments">Terapia</string>
<string name="virtualpump">Pompa wirtualna</string>
<string name="careportal">PortalOpieki</string>
<string name="configbuilder_pump">Pompa</string>
<string name="configbuilder_pump_description">Którą pompę chcesz wykorzystać do AndroidAPS?</string>
<string name="configbuilder_treatments">Leczenie</string>
<string name="configbuilder_treatments">Terapia</string>
<string name="configbuilder_treatments_description">Która wtyczka powinna być używana do obsługi leczenia?</string>
<string name="configbuilder_profile">Profil</string>
<string name="configbuilder_profile_description">Który profil będzie używany w AndroidAPS?</string>
@ -113,7 +114,7 @@
<string name="treatmentdeliveryerror">Błąd podania bolusa</string>
<string name="overview_newtempbasal_basalpercent">Wartość bazy [%]</string>
<string name="setbasalquestion">Akceptuj nową bazę tymczasową:</string>
<string name="overview_treatment_label">Leczenie</string>
<string name="overview_treatment_label">Terapia</string>
<string name="overview_calculator_label">Kalkulator</string>
<string name="constraintapllied">Ograniczenie nałożone!</string>
<string name="sms_bolus">Bolus:</string>
@ -156,6 +157,7 @@
<string name="overview_tempbasal_button">BazaTymczasowa</string>
<string name="overview_extendedbolus_button">Bolus Przedłużony</string>
<string name="configbuilder_nightscoutversion_label">Wersja Nightscout:</string>
<string name="missing_carbs">Brakuje %1$d g</string>
<string name="exported">Ustawienia wyeksportowane</string>
<string name="export_to">Eksportuj ustawienia do</string>
<string name="import_from">Importuj ustawienia z</string>
@ -171,6 +173,11 @@
<string name="password_preferences_decrypt_prompt">Zostaniesz poproszony o hasło główne, które jest potrzebne do odszyfrowania zaimportowanych preferencji.</string>
<string name="preferences_export_canceled">Eksportowanie anulowane! Ustawienia NIE zostały wyeksportowane!</string>
<string name="preferences_import_canceled">Import anulowany! Ustawienia NIE zostały zaimportowane!</string>
<string name="preferences_import_impossible">Nie można zaimportować ustawień!</string>
<string name="goto_main_try_again">Wróć do ekranu głównego i spróbuj ponownie.</string>
<string name="old_master_password">Stare hasło główne</string>
<string name="different_password_used">Ten plik zaszyfrowano innym hasłem głównym. Podaj te stare hasło główne którego używałeś do eksportu, aby odszyfrować plik.</string>
<string name="master_password_will_be_replaced">W efekcie udanego importu bieżące hasło główne ZOSTANIE ZASTĄPIONE starym hasłem głównym z importowanych ustawień!</string>
<string name="preferences_import_list_title">Wybierz plik do zaimportowania</string>
<string name="check_preferences_before_import">Proszę sprawdzić ustawienia przed importem:</string>
<string name="check_preferences_cannot_import">Ustawienia nie mogą być zaimportowane!</string>
@ -232,6 +239,10 @@
<string name="smscommunicator_remotebolusmindistance_summary">Minimalna liczba minut która musi upłynąć pomiędzy jednym a drugim zdalnie podawanym bolusem</string>
<string name="smscommunicator_remotebolusmindistance">Ile co najmniej minut musi upłynąć pomiędzy jednym a drugim bolusem</string>
<string name="smscommunicator_remotebolusmindistance_caveat">Dla twojego bezpieczeństwa, aby zmienić to ustawienie musisz dodać co najmniej 2 numery telefonów.</string>
<string name="bolusdelivered">Bolus %1$.2f U podany prawidłowo</string>
<string name="bolusrequested">Zamierzam podać %1$.2f U</string>
<string name="smscommunicator_bolusdelivered">Bolus %1$.2f U podany prawidłowo</string>
<string name="smscommunicator_mealbolusdelivered">Pomyślnie podano %1$.2f U bolusa posiłkowego</string>
<string name="smscommunicator_mealbolusdelivered_tt">Cel %1$s na %2$d minut</string>
<string name="smscommunicator_tt_set">Pomyślnie ustawiono cel %1$s na %2$d minuty</string>
<string name="smscommunicator_tt_canceled">Pomyślnie anulowano cel tymczasowy</string>
@ -255,7 +266,9 @@
<string name="smscommunicator_reconnect">Pompa ponownie podłączona</string>
<string name="smscommunicator_remotecommandnotallowed">Zdalne komendy nie są dozwolone</string>
<string name="smscommunicator_remotebolusnotallowed">Bolus zdalny niedostępny. Spróbuj ponownie później.</string>
<string name="smscommunicator_basalreplywithcode">Aby rozpocząć bazę %1$.2f U/h przez %2$d min. odpowiedz kodem %3$s</string>
<string name="smscommunicator_profilereplywithcode">Aby przełączyć profil na %1$s %2$d%% odpowiedz kodem %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Aby rozpocząć bolus przedłużony %1$.2f U przez %2$d min. odpowiedz kodem %3$s</string>
<string name="smscommunicator_carbsreplywithcode">Aby wprowadzić %1$dg o %2$s odeślij w SMS kod %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Aby rozpocząć bolus przedłużony %1$d%% przez %2$d min. odpowiedz kodem %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Aby wstrzymać pętle na %1$d minut odpowiedz kodem %2$s</string>
@ -264,6 +277,7 @@
<string name="smscommunicator_loopdisablereplywithcode">Aby wyłączyć pętlę odpowiedz kodem %1$s</string>
<string name="smscommunicator_tempbasalset">Tymczasowa baza %1$.2fU/h przez %2$d min rozpoczęta</string>
<string name="smscommunicator_extendedset">Bolus przedłużony %1$.2fU na %2$d min. rozpoczęty pomyślnie</string>
<string name="smscommunicator_carbsset">Pomyślnie wprowadzono %1$d g węglowodanów</string>
<string name="smscommunicator_carbsfailed">Próba wprowadzenia %1$dg węglowodanów nie powiodła się</string>
<string name="smscommunicator_tempbasalset_percent">Tymczasowa baza %1$d%% przez %2$d min. pomyślnie rozpoczęta</string>
<string name="smscommunicator_tempbasalfailed">Rozpoczęcie tymczasowej bazy nie powiodło się</string>
@ -395,7 +409,7 @@
<string name="child">Dziecko</string>
<string name="teenage">Nastolatek</string>
<string name="adult">Osoba dorosła</string>
<string name="resistantadult">Osoba dorosła insulino odporna</string>
<string name="resistantadult">Osoba dorosła insulinooporna</string>
<string name="patientage_summary">Proszę wybierz wiek pacjenta w celu ustawienia wartości limitów bezpieczeństwa</string>
<string name="patient_name">Nazwa pacjenta</string>
<string name="patient_name_summary">Proszę podać nazwę pacjenta lub pseudonim w celu rozróżnienia pomiędzy różnymi konfiguracjami</string>
@ -523,6 +537,7 @@
<string name="free_peak_oref">Swobodny-Pik Oref</string>
<string name="rapid_acting_oref">Szybko-Działający Oref</string>
<string name="ultrarapid_oref">Ultra-Szybki Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA %1$f zbyt krótki - przyjmuję %2$f w zamian!</string>
<string name="activate_profile">Aktywuj profil</string>
<string name="invalid">NIEPRAWIDŁOWY</string>
@ -550,6 +565,7 @@
<string name="pump_unreachable">Pompa nieosiągalna</string>
<string name="missed_bg_readings">Pominięte odczyty BG</string>
<string name="raise_notifications_as_android_notifications">Użyj powiadomień systemowych dla alertów i powiadomień</string>
<string name="gradually_increase_notification_volume">Stopniowo zwiększaj głośność ostrzeżeń i powiadomień</string>
<string name="localalertsettings_title">Alarmy lokalne</string>
<string name="enable_missed_bg_readings_alert">Alarm, jeśli nie są odbierane odczyty BG</string>
<string name="enable_pump_unreachable_alert">Alarm, gdy pompa jest nieosiągalna</string>
@ -638,8 +654,9 @@
<string name="enablesmbwithtemptarget">Włącz SMB z tymczasowym poziomem docelowym (TT)</string>
<string name="enablesmbwithtemptarget_summary">Włącz SMB gdy tymczasowy poziom docelowy (TT) jest aktywny (TT WkrótcePosiłek, TT ćwiczenia)</string>
<string name="enablesmbwithhightemptarget">Włącz SMB z wysokim tymczasowym poziomem docelowym</string>
<string name="enablesmbwithhightemptarget_summary">Włącz SMB, gdy aktywowano wysoki cel tymczasowy (Ćwiczenia, powyżej 100 mg/dl lub 5, 5 mmol/l)</string>
<string name="overview_insulin_label">Insulina</string>
<string name="overview_carbs_label">Węglowod.</string>
<string name="overview_carbs_label">Węglowodany</string>
<string name="overview_buttons_selection">Przyciski</string>
<string name="show_calibration_button_summary">Wysyła kalibrację do xDrip+ lub otwartego okna kalibracji G5</string>
<string name="show_cgm_button_summary">Otwiera xDrip+, przycisk \"cofnij\" przywraca do AAPS</string>
@ -671,6 +688,7 @@
<string name="do_not_bolus_record_only">Nie podawaj bolusa, tylko zapisz rekord</string>
<string name="category">Kategoria</string>
<string name="subcategory">Podkategoria</string>
<string name="bolusrecordedonly">Bolus zostanie jedynie odnotowany (nie będzie podany przez pompę)</string>
<string name="ns_autobackfill_summary">Automatycznie wypełnij brakujące BG z NS</string>
<string name="loop_smbsetbypump_label">SMB ustawiony przez pompę</string>
<string name="overview_show_activity">Aktywność</string>
@ -782,11 +800,14 @@
<string name="bgsourcesetup">Skonfiguruj źródło BG</string>
<string name="setupwizard_profile_description">Proszę wybrać źródło profilu. Jeśli pacjent jest dzieckiem, należy skorzystać z profilu Nightscout. Jeśli nikt nie obserwuje twojej terapii przez Nightscout, prawdopodobnie wolisz profil Lokalny. Przypomnienie - wybierasz tylko źródło profilu. Musisz go później aktywować za pomocą \"Przełącznika profilu\"</string>
<string name="setupwizard_aps_description">Wybierz jeden z dostępnych algorytmów. Ułożone są one od najstarszych do najnowszych. Nowszy algorytm jest zazwyczaj bardziej wydajny i agresywny. Jeśli jesteś nowym użytkownikiem, lepiej zacznij od zaawansowanego asystenta posiłku AMA, a nie od najnowszego algorytmu. Zapoznaj się koniecznie z dokumentacją OpenAPS przed wybraniem odpowiedniego algorytmu i jego konfiguracją.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Oczekiwanie na połączenie RileyLink…\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Uwaga:</b> Możesz kontynuować konfigurację po zainicjowaniu pompy.\n</string>
<string name="startobjective">Rozpocznij swoje pierwsze Zadanie</string>
<string name="permission">Uprawnienia</string>
<string name="askforpermission">Zapytaj o uprawnienia</string>
<string name="needsystemwindowpermission">Aplikacja wymaga uprawnienia systemowego okna dla powiadomień</string>
<string name="needlocationpermission">Aplikacja wymaga dostępu do lokalizacji dla zarządzania bluetoothem i identyfikacją Wi-Fi</string>
<string name="needstoragepermission">Aplikacja wymaga zgody na zapis do pamięci, aby móc przechować pliki logów i eksportować ustawienia</string>
<string name="request">Żądanie</string>
<string name="insulinsourcesetup">Skonfiguruj wtyczkę insuliny</string>
<string name="exit">Wyjście</string>
@ -842,6 +863,7 @@
<string name="code_compare">Czy kody wyświetlone na tym urządzeniu i na twojej pompie pasują?</string>
<string name="insight_pairing">Parowanie Insight</string>
<string name="insight_local">Accu-Chek Insight</string>
<string name="insight_delivered">podano %1$.2f U / %2$.2f U</string>
<string name="insight_alert_formatter">%1$s: %2$s</string>
<string name="tube_changed">Dren zmieniony</string>
<string name="pump_time_updated">Czas pompy uaktualniony</string>
@ -899,6 +921,7 @@
<string name="short_status_extended">Przedłużony: %1$.2f / %2$.2f U na %3$d min</string>
<string name="short_status_multiwave">Multiwave (zwykły + przedłużony): %1$.2f / %2$.2f U for %3$d min</string>
<string name="short_status_tdd">TDD: %1$.2f</string>
<string name="short_status_reservoir">Zbiornik: %1$.2f U</string>
<string name="short_status_battery">Bat.: %1$d%%</string>
<string name="max_recovery_duration">Max. czas odzyskiwania [s]</string>
<string name="min_recovery_duration">Min. czas odzyskiwania [s]</string>
@ -1041,6 +1064,8 @@
<string name="sendsmsactionlabel">Wyślij SMS: %1$s</string>
<string name="sendsmsactiondescription">Wyślij SMS do wszystkich numerów</string>
<string name="sendsmsactiontext">Wyślij SMS z tekstem</string>
<string name="cobvsiob">COB vs IOB</string>
<string name="bolusconstraintappliedwarn">Zastosowano ograniczenie bolusa: %1$.2f U do %2$.2f U</string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Wykryto powolne wchłanianie węglowodanów: %2$d%% czasu. Sprawdź ponownie swoje obliczenia. COB mogły być przeszacowane przez co mogło być podane zbyt dużo insuliny !!!!!</font>]]></string>
<string name="partialboluswizard">Dostarcz tą część dawki insuliny z wyniku kalkulatora bolusa [%]</string>
<string name="deliverpartofboluswizard">Kreator bolusa wykonuje obliczenia, ale tylko ta część obliczonej dawki insuliny jest dostarczana. Pomocne z algorytmem SMB.</string>
@ -1090,6 +1115,7 @@
<string name="nav_survey">Ankieta</string>
<string name="invalidage">Nieprawidłowy wpis wieku</string>
<string name="invalidweight">Nieprawidłowy wpis wagi</string>
<string name="invalidpct">Nieprawidłowa wartość procentowa</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Od: <b>%2$02d%%</b> Cel: <b>%3$02d%%</b> Do: <b>%4$02d%%</b>]]></string>
<string name="average">Średnio</string>
<string name="tir">TIR</string>
@ -1116,10 +1142,15 @@
<string name="loop_tbrexecution_time_label">Czas wykonywania bazy tymczasowej</string>
<string name="insight_alert_notification_channel">Alarmy pompy Insight</string>
<!-- SMS Communicator & OTP Authenticator -->
<string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">z aplikacji Authenticator dla: %1$s, z doklejonym PIN-em</string>
<string name="smscommunicator_otp_enabled">Włącz uwierzytelnianie</string>
<string name="smscommunicator_otp_enabled_summary">Uwierzytelnianie komend za pomocą haseł jednorazowych generowanych przez aplikację Google Authenticator lub podobnych aplikacji 2FA.</string>
<string name="smscommunicator_otp_pin">Dodatkowy obowiązkowy PIN na końcu tokenu</string>
<string name="smscommunicator_otp_pin_summary">Dodatkowe cyfry, które powinny być zapamiętywane i przyklejone na końcu każdego wygenerowanego hasła jednorazowego</string>
<string name="smscomunicator_tab_otp_label">Ustawienia uwierzytelnienia</string>
<string name="smscommunicator_code_verify_label">Kod do sprawdzenia:</string>
<string name="smscommunicator_code_verify_hint">OTP + PIN</string>
<string name="smscommunicator_code_verify_info">Kod weryfikacyjny składa się z 6 cyfr wyświetlanych przez aplikację uwierzytelniającą (tzw. OTP) po których następują co najmniej 3 cyfry obowiązkowego PIN-u.</string>
<string name="smscommunicator_otp_verify_label">OTP do sprawdzenia:</string>
<string name="smscommunicator_otp_reset_btn">Resetuj uwierzytelnianie</string>
<string name="smscommunicator_otp_reset_title">Resetuj klucz uwierzytelniania</string>
@ -1154,5 +1185,38 @@
<string name="availableprofile">Dostępny profil</string>
<string name="profiletype">Typ profilu</string>
<string name="formatwithtdd">Wiek: %1$.0f TDD: %2$.0f U</string>
<string name="formatwittddandpct">Wiek: %1$.0f TDD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Wiek: %1$.0f Waga: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% bazy</string>
<string name="dpvdefaultprofile">Domyślny profil DPV</string>
<string name="open_humans">Open Humans</string>
<string name="finishing_open_humans_setup">Kończenie konfiguracji Open Humans…</string>
<string name="this_may_take_a_while">To może chwilę potrwać. Nie wyłączaj telefonu ani tej wtyczki.</string>
<string name="setup_finished">Konfiguracja zakończona</string>
<string name="your_phone_will_upload_data">Twój telefon wkrótce prześle dane do Open Humans.</string>
<string name="your_phone_is_upload_data">Twój telefon przesyła teraz dane do Open Humans.</string>
<string name="setup_failed">Konfiguracja nie powiodła się</string>
<string name="there_was_an_error">Wystąpił błąd. Spróbuj zalogować się ponownie, aby kontynuować. Przepraszamy &amp; dziękujemy!</string>
<string name="open_humans_terms">To jest narzędzie open source, które skopiuje Twoje dane do projektu Open Humans. Nie zachowujemy żadnych praw do dzielenia się Twoimi danymi z osobami trzecimi bez Twojej wyraźnej zgody. Dane, które otrzymują projekt i aplikacja są identyfikowane za pomocą losowego identyfikatora użytkownika i będą bezpiecznie przesyłane na konto Open Humans za Twoją zgodą dla tego procesu. Możesz zatrzymać przesyłanie i usunąć swoje już przesłane dane w dowolnym momencie za pośrednictwem strony www.openhumans.org.</string>
<string name="i_understand_and_agree">Rozumiem i zgadzam się.</string>
<string name="login">Zaloguj się</string>
<string name="logout">Wyloguj się</string>
<string name="oh_logout_confirmation">Czy na pewno chcesz się wylogować i zaprzestać przekazywania danych na rzecz nauki?</string>
<string name="project_member_id">Identyfikator członka projektu: %s</string>
<string name="queue_size">Rozmiar kolejki: %d</string>
<string name="terms_of_use">Warunki użytkowania</string>
<string name="not_logged_in">Nie zalogowano</string>
<string name="you_need_to_accept_the_of_use_first">Najpierw musisz zaakceptować warunki użytkowania.</string>
<string name="successfully_logged_in">Pomyślnie zalogowano</string>
<string name="setup_will_continue_in_background">Konfiguracja zostanie teraz zakończona w tle. Dziękujemy za przesłanie swoich danych.\n\nProszę nie wyłączaj telefonu ani tej wtyczki jeszcze przez chwilę, aby umożliwić dokończenie się konfiguracji.</string>
<string name="completing_login">Kończenie logowania…</string>
<string name="donate_your_data_to_science">Przekaż swoje dane na rzecz nauki</string>
<string name="open_humans_short">OH</string>
<string name="you_have_been_signed_out_of_open_humans">Zostałeś wylogowany z Open Humans</string>
<string name="click_here_to_sign_in_again_if_this_wasnt_on_purpose">Kliknij tutaj, aby zalogować się ponownie, jeśli wylogowanie nie było celowe.</string>
<string name="only_upload_if_connected_to_wifi">Prześlij tylko jeśli połączono poprzez WiFi</string>
<string name="only_upload_if_charging">Prześlij tylko gdy telefon jest ładowany</string>
<string name="worker_state">Stan procesu: %s</string>
<string name="uploaded_data">Przesłane dane</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Następujące dane zostaną przesłane na konto Open Humans: wartości Glikemii, bolusy, węglowodany, zdarzenia z portalu opieki (z wyjątkiem notatek), rozszerzone bolusy, przełączenia profilu, całkowite dawki dobowe, bazy tymczasowe, cele tymczasowe, preferencje, wersja aplikacji, model urządzenia i wymiary ekranu. Dane niejawne lub prywatne, takie jak adres URL strony Nightscout lub klucz autoryzacji API, nie zostaną przesłane.</string>
</resources>

View file

@ -21,6 +21,7 @@
<string name="description_food">Exibe as predefinições de comida definidas no Nightscout</string>
<string name="description_insulin_rapid">Predefinição de Insulina Humalog e NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Predefinição de Insulina Fiasp</string>
<string name="description_insulin_lyumjev">Predefinição para Insulina Lyumjev</string>
<string name="description_insulin_free_peak">Permite definir o pico de atividade da insulina e deve ser usado somente por usuários avançados</string>
<string name="description_loop">Activar ou desactivar a aplicação que desencadeia o loop.</string>
<string name="description_ns_client">Sincroniza os seus dados com o Nightscout</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Oref Pico-Livre</string>
<string name="rapid_acting_oref">Oref Acção Rápida</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">Duração de Acção da Insulina (DIA) de %1$f demasiado curto - corrigido para %2$f!</string>
<string name="activate_profile">Activar perfil</string>
<string name="invalid">INVÁLIDO</string>
@ -1141,6 +1143,7 @@
<string name="smscommunicator_otp_enabled_summary">Autenticar comandos usando Uma-Senha-Única que sejam geradas pelo Google Authenticator ou app 2FA similar.</string>
<string name="smscommunicator_otp_pin_summary">Dígitos adicionais que devem ser memorizados e colados no final de cada Uma-Senha-Única que seja gerada</string>
<string name="smscomunicator_tab_otp_label">Configuração do Autenticador</string>
<string name="smscommunicator_code_verify_label">Código para verificar:</string>
<string name="smscommunicator_otp_verify_label">OTP para verificar:</string>
<string name="smscommunicator_otp_reset_btn">Repor Autenticadores</string>
<string name="smscommunicator_otp_reset_title">Repor Chave Autenticador</string>

View file

@ -535,6 +535,7 @@
<string name="free_peak_oref">Oref Vârf-Liber</string>
<string name="rapid_acting_oref">Oref Insulină-Rapidă</string>
<string name="ultrarapid_oref">Oref Insulină-UltraRapidă</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA din %1$f prea scurtă - se folosește %2$f în schimb!</string>
<string name="activate_profile">Activează profil</string>
<string name="invalid">INVALID</string>

View file

@ -13,7 +13,7 @@
<string name="reset_db_confirm">Вы действительно хотите обнулить базы данных?</string>
<string name="nav_exit">Выход</string>
<string name="ns_sync_use_absolute_title">Всегда пользуйтесь абсолютными величинами для базала</string>
<string name="alert_dialog_storage_permission_text">Пожалуйста перезагрузите телефон или перезапустите AndroidAPS из системных настроек \иначе AndroidAPS не будет вести лог (важно для отслеживания и проверки алгоритмов)!</string>
<string name="alert_dialog_storage_permission_text">Пожалуйста перезагрузите телефон или перезапустите AndroidAPS из системных настроек, иначе AndroidAPS не будет вести лог (важно для отслеживания и проверки алгоритмов)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">Это устройство не поддерживает меню оптимизации батареи - могут быть проблемы с производительностью.</string>
<string name="description_actions">Кнопки быстрого доступа к некоторым распространенным настройкам</string>
<string name="description_config_builder">Применяется для настройки активных плагинов</string>
@ -21,6 +21,7 @@
<string name="description_food">Показывает предварительные настройки приема пищи из Nightscout</string>
<string name="description_insulin_rapid">Предустановки для Humalog и Novorapid / Novolog</string>
<string name="description_insulin_ultra_rapid">Предустановки для Fiasp</string>
<string name="description_insulin_lyumjev">Параметры Lyumjev</string>
<string name="description_insulin_free_peak">Позволяет самостоятельно задавать пик активности инсулина - только для опытных пользователей</string>
<string name="description_loop">Активировать или деактивировать запуск цикла.</string>
<string name="description_ns_client">Синхронизирует данные с Nightscout</string>
@ -32,8 +33,8 @@
<string name="description_profile_local">Определите профиль, доступный в автономном режиме.</string>
<string name="description_profile_nightscout">Содержит профиль, заданный в Nightscout</string>
<string name="description_profile_simple">Определите профиль только в одном блоке времени.</string>
<string name="description_pump_combo">Интеграция с помпой Accu-Chek Combo, требует наличия установленного алгоритма</string>
<string name="description_pump_mdi">Интеграция с помпой для тех, кто делает многочисленные подколки для компенсации диабета</string>
<string name="description_pump_combo">Интеграция с помпой Accu-Chek Combo, требует наличия утилиты Ruffy</string>
<string name="description_pump_mdi">Интеграция с помпой для тех, кто для компенсации диабета пользуется инъекциями шприц-ручек</string>
<string name="description_pump_virtual">Интеграция с помпами, еще не имеющими драйвера (незамкнутый цикл)</string>
<string name="description_sensitivity_aaps">Чувствительность вычисляется аналогично алгоритму oref0, но можно включить период прошлого. Минимальное усвоение углеводов вычисляется на основе макс усвоения из настроек.</string>
<string name="description_sensitivity_oref1">Чувствительность рассчитывается на основе данных за прошедшие 8 часов и (неусвоенные) углеводы не учитываются после времени указанного в настройках. Плагин также вычисляет UAM.</string>
@ -55,7 +56,7 @@
<string name="treatments_iobactivitytotal_label_string">Общая активность IOB:</string>
<string name="tempbasals_realduration_label_string">длит:</string>
<string name="tempbasals_netratio_label_string">соотношение:</string>
<string name="tempbasals_netinsulin_label_string">инс:</string>
<string name="tempbasals_netinsulin_label_string">инсулин:</string>
<string name="tempbasals_iob_label_string">IOB: активный инсулин</string>
<string name="tempbasals_iobtotal_label_string">общий IOB</string>
<string name="treatments_wizard_bg_label">гликемия</string>
@ -105,7 +106,7 @@
<string name="loop_aps_label">Система ИПЖ</string>
<string name="loop_constraintsprocessed_label">после наложенных ограничений</string>
<string name="loop_tbrsetbypump_label">Временный базал определяется помпой</string>
<string name="openapsma_lastenact_label">Последнее предпринятое</string>
<string name="openapsma_lastenact_label">Последнее выполненное</string>
<string name="noapsselected">APS не выбрана или не выдала результат</string>
<string name="safety">безопасность</string>
<string name="openapsma_disabled">модуль не активен</string>
@ -154,7 +155,7 @@
<string name="careportal_newnstreatment_glucosetype">тип глюкозы</string>
<string name="noprofile">профиль еще не загружен из NS</string>
<string name="overview_tempbasal_button">ВремБазал</string>
<string name="overview_extendedbolus_button">расширенный болюс</string>
<string name="overview_extendedbolus_button">Пролонгированный болюс</string>
<string name="configbuilder_nightscoutversion_label">версия Nightscout:</string>
<string name="missing_carbs">Не хватает %1$d г</string>
<string name="exported">настройки экспортированы</string>
@ -257,7 +258,7 @@
<string name="smscommunicator_loopisdisabled">зцикл не работает</string>
<string name="smscommunicator_loopisenabled">зцикл работает</string>
<string name="valuelimitedto">%1$.2f ограничено до %2$.2f</string>
<string name="valueoutofrange">Величина %1$s недопустима</string>
<string name="valueoutofrange">Значение %1$s недопустимо</string>
<string name="smscommunicator_pumpconnectwithcode">Чтобы подсоединить помпу ответьте кодом %1$s</string>
<string name="smscommunicator_pumpconnectfail">Ошибка подключения к помпе</string>
<string name="smscommunicator_pumpdisconnectwithcode">Для разъединения с помпой на %1d мин ответьте кодом %2$s</string>
@ -300,7 +301,7 @@
<string name="correctionbous">коррекция</string>
<string name="actions">действия</string>
<string name="ns_upload_only">только передача в NS (синхронизация отсутствует)</string>
<string name="ns_upload_only_summary">только передача в NS. работает в SGV только если выбран местный источник вроде xdrip. не работает в профилях при действующем профиле NS</string>
<string name="ns_upload_only_summary">только передача в NS. Не работает в SGV пока не выбран местный источник вроде xdrip. Не работает в Профилях при действующем профиле NS.</string>
<string name="pumpNotInitialized">помпа не инициализирована</string>
<string name="primefill">прайм/заполнение</string>
<string name="fillwarning">убедитесь что количество соответствует характеристикам вашей инфузионной системы</string>
@ -358,7 +359,7 @@
<string name="smscommunicator_shortname">SMS</string>
<string name="short_tabtitles">сокращенные имена табул</string>
<string name="always_use_shortavg">всегда используйте укороченное среднее приращение вместо простого</string>
<string name="always_use_shortavg_summary">полезно когда данные из нефильтруемых источников вроде Xdrip зашумляются</string>
<string name="always_use_shortavg_summary">Полезно когда данные из нефильтрованных источников вроде xDrip+ начинают \"шуметь\".</string>
<string name="profile">профиль</string>
<string name="openapsama_max_daily_safety_multiplier_summary">значение по умолчанию:3 Это ключевой ограничитель безопасности OpenAPS. Он ограничивает величину вашего базала максимум до 3x максимума. Вам вероятно не понадобится менять эту величину но вам следует понимать, что она входит в формулу дуэта \"максимум 3x ежедневное; 4x текущее\"</string>
<string name="openapsama_current_basal_safety_multiplier_summary">значение по умолчанию: 4 . Это вторая половина обеспечения безопасности OpenAPS из дуэта \"максимум 3x ежедневное; 4x текущее\" Означает что ваша база независимо от установок помпы не может быть выше чем это число умноженное на текущее значение базала. Ограничение для того, чтобы предотвратить вторжение в опасную зону из-за высокого уровня установленных значений базы без понимания алгоритма работы приложения. Большинству людей никогда не потребуется изменять это значение, скорее всего нужно поменять другие настройки если вы чувствуете, что вам мешает это ограничение.</string>
@ -374,7 +375,7 @@
<string name="send_calibration">Отправить калибровку %1$.1f на xDrip?</string>
<string name="xdripnotinstalled">xdrip+ не установлен</string>
<string name="calibrationsent">калибровка передается на xdrip</string>
<string name="smscommunicator_calibrationsent">калибровка отправлена. в xdrip должен быть активирован прием</string>
<string name="smscommunicator_calibrationsent">Калибровка отправлена. Активируйте прием в xDrip+.</string>
<string name="smscommunicator_calibrationfailed">xdrip не получает калибровок</string>
<string name="pumpsuspended">Работа помпы остановлена</string>
<string name="executing">выполнение</string>
@ -478,7 +479,7 @@
<string name="ns_noupload">данные не передаются в NS</string>
<string name="ns_noupload_summary">данные передаваемые в NS не доходят. AAPS соединяется с NS но изменения туда не вносятся</string>
<string name="overview_extendedbolus_cancel_button">Отмена удлиненного болюса</string>
<string name="careportal_sensorage_label">сенсор пропаботал</string>
<string name="careportal_sensorage_label">Сенсор проработал</string>
<string name="careportal_canulaage_label">Катетер помпы проработал</string>
<string name="careportal_insulinage_label">Инсулин проработал</string>
<string name="doprofileswitch">Переключить профиль</string>
@ -508,7 +509,7 @@
<string name="careportal_pbage_label_short">ВозрБат</string>
<string name="openaps_short">OAPS</string>
<string name="uploader_short">ЗАГРУЗ</string>
<string name="basal_short">БАЗ</string>
<string name="basal_short">БАЗАЛ</string>
<string name="virtualpump_extendedbolus_label_short">УДЛИНН</string>
<string name="keep_screen_on_title">Не отключать экран</string>
<string name="keep_screen_on_summary">Не давать системе Android отключать экран. Это увеличит потребление энергии при отключенной сети питания.</string>
@ -535,6 +536,7 @@
<string name="free_peak_oref">Свободный от пиков Oref</string>
<string name="rapid_acting_oref">Быстро действующий Oref</string>
<string name="ultrarapid_oref">Сверхбыстрый Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">Значение длительности работы инс %1$f слишком мало - применено %2$f!</string>
<string name="activate_profile">АКТИВИРОВАТЬ ПРОФИЛЬ</string>
<string name="invalid">НЕВЕРНО</string>
@ -558,7 +560,7 @@
<string name="shortprotein">Белки</string>
<string name="shortfat">Жиры</string>
<string name="active"><![CDATA[<Active>]]></string>
<string name="executingrightnow">Команда сейчас выполняется</string>
<string name="executingrightnow">Команда выполняется</string>
<string name="pump_unreachable">Помпа недоступна</string>
<string name="missed_bg_readings">Пропущенные данные СК</string>
<string name="raise_notifications_as_android_notifications">Использовать системные уведомления для предупреждений и уведомлений</string>
@ -710,7 +712,7 @@
<string name="combo_error_multiple_boluses_with_identical_timestamp">Только что импортировано несколько болюсов с одинаковым количеством инсулина в течение одной минуты. В лог лечения может быть добавлена только одна запись. Пожалуйста проверьте помпу и вручную введите запись о болюсе через вкладку портала назначений. Убедитесь, что данному времени соответствует только одна запись о болюсе.</string>
<string name="about_link_urls">\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de) \n\nfacebook:\nhttp://facebook.androidaps.org\nhttp://facebook.androidaps.de (de)</string>
<string name="combo_check_date">Новый болюс старше 24 часов или запись относится к будущему. Пожалуйста убедитесь что дата на помпе установлена правильно.</string>
<string name="combo_suspious_bolus_time">Время/дата поданного болюса неверны. Вероятно, кол-во активного инсулина IOB также неверно. Пожалуйста, проверьте время/дату помпы.</string>
<string name="combo_suspious_bolus_time">Время/дата поданного болюса неверны. Вероятно, кол-во активного инсулина IOB также неверно. Проверьте время/дату помпы.</string>
<string name="profileswitch_ismissing">Профиль не переключен. Пожалуйста переключите профиль или нажмите \"активировать профиль\" в LocalProfile.</string>
<string name="combo_bolus_count">Отсчет болюса</string>
<string name="combo_tbr_count">Отсчет временного базала TBR</string>
@ -760,7 +762,7 @@
<string name="firstcarbsincrement">Первый шаг увеличения углеводов</string>
<string name="secondcarbsincrement">Второй шаг увеличения углеводов</string>
<string name="thirdcarbsincrement">Третий шаг увеличения углеводов</string>
<string name="cgm">Мониторинг СК</string>
<string name="cgm">Мониторинг ГК</string>
<string name="ns_wifionly">Использовать только WiFi соединение</string>
<string name="ns_wifi_ssids">WiFi SSID</string>
<string name="ns_chargingonly">Только при зарядке</string>
@ -775,7 +777,7 @@
<string name="value_unavailable_short">н/д</string>
<string name="virtualpump_type">Тип виртуальной помпы</string>
<string name="virtualpump_definition">Определение помпы</string>
<string name="virtualpump_pump_def">Болюс: Шаг =%1$s\nПродленный Болюс: [Шаг =%2$s, Длительность =%3$sмин -%4$sh] \nБазал: Шаг =%5$s\ nTBR: %6$s (на %7$s), Длительность =%8$sмин -%9$sh\n%10$s</string>
<string name="virtualpump_pump_def">Болюс: Шаг =%1$s\n Пролонгированный Болюс: [Шаг =%2$s, Продолжительность =%3$sмин -%4$sh] \nБазал: Шаг =%5$s\n ВБС: %6$s (на %7$s), Продолжительность =%8$sмин -%9$sh\n%10$s</string>
<string name="ns_autobackfill_title">Автозаполнение пропущенных данных СК</string>
<string name="wear_wizard_settings">Параметры мастера настройки смарт-часов wear</string>
<string name="wear_wizard_settings_summary">Расчеты, включены в результат мастера настройки смарт-часов wear:</string>
@ -799,6 +801,8 @@ Context | Edit Context</string>
<string name="bgsourcesetup">Настройте источник СК</string>
<string name="setupwizard_profile_description">Пожалуйста выберите источник профиля. Если пациент ребенок пользуйтесь профилем Nightscout. Если никто не отслеживает ваш СК на NS, вы вероятно предпочтете Локальный профиль. Напоминание - вы всего лишь выбираете профиль. Активируйте его \"Переключателем профиля\"</string>
<string name="setupwizard_aps_description">Выберите один из доступных алгоритмов. Они расположены от самых старых к самым новым. Более новый алгоритм обычно мощнее и агрессивнее. Если вы новый пользователь возможно вам лучше начать с помощника болюса AMA а не с новейшего алгоритма. Читайте документацию OpenAPS и определите свою конфигурацию.</string>
<string name="setupwizard_pump_waiting_for_riley_link_connection">Ожидание соединения RileyLink\n</string>
<string name="setupwizard_pump_pump_not_initialized"><b>Примечание:</b> После инициализации помпы вы можете продолжить установку\n</string>
<string name="startobjective">Начните первую Цель</string>
<string name="permission">Права доступа</string>
<string name="askforpermission">Запросить права доступа</string>
@ -914,7 +918,7 @@ Context | Edit Context</string>
<string name="description_pump_insight_local">Интеграция с помпой Accu-Chek Insight</string>
<string name="not_inserted">Не вставлено</string>
<string name="short_status_last_connected">Недавнее соединение: %1$d мин. назад</string>
<string name="short_status_tbr">Суммарная скорость базала: %1$d%% за %2$d / %3$d мин</string>
<string name="short_status_tbr">Врем базал (TBR): %1$d%% на %2$d / %3$d мин</string>
<string name="short_status_extended">Пролонгированный: %1$.2f / %2$.2f U за %3$d мин</string>
<string name="short_status_multiwave">Пролонгированный: %1$.2f / %2$.2f U за %3$d мин</string>
<string name="short_status_tdd">Суммарный инсулин TDD: %1$.2f</string>

View file

@ -1213,4 +1213,5 @@
<string name="only_upload_if_charging">Odoslať iba pri nabíjaní</string>
<string name="worker_state">Stav procesu: %s</string>
<string name="uploaded_data">Odoslané údaje</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Následujúce dáta budú nahraté do vašeho účtu Open Humans: hodnoty glykémie, bolusy, sacharidy, udalosti starostlivosti (okrem poznámok), rozložené bolusy, prepnutia profilov, celkové denné dávky, dočasné bazály, nastavenia, verzia aplikácie, model zariadenia a rozmery obrazovky. Tajné, alebo súkromné informácie, ako je URL, alebo API heslo vašeho Nightscoutu, nahraté nebudú.</string>
</resources>

View file

@ -45,6 +45,7 @@
<string name="description_food">Displays the food presets defined in Nightscout</string>
<string name="description_insulin_rapid">Insulin preset for Humalog and NovoRapid / NovoLog</string>
<string name="description_insulin_ultra_rapid">Insulin preset for Fiasp</string>
<string name="description_insulin_lyumjev">Insulin preset for Lyumjev</string>
<string name="description_insulin_free_peak">Allows you to define the peak of the insulin activity and should only be used by advanced users</string>
<string name="description_loop">Activate or deactivate the implementation triggering the loop.</string>
<string name="description_ns_client">Synchronizes your data with Nightscout</string>
@ -630,6 +631,7 @@
<string name="free_peak_oref">Free-Peak Oref</string>
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="lyumjev">Lyumjev</string>
<string name="dia_too_short">DIA of %1$f too short - using %2$f instead!</string>
<string name="activate_profile">Activate profile</string>
<string name="invalid">INVALID</string>
@ -1174,6 +1176,7 @@
<string name="storage">internal storage constraint</string>
<string name="diskfull">Free at least %1$d MB from internal storage! Loop disabled!</string>
<string name="wrongformat">Wrong format</string>
<string name="wrongTbrDuration">TBR duration must be a multiple of %1$d minutes and greater than 0.</string>
<string name="sms_wrongcode">Wrong code. Command cancelled.</string>
<string name="notconfigured">Not configured</string>
<string name="profileswitchcreated">Profile switch created</string>
@ -1443,4 +1446,5 @@
<string name="worker_state">Worker State: %s</string>
<string name="uploaded_data">Uploaded Data</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">The following data will be uploaded to your Open Humans account: Glucose values, boluses, carbs, careportal events (except notes), extended boluses, profile switches, total daily doses, temporary basals, temp targets, preferences, application version, device model and screen dimensions. Secret or private information such as your Nightscout URL or API secret will not be uploaded.</string>
<string name="setupwizard_pump_riley_link_status">RileyLink status:</string>
</resources>

View file

@ -83,7 +83,7 @@
android:singleLine="true"
android:title="@string/smbinterval_summary"
validate:maxNumber="10"
validate:minNumber="3"
validate:minNumber="1"
validate:testType="numericRange" />
<info.nightscout.androidaps.utils.textValidator.ValidatingEditTextPreference

View file

@ -23,6 +23,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentService
import info.nightscout.androidaps.queue.Callback
@ -37,6 +38,8 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.`when`
@ -160,6 +163,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
`when`(virtualPumpPlugin.shortStatus(ArgumentMatchers.anyBoolean())).thenReturn("Virtual Pump")
`when`(virtualPumpPlugin.isSuspended).thenReturn(false)
`when`(virtualPumpPlugin.pumpDescription).thenReturn(PumpDescription())
`when`(virtualPumpPlugin.model()).thenReturn(PumpType.GenericAAPS);
`when`(treatmentsPlugin.lastCalculationTreatments).thenReturn(IobTotal(0))
`when`(treatmentsPlugin.lastCalculationTempBasals).thenReturn(IobTotal(0))
@ -186,6 +190,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.smscommunicator_loopisdisabled)).thenReturn("Loop is disabled")
`when`(resourceHelper.gs(R.string.smscommunicator_loopisenabled)).thenReturn("Loop is enabled")
`when`(resourceHelper.gs(R.string.wrongformat)).thenReturn("Wrong format")
`when`(resourceHelper.gs(eq(R.string.wrongTbrDuration), any())).thenAnswer({ i: InvocationOnMock -> "TBR duration must be a multiple of " + i.getArguments()[1] + " minutes and greater than 0."})
`when`(resourceHelper.gs(R.string.smscommunicator_loophasbeendisabled)).thenReturn("Loop has been disabled")
`when`(resourceHelper.gs(R.string.smscommunicator_loophasbeenenabled)).thenReturn("Loop has been enabled")
`when`(resourceHelper.gs(R.string.smscommunicator_tempbasalcanceled)).thenReturn("Temp basal canceled")
@ -777,19 +782,26 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
sms = Sms("1234", "BASAL 10% 0")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 10% 0", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
`when`(constraintChecker.applyBasalPercentConstraints(anyObject(), anyObject())).thenReturn(Constraint<Int>(20))
Assert.assertEquals("TBR duration must be a multiple of 30 minutes and greater than 0.", smsCommunicatorPlugin.messages[1].text)
//BASAL 20% 20
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "BASAL 20% 20")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 20% 20", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To start basal 20% for 20 min reply with code"))
Assert.assertEquals("TBR duration must be a multiple of 30 minutes and greater than 0.", smsCommunicatorPlugin.messages[1].text)
`when`(constraintChecker.applyBasalPercentConstraints(anyObject(), anyObject())).thenReturn(Constraint<Int>(20))
//BASAL 20% 30
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "BASAL 20% 30")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 20% 30", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To start basal 20% for 30 min reply with code"))
passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
smsCommunicatorPlugin.processSms(Sms("1234", passCode))
Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
Assert.assertEquals("Temp basal 20% for 20 min started successfully\nVirtual Pump", smsCommunicatorPlugin.messages[3].text)
Assert.assertEquals("Temp basal 20% for 30 min started successfully\nVirtual Pump", smsCommunicatorPlugin.messages[3].text)
//BASAL a
smsCommunicatorPlugin.messages = ArrayList()
@ -803,7 +815,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
sms = Sms("1234", "BASAL 1 0")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 1 0", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
Assert.assertEquals("TBR duration must be a multiple of 30 minutes and greater than 0.", smsCommunicatorPlugin.messages[1].text)
`when`(constraintChecker.applyBasalConstraints(anyObject(), anyObject())).thenReturn(Constraint<Double>(1.0))
//BASAL 1 20
@ -811,11 +823,19 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
sms = Sms("1234", "BASAL 1 20")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 1 20", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To start basal 1.00U/h for 20 min reply with code"))
Assert.assertEquals("TBR duration must be a multiple of 30 minutes and greater than 0.", smsCommunicatorPlugin.messages[1].text)
`when`(constraintChecker.applyBasalConstraints(anyObject(), anyObject())).thenReturn(Constraint<Double>(1.0))
//BASAL 1 30
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "BASAL 1 30")
smsCommunicatorPlugin.processSms(sms)
Assert.assertEquals("BASAL 1 30", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To start basal 1.00U/h for 30 min reply with code"))
passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
smsCommunicatorPlugin.processSms(Sms("1234", passCode))
Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
Assert.assertEquals("Temp basal 1.00U/h for 20 min started successfully\nVirtual Pump", smsCommunicatorPlugin.messages[3].text)
Assert.assertEquals("Temp basal 1.00U/h for 30 min started successfully\nVirtual Pump", smsCommunicatorPlugin.messages[3].text)
}
@Test fun processExtendedTest() {

View file

@ -0,0 +1,65 @@
package info.nightscout.androidaps.plugins.insulin
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
class InsulinLyumjevPluginTest {
@get:Rule
val mockitoRule: MockitoRule = MockitoJUnit.rule()
private lateinit var sut: InsulinLyumjevPlugin
@Mock lateinit var resourceHelper: ResourceHelper
@Mock lateinit var rxBus: RxBusWrapper
@Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var aapsLogger: AAPSLogger
private var injector: HasAndroidInjector = HasAndroidInjector {
AndroidInjector {
}
}
@Before
fun setup() {
sut = InsulinLyumjevPlugin(injector, resourceHelper, profileFunction, rxBus, aapsLogger)
}
@Test
fun `simple peak test`() {
assertEquals(45, sut.peak)
}
@Test
fun getIdTest() {
assertEquals(InsulinInterface.OREF_LYUMJEV, sut.id)
}
@Test
fun commentStandardTextTest() {
`when`(resourceHelper.gs(eq(R.string.lyumjev))).thenReturn("Lyumjev")
assertEquals("Lyumjev", sut.commentStandardText())
}
@Test
fun getFriendlyNameTest() {
`when`(resourceHelper.gs(eq(R.string.lyumjev))).thenReturn("Lyumjev")
assertEquals("Lyumjev", sut.friendlyName)
}
}

View file

@ -2,28 +2,36 @@
buildscript {
ext {
kotlin_version = '1.3.72'
coreVersion = '1.3.0'
kotlin_version = '1.4.10'
coreVersion = '1.3.2'
rxjava_version = '2.2.19'
rxandroid_version = '2.1.1'
rxkotlin_version = '2.4.0'
room_version = '2.2.5'
lifecycle_version = '2.2.0'
dagger_version = '2.28.1'
dagger_version = '2.29.1'
coroutinesVersion = '1.3.7'
activityVersion = '1.2.0-alpha06'
fragmentVersion = '1.3.0-alpha07'
activityVersion = '1.2.0-beta01'
fragmentktx_version = '1.3.0-beta01'
ormLiteVersion = '4.46'
nav_version = '2.3.0'
nav_version = '2.3.1'
appcompat_verison = '1.2.0'
material_version = '1.2.1'
constraintlayout_version = '2.0.2'
preferencektx_version = '1.1.1'
commonslang3_version = '3.11'
work_version = '2.4.0'
junit_version = '4.13.1'
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.google.gms:google-services:4.3.3'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.1.1'
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View file

@ -42,12 +42,12 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.appcompat:appcompat:$appcompat_verison"
implementation "androidx.preference:preference-ktx:$preferencektx_version"
implementation 'androidx.biometric:biometric:1.0.1'
implementation "androidx.activity:activity:${activityVersion}"
implementation "androidx.activity:activity-ktx:${activityVersion}"
implementation 'com.google.android.material:material:1.1.0'
implementation "com.google.android.material:material:$material_version"
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
@ -59,12 +59,14 @@ dependencies {
//Logger
implementation 'org.slf4j:slf4j-api:1.7.30'
//Fabric
implementation 'com.google.firebase:firebase-analytics-ktx:17.4.3'
implementation 'com.google.firebase:firebase-crashlytics:17.1.0'
implementation platform('com.google.firebase:firebase-bom:25.12.0')
implementation "com.google.firebase:firebase-analytics-ktx"
implementation "com.google.firebase:firebase-crashlytics-ktx"
implementation "com.google.firebase:firebase-messaging-ktx"
//RxBus
implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
implementation 'org.apache.commons:commons-lang3:3.10'
implementation "org.apache.commons:commons-lang3:$commonslang3_version"
//CryptoUtil
implementation 'com.madgag.spongycastle:core:1.58.0.0'
@ -82,7 +84,7 @@ dependencies {
// pumpCommon
implementation "com.google.code.gson:gson:2.8.6"
testImplementation 'junit:junit:4.13'
testImplementation "junit:junit:$junit_version"
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

View file

@ -1,6 +1,5 @@
package info.nightscout.androidaps.dialogs
import android.app.Activity
import android.os.Bundle
import android.os.SystemClock
import android.view.LayoutInflater
@ -157,7 +156,6 @@ class BolusProgressDialog : DaggerDialogFragment() {
Thread(Runnable {
SystemClock.sleep(5000)
bolusEnded = true
val activity: Activity? = activity
activity?.runOnUiThread {
if (running) {
aapsLogger.debug(LTag.UI, "executing")

View file

@ -120,7 +120,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
profile?.let { profile1 ->
profile2?.let { profile2 ->
profileview_units.text = profileFunction.getUnits()
profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile1.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile2.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
val profileNames =profileName!!.split("\n").toTypedArray()
profileview_activeprofile.text = HtmlHelper.fromHtml(formatColors(profileNames[0], profileNames[1]))
profileview_date.text = date

View file

@ -13,6 +13,7 @@ public interface InsulinInterface {
int OREF_RAPID_ACTING = 2;
int OREF_ULTRA_RAPID_ACTING = 3;
int OREF_FREE_PEAK = 4;
int OREF_LYUMJEV = 5;
int getId();

View file

@ -3,7 +3,9 @@ package info.nightscout.androidaps.utils
import android.content.Context
import android.os.Bundle
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.ktx.Firebase
import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
@ -18,19 +20,32 @@ import javax.inject.Singleton
*/
@Singleton
class FabricPrivacy @Inject constructor(
context: Context,
private val aapsLogger: AAPSLogger,
private val sp: SP
) {
var firebaseAnalytics: FirebaseAnalytics
val firebaseAnalytics: FirebaseAnalytics = Firebase.analytics
init {
firebaseAnalytics = FirebaseAnalytics.getInstance(context)
firebaseAnalytics.setAnalyticsCollectionEnabled(!java.lang.Boolean.getBoolean("disableFirebase") && fabricEnabled())
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!java.lang.Boolean.getBoolean("disableFirebase") && fabricEnabled())
}
// Analytics logCustom
fun logCustom(name: String, event: Bundle) {
try {
if (fabricEnabled()) {
firebaseAnalytics.logEvent(name, event)
} else {
aapsLogger.debug(LTag.CORE, "Ignoring recently opted-out event: $event")
}
} catch (e: NullPointerException) {
aapsLogger.debug(LTag.CORE, "Ignoring opted-out non-initialized event: $event")
} catch (e: IllegalStateException) {
aapsLogger.debug(LTag.CORE, "Ignoring opted-out non-initialized event: $event")
}
}
// Analytics logCustom
fun logCustom(event: Bundle) {
try {

View file

@ -25,6 +25,7 @@ object AlertDialogHelper {
val titleLayout = LayoutInflater.from(ContextThemeWrapper(context, themeResId)).inflate(layoutResource, null)
(titleLayout.findViewById<View>(R.id.alertdialog_title) as TextView).text = title
(titleLayout.findViewById<View>(R.id.alertdialog_icon) as ImageView).setImageResource(iconResource)
titleLayout.findViewById<View>(R.id.alertdialog_title).setSelected(true)
return titleLayout
}

View file

@ -1,11 +1,11 @@
package info.nightscout.androidaps.utils.alertDialogs
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.DialogInterface
import android.os.SystemClock
import android.text.Spanned
import androidx.fragment.app.FragmentActivity
import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.utils.extensions.runOnUiThread
@ -33,7 +33,7 @@ object OKDialog {
}
@SuppressLint("InflateParams")
fun show(activity: Activity, title: String, message: Spanned, runnable: Runnable? = null) {
fun show(activity: FragmentActivity, title: String, message: Spanned, runnable: Runnable? = null) {
var okClicked = false
var notEmptytitle = title
if (notEmptytitle.isEmpty()) notEmptytitle = activity.getString(R.string.message)
@ -55,17 +55,17 @@ object OKDialog {
}
@JvmStatic
fun showConfirmation(activity: Activity, message: String, ok: Runnable?) {
fun showConfirmation(activity: FragmentActivity, message: String, ok: Runnable?) {
showConfirmation(activity, activity.getString(R.string.confirmation), message, ok, null)
}
@JvmStatic
fun showConfirmation(activity: Activity, message: Spanned, ok: Runnable?) {
fun showConfirmation(activity: FragmentActivity, message: Spanned, ok: Runnable?) {
showConfirmation(activity, activity.getString(R.string.confirmation), message, ok, null)
}
@SuppressLint("InflateParams")
fun showConfirmation(activity: Activity, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
fun showConfirmation(activity: FragmentActivity, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
var okClicked = false
AlertDialogHelper.Builder(activity)
.setMessage(message)
@ -93,7 +93,7 @@ object OKDialog {
}
@SuppressLint("InflateParams")
fun showConfirmation(activity: Activity, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
fun showConfirmation(activity: FragmentActivity, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
var okClicked = false
AlertDialogHelper.Builder(activity)
.setMessage(message)

View file

@ -16,7 +16,7 @@ class ValidatingEditTextPreference(ctx: Context, attrs: AttributeSet, defStyleAt
setOnBindEditTextListener { editText ->
validator = DefaultEditTextValidator(editText, validatorParameters, context)
}
setOnPreferenceChangeListener { preference, newValue ->
setOnPreferenceChangeListener { _, _ ->
validator?.testValidity(false) ?: true
}
}

View file

@ -1,17 +1,14 @@
package info.nightscout.androidaps.utils.ui
import android.content.Context
import android.text.TextWatcher
import android.util.AttributeSet
import android.util.Log
import android.view.View.OnFocusChangeListener
import android.widget.Button
import info.nightscout.androidaps.core.R
import java.text.DecimalFormat
class MinutesNumberPicker constructor(context: Context, attrs: AttributeSet? = null) : NumberPicker(context, attrs) {
fun setParams(initValue: Double, minValue: Double, maxValue: Double, step: Double, allowZero: Boolean, okButton: Button? = null, textWatcher: TextWatcher? = null) {
fun setParams(initValue: Double, minValue: Double, maxValue: Double, step: Double, allowZero: Boolean, okButton: Button? = null) {
super.setParams(initValue, minValue, maxValue, step, null, allowZero, okButton)
}

View file

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
Loading this view directly, without proper Theme, will likely result in crash due to lack of ?dialog... attribute definitions
Please use AlertDialogHelper or wrap inflater context with ContextThemeWrapper(context, R.style.AppTheme)
-->
@ -29,8 +28,14 @@
android:layout_centerInParent="true"
android:layout_gravity="center"
android:layout_marginStart="2dp"
android:layout_marginEnd="50dp"
android:layout_marginEnd="40dp"
android:layout_toEndOf="@id/alertdialog_icon"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?dialogTitleColor" />

View file

@ -1,4 +1,5 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -18,7 +19,7 @@
android:id="@+id/header_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_trending_flat_white_48dp" />
app:srcCompat="@drawable/ic_trending_flat_white_48dp" />
<TextView
android:id="@+id/overview_bolusprogress_title"

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