Merge pull request #2 from nightscout/dev

head:dev to dev
This commit is contained in:
rICTx-T1D 2020-11-12 20:09:56 +01:00 committed by GitHub
commit f87193c7fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
335 changed files with 8814 additions and 3321 deletions

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'
}
@ -128,7 +128,7 @@ android {
targetSdkVersion 28
multiDexEnabled true
versionCode 1500
version "2.7.0-dev"
version "2.7.1-dev"
buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
@ -251,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'
@ -264,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}"
@ -279,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"
@ -293,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}"
@ -357,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

@ -110,7 +110,7 @@ function enable_smb(
return false;
}
var determine_basal = function determine_basal(glucose_status, currenttemp, iob_data, profile, autosens_data, meal_data, tempBasalFunctions, microBolusAllowed, reservoir_data, currentTime) {
var determine_basal = function determine_basal(glucose_status, currenttemp, iob_data, profile, autosens_data, meal_data, tempBasalFunctions, microBolusAllowed, reservoir_data, currentTime, isSaveCgmSource) {
var rT = {}; //short for requestedTemp
var deliverAt = new Date();
@ -143,7 +143,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
rT.reason = "If current system time "+systemTime+" is correct, then BG data is too old. The last BG data was read "+minAgo+"m ago at "+bgTime;
// if BG is too old/noisy, or is changing less than 1 mg/dL/5m for 45m, cancel any high temps and shorten any long zero temps
//cherry pick from oref upstream dev cb8e94990301277fb1016c778b4e9efa55a6edbc
} else if ( bg > 60 && glucose_status.delta == 0 && glucose_status.short_avgdelta > -1 && glucose_status.short_avgdelta < 1 && glucose_status.long_avgdelta > -1 && glucose_status.long_avgdelta < 1 ) {
} else if ( bg > 60 && glucose_status.delta == 0 && glucose_status.short_avgdelta > -1 && glucose_status.short_avgdelta < 1 && glucose_status.long_avgdelta > -1 && glucose_status.long_avgdelta < 1 && !isSaveCgmSource) {
if ( glucose_status.last_cal && glucose_status.last_cal < 3 ) {
rT.reason = "CGM was just calibrated";
} else {

View file

@ -45,6 +45,8 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.constraints.signatureVerifier.SignatureVerifierPlugin
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
import info.nightscout.androidaps.plugins.general.maintenance.PrefsFileContract
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
import info.nightscout.androidaps.setupwizard.SetupWizardActivity
@ -87,10 +89,17 @@ class MainActivity : NoSplashAppCompatActivity() {
@Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var signatureVerifierPlugin: SignatureVerifierPlugin
@Inject lateinit var config: Config
@Inject lateinit var importExportPrefs: ImportExportPrefs
private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
private var pluginPreferencesMenuItem: MenuItem? = null
val callForPrefFile = registerForActivityResult(PrefsFileContract()) {
it?.let {
importExportPrefs.importSharedPreferences(this, it)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Iconify.with(FontAwesomeModule())

View file

@ -175,7 +175,8 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
addPreferencesFromResourceIfEnabled(localInsightPlugin, rootKey, config.PUMPDRIVERS)
addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, config.PUMPDRIVERS)
addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, config.PUMPDRIVERS)
addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey, !config.NSCLIENT)
addPreferencesFromResource(R.xml.pref_pump, rootKey, config.PUMPDRIVERS)
addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey)
addPreferencesFromResourceIfEnabled(insulinOrefFreePeakPlugin, rootKey)
addPreferencesFromResourceIfEnabled(nsClientPlugin, rootKey)
addPreferencesFromResourceIfEnabled(tidepoolPlugin, rootKey)
@ -251,6 +252,10 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
}
}
private fun addPreferencesFromResource(@XmlRes preferencesResId: Int, key: String?, enabled: Boolean) {
if (enabled) addPreferencesFromResource(preferencesResId, key)
}
@SuppressLint("RestrictedApi")
private fun addPreferencesFromResource(@XmlRes preferencesResId: Int, key: String?) {
val xmlRoot = preferenceManager.inflateFromResource(context,

View file

@ -9,6 +9,8 @@ import dagger.android.support.DaggerAppCompatActivity
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
import info.nightscout.androidaps.plugins.general.maintenance.PrefsFileContract
import info.nightscout.androidaps.utils.locale.LocaleHelper
import info.nightscout.androidaps.utils.protection.ProtectionCheck
import javax.inject.Inject
@ -16,9 +18,16 @@ import javax.inject.Inject
class SingleFragmentActivity : DaggerAppCompatActivity() {
@Inject lateinit var pluginStore: PluginStore
@Inject lateinit var protectionCheck: ProtectionCheck
@Inject lateinit var importExportPrefs: ImportExportPrefs
private var plugin: PluginBase? = null
val callForPrefFile = registerForActivityResult(PrefsFileContract()) {
it?.let {
importExportPrefs.importSharedPreferences(this, it)
}
}
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_single_fragment)

View file

@ -9,6 +9,7 @@ import info.nightscout.androidaps.skins.SkinButtonsOn
import info.nightscout.androidaps.skins.SkinClassic
import info.nightscout.androidaps.skins.SkinInterface
import info.nightscout.androidaps.skins.SkinLargeDisplay
import info.nightscout.androidaps.skins.SkinLowRes
import javax.inject.Qualifier
@Module
@ -32,6 +33,12 @@ open class SkinsModule {
@IntKey(20)
fun bindsSkinLargeDisplay(skinLargeDisplay: SkinLargeDisplay): SkinInterface = skinLargeDisplay
@Provides
@Skin
@IntoMap
@IntKey(30)
fun bindsSkinLowRes(skinLowRes: SkinLowRes): SkinInterface = skinLowRes
@Qualifier
annotation class Skin
}

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

@ -189,9 +189,9 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
}
if (!hardLimits.checkOnlyHardLimits(profile.getDia(), "dia", hardLimits.getMINDIA(), hardLimits.getMAXDIA()))
if (!hardLimits.checkOnlyHardLimits(profile.getDia(), "dia", hardLimits.minDia(), hardLimits.maxDia()))
return;
if (!hardLimits.checkOnlyHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), "carbratio", hardLimits.getMINIC(), hardLimits.getMAXIC()))
if (!hardLimits.checkOnlyHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), "carbratio", hardLimits.minIC(), hardLimits.maxIC()))
return;
if (!hardLimits.checkOnlyHardLimits(profile.getIsfMgdl(), "sens", hardLimits.getMINISF(), hardLimits.getMAXISF()))
return;

View file

@ -65,6 +65,7 @@ public class DetermineBasalAdapterSMBJS {
private boolean mMicrobolusAllowed;
private boolean mSMBAlwaysAllowed;
private long mCurrentTime;
private boolean mIsSaveCgmSource;
private String storedCurrentTemp = null;
private String storedIobData = null;
@ -108,6 +109,7 @@ public class DetermineBasalAdapterSMBJS {
aapsLogger.debug(LTag.APS, "MicroBolusAllowed: " + (storedMicroBolusAllowed = "" + mMicrobolusAllowed));
aapsLogger.debug(LTag.APS, "SMBAlwaysAllowed: " + (storedSMBAlwaysAllowed = "" + mSMBAlwaysAllowed));
aapsLogger.debug(LTag.APS, "CurrentTime: " + (storedCurrentTime = "" + mCurrentTime));
aapsLogger.debug(LTag.APS, "isSaveCgmSource: " + mIsSaveCgmSource);
DetermineBasalResultSMB determineBasalResultSMB = null;
@ -237,7 +239,8 @@ public class DetermineBasalAdapterSMBJS {
boolean tempTargetSet,
boolean microBolusAllowed,
boolean uamAllowed,
boolean advancedFiltering
boolean advancedFiltering,
boolean isSaveCgmSource
) throws JSONException {
String units = profile.getUnits();
@ -354,6 +357,7 @@ public class DetermineBasalAdapterSMBJS {
mCurrentTime = now;
mIsSaveCgmSource = isSaveCgmSource;
}
private Object makeParam(JSONObject jsonObject, Context rhino, Scriptable scope) {

View file

@ -220,9 +220,9 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
}
if (!hardLimits.checkOnlyHardLimits(profile.getDia(), "dia", hardLimits.getMINDIA(), hardLimits.getMAXDIA()))
if (!hardLimits.checkOnlyHardLimits(profile.getDia(), "dia", hardLimits.minDia(), hardLimits.maxDia()))
return;
if (!hardLimits.checkOnlyHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), "carbratio", hardLimits.getMINIC(), hardLimits.getMAXIC()))
if (!hardLimits.checkOnlyHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), "carbratio", hardLimits.minIC(), hardLimits.maxIC()))
return;
if (!hardLimits.checkOnlyHardLimits(profile.getIsfMgdl(), "sens", hardLimits.getMINISF(), hardLimits.getMAXISF()))
return;
@ -270,7 +270,8 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
isTempTarget,
smbAllowed.value(),
uam.value(),
advancedFiltering.value()
advancedFiltering.value(),
activePlugin.getActiveBgSource().getClass().getSimpleName().equals("DexcomPlugin")
);
} catch (JSONException e) {
fabricPrivacy.logException(e);

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

@ -48,7 +48,7 @@ public class Objective0 extends Objective {
tasks.add(new Task(R.string.virtualpump_uploadstatus_title) {
@Override
public boolean isCompleted() {
return sp.getBoolean("virtualpump_uploadstatus", false);
return sp.getBoolean(R.string.key_virtualpump_uploadstatus, false);
}
@Override

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

@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.general.actions
import android.content.Intent
import android.os.Bundle
import android.util.DisplayMetrics
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -9,6 +10,7 @@ import android.widget.LinearLayout
import androidx.core.content.ContextCompat
import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
@ -24,6 +26,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.skins.SkinProvider
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
@ -54,16 +57,30 @@ class ActionsFragment : DaggerFragment() {
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var buildHelper: BuildHelper
@Inject lateinit var protectionCheck: ProtectionCheck
@Inject lateinit var skinProvider: SkinProvider
@Inject lateinit var config: Config
private var disposable: CompositeDisposable = CompositeDisposable()
private val pumpCustomActions = HashMap<String, CustomAction>()
private val pumpCustomButtons = ArrayList<SingleClickButton>()
private var smallWidth = false
private var smallHeight = false
private lateinit var dm: DisplayMetrics
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.actions_fragment, container, false)
//check screen width
dm = DisplayMetrics()
activity?.windowManager?.defaultDisplay?.getMetrics(dm)
val screenWidth = dm.widthPixels
val screenHeight = dm.heightPixels
smallWidth = screenWidth <= Constants.SMALL_WIDTH
smallHeight = screenHeight <= Constants.SMALL_HEIGHT
val landscape = screenHeight < screenWidth
return inflater.inflate(skinProvider.activeSkin().actionsLayout(landscape, smallWidth), container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -233,15 +250,24 @@ class ActionsFragment : DaggerFragment() {
actions_canceltempbasal?.visibility = View.GONE
}
}
val activeBgSource = activePlugin.activeBgSource
actions_historybrowser.visibility = (profile != null).toVisibility()
actions_fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility()
actions_pumpbatterychange?.visibility = pump.pumpDescription.isBatteryReplaceable.toVisibility()
actions_temptarget?.visibility = (profile != null && config.APS).toVisibility()
actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility()
statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, null, careportal_sensorage, careportal_pbage, null)
if (!config.NSCLIENT) {
statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, careportal_reservoirlevel, careportal_sensorage, careportal_sensorlevel, careportal_pbage, careportal_batterylevel)
careportal_senslevellabel?.text = if (activeBgSource.sensorBatteryLevel == -1) "" else resourceHelper.gs(R.string.careportal_level_label)
} else {
statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, null, careportal_sensorage, null, careportal_pbage, null)
careportal_senslevellabel?.text = ""
careportal_inslevellabel?.text = ""
careportal_pblevellabel?.text = ""
}
checkPumpCustomActions()
}
private fun checkPumpCustomActions() {

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
@ -12,8 +12,10 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.MainActivity
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.PreferencesActivity
import info.nightscout.androidaps.activities.SingleFragmentActivity
import info.nightscout.androidaps.events.EventAppExit
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
@ -70,13 +72,15 @@ class ImportExportPrefs @Inject constructor(
f.activity?.let { exportSharedPreferences(it) }
}
fun verifyStoragePermissions(fragment: Fragment) {
fun verifyStoragePermissions(fragment: Fragment, onGranted: Runnable) {
fragment.context?.let {
val permission = ContextCompat.checkSelfPermission(it,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
fragment.requestPermissions(PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE)
} else {
onGranted.run()
}
}
}
@ -122,7 +126,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 +134,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 +143,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 +151,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,7 +167,7 @@ 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),
@ -173,7 +177,7 @@ class ImportExportPrefs @Inject constructor(
}, 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
@ -190,7 +194,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...
@ -212,7 +216,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun exportSharedPreferences(activity: Activity) {
private fun exportSharedPreferences(activity: FragmentActivity) {
prefFileList.ensureExportDirExists()
val legacyFile = prefFileList.legacyFile()
@ -261,14 +265,12 @@ class ImportExportPrefs @Inject constructor(
}
fun importSharedPreferences(activity: FragmentActivity) {
val callForPrefFile = activity.registerForActivityResult(PrefsFileContract()) {
it?.let {
importSharedPreferences(activity, it)
}
}
try {
callForPrefFile.launch(null)
if (activity is SingleFragmentActivity)
activity.callForPrefFile.launch(null)
if (activity is MainActivity)
activity.callForPrefFile.launch(null)
} catch (e: IllegalArgumentException) {
// this exception happens on some early implementations of ActivityResult contracts
// when registered and called for the second time
@ -277,7 +279,7 @@ class ImportExportPrefs @Inject constructor(
}
}
private fun importSharedPreferences(activity: Activity, importFile: PrefsFile) {
public fun importSharedPreferences(activity: FragmentActivity, importFile: PrefsFile) {
askToConfirmImport(activity, importFile) { password ->
@ -344,7 +346,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

@ -46,13 +46,15 @@ class MaintenanceFragment : DaggerFragment() {
}
nav_export.setOnClickListener {
// start activity for checking permissions...
importExportPrefs.verifyStoragePermissions(this)
importExportPrefs.exportSharedPreferences(this)
importExportPrefs.verifyStoragePermissions(this) {
importExportPrefs.exportSharedPreferences(this)
}
}
nav_import.setOnClickListener {
// start activity for checking permissions...
importExportPrefs.verifyStoragePermissions(this)
importExportPrefs.importSharedPreferences(this)
importExportPrefs.verifyStoragePermissions(this) {
importExportPrefs.importSharedPreferences(this)
}
}
nav_logsettings.setOnClickListener { startActivity(Intent(activity, LogSettingActivity::class.java)) }
}

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
@ -53,8 +51,8 @@ class PrefsFileContract : ActivityResultContract<Void, PrefsFile>() {
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
}
}

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

@ -10,6 +10,7 @@ import android.os.IBinder;
import android.text.Spanned;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import org.jetbrains.annotations.NotNull;
@ -190,7 +191,21 @@ public class NSClientPlugin extends PluginBase {
super.preprocessPreferences(preferenceFragment);
if (config.getNSCLIENT()) {
preferenceFragment.findPreference(resourceHelper.gs(R.string.key_statuslights_overview_advanced));
SwitchPreference key_ns_uploadlocalprofile = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_uploadlocalprofile));
if (key_ns_uploadlocalprofile != null) key_ns_uploadlocalprofile.setVisible(false);
SwitchPreference key_ns_autobackfill = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_autobackfill));
if (key_ns_autobackfill != null) key_ns_autobackfill.setVisible(false);
SwitchPreference key_ns_create_announcements_from_errors = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_create_announcements_from_errors));
if (key_ns_create_announcements_from_errors != null) key_ns_create_announcements_from_errors.setVisible(false);
SwitchPreference key_ns_create_announcements_from_carbs_req = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_create_announcements_from_carbs_req));
if (key_ns_create_announcements_from_carbs_req != null) key_ns_create_announcements_from_carbs_req.setVisible(false);
SwitchPreference key_ns_upload_only = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_upload_only));
if (key_ns_upload_only != null) {
key_ns_upload_only.setVisible(false);
key_ns_upload_only.setEnabled(false);
}
SwitchPreference key_ns_sync_use_absolute = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_ns_sync_use_absolute));
if (key_ns_sync_use_absolute != null) key_ns_sync_use_absolute.setVisible(false);
}
}

View file

@ -185,7 +185,7 @@ private val allowedKeys = """
tidepool_only_while_charging
tidepool_only_while_unmetered
virtualpump
virtualpump_uploadstatus
key_virtualpump_uploadstatus
virtualpump_type
wearplugin
wearcontrol

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

@ -56,6 +56,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.source.DexcomPlugin
import info.nightscout.androidaps.plugins.source.XdripPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
@ -616,7 +617,13 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
}
pump.isSuspended -> {
overview_apsmode?.setImageResource(R.drawable.ic_loop_paused)
overview_apsmode?.setImageResource(if (pump.pumpDescription.pumpType == PumpType.Insulet_Omnipod) {
// For Omnipod, indicate the pump as disconnected when it's suspended.
// The only way to 'reconnect' it, is through the Omnipod tab
R.drawable.ic_loop_disconnected
} else {
R.drawable.ic_loop_paused
})
overview_apsmode_text?.text = ""
}
@ -741,7 +748,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
// Status lights
overview_statuslights?.visibility = (sp.getBoolean(R.string.key_show_statuslights, true) || config.NSCLIENT).toVisibility()
statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, careportal_reservoirlevel, careportal_sensorage, careportal_pbage, careportal_batterylevel)
statusLightHandler.updateStatusLights(careportal_canulaage, careportal_insulinage, careportal_reservoirlevel, careportal_sensorage, null, careportal_pbage, careportal_batterylevel)
// cob
var cobText: String = resourceHelper.gs(R.string.value_unavailable_short)

View file

@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DefaultValueHelper

View file

@ -27,14 +27,20 @@ class StatusLightHandler @Inject constructor(
/**
* applies the extended statusLight subview on the overview fragment
*/
fun updateStatusLights(careportal_canulaage: TextView?, careportal_insulinage: TextView?, careportal_reservoirlevel: TextView?, careportal_sensorage: TextView?, careportal_pbage: TextView?, careportal_batterylevel: TextView?) {
fun updateStatusLights(careportal_canulaage: TextView?, careportal_insulinage: TextView?, careportal_reservoirlevel: TextView?, careportal_sensorage: TextView?, careportal_sensorbatterylevel: TextView?, careportal_pbage: TextView?, careportal_batterylevel: TextView?) {
val pump = activePlugin.activePump
val bgSource = activePlugin.activeBgSource
handleAge(careportal_canulaage, CareportalEvent.SITECHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
handleAge(careportal_insulinage, CareportalEvent.INSULINCHANGE, R.string.key_statuslights_iage_warning, 72.0, R.string.key_statuslights_iage_critical, 144.0)
handleAge(careportal_sensorage, CareportalEvent.SENSORCHANGE, R.string.key_statuslights_sage_warning, 216.0, R.string.key_statuslights_sage_critical, 240.0)
handleAge(careportal_pbage, CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0)
if (!config.NSCLIENT)
if (!config.NSCLIENT) {
handleLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
if (bgSource.sensorBatteryLevel != -1)
handleLevel(careportal_sensorbatterylevel, R.string.key_statuslights_sbat_critical, 5.0, R.string.key_statuslights_sbat_warning, 20.0, bgSource.sensorBatteryLevel.toDouble(), "%")
else
careportal_sensorbatterylevel?.text = ""
}
if (!config.NSCLIENT && pump.model() != PumpType.AccuChekCombo)
handleLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
}

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()
@ -1002,7 +1004,7 @@ class SmsCommunicatorPlugin @Inject constructor(
private fun areMoreNumbers(allowednumbers: String?): Boolean {
return allowednumbers?.let {
var countNumbers = 0
val knownNumbers = HashSet<String>()
val substrings = it.split(";").toTypedArray()
for (number in substrings) {
var cleaned = number.replace(Regex("\\s+"), "")
@ -1010,9 +1012,9 @@ class SmsCommunicatorPlugin @Inject constructor(
cleaned = cleaned.replace("+", "")
cleaned = cleaned.replace("-", "")
if (!cleaned.matches(Regex("[0-9]+"))) continue
countNumbers++
knownNumbers.add(cleaned)
}
countNumbers > 1
knownNumbers.size > 1
} ?: false
}
}

View file

@ -1,11 +1,15 @@
package info.nightscout.androidaps.plugins.general.smsCommunicator.activities
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.WindowManager
import com.google.common.primitives.Ints.min
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
import info.nightscout.androidaps.R
@ -15,8 +19,8 @@ import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicato
import info.nightscout.androidaps.plugins.general.smsCommunicator.otp.OneTimePassword
import info.nightscout.androidaps.plugins.general.smsCommunicator.otp.OneTimePasswordValidationResult
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.resources.ResourceHelper
import kotlinx.android.synthetic.main.activity_smscommunicator_otp.*
import net.glxn.qrgen.android.QRCode
@ -31,6 +35,7 @@ class SmsCommunicatorOtpActivity : NoSplashAppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
setContentView(R.layout.activity_smscommunicator_otp)
smscommunicator_otp_verify_edit.addTextChangedListener(object : TextWatcher {
@ -64,9 +69,23 @@ class SmsCommunicatorOtpActivity : NoSplashAppCompatActivity() {
Runnable {
otp.ensureKey(true)
updateGui()
ToastUtils.showToastInUiThread(this, R.string.smscommunicator_otp_reset_successful)
ToastUtils.Long.infoToast(this, resourceHelper.gs(R.string.smscommunicator_otp_reset_successful))
})
}
smscommunicator_otp_provisioning.setOnLongClickListener {
OKDialog.showConfirmation(this,
resourceHelper.gs(R.string.smscommunicator_otp_export_title),
resourceHelper.gs(R.string.smscommunicator_otp_export_prompt),
Runnable {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("OTP Secret", otp.provisioningSecret())
clipboard.primaryClip = clip
ToastUtils.Long.infoToast(this, resourceHelper.gs(R.string.smscommunicator_otp_export_successful))
})
true
}
}
@Synchronized

View file

@ -121,4 +121,10 @@ class OneTimePassword @Inject constructor(
fun provisioningURI(): String? =
key?.let { "otpauth://totp/AndroidAPS:" + URLEncoder.encode(name(), "utf-8").replace("+", "%20") + "?secret=" + BaseEncoding.base32().encode(it.encoded).replace("=", "") + "&issuer=AndroidAPS" }
/**
* Return secret used to provision Authenticator apps, in Base32 format
*/
fun provisioningSecret(): String? =
key?.let { BaseEncoding.base32().encode(it.encoded).replace("=", "") }
}

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

@ -106,9 +106,9 @@ class LocalProfileFragment : DaggerFragment() {
localprofile_name.removeTextChangedListener(textWatch)
localprofile_name.setText(currentProfile.name)
localprofile_name.addTextChangedListener(textWatch)
localprofile_dia.setParams(currentProfile.dia, hardLimits.MINDIA, hardLimits.MAXDIA, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
localprofile_dia.setParams(currentProfile.dia, hardLimits.minDia(), hardLimits.maxDia(), 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
localprofile_dia.tag = "LP_DIA"
TimeListEdit(context, aapsLogger, dateUtil, view, R.id.localprofile_ic, "IC", resourceHelper.gs(R.string.ic_label), currentProfile.ic, null, hardLimits.MINIC, hardLimits.MAXIC, 0.1, DecimalFormat("0.0"), save)
TimeListEdit(context, aapsLogger, dateUtil, view, R.id.localprofile_ic, "IC", resourceHelper.gs(R.string.ic_label), currentProfile.ic, null, hardLimits.minIC(), hardLimits.maxIC(), 0.1, DecimalFormat("0.0"), save)
basalView = TimeListEdit(context, aapsLogger, dateUtil, view, R.id.localprofile_basal, "BASAL", resourceHelper.gs(R.string.basal_label) + ": " + sumLabel(), currentProfile.basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save)
if (units == Constants.MGDL) {
TimeListEdit(context, aapsLogger, dateUtil, view, R.id.localprofile_isf, "ISF", resourceHelper.gs(R.string.isf_label), currentProfile.isf, null, hardLimits.MINISF, hardLimits.MAXISF, 1.0, DecimalFormat("0"), save)

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

@ -1,6 +1,8 @@
package info.nightscout.androidaps.plugins.pump.virtual
import android.os.SystemClock
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
@ -59,7 +61,6 @@ class VirtualPumpPlugin @Inject constructor(
.pluginName(R.string.virtualpump)
.shortName(R.string.virtualpump_shortname)
.preferencesId(R.xml.pref_virtualpump)
.neverVisible(config.NSCLIENT)
.description(R.string.description_pump_virtual)
.setDefault(),
injector, aapsLogger, resourceHelper, commandQueue
@ -120,6 +121,13 @@ class VirtualPumpPlugin @Inject constructor(
super.onStop()
}
override fun preprocessPreferences(preferenceFragment: PreferenceFragmentCompat) {
super.preprocessPreferences(preferenceFragment)
val uploadStatus = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_virtualpump_uploadstatus)) as SwitchPreference?
?: return
uploadStatus.isVisible = !config.NSCLIENT
}
override fun isFakingTempsByExtendedBoluses(): Boolean {
return config.NSCLIENT && getFakingStatus()
}
@ -332,7 +340,7 @@ class VirtualPumpPlugin @Inject constructor(
override fun getJSONStatus(profile: Profile, profileName: String, version: String): JSONObject {
val now = System.currentTimeMillis()
if (!sp.getBoolean("virtualpump_uploadstatus", false)) {
if (!sp.getBoolean(R.string.key_virtualpump_uploadstatus, false)) {
return JSONObject()
}
val pump = JSONObject()

View file

@ -62,6 +62,7 @@ class BGSourceFragment : DaggerFragment() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }) { fabricPrivacy.logException(it) }
)
updateGUI()
}
@Synchronized

View file

@ -41,6 +41,8 @@ class EversensePlugin @Inject constructor(
aapsLogger, resourceHelper, injector
), BgSourceInterface {
private var sensorBatteryLevel = -1
override fun advancedFilteringSupported(): Boolean {
return false
}
@ -53,7 +55,10 @@ class EversensePlugin @Inject constructor(
if (bundle.containsKey("glucoseLevel")) aapsLogger.debug(LTag.BGSOURCE, "glucoseLevel: " + bundle.getInt("glucoseLevel"))
if (bundle.containsKey("glucoseTrendDirection")) aapsLogger.debug(LTag.BGSOURCE, "glucoseTrendDirection: " + bundle.getString("glucoseTrendDirection"))
if (bundle.containsKey("glucoseTimestamp")) aapsLogger.debug(LTag.BGSOURCE, "glucoseTimestamp: " + dateUtil.dateAndTimeString(bundle.getLong("glucoseTimestamp")))
if (bundle.containsKey("batteryLevel")) aapsLogger.debug(LTag.BGSOURCE, "batteryLevel: " + bundle.getString("batteryLevel"))
if (bundle.containsKey("batteryLevel")) {
aapsLogger.debug(LTag.BGSOURCE, "batteryLevel: " + bundle.getString("batteryLevel"))
//sensorBatteryLevel = bundle.getString("batteryLevel").toInt() // TODO: Philoul: Line to check I don't have eversens so I don't know what kind of information is sent...
}
if (bundle.containsKey("signalStrength")) aapsLogger.debug(LTag.BGSOURCE, "signalStrength: " + bundle.getString("signalStrength"))
if (bundle.containsKey("transmitterVersionNumber")) aapsLogger.debug(LTag.BGSOURCE, "transmitterVersionNumber: " + bundle.getString("transmitterVersionNumber"))
if (bundle.containsKey("isXLVersion")) aapsLogger.debug(LTag.BGSOURCE, "isXLVersion: " + bundle.getBoolean("isXLVersion"))
@ -113,4 +118,8 @@ class EversensePlugin @Inject constructor(
}
}
}
override fun getSensorBatteryLevel(): Int {
return sensorBatteryLevel
}
}

View file

@ -31,6 +31,7 @@ class XdripPlugin @Inject constructor(
), BgSourceInterface {
private var advancedFiltering = false
private var sensorBatteryLevel = -1
override fun advancedFilteringSupported(): Boolean {
return advancedFiltering
@ -45,6 +46,7 @@ class XdripPlugin @Inject constructor(
bgReading.direction = bundle.getString(Intents.EXTRA_BG_SLOPE_NAME)
bgReading.date = bundle.getLong(Intents.EXTRA_TIMESTAMP)
bgReading.raw = bundle.getDouble(Intents.EXTRA_RAW)
//if (bundle.containsKey(Intents.EXTRA_SENSOR_BATTERY)) sensorBatteryLevel = bundle.getInt(Intents.EXTRA_SENSOR_BATTERY)
val source = bundle.getString(Intents.XDRIP_DATA_SOURCE_DESCRIPTION, "no Source specified")
setSource(source)
MainApp.getDbHelper().createIfNotExists(bgReading, "XDRIP")
@ -53,4 +55,8 @@ class XdripPlugin @Inject constructor(
private fun setSource(source: String) {
advancedFiltering = source.contains("G5 Native") || source.contains("G6 Native")
}
override fun getSensorBatteryLevel(): Int {
return sensorBatteryLevel
}
}

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,6 +2,7 @@ package info.nightscout.androidaps.skins
import androidx.annotation.LayoutRes
import androidx.annotation.StringRes
import info.nightscout.androidaps.R
interface SkinInterface {
@get:StringRes val description : Int
@ -9,4 +10,5 @@ interface SkinInterface {
val mainGraphHeight : Int // in dp
val secondaryGraphHeight : Int // in dp
@LayoutRes fun overviewLayout(isLandscape : Boolean, isTablet : Boolean, isSmallHeight : Boolean): Int
@LayoutRes fun actionsLayout(isLandscape : Boolean, isSmallWidth : Boolean): Int = R.layout.actions_fragment
}

View file

@ -0,0 +1,27 @@
package info.nightscout.androidaps.skins
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class SkinLowRes @Inject constructor(private val config: Config): SkinInterface {
override val description: Int get() = R.string.lowres_description
override val mainGraphHeight: Int get() = 200
override val secondaryGraphHeight: Int get() = 100
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int =
when {
config.NSCLIENT && isTablet -> R.layout.overview_fragment_nsclient_tablet
config.NSCLIENT -> R.layout.overview_fragment_nsclient
isSmallHeight || isLandscape -> R.layout.overview_fragment_landscape
else -> R.layout.overview_fragment
}
override fun actionsLayout(isLandscape : Boolean, isSmallWidth : Boolean): Int =
when {
isLandscape || !isSmallWidth -> R.layout.actions_fragment
else -> R.layout.actions_fragment_lowres
}
}

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

@ -24,7 +24,8 @@ class HardLimits @Inject constructor(
val TEENAGE = 1
val ADULT = 2
val RESISTANTADULT = 3
val MAXBOLUS = doubleArrayOf(5.0, 10.0, 17.0, 25.0)
val PREGNANT = 4
val MAXBOLUS = doubleArrayOf(5.0, 10.0, 17.0, 25.0, 60.0)
// Very Hard Limits Ranges
// First value is the Lowest and second value is the Highest a Limit can define
@ -36,15 +37,15 @@ class HardLimits @Inject constructor(
val VERY_HARD_LIMIT_TEMP_MIN_BG = intArrayOf(72, 180)
val VERY_HARD_LIMIT_TEMP_MAX_BG = intArrayOf(72, 270)
val VERY_HARD_LIMIT_TEMP_TARGET_BG = intArrayOf(72, 200)
val MINDIA = 5.0
val MAXDIA = 7.0
val MINIC = 2.0
val MAXIC = 100.0
val MINDIA = doubleArrayOf(5.0, 5.0, 5.0, 5.0, 5.0)
val MAXDIA = doubleArrayOf(7.0, 7.0, 7.0, 7.0, 10.0)
val MINIC = doubleArrayOf(2.0, 2.0, 2.0, 2.0, 0.3)
val MAXIC = doubleArrayOf(100.0, 100.0, 100.0, 100.0, 100.0)
val MINISF = 2.0 // mgdl
val MAXISF = 720.0 // mgdl
val MAXIOB_AMA = doubleArrayOf(3.0, 5.0, 7.0, 12.0)
val MAXIOB_SMB = doubleArrayOf(3.0, 7.0, 12.0, 25.0)
val MAXBASAL = doubleArrayOf(2.0, 5.0, 10.0, 12.0)
val MAXIOB_AMA = doubleArrayOf(3.0, 5.0, 7.0, 12.0, 25.0)
val MAXIOB_SMB = doubleArrayOf(3.0, 7.0, 12.0, 25.0, 40.0)
val MAXBASAL = doubleArrayOf(2.0, 5.0, 10.0, 12.0, 25.0)
//LGS Hard limits
//No IOB at all
@ -57,6 +58,7 @@ class HardLimits @Inject constructor(
else if (sp_age == resourceHelper.gs(R.string.key_teenage)) TEENAGE
else if (sp_age == resourceHelper.gs(R.string.key_adult)) ADULT
else if (sp_age == resourceHelper.gs(R.string.key_resistantadult)) RESISTANTADULT
else if (sp_age == resourceHelper.gs(R.string.key_pregnant)) PREGNANT
else ADULT
return age
}
@ -77,6 +79,22 @@ class HardLimits @Inject constructor(
return MAXBASAL[loadAge()]
}
fun minDia(): Double {
return MINDIA[loadAge()]
}
fun maxDia(): Double {
return MAXDIA[loadAge()]
}
fun minIC(): Double {
return MINIC[loadAge()]
}
fun maxIC(): Double {
return MAXIC[loadAge()]
}
// safety checks
fun checkOnlyHardLimits(value: Double, valueName: String?, lowLimit: Double, highLimit: Double): Boolean {
return value == verifyHardLimits(value, valueName, lowLimit, highLimit)
@ -96,4 +114,4 @@ class HardLimits @Inject constructor(
}
return newvalue
}
}
}

View file

@ -133,8 +133,8 @@ 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)
textView?.textSize = 12f
textView?.setPadding(10,0,0,0)
dialog.setCanceledOnTouchOutside(false)
}

View file

@ -0,0 +1,304 @@
<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"
tools:context=".plugins.general.actions.ActionsFragment">
<LinearLayout
android:id="@+id/action_buttons_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/actions" />
<androidx.gridlayout.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
app:columnCount="2">
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_profileswitch"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_actions_profileswitch"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_profileswitch"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="0" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_temptarget"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_actions_temptarget"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_temporarytarget"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="0" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_settempbasal"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_actions_starttempbasal"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/overview_tempbasal_button"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="1" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_canceltempbasal"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_cancelbasal"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/canceltemp"
android:visibility="gone"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="1" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_extendedbolus"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_actions_startextbolus"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/overview_extendedbolus_button"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="1" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_extendedbolus_cancel"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_actions_cancelextbolus"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/overview_extendedbolus_cancel_button"
android:visibility="gone"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="1" />
</androidx.gridlayout.widget.GridLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/careportal" />
<include
android:id="@+id/careportal_stats"
layout="@layout/careportal_stats_fragment_lowres"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" />
<androidx.gridlayout.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
app:columnCount="2">
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_bgcheck"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_bgcheck"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_bgcheck"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="2" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_fill"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_cp_pump_canula"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/primefill"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="2" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_cgmsensorinsert"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_cgm_insert"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_cgmsensorinsert"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="3" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_pumpbatterychange"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_pump_battery"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_pumpbatterychange"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="3" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_note"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_note"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_note"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="4" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_exercise"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_exercise"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_exercise"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="4" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_announcement"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_announcement"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_announcement"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="5" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_question"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/ic_cp_question"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_question"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="5" />
</androidx.gridlayout.widget.GridLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/tools" />
<androidx.gridlayout.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
app:columnCount="2">
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_historybrowser"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_danarhistory"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/nav_historybrowser"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="6" />
<info.nightscout.androidaps.utils.ui.SingleClickButton
android:id="@+id/actions_tddstats"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_cp_stats"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/tdd"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="6" />
</androidx.gridlayout.widget.GridLayout>
</LinearLayout>
</ScrollView>

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

@ -4,7 +4,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
tools:context=".plugins.general.careportal.CareportalFragment">
tools:context=".plugins.general.actions.ActionsFragment">
<ScrollView

View file

@ -2,203 +2,305 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
tools:context=".plugins.general.careportal.CareportalFragment">
tools:context=".plugins.general.actions.ActionsFragment">
<LinearLayout
android:layout_width="wrap_content"
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
android:stretchColumns="0,2,4">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_sensor"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_cp_age_sensor"
android:paddingRight="5dp"
android:paddingRight="2dp"
android:paddingStart="15dp"
android:text="@string/careportal_sensorage_label"
android:text="@string/careportal_sensor_label"
android:textSize="14sp" />
<TextView
android:layout_width="5dp"
android:id="@+id/careportal_sensoragelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center_horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:text=":"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_age_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_sensorage"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:paddingLeft="5dp"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:background="@color/listdelimiter" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:id="@+id/careportal_senslevellabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_cp_age_insulin"
android:paddingRight="5dp"
android:paddingStart="15dp"
android:text="@string/careportal_insulinage_label"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_level_label"
android:textSize="14sp" />
<TextView
android:layout_width="5dp"
android:id="@+id/careportal_sensorlevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center_horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:text=":"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="5"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_insulin"
android:gravity="center_vertical"
android:paddingStart="15dp"
android:paddingRight="2dp"
android:text="@string/careportal_insulin_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_insulinagelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_age_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_insulinage"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:paddingLeft="5dp"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:background="@color/listdelimiter" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:id="@+id/careportal_inslevellabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_cp_age_canula"
android:paddingRight="5dp"
android:paddingStart="15dp"
android:text="@string/careportal_canulaage_label"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_level_label"
android:textSize="14sp" />
<TextView
android:layout_width="5dp"
android:id="@+id/careportal_reservoirlevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center_horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:text=":"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="5"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_canula"
android:gravity="center_vertical"
android:paddingStart="15dp"
android:paddingRight="2dp"
android:text="@string/careportal_canula_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_canulaagelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_age_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_canulaage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="start"
android:paddingLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:background="@color/listdelimiter" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_cp_age_battery"
android:paddingRight="5dp"
android:paddingStart="15dp"
android:text="@string/careportal_pbage_label"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:textSize="14sp" />
<TextView
android:layout_width="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center_horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:text=":"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:text=""
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="5"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/careportal_pblabel"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_battery"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingStart="15dp"
android:text="@string/careportal_pb_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_pbagelabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_age_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_pbage"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:paddingLeft="5dp"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
<TextView
android:id="@+id/careportal_pblevellabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_level_label"
android:textSize="14sp" />
<View
<TextView
android:id="@+id/careportal_batterylevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:background="@color/listdelimiter" />
android:layout_height="wrap_content">
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="5"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
</TableLayout>
</FrameLayout>

View file

@ -0,0 +1,228 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
tools:context=".plugins.general.actions.ActionsFragment">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,2,4">
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_sensor"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingStart="15dp"
android:text="@string/careportal_sensor_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_sensorage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_sensorlevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="3"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_insulin"
android:gravity="center_vertical"
android:paddingStart="15dp"
android:paddingRight="2dp"
android:text="@string/careportal_insulin_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_insulinage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_reservoirlevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="3"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_canula"
android:gravity="center_vertical"
android:paddingStart="15dp"
android:paddingRight="2dp"
android:text="@string/careportal_canula_label"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_canulaage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:text=""
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="3"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/careportal_pblabel"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:drawableLeft="@drawable/ic_cp_age_battery"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingStart="15dp"
android:text="@string/pump"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_pbage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="2dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/careportal_batterylevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginRight="20dp"
android:paddingLeft="2dp"
android:textColor="@android:color/white"
android:textSize="14sp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_span="3"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="2dp"
android:background="@color/listdelimiter" />
</TableRow>
</TableLayout>
</FrameLayout>

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

@ -309,12 +309,10 @@
<string name="wear_detailedIOB_title">Wys gedetailleerde IAB</string>
<string name="wear_detailedIOB_summary">Breek af IAB in bolus en basale IAB op die watchface</string>
<string name="nosuccess">nie suksesvol - Kontroleer asseblief foon</string>
<string name="patientage">Pasiënt ouderdom</string>
<string name="child">Kind</string>
<string name="teenage">Tiener</string>
<string name="adult">Volwassene</string>
<string name="resistantadult">Insulien weerstandige volwasse</string>
<string name="patientage_summary">Kies asseblief pasiënt ouderdom om veiligheids limiete te stel</string>
<string name="Glimp">Glimp</string>
<string name="needwhitelisting">%1$s benodig battery optimisering bemagtiging vir beter werksverrigting</string>
<string name="loopsuspended">Lus opgeskort</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>
@ -260,7 +261,7 @@
<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>
<string name="smscommunicator_pumpdisconnectwithcode">За да спрете помпата за %1$d минути отговорете с код %2$s</string>
<string name="smscommunicator_pumpdisconnected">Помпата е разкачена</string>
<string name="smscommunicator_reconnect">Връзката с помпа е възстановена</string>
<string name="smscommunicator_remotecommandnotallowed">Отдалеченото управление е забранено</string>
@ -404,12 +405,11 @@
<string name="wear_detailedIOB_summary">Раздели IOB от болус и от базал на часовника</string>
<string name="nosuccess">неуспешно - моля проверете телефона</string>
<string name="notavailable">---</string>
<string name="patientage">Възраст на потребителя</string>
<string name="child">Дете</string>
<string name="teenage">Тийнейджър</string>
<string name="adult">Възрастен</string>
<string name="resistantadult">Възрастни с голяма инсулинова резистентност</string>
<string name="patientage_summary">Изберете възраст за определяне лимитите на безопасност</string>
<string name="pregnant">Бременност</string>
<string name="patient_name">Име на пациента</string>
<string name="patient_name_summary">Моля, посочете име на пациента или измислено име, за да се различават</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Потребител</string>
@ -453,6 +453,8 @@
<string name="statuslights_iage_critical">Праг за критична инсулинова възраст [часа]</string>
<string name="statuslights_sage_warning">Праг за възраст на сензор [часа]</string>
<string name="statuslights_sage_critical">Праг за критична възраст на сензор [часа]</string>
<string name="statuslights_sbat_warning">Аларма при заряд на батерия под [%]</string>
<string name="statuslights_sbat_critical">Критично ниво на сензорната батерия под [%]</string>
<string name="statuslights_bage_warning">Аларма при възраст на батерия над [часа]</string>
<string name="statuslights_bage_critical">Праг за критична възраст на батерията над [часа]</string>
<string name="statuslights_res_warning">Ниво за аларма за останал инсулин в резервоара [Е]</string>
@ -483,6 +485,12 @@
<string name="careportal_insulinage_label">Възраст на инсулина</string>
<string name="doprofileswitch">Смени профил</string>
<string name="careportal_pbage_label">Възраст на батерията на помпата</string>
<string name="careportal_sensor_label">Сензор</string>
<string name="careportal_canula_label">Канюла</string>
<string name="careportal_insulin_label">Инсулин</string>
<string name="careportal_pb_label">Батерия на помпата</string>
<string name="careportal_age_label">възраст:</string>
<string name="careportal_level_label">ниво:</string>
<string name="ns_alarmoptions">Опции за аларми</string>
<string name="ns_alarms">Известяване при NS аларми</string>
<string name="ns_announcements">Създаване на известия от NS съобщения</string>
@ -535,6 +543,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 +806,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>
@ -986,6 +997,7 @@
<string name="storage">Ограничение поради липса на памет</string>
<string name="diskfull">Освободете поне %1$d Мб в паметта на телефона! Loop изключен!</string>
<string name="wrongformat">Грешен формат</string>
<string name="wrongTbrDuration">Продължителността на временния база; трябва да бъде кратна на %1$d минути и по-голяма от 0.</string>
<string name="sms_wrongcode">Грешен код. Командата не е изпълнена.</string>
<string name="notconfigured">Не е конфигуриран</string>
<string name="profileswitchcreated">Създаден запис - Промяна на профил</string>
@ -1151,6 +1163,9 @@
<string name="smscommunicator_otp_reset_title">Нулиране на ключва</string>
<string name="smscommunicator_otp_reset_prompt">Сигурни ли сте, че ще анулирате ключа на Authenticator? Той ще направи всички конфигурирани в момента аудиентикатори невалидни, и вие ще трябва да ги настроите отново.</string>
<string name="smscommunicator_otp_reset_successful">Генериран е нов ключ! Моля, използвайте актуализирания QRCode.</string>
<string name="smscommunicator_otp_export_title">Експортиране на OTP парола</string>
<string name="smscommunicator_otp_export_prompt">Сигурни ли сте, че искате да копирате OTP паролата в клипборда?\n\nВие може да се нуждаете само от това, ако вашето приложение за автентичност има проблеми със сканирането на QRCode, искате да го въведете ръчно или искате да конфигурирате хардуерен OTP токен чрез специално приложение.</string>
<string name="smscommunicator_otp_export_successful">OTP парола (във Base32 формат) е експортирана и копирана в клипборда. Поставете го в автентикатор или хардуерен OTP!</string>
<string name="smscommunicator_otp_step1_install_header">1. Инсталиране на удостоверител</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Сканиране на кода за настройка на AndroidAPS OTP </string>
<string name="smscommunicator_otp_step3_test_header">3. Тест на еднократна парола</string>
@ -1170,6 +1185,7 @@
<string name="statuslights_copy_ns">Копиране на настройки от NS</string>
<string name="copyexistingvalues">Копиране на профил от NS (ако има)?</string>
<string name="classic_description">Оригинален изглед</string>
<string name="lowres_description">Скин за ниска резолюция</string>
<string name="buttonson_description">Бутоните винаги се показват на дъното на екрана.</string>
<string name="largedisplay_description">Голям екран</string>
<string name="skin">Тема</string>
@ -1213,4 +1229,6 @@
<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>
<string name="setupwizard_pump_riley_link_status">RileyLink статус:</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>
@ -260,7 +261,7 @@
<string name="valueoutofrange">Hodnota %1$s je mimo přednastavený rozsah</string>
<string name="smscommunicator_pumpconnectwithcode">Chcete-li připojit pumpu, odpovězte pomocí SMS s kódem %1$s</string>
<string name="smscommunicator_pumpconnectfail">Připojení k pumpě selhalo</string>
<string name="smscommunicator_pumpdisconnectwithcode">Chcete-li odpojit pumpu na %1d minut, odpovězte pomocí SMS s kódem %2$s</string>
<string name="smscommunicator_pumpdisconnectwithcode">Chcete-li odpojit pumpu na %1$d minut, odpovězte pomocí SMS s kódem %2$s</string>
<string name="smscommunicator_pumpdisconnected">Pumpa odpojena</string>
<string name="smscommunicator_reconnect">Pumpa byla znovu připojena</string>
<string name="smscommunicator_remotecommandnotallowed">Vzdálený příkaz není povolen</string>
@ -404,12 +405,13 @@
<string name="wear_detailedIOB_summary">Rozepsat IOB do bolusového a bazálního na hodinkách</string>
<string name="nosuccess">neúspěšně - zkontrolujte mobil</string>
<string name="notavailable">n/a</string>
<string name="patientage">Stáří pacienta</string>
<string name="patientage">Typ pacienta</string>
<string name="child">Dítě</string>
<string name="teenage">Dospívající</string>
<string name="adult">Dospělý</string>
<string name="resistantadult">Dospělý s nízkou citlivostí</string>
<string name="patientage_summary">Vyberte věk pacienta pro nastavení bezpečnostních limitů</string>
<string name="pregnant">Těhotenství</string>
<string name="patientage_summary">Prosím vyberte typ pacienta pro nastavení bezpečnostních limitů</string>
<string name="patient_name">Jméno pacienta</string>
<string name="patient_name_summary">Zadejte jméno pacienta nebo přezdívku pro rozlišení mezi více nastaveními</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Uživatel</string>
@ -453,6 +455,8 @@
<string name="statuslights_iage_critical">Úroveň kritického stáří inzulínu [h]</string>
<string name="statuslights_sage_warning">Úroveň varování stáří senzoru [h]</string>
<string name="statuslights_sage_critical">Úroveň kritického stáří senzoru [h]</string>
<string name="statuslights_sbat_warning">Úroveň varování stavu baterie senzoru [%]</string>
<string name="statuslights_sbat_critical">Úroveň kritického varování stavu baterie senzoru [%]</string>
<string name="statuslights_bage_warning">Úroveň varování stáří baterie [h]</string>
<string name="statuslights_bage_critical">Úroveň kritického varování stáří baterie [h]</string>
<string name="statuslights_res_warning">Úroveň varování stavu zásobníku [U]</string>
@ -483,6 +487,12 @@
<string name="careportal_insulinage_label">Stáří inzulínu</string>
<string name="doprofileswitch">Proveďte přepnutí profilu</string>
<string name="careportal_pbage_label">Stáří baterie v pumpě</string>
<string name="careportal_sensor_label">Senzor</string>
<string name="careportal_canula_label">Kanyla</string>
<string name="careportal_insulin_label">Inzulín</string>
<string name="careportal_pb_label">Baterie pumpy</string>
<string name="careportal_age_label">věk:</string>
<string name="careportal_level_label">úroveň:</string>
<string name="ns_alarmoptions">Nastavení alarmů</string>
<string name="ns_alarms">Vytvořit oznámení z alarmů NS</string>
<string name="ns_announcements">Vytvořit oznámení z NS upozornění </string>
@ -535,6 +545,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 +808,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>
@ -986,6 +999,7 @@
<string name="storage">omezení vnitřního úložiště</string>
<string name="diskfull">Uvolněte alespoň %1$d MB z vnitřního úložiště! Smyčka zakázána!</string>
<string name="wrongformat">Chybný formát</string>
<string name="wrongTbrDuration">Trvání dočasného bazálu musí být násobkem %1$d minut a musí být větší než 0.</string>
<string name="sms_wrongcode">Nesprávný kód. Příkaz zrušen.</string>
<string name="notconfigured">Není nakonfigurováno</string>
<string name="profileswitchcreated">Přepnutí profilu vytvořeno</string>
@ -1151,6 +1165,9 @@
<string name="smscommunicator_otp_reset_title">Resetovat klíč pro autentikátory</string>
<string name="smscommunicator_otp_reset_prompt">Opravdu chcete obnovit ověřovací klíč? Vyresetujete všechny aktuálně nakonfigurované autentikátory a budete je muset znovu nastavit.</string>
<string name="smscommunicator_otp_reset_successful">Byl vygenerován nový klíč autentikátoru! Prosím, použijte aktualizovaný QR kód pro nastavení autentikátorů.</string>
<string name="smscommunicator_otp_export_title">Export OTP tajného klíče</string>
<string name="smscommunicator_otp_export_prompt">Jste si jisti, že chcete zkopírovat tajný OTP klíč do schránky?\n\nPravděpodobně to budete potřebovat pouze v případě, když bude mít vaše ověřovací aplikace problém se skenováním QR kodu, chcete ho zadat ručně, nebo chcete nakonfigurovat hardwarový OTP token pomocí specializované aplikace.</string>
<string name="smscommunicator_otp_export_successful">Tajné OTP heslo (ve formátu Base32) bylo vyexportováno a zkopírováno do schránky. Vložte ho do autentikátoru nebo programátoru OTP hardwaru!</string>
<string name="smscommunicator_otp_step1_install_header">1. Nainstalujte Autentikátor</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Naskenujte kód pro nastavení kódů OTP AndroidAPS</string>
<string name="smscommunicator_otp_step3_test_header">3. Otestujte jednorázové heslo</string>
@ -1170,6 +1187,7 @@
<string name="statuslights_copy_ns">Zkopírovat nastavení z NS</string>
<string name="copyexistingvalues">Zkopírovat nastavení NS (existuje-li)?</string>
<string name="classic_description">Původní vzhled</string>
<string name="lowres_description">Vzhled pro nízké rozlišení</string>
<string name="buttonson_description">Tlačítka jsou vždy zobrazena v dolní části obrazovky</string>
<string name="largedisplay_description">Velký displej</string>
<string name="skin">Vzhled</string>
@ -1214,4 +1232,5 @@
<string name="worker_state">Stav procesu: %s</string>
<string name="uploaded_data">Odeslaná data</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Následující data budou nahrána do vašeho účtu Open Humans: hodnoty glykémie, bolusy, sacharidy, události péče (kromě poznámek), rozložené bolusy, přepnutí profilu, celkové denní dávky, dočasné bazály, nastavení, verze aplikace, model zařízení a rozměry obrazovky. Tajné nebo soukromé informace, jako je URL nebo API heslo vašeho Nightscoutu, nahrány nebudou.</string>
<string name="setupwizard_pump_riley_link_status">Status RileyLink:</string>
</resources>

View file

@ -134,8 +134,8 @@
<string name="ic_increasingvalue">Ein höheres IC-Verhältnis bedeutet, dass weniger Insulin für die selbe Menge an KH abgegeben wird.</string>
<string name="ic_decreasingvalue">Ein niedrigeres IC-Verhältnis bedeutet, dass weniger Insulin für die selbe Menge an KH abgegeben wird.</string>
<string name="ic_noeffect">Das Ändern des IC-Verhältnisses bedeutet, dass bei 0 COB eine andere Menge an Insulin zur Korrektur eines vorgegebenen BZ-Wertes abgegeben wird.</string>
<string name="ic_different">Der IC-Wert muss sich unterscheiden, je nachdem, ob Du eine BE mit 10g oder mit 12g berechnest.</string>
<string name="ic_meaning">IC bedeutet: Wie viele BE werden durch eine Einheit Insulin abgedeckt?</string>
<string name="ic_different">Der IC-Wert wird sich unterscheiden, je nachdem, ob Du eine Broteinheit (BE) mit 10g oder mit 12g berechnest.</string>
<string name="ic_meaning">IC bedeutet: Anzahl BE, die durch eine Einheit Insulin abgedeckt werden</string>
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/de/Getting-Started/FAQ.html#kh-faktor-carbohydrate-to-insulin-ratio-cr-g-ie</string>
<string name="profileswitch_label">Thema: Profilwechsel</string>
<string name="profileswitch_pctwillchange"> Durch einen Profilwechsel auf 90%…</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>
@ -260,7 +261,7 @@
<string name="valueoutofrange">Wert %1$s ist außerhalb des festen Limits.</string>
<string name="smscommunicator_pumpconnectwithcode">Um die Pumpe zu verbinden, antworte mit dem Code %1$s</string>
<string name="smscommunicator_pumpconnectfail">Verbindung zur Pumpe fehlgeschlagen</string>
<string name="smscommunicator_pumpdisconnectwithcode">Um die Verbindung zur Pumpe für %1d Minuten zu trennen, antworte mit dem Code %2$s</string>
<string name="smscommunicator_pumpdisconnectwithcode">Um die Verbindung zur Pumpe für %1$d Minuten zu trennen, antworte mit dem Code %2$s</string>
<string name="smscommunicator_pumpdisconnected">Verbindung zur Pumpe getrennt</string>
<string name="smscommunicator_reconnect">Verbindung zur Pumpe wiederhergestellt</string>
<string name="smscommunicator_remotecommandnotallowed">Ferngesteuerte Befehle sind nicht erlaubt.</string>
@ -404,12 +405,13 @@
<string name="wear_detailedIOB_summary">Differenziere IOB in Bolus- und Basal-IOB auf dem Watchface</string>
<string name="nosuccess">Nicht erfolgreich - bitte Telefon prüfen</string>
<string name="notavailable">n/a</string>
<string name="patientage">Patientenalter</string>
<string name="patientage">Patiententyp</string>
<string name="child">Kind</string>
<string name="teenage">Teenager</string>
<string name="adult">Erwachsener</string>
<string name="resistantadult">Insulinresistenter Erwachsener</string>
<string name="patientage_summary">Bitte wähle das Patientenalter, um die Sicherheits-Limits festzulegen</string>
<string name="pregnant">Schwangerschaft</string>
<string name="patientage_summary">Bitte wähle den Patiententyp, um die Sicherheits-Limits festzulegen</string>
<string name="patient_name">Name des Patienten</string>
<string name="patient_name_summary">Bitte gib den Namen des Patienten oder einen Spitznamen an, um mehrere Setups unterscheiden zu können.</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Nutzer</string>
@ -453,6 +455,8 @@
<string name="statuslights_iage_critical">Warnschwelle kritisches Insulinalter [h]</string>
<string name="statuslights_sage_warning">Warnschwelle Sensoralter [h]</string>
<string name="statuslights_sage_critical">Warnschwelle kritisches Sensoralter [h]</string>
<string name="statuslights_sbat_warning">Warnschwelle Sensor-Batteriestand [%]</string>
<string name="statuslights_sbat_critical">Warnschwelle kritischer Sensor-Batteriestand [%]</string>
<string name="statuslights_bage_warning">Warnschwelle Batteriealter [h]</string>
<string name="statuslights_bage_critical">Warnschwelle kritisches Batteriealter [h]</string>
<string name="statuslights_res_warning">Warnschwelle Reservoirstand [IE]</string>
@ -483,6 +487,12 @@
<string name="careportal_insulinage_label">Insulinalter</string>
<string name="doprofileswitch">Profilwechsel durchführen</string>
<string name="careportal_pbage_label">Batteriealter</string>
<string name="careportal_sensor_label">Sensor</string>
<string name="careportal_canula_label">Kanüle</string>
<string name="careportal_insulin_label">Insulin</string>
<string name="careportal_pb_label">Pumpenbatterie</string>
<string name="careportal_age_label">Alter:</string>
<string name="careportal_level_label">Level:</string>
<string name="ns_alarmoptions">Alarm-Optionen</string>
<string name="ns_alarms">Benachrichtigungen über NS-Alarme</string>
<string name="ns_announcements">Benachrichtigungen über NS-Ankündigungen</string>
@ -535,6 +545,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 +808,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>
@ -987,6 +1000,7 @@ Unerwartetes Verhalten.</string>
<string name="storage">interne Speicherbegrenzung</string>
<string name="diskfull">Mindestens %1$d MB freier interer Speicher benötigt! Loop abgeschaltet!</string>
<string name="wrongformat">Falsches Format</string>
<string name="wrongTbrDuration">Die TBR-Dauer muss ein Vielfaches von %1$d Minuten und größer als 0 sein.</string>
<string name="sms_wrongcode">Falscher Code. Befehl wurde abgebrochen.</string>
<string name="notconfigured">Nicht konfiguriert</string>
<string name="profileswitchcreated">Profilwechsel wurde erstellt</string>
@ -1152,6 +1166,9 @@ Unerwartetes Verhalten.</string>
<string name="smscommunicator_otp_reset_title">Authentifikatorschlüssel zurücksetzen</string>
<string name="smscommunicator_otp_reset_prompt">Willst Du wirklich den Authentifikatorschlüssel zurücksetzen? Dies wird alle momentan genutzten Authentifikatoren ungültig machen und Du musst sie neu einrichten.</string>
<string name="smscommunicator_otp_reset_successful">Neuer Authentifizierungsschlüssel generiert! Bitte verwende den aktualisierten QR-Code für die Bereitstellung von Authentifikatoren.</string>
<string name="smscommunicator_otp_export_title">OTP-Secret exportieren</string>
<string name="smscommunicator_otp_export_prompt">Willst Du wirklich das OTP Secret in die Zwischenablage kopieren?\n\nDas ist nur erforderlich, wenn Deine Authentifizierungs-App Probleme mit dem Scannen des QR-Codes hat. Du kannst es auch manuell eingeben oder einen Hardware-OTP-Token mit einer bestimmten App verwenden.</string>
<string name="smscommunicator_otp_export_successful">OTP Secret (im Base32 Format) exportiert und in die Zwischenablage kopiert. Setze es von dort in Deine Authentifizierungs-App ein.</string>
<string name="smscommunicator_otp_step1_install_header">1. Authentifikator installieren</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>
@ -1171,6 +1188,7 @@ Unerwartetes Verhalten.</string>
<string name="statuslights_copy_ns">Einstellung aus NS kopieren</string>
<string name="copyexistingvalues">NS-Einstellungen kopieren (falls vorhanden)?</string>
<string name="classic_description">Ursprüngliches Erscheinungsbild</string>
<string name="lowres_description">Darstellung niedrige Auflösung</string>
<string name="buttonson_description">Schaltflächen werden immer am unteren Rand des Bildschirms angezeigt</string>
<string name="largedisplay_description">Großer Bildschirm</string>
<string name="skin">Erscheinungsbild</string>
@ -1193,7 +1211,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>
@ -1215,4 +1233,5 @@ Unerwartetes Verhalten.</string>
<string name="worker_state">Worker State: %s</string>
<string name="uploaded_data">Daten hochgeladen</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Die folgenden Daten werden auf Dein Open Humans-Konto hochgeladen: Glukosewerte, Boli, Kohlenhydrate, Careportal-Ereignisse (außer Notizen), erweiterte Boli, Profilwechsel, Gesamttagesdosen, temporäre Basalwerte, Temporäre Ziele, Einstellungen, Anwendungsversion, Gerätemodell und Bildschirmabmessungen. Vertrauliche oder private Informationen wie z.B. Deine Nightscout-URL oder Dein API-Secret werden nicht hochgeladen.</string>
<string name="setupwizard_pump_riley_link_status">RileyLink Status:</string>
</resources>

View file

@ -131,8 +131,6 @@
<string name="ic_increasingvalue">Υψηλή αναλογία IC οδηγεί σε λιγότερη χορήγηση ινσουλίνης για μια δεδομένη ποσότητα υδατανθράκων.</string>
<string name="ic_decreasingvalue">Μικρή αναλογία IC οδηγεί σε λιγότερη χορήγηση ινσουλίνης για μια δεδομένη ποσότητα υδατανθράκων.</string>
<string name="ic_noeffect">Αν έχετε 0 COB Ενεργούς Υδατ., αλλάζοντας την αναλογία IC θα οδηγήσει σε μια διαφορετική ποσότητα ινσουλίνης για να διορθωθεί μια συγκεκριμένη τιμή BG.</string>
<string name="ic_different">Το IC θα είναι διαφορετικό αν υπολογίζετε το ψωμί ως 10g ή 12g.</string>
<string name="ic_meaning">Η έννοια του IC είναι: Πόσες φέτες ψωμί καλύπτονται από 1 μονάδα ινσουλίνης.</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">Θέμα: Αλλαγή Προφίλ</string>
<string name="profileswitch_pctwillchange"> Όταν καθορίζεται 90% στην αλλαγή προφίλ…</string>

View file

@ -311,12 +311,10 @@
<string name="wear_detailedIOB_title">Δείξε αναλυτικά IOB</string>
<string name="wear_detailedIOB_summary">Χώρισε την IOB σε bolus και βασικό στο ρολόι</string>
<string name="nosuccess">αποτυχία - ελέγξτε τηλέφωνο</string>
<string name="patientage">Ηλικία χρήστη</string>
<string name="child">Παιδί</string>
<string name="teenage">Έφηβος</string>
<string name="adult">Ενήλικας</string>
<string name="resistantadult">Αντίσταση ινσουλίνης ενηλίκων</string>
<string name="patientage_summary">Παρακαλώ επιλέξτε ηλικία χρήστη για να ορισθούν όρια ασφαλείας</string>
<string name="Glimp">Glimp</string>
<string name="needwhitelisting">%1$s χρειάζεται λίστα βελτιστοποίησης μπαταρίας για σωστή απόδοση</string>
<string name="loopsuspended">Κύκλωμα σε αναστολή</string>

View file

@ -134,8 +134,6 @@
<string name="ic_increasingvalue">Los ratios IC más altos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.</string>
<string name="ic_decreasingvalue">Los ratios IC más bajos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.</string>
<string name="ic_noeffect">Si tiene 0 COB, cambiar la ratio IC conducirá a una cantidad distinta de insulina para corregir un valor de glucemia determinado.</string>
<string name="ic_different">El IC será diferente si cuenta con una unidad de pan como 10g o 12g.</string>
<string name="ic_meaning">IC significa: Cuántas unidades de pan están cubiertas por 1U de insulina.</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: Cambio de perfil</string>
<string name="profileswitch_pctwillchange"> Especificando el 90% en el cambio de perfil…</string>

View file

@ -257,7 +257,6 @@
<string name="valueoutofrange">El valor %1$s está fuera de límites</string>
<string name="smscommunicator_pumpconnectwithcode">Para conectar la infusora responder con el código %1$s</string>
<string name="smscommunicator_pumpconnectfail">Error al conectar a la bomba</string>
<string name="smscommunicator_pumpdisconnectwithcode">Para desconectar la bomba durante %1dminutos responde con el código %2$s</string>
<string name="smscommunicator_pumpdisconnected">Bomba desconectada</string>
<string name="smscommunicator_reconnect">Bomba reconectada</string>
<string name="smscommunicator_remotecommandnotallowed">Comando remoto no permitido</string>
@ -401,12 +400,10 @@
<string name="wear_detailedIOB_summary">Separar IOB en bolo y base en el reloj</string>
<string name="nosuccess">sin efecto - por favor verificar en móvil</string>
<string name="notavailable">n/a</string>
<string name="patientage">Edad paciente</string>
<string name="child">Menor de edad</string>
<string name="teenage">Adolescente</string>
<string name="adult">Adulto</string>
<string name="resistantadult">Adulto resistente a la insulina</string>
<string name="patientage_summary">Por favor elige la edad del paciente para ajustar los límites de seguridad</string>
<string name="patient_name">Nombre del paciente</string>
<string name="patient_name_summary">Proporcione el nombre de paciente o el apodo para diferenciar entre varias configuraciones</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Usuario</string>

View file

@ -134,8 +134,8 @@
<string name="ic_increasingvalue">Les ratios G/I plus élevés conduisent à moins d\'insuline injectée pour une quantité donnée de glucides.</string>
<string name="ic_decreasingvalue">Les ratios G/I plus faibles conduisent à moins d\'insuline injectée pour une quantité donnée de glucides.</string>
<string name="ic_noeffect">Si vous avez 0 GA, changer le ratio G/I conduira à différentes quantités d\'insuline pour corriger une valeur de glycémie donnée.</string>
<string name="ic_different">Le G/I sera différent si vous comptez l\'unité de pain à 10g ou à 12g.</string>
<string name="ic_meaning">Le G/I (Ratio Glucides/Insuline) est : combien d\'unités de pain sont couverte par 1U d\'insuline.</string>
<string name="ic_different">Le G/I sera différent si vous comptez l\'unité (d\'échange) de pain à 10g ou à 12g.</string>
<string name="ic_meaning">Le G/I (Ratio Glucides/Insuline) est : combien d\'unités (d\'échange) de pain sont couverte par 1U d\'insuline.</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">Rubrique : Changement de profil</string>
<string name="profileswitch_pctwillchange"> Quand on renseigne 90% dans le changement de profil…</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>
@ -261,7 +262,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="valueoutofrange">La valeur %1$s est en dehors des limites</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 min, renvoyez le code %2$s</string>
<string name="smscommunicator_pumpdisconnectwithcode">Pour déconnecter la pompe pendant %1$d 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>
@ -405,12 +406,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="wear_detailedIOB_summary">Sur la montre, décomposer lIA en IA bolus et IA basal</string>
<string name="nosuccess">Sans succès - vérifiez votre téléphone</string>
<string name="notavailable">s/o</string>
<string name="patientage">Age du patient</string>
<string name="patientage">Type de patient</string>
<string name="child"> Enfant</string>
<string name="teenage">Adolescent</string>
<string name="adult">Adulte</string>
<string name="resistantadult">Adulte résistant à l\'insuline</string>
<string name="patientage_summary">Veuillez svp sélectionner lâge du patient pour définir les limites de sécurité</string>
<string name="pregnant">Grossesse</string>
<string name="patientage_summary">Veuillez sélectionner le type de patient pour définir les limites de sécurité</string>
<string name="patient_name">Nom du patient</string>
<string name="patient_name_summary">Veuillez indiquer un nom ou pseudo du patient pour différencier plusieurs configurations</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Patient</string>
@ -454,6 +456,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="statuslights_iage_critical">Seuil critique âge insuline [h]</string>
<string name="statuslights_sage_warning">Seuil d\'alerte âge capteur [h]</string>
<string name="statuslights_sage_critical">Seuil critique âge capteur [h]</string>
<string name="statuslights_sbat_warning">Seuil dalerte niveau pile capteur [%]</string>
<string name="statuslights_sbat_critical">Seuil critique niveau pile capteur [%]</string>
<string name="statuslights_bage_warning">Seuil d\'alerte âge pile [h]</string>
<string name="statuslights_bage_critical">Seuil critique âge pile [h]</string>
<string name="statuslights_res_warning">Seuil d\'alerte niveau réservoir [U]</string>
@ -484,6 +488,12 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="careportal_insulinage_label">Age Insuline</string>
<string name="doprofileswitch">Changer de profil</string>
<string name="careportal_pbage_label">Age Pile Pompe</string>
<string name="careportal_sensor_label">Capteur</string>
<string name="careportal_canula_label">Canule</string>
<string name="careportal_insulin_label">Insuline</string>
<string name="careportal_pb_label">Pile pompe</string>
<string name="careportal_age_label">age:</string>
<string name="careportal_level_label">niveau:</string>
<string name="ns_alarmoptions">Options d\'alarme</string>
<string name="ns_alarms">Créer des notifications à partir des alarmes NS</string>
<string name="ns_announcements">Créer des notifications à partir des notifications NS</string>
@ -536,6 +546,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 +809,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>
@ -987,6 +1000,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="storage">stockage interne limité</string>
<string name="diskfull">Boucle désactivée ! Libérez au moins %1$d Mo du stockage interne !</string>
<string name="wrongformat">Format incorrect</string>
<string name="wrongTbrDuration">La durée du DBT doit être un multiple de %1$d minutes et supérieure à 0.</string>
<string name="sms_wrongcode">Code incorrect. Commande annulée.</string>
<string name="notconfigured">Non configuré</string>
<string name="profileswitchcreated">Changement de profil effectué</string>
@ -1152,6 +1166,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="smscommunicator_otp_reset_title">Réinitialiser la clé de l\'Authentificateur</string>
<string name="smscommunicator_otp_reset_prompt">Voulez-vous réinitialiser la clé de l\'Authenticateur ? Cela rendra tous authentificateurs configurés invalides, et vous devrez les configurer à nouveau.</string>
<string name="smscommunicator_otp_reset_successful">Nouvelle clé de l\'Authenticateur générée ! Veuillez utiliser le QRCode mis à jour pour les authentificateurs.</string>
<string name="smscommunicator_otp_export_title">Exportation de l\'OTP secret</string>
<string name="smscommunicator_otp_export_prompt">Êtes-vous sûr de vouloir copier l\'OTP secret dans le presse-papiers ?\n\nVous pouvez en avoir besoin uniquement si votre application d\'authentification a des problèmes pour scanner le QRCode, si vous voulez le saisir manuellement ou si vous voulez configurer un jeton OTP matériel en utilisant une application dédiée.</string>
<string name="smscommunicator_otp_export_successful">OTP secret (au format Base32) exporté et copié dans le presse-papiers. Collez-le dans l\'authentificateur ou le graveur OTP matériel !</string>
<string name="smscommunicator_otp_step1_install_header">1. Installation l\'Authentificateur</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Scan du code pour configurer les codes OTP AndroidAPS</string>
<string name="smscommunicator_otp_step3_test_header">3. Test Mot-de-Passe-Unique (OTP)</string>
@ -1171,14 +1188,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="statuslights_copy_ns">Copier les paramètres depuis NS</string>
<string name="copyexistingvalues">Copier les paramètres NS (s\'ils existent)?</string>
<string name="classic_description">Thème d\'origine</string>
<string name="buttonson_description">Les boutons sont toujours affichés en bas de l\'écran</string>
<string name="lowres_description">Basse résolution</string>
<string name="buttonson_description">Boutons toujours en bas</string>
<string name="largedisplay_description">Grand écran</string>
<string name="skin">Thème</string>
<string name="comapareprofile">Comparer les profils</string>
<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>
@ -1215,4 +1233,5 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="worker_state">État du travail : %s</string>
<string name="uploaded_data">Données transférées</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Les données suivantes seront téléchargées sur votre compte Open Humans : glycémie, bolus, glucides, événements Careportal (sauf les notes), bolus étendus, changements de profil, doses quotidiennes totales, basales temporaires, cibles temporaires, préférences, version de l\'application, modèle de l\'appareil et dimensions de l\'écran. Les informations secrètes ou privées telles que votre URL Nightscout ou votre API secret ne seront pas téléchargés.</string>
<string name="setupwizard_pump_riley_link_status">État du RileyLink :</string>
</resources>

View file

@ -261,7 +261,7 @@
<string name="valueoutofrange">Il valore %1$s è fuori limite massimo</string>
<string name="smscommunicator_pumpconnectwithcode">Per connettere il micro rispondi col codice %1$s</string>
<string name="smscommunicator_pumpconnectfail">Connessione al micro fallita</string>
<string name="smscommunicator_pumpdisconnectwithcode">Per disconnettere il micro per %1d minuti rispondi col codice %2$s</string>
<string name="smscommunicator_pumpdisconnectwithcode">Per disconnettere il micro per %1$d minuti rispondi col codice %2$s</string>
<string name="smscommunicator_pumpdisconnected">Micro disconnesso</string>
<string name="smscommunicator_reconnect">Micro riconnesso</string>
<string name="smscommunicator_remotecommandnotallowed">Il comando da remoto non è permesso</string>
@ -405,12 +405,13 @@
<string name="wear_detailedIOB_summary">Dividi IOB in bolo e basale sulla watchface</string>
<string name="nosuccess">non riuscito - controlla il telefono</string>
<string name="notavailable">n/a</string>
<string name="patientage">Età del paziente</string>
<string name="patientage">Tipo paziente</string>
<string name="child">Bambino</string>
<string name="teenage">Adolescente</string>
<string name="adult">Adulto</string>
<string name="resistantadult">Adulto insulino-resistente</string>
<string name="patientage_summary">Seleziona l\'età del paziente per impostare i limiti di sicurezza</string>
<string name="pregnant">Gravidanza</string>
<string name="patientage_summary">Seleziona il tipo di paziente per configurare i limiti di sicurezza</string>
<string name="patient_name">Nome paziente</string>
<string name="patient_name_summary">Fornisci il nome del paziente o il nickname per distinguere questa configurazione tra altre</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Utente</string>
@ -454,6 +455,8 @@
<string name="statuslights_iage_critical">Soglia età insulina critica [h]</string>
<string name="statuslights_sage_warning">Soglia di avviso età sensore [h]</string>
<string name="statuslights_sage_critical">Soglia età sensore critica [h]</string>
<string name="statuslights_sbat_warning">Soglia di avviso livello batteria sensore [%]</string>
<string name="statuslights_sbat_critical">Soglia livello batteria sensore critico [%]</string>
<string name="statuslights_bage_warning">Soglia di avviso età batteria [h]</string>
<string name="statuslights_bage_critical">Soglia età batteria critica [h]</string>
<string name="statuslights_res_warning">Soglia di avviso livello serbatoio [U]</string>
@ -484,6 +487,12 @@
<string name="careportal_insulinage_label">Età insulina</string>
<string name="doprofileswitch">Cambia profilo</string>
<string name="careportal_pbage_label">Età batteria micro</string>
<string name="careportal_sensor_label">Sensore</string>
<string name="careportal_canula_label">Cannula</string>
<string name="careportal_insulin_label">Insulina</string>
<string name="careportal_pb_label">Batteria micro</string>
<string name="careportal_age_label">età:</string>
<string name="careportal_level_label">livello:</string>
<string name="ns_alarmoptions">Opzioni allarme</string>
<string name="ns_alarms">Crea notifiche da allarmi NS</string>
<string name="ns_announcements">Crea notifiche da avvisi NS</string>
@ -799,6 +808,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>
@ -988,6 +999,7 @@
<string name="storage">vincolo di archiviazione interna</string>
<string name="diskfull">Libera almeno %1$d MB dalla memoria interna! Loop disabilitato!</string>
<string name="wrongformat">Formato errato</string>
<string name="wrongTbrDuration">La durata del TBR deve essere un multiplo di %1$d minuti e maggiore di 0.</string>
<string name="sms_wrongcode">Codice errato. Comando cancellato.</string>
<string name="notconfigured">Non configurato</string>
<string name="profileswitchcreated">Cambio profilo creato</string>
@ -1153,6 +1165,9 @@
<string name="smscommunicator_otp_reset_title">Resetta chiave autenticatore</string>
<string name="smscommunicator_otp_reset_prompt">Sei sicuro di resettare la chiave autenticatore? Renderà non validi tutti gli autenticatori attualmente configurati e sarà necessario configurarli nuovamente.</string>
<string name="smscommunicator_otp_reset_successful">La nuova chiave autenticatore è stata generata! Utilizza il QRCode aggiornato per fornire gli autenticatori.</string>
<string name="smscommunicator_otp_export_title">Esportazione OTP secret</string>
<string name="smscommunicator_otp_export_prompt">Sei sicuro di voler copiare l\'OTP secret negli appunti?\n\nPotresti averne bisogno solo se la tua app autenticatore ha problemi con la scansione del QRCode, vuoi inserirlo manualmente o vuoi configurare un token OTP hardware usando un\'app dedicata.</string>
<string name="smscommunicator_otp_export_successful">OTP secret (in formato Base32) esportato e copiato negli appunti. Incollalo nell\'autenticatore o nel configuratore hardware di OTP!</string>
<string name="smscommunicator_otp_step1_install_header">1. Installa l\'autenticatore</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Scansione il codice per configurare i codici OTP di AndroidAPS</string>
<string name="smscommunicator_otp_step3_test_header">3. Testa OTP</string>
@ -1172,6 +1187,7 @@
<string name="statuslights_copy_ns">Copia impostazioni da NS</string>
<string name="copyexistingvalues">Copiare impostazioni NS (se esiste)?</string>
<string name="classic_description">Tema originale</string>
<string name="lowres_description">Tema a bassa risoluzione</string>
<string name="buttonson_description">I tasti vengono sempre visualizzati nella parte inferiore dello schermo</string>
<string name="largedisplay_description">Visualizzazione ampia</string>
<string name="skin">Tema</string>
@ -1216,4 +1232,5 @@
<string name="worker_state">Worker State: %s</string>
<string name="uploaded_data">Dati caricati</string>
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">I seguenti dati verranno caricati sul tuo account Open Humans: valori glicemia, boli, carboidrati, eventi portale (eccetto note), boli estesi, cambi profilo, dosi giornaliere totali (TDD), basali temporanee, target temporanei, preferenze, versione dell\'applicazione, modello del dispositivo e dimensioni dello schermo. Informazioni segrete o private come l\'URL di Nightscout o l\'API secret non verranno caricate.</string>
<string name="setupwizard_pump_riley_link_status">Stato RileyLink:</string>
</resources>

View file

@ -1,2 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="dia_whatmeansdia">מה נכון לגבי משך פעילות אינסולין (DIA)?</string>
<string name="dia_label_exam">נושא: משך פעילות אינסולין</string>
<string name="dia_minimumis3h">הערך המינימלי הוא 3 שעות.</string>
<string name="dia_minimumis5h">הערך המינימלי הוא 5 שעות.</string>
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
<string name="dia_meaningisequaltodiapump">המשמעות שווה לערך ה-DIA שמשמש את המשאבה.</string>
<string name="dia_valuemustbedetermined">עליכם לקבוע את הערך האישי לכם (עליו להיות לכל הפחות 5 שעות).</string>
<string name="hypott_label">נושא: ערך מטרה זמני בהיפו</string>
<string name="hypott_whenhypott">מהי הסיבה העיקרית להגדרת ערך \"ערך מטרה זמני בהיפו\" ?</string>
<string name="hypott_goinglow">כדי למנוע מרמת הסוכר מלרדת נמוך אם יש כבר ערך בזאלי זמני אפס.</string>
<string name="hypott_preventoversmb">כדי למנוע מ-AAPS להזריק יותר מדי אינסולין לאחר עלייה ברמת הגלוקוז כתוצאה מפחמימות פשוטות שנאכלו כטיפול בהיפו.</string>
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
<string name="offlineprofile_whatprofile">באיזה פרופיל אפשר להשתמש ולהגדיר במצב לא מקוון?</string>
<string name="offlineprofile_label">נושא: פרופיל לא מקוון</string>
<string name="offlineprofile_nsprofile">ניתן להשתמש ב-Nightscout אך לא ניתן להגדירו.</string>
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
<string name="pumpdisconnect_label">נושא: התנתקות מהמשאבה</string>
<string name="pumpdisconnect_whattodo">מה לעשות כשמתנתקים מהמשאבה?</string>
<string name="pumpdisconnect_letknow">לחצו \"ניתוק משאבה\" כדי ש-AAPS יידע שלא יינתן איסולין.</string>
<string name="pumpdisconnect_suspend">לחצו \"השהיית לולאה\" כדי ש-AAPS יעצור את הלולאה בזמן שהמשאבה מנותקת.</string>
<string name="pumpdisconnect_dontchnage">לא לשנות דבר ב-AAPS, רק לנתק את המשאבה.</string>
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
<string name="objectives_label">נושא: הגדרות AndroidAPS</string>
<string name="objectives_howtosave">מהן שיטות העבודה המומלצות לגיבוי ההגדרות שלכם?</string>
<string name="objectives_exportsettings">ייצוא ההגדרות בתפריט התחזוקה אל מכשירכם.</string>
<string name="objectives_storeelsewhere">גיבוי הקובץ המיוצא למקום נוסף כמו דוא\"ל, דרופבוקס, גוגל דרייב…</string>
<string name="objectives_doexportonstart">ייצוא ההגדרות מיד לאחר התקנת AAPS.</string>
<string name="objectives_doexportafterchange">ייצוא לאחר שינוי בהגדרות.</string>
<string name="objectives_doexportafterobjective">ייצוא ההגדרות לאחר סיום משימה.</string>
<string name="objectives_doexportafterfirtssettings">ייצוא לאחר סיום ההגדרה הראשונית.</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">נושא: קריאות סנסור לא יציבות</string>
<string name="noisycgm_whattodo">מה לעשות אם נתוני הסנסור לא יציבים?</string>
<string name="nothing">שום דבר. AAPS יטפל בזה בעצמו.</string>
<string name="noisycgm_pause">להשבית את הלולאה כדי למנוע מינון יתר.</string>
<string name="noisycgm_replacesensor">להחליף את הסנסור.</string>
<string name="noisycgm_turnoffphone">כבה את הטלפון.</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">לוודא שאפליקציית הסנסור מתקנת את נתוני הקריאה.</string>
<string name="exercise_label">נושא: התעמלות</string>
<string name="exercise_whattodo">איך עוזרים למערכת להתמודד עם התעמלות?</string>
<string name="exercise_setactivitytt">שימוש בפונקציית ערך מטרה זמני.</string>
<string name="exercise_switchprofilebelow100">בחירת פרופיל עם אחוז נמוך מ-100%.</string>
<string name="exercise_switchprofileabove100">בחירת פרופיל עם אחוז גבוה מ-100%.</string>
<string name="exercise_stoploop">הפסק את הלולאה.</string>
<string name="exercise_doitbeforestart">הגדרת ערך מטרה של התעמלות לפני תחילת האימון.</string>
<string name="exercise_afterstart">הגדרת ערך מטרה של התעמלות אחרי תחילת האימון מובילה לתוצאות טובות פחות מאשר הגדרה לפני תחילת אימון.</string>
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target</string>
<string name="suspendloop_label">נושא: לולאה מושבתת\מושהית</string>
<string name="suspendloop_doigetinsulin">האם אני מקבל\ת אינסולין כאשר הלולאה מושבתת/מושהית?</string>
<string name="suspendloop_yes">כן, אינסולין בזאלי ממשיך להינתן.</string>
<string name="suspendloop_no">לא, אספקת האינסולין נפסקת.</string>
<string name="basaltest_label">נושא: מדידת בזאלי, יחס תיקון ויחס פחמימות</string>
<string name="basaltest_when">מתי עלי לאמת את ערכי הבזאלי ואת יחסי התיקון והפחמימות?</string>
<string name="basaltest_beforeloop">לפני שאני מתחיל\ה לולאה.</string>
<string name="basaltest_havingregularhypo">כאשר יש היפוגליקמיה לעיתים קרובות.</string>
<string name="basaltest_havingregularhyper">כאשר יש היפרגליקמיה לעיתים קרובות.</string>
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
<string name="prerequisites_label">נושא: דרישות מוקדמות</string>
<string name="prerequisites_what">מה אני צריך\ה?</string>
<string name="prerequisites_determinedcorrectprofile">הגדרת פרופיל אישי (מינון בזאלי-Basal, יחס אינסולין\פחמימה- IC, פקטור תיקון-ISF, משך פעילות אינסולין-DIA).</string>
<string name="prerequisites_computer">מחשב ליצירת קובץ ה-APK.</string>
<string name="prerequisites_phone">טלפון נתמך.</string>
<string name="prerequisites_car">מכונית.</string>
<string name="prerequisites_nightscout">Nightscout לצורך הגדרת ערכים.</string>
<string name="prerequisites_tidepoolaccount">חשבון Tidepool.</string>
<string name="prerequisites_googleaccount">חשבון Google.</string>
<string name="prerequisites_githubaccount">חשבון Github.</string>
<string name="prerequisites_beanandroiddeveloper">ניסיון בפיתוח אנדרואיד.</string>
<string name="prerequisites_own670g">משאבת מנימד 670G.</string>
<string name="prerequisites_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html</string>
<string name="prerequisites_smartwatch">שעון חכם.</string>
<string name="prerequisites_supportedcgm">סנסור נתמך.</string>
<string name="update_label">נושא: עדכון AndroidAPS</string>
<string name="whatistrue">מה נכון?</string>
<string name="update_git">על Git להיות מותקן.</string>
<string name="update_asap">עדכנו כשיש גרסה חדשה ועשו זאת כשיש לכם זמן.</string>
<string name="update_keys">השתמשו באותם מפתחות חתימה.</string>
<string name="update_neverupdate">לעולם לא לעדכן את האפליקציה אם היא פועלת כראוי.</string>
<string name="update_askfriend">בקש עזרה מחבר להשגת קובץ ה-APK החדש.</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">נושא: פתרון בעיות</string>
<string name="troubleshooting_wheretoask">איפה לחפש עזרה?</string>
<string name="troubleshooting_fb">הצטרפו לקבוצת AndroidAPS בפייסבוק.</string>
<string name="troubleshooting_wiki">קראו את הוראות AndroidAPS.</string>
<string name="troubleshooting_gitter">בקרו בחדר ה-Gitter של AndroidAPS.</string>
<string name="troubleshooting_googlesupport">בקש תמיכה ל-AndroidAPS ב-Google</string>
<string name="troubleshooting_yourendo">דברו עם האנדוקרינולוג שלכם.</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">נושא: תוספי אינסולין</string>
<string name="insulin_ultrarapid">באיזה סוג של אינסולין מתאים לתוסף \"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">נושא: תוספי רגישות</string>
<string name="sensitivity_which">לאיזה אלגוריתם רגישות יש טווח זמן הניתן להגדרה?</string>
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
<string name="sensitivityuam_which">באיזה תוסף רגישות חייבים להתשמש כדי לאפשר את פונקציית \"ארוחות לא מוכרזות\" (UAM)?</string>
<string name="wrongcarbs_label">נושא: שגיאות רישום פחמימות</string>
<string name="wrongcarbs_whattodo">מה לעשות אם טעית ברישום הפחמימות?</string>
<string name="wrongcarbs_treatmentstab">ב\"טיפולים\", מחקו את רשומת הפחימות השגויה. רשמו פחמימות מחדש.</string>
<string name="wrongcarbs_addfakeinsulin">הזרקת אינסולין מדומה באמצעות הפונקציה \"מילוי חדש\"</string>
<string name="extendedcarbs_label">נושא: מזון עם שומן וחלבון</string>
<string name="extendedcarbs_handling">מה לעשות אם האוכל שלך מכיל כמות גדולה של שומן ו\או חלבונים?</string>
<string name="extendedcarbs_useextendedcarbs">לחשב מחדש שומן וחלבונים כפחמימות והשתמש בפונקציית \"פחמימות ממושכות\".</string>
<string name="extendedcarbs_add">חשב מחדש את השומן והחלבונים כפחמימות והוסף לבולוס.</string>
<string name="extendedcarbs_useextendedbolus">השתמש בבולוס ממושך לכיסוי שומן וחלבונים.</string>
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html</string>
<string name="nsclient_label">נושא: ניטור מרוחק</string>
<string name="nsclient_howcanyou">איך אפשר לפקח על AAPS של הילד שלך מרחוק?</string>
<string name="nsclient_nightscout">באמצעות אתר Nightscout.</string>
<string name="nsclient_dexcomfollow">Dexcom Follow במקרה ומשתמשים באפליקציית Dexcom המקורית (לערכי סוכר בלבד).</string>
<string name="nsclient_dexcomfollowxdrip">שימוש ב-Dexcom Follow אם משתמשים באפליקציית xDrip.</string>
<string name="nsclient_xdripfollower">xDrip פועל במצב עוקב.</string>
<string name="nsclient_looponiphone">אפליקציית Loop על iPhone.</string>
<string name="nsclient_spikeiphone">אפליקציית Spike על iPhone.</string>
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
<string name="isf_label_exam">נושא: פקטור רגישות של אינסולין (יחס תיקון-ISF)</string>
<string name="isf_increasingvalue">פקטור תיקון גבוה גורם להזרקה של פחות אינסולין בעת תיקון ערכי סוכר גבוהים</string>
<string name="isf_decreasingvalue">פקטור תיקון נמוך גורם להזרקה של פחות אינסולין בעת תיקון ערכי סוכר גבוהים.</string>
<string name="isf_noeffect">שינוי פקטור תיקון אינו משפיע על כמות האינסולין שמוזרקת כאשר AAPS מתקן את ערכי הסוכר הגבוהים.</string>
<string name="isf_preferences">עליכם לציין את פקטור התיקון (ISF) בהעדפות.</string>
<string name="isf_profile">שינוי ערך ISF בפרופיל שלכם מספיק כדי להחיל את השינוי.</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">נושא: יחס אינסולין פחמימה (IC)</string>
<string name="ic_increasingvalue">יחס אינסולין פחמימה גבוה גורם להזרקת פחות אינסולין עבור כל פחמימה.</string>
<string name="ic_decreasingvalue">יחס אינסולין פחמימה נמוך גורם להזרקת פחות אינסולין עבור כל פחמימה.</string>
<string name="ic_noeffect">כאשר יש 0 פחמ\', שינוי יחס הפחמימות (IC) יוביל למינון שונה של אינסולין כדי לתקן ערך סוכר נתון.</string>
<string name="ic_different">יחס הפחמימות (IC) יהיה שונה אם ערך יחידת לחם ייספר כ-10 או 12 גר\'.</string>
<string name="ic_meaning">יחס הפחמימות (IC) הוא: כמה יחידות לחם מכוסות ע\"י יחידת אינסולין אחת.</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">נושא: החלפת פרופילים</string>
<string name="profileswitch_pctwillchange"> כאשר בוחרים 90% בעת החלפת הפרופיל…</string>
<string name="profileswitch_basalhigher">הבזאלי יהיה גבוה ב-10%.</string>
<string name="profileswitch_basallower">הבזאלי יהיה נמוך ב-10%.</string>
<string name="profileswitch_ichigher">ערך יחס אינסולין פחמימה (IC) יהיה גבוה ב-10%.</string>
<string name="profileswitch_iclower">ערך יחס אינסולין פחמימה (IC) יהיה נמוך ב-10%.</string>
<string name="profileswitch_isfhigher">ערך פקטור התיקון (ISF) יהיה גבוה ב-10%.</string>
<string name="profileswitch_isflower">ערך פקטור התיקון (ISF) יהיה נמוך ב-10%.</string>
<string name="profileswitch_overall">תקבלו בערך 10% פחות אינסולין.</string>
<string name="profileswitch_targethigher">ערך המטרה יהיה גבוה ב-10%.</string>
<string name="profileswitch_targetlower">ערך המטרה יהיה נמוך ב-10%.</string>
<string name="profileswitch_targetbottom">רק ערך המטרה התחתון יהיה נמוך ב-10%.</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">איך תעדכן את AAPS אם קמת שעה מוקדם?</string>
<string name="profileswitchtime_1">אפעיל מצב פרופיל זמני עם היסט זמן של 1+</string>
<string name="profileswitchtime__1">אפעיל מצב פרופיל זמני עם היסט זמן של 1-</string>
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
<string name="profileswitchtime_60">אפעיל מצב פרופיל זמני עם היסט זמן של 60+</string>
<string name="profileswitchtime__60">אפעיל מצב פרופיל זמני עם היסט זמן של 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">נושא: עזרה עם בזאלים</string>
<string name="basalhelp_where">היכן ניתן לקבל עזרה בנושא מינון בזאלי וכו\'.</string>
<string name="basalhelp_diabetesteam">צוות הסוכרת שלכם</string>
<string name="basalhelp_google">Google</string>
<string name="basalhelp_facebook">Facebook</string>
<string name="other_medication_label">תרופה אחרת</string>
<string name="other_medication_text">AAPS מוריד את הבזאלי כדי להעלות את רמת הגלוקוז בדם. תרופות מקבוצת מעכבי SGLT2 (גליפלוזינים) יכולים למנוע עלייה צפויה בסוכר וייתכן שייצרו חסר אינסולין מסוכן (DKA).
\nשמותיהם המסחריים מוכרים הם: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nאני מתחייב\ת שלא לקחת את התרופות הללו תוך שימוש ב-AAPS או שלא אאפשר את הלולאה לפני לקיחת התרופות הנ\"ל.</string>
</resources>

View file

@ -1,2 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_r1_code">תזכורת R1</string>
<string name="alert_r2_code">תזכורת R2</string>
<string name="alert_r3_code">תזכורת R3</string>
<string name="alert_r4_code">תזכורת R4</string>
<string name="alert_r7_code">תזכורת R7</string>
<string name="alert_w31_code">אזהרה W31</string>
<string name="alert_w32_code">אזהרה W32</string>
<string name="alert_w33_code">אזהרה W33</string>
<string name="alert_w34_code">אזהרה W34</string>
<string name="alert_w36_code">אזהרה W36</string>
<string name="alert_w38_code">אזהרה W38</string>
<string name="alert_w39_code">אזהרה W39</string>
<string name="alert_m20_code">תחזוקה M20</string>
<string name="alert_m21_code">תחזוקה M21</string>
<string name="alert_m22_code">תחזוקה M22</string>
<string name="alert_m23_code">תחזוקה M23</string>
<string name="alert_m24_code">תחזוקה M24</string>
<string name="alert_m25_code">תחזוקה M25</string>
<string name="alert_m26_code">תחזוקה M26</string>
<string name="alert_m27_code">תחזוקה M27</string>
<string name="alert_m28_code">תחזוקה M28</string>
<string name="alert_m29_code">תחזוקה M29</string>
<string name="alert_m30_code">תחזוקה M30</string>
<string name="alert_e6_code">שגיאה E6</string>
<string name="alert_e10_code">שגיאה E10</string>
<string name="alert_e13_code">שגיאה 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[כמות: <b>%1$d%%</b>\nמשך: <b>%2$s h</b>]]></string>
<string name="alert_w31_description"><![CDATA[תכולת מיכל: <b>%1$s U</b>]]></string>
<string name="alert_w32_description">החלף סוללה.</string>
<string name="alert_w33_description">קבע זמן/תאריך.</string>
<string name="alert_w34_description">צור קשר עם תמיכת Accu-Chek.</string>
<string name="alert_w36_description"><![CDATA[כמות: <b>%1$d%%</b>\nמשך: <b>%2$s h</b>]]></string>
<string name="alert_w38_description"><![CDATA[כמות מתוכננת: <b>%1$s U</b><br/>כמות שניתנה: <b>%2$s U</b>]]></string>
<string name="alert_m20_description">הכנס מיכל.</string>
<string name="alert_m21_description">החלף מיכל.</string>
<string name="alert_m22_description">החלף סוללה.</string>
<string name="alert_m23_description">בדוק סטטוס משאבה.</string>
<string name="alert_m24_description">החלף פרפרית.</string>
<string name="alert_m25_description">צור קשר עם תמיכת Accu-Chek.</string>
<string name="alert_m26_description">החלף מיכל.</string>
<string name="alert_m27_description">הפעילו מחדש את הורדת הנתונים.</string>
<string name="alert_m28_description">בדוק סטטוס משאבה.</string>
<string name="alert_m29_description">קבע סוג סוללה.</string>
<string name="alert_m30_description">קבע סוג מיכל.</string>
<string name="alert_e6_description">החלף סוללה ומיכל.</string>
<string name="alert_e10_description">החלף מיכל.</string>
<string name="alert_e13_description">שנה שפה.</string>
</resources>

View file

@ -1,2 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_r1_title">הזרק בולוס</string>
<string name="alert_r2_title">בולוס הוחמץ</string>
<string name="alert_r3_title">תזכורת</string>
<string name="alert_r4_title">החלף פרפרית</string>
<string name="alert_r7_title">בזאלי זמני הסתיים</string>
<string name="alert_w31_title">מכל מתרוקן</string>
<string name="alert_w32_title">סוללה חלשה</string>
<string name="alert_w33_title">תאריך/זמן לא תקין</string>
<string name="alert_w34_title">תמה תקופת האחריות</string>
<string name="alert_w36_title">בזאלי זמני בוטל</string>
<string name="alert_w38_title">בולוס בוטל</string>
<string name="alert_w39_title">אזהרת זמן השאלה</string>
<string name="alert_m20_title">מכל לא הוכנס</string>
<string name="alert_m21_title">מיכל ריק</string>
<string name="alert_m22_title">סוללה ריקה</string>
<string name="alert_m23_title">כיבוי אוטומטי - משאבה נעצרה</string>
<string name="alert_m24_title">חסימה</string>
<string name="alert_m25_title">נגמרה תקופת ההשאלה - סיום פעולה</string>
<string name="alert_m26_title">החלפת מיכל לא הושלמה</string>
<string name="alert_m27_title">הורדת הנתונים נכשלה</string>
<string name="alert_m28_title">מצב השהייה הסתיים</string>
<string name="alert_m29_title">סוג הסוללה לא נקבע</string>
<string name="alert_m30_title">סוג המיכל לא נקבע</string>
<string name="alert_e6_title">תקלה מכנית</string>
<string name="alert_e10_title">תקלה בהחזרת הבוכנה לאחור</string>
<string name="alert_e13_title">תקלת שפה</string>
</resources>

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