commit
41cbb845ee
388 changed files with 8799 additions and 5230 deletions
|
@ -26,7 +26,7 @@ ext {
|
|||
powermockVersion = "1.7.3"
|
||||
dexmakerVersion = "1.2"
|
||||
retrofit2Version = '2.9.0'
|
||||
okhttp3Version = '4.7.2'
|
||||
okhttp3Version = '4.9.0'
|
||||
}
|
||||
|
||||
|
||||
|
@ -247,15 +247,17 @@ dependencies {
|
|||
implementation project(':danar')
|
||||
implementation project(':rileylink')
|
||||
implementation project(':medtronic')
|
||||
implementation project(':omnipod')
|
||||
|
||||
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'
|
||||
|
@ -263,11 +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 'com.google.android.material:material:1.1.0'
|
||||
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:$material_version"
|
||||
|
||||
implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
|
||||
|
||||
|
@ -276,14 +280,12 @@ 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"
|
||||
implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
|
||||
implementation 'com.madgag.spongycastle:core:1.58.0.0'
|
||||
// Omnipod wizard
|
||||
implementation(name: "com.atech-software.android.library.wizardpager-1.1.4", ext: "aar")
|
||||
implementation("com.google.android:flexbox:0.3.0") {
|
||||
exclude group: "com.android.support"
|
||||
}
|
||||
|
@ -292,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}"
|
||||
|
@ -356,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'
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -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 {
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -10,6 +10,7 @@ import info.nightscout.androidaps.dana.di.DanaModule
|
|||
import info.nightscout.androidaps.danar.di.DanaRModule
|
||||
import info.nightscout.androidaps.danars.di.DanaRSModule
|
||||
import info.nightscout.androidaps.plugins.pump.common.dagger.RileyLinkModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dagger.OmnipodModule
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
|
@ -29,6 +30,7 @@ import javax.inject.Singleton
|
|||
WizardModule::class,
|
||||
RileyLinkModule::class,
|
||||
MedtronicModule::class,
|
||||
OmnipodModule::class,
|
||||
APSModule::class,
|
||||
PreferencesModule::class,
|
||||
OverviewModule::class,
|
||||
|
|
|
@ -26,4 +26,5 @@ abstract class CommandQueueModule {
|
|||
@ContributesAndroidInjector abstract fun commandTempBasalAbsoluteInjector(): CommandTempBasalAbsolute
|
||||
@ContributesAndroidInjector abstract fun commandTempBasalPercentInjector(): CommandTempBasalPercent
|
||||
@ContributesAndroidInjector abstract fun commandSetUserSettingsInjector(): CommandSetUserSettings
|
||||
@ContributesAndroidInjector abstract fun commandCustomCommandInjector(): CommandCustomCommand
|
||||
}
|
|
@ -36,6 +36,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyL
|
|||
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightFragment
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicFragment
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.dialog.RileyLinkStatusDeviceMedtronic
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.ui.OmnipodOverviewFragment
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpFragment
|
||||
import info.nightscout.androidaps.plugins.source.BGSourceFragment
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsFragment
|
||||
|
@ -67,6 +68,7 @@ abstract class FragmentsModule {
|
|||
@ContributesAndroidInjector abstract fun contributesLoopFragment(): LoopFragment
|
||||
@ContributesAndroidInjector abstract fun contributesMaintenanceFragment(): MaintenanceFragment
|
||||
@ContributesAndroidInjector abstract fun contributesMedtronicFragment(): MedtronicFragment
|
||||
@ContributesAndroidInjector abstract fun contributesOmnipodFragment(): OmnipodOverviewFragment
|
||||
@ContributesAndroidInjector abstract fun contributesNSProfileFragment(): NSProfileFragment
|
||||
@ContributesAndroidInjector abstract fun contributesNSClientFragment(): NSClientFragment
|
||||
@ContributesAndroidInjector
|
||||
|
|
|
@ -31,6 +31,7 @@ import info.nightscout.androidaps.plugins.general.persistentNotification.Persist
|
|||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
|
||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin
|
||||
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatusLinePlugin
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinLyumjevPlugin
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefRapidActingPlugin
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefUltraRapidActingPlugin
|
||||
|
@ -82,6 +83,12 @@ abstract class PluginsModule {
|
|||
@IntKey(40)
|
||||
abstract fun bindInsulinOrefUltraRapidActingPlugin(plugin: InsulinOrefUltraRapidActingPlugin): PluginBase
|
||||
|
||||
@Binds
|
||||
@AllConfigs
|
||||
@IntoMap
|
||||
@IntKey(42)
|
||||
abstract fun bindInsulinLyumjevPlugin(plugin: InsulinLyumjevPlugin): PluginBase
|
||||
|
||||
@Binds
|
||||
@AllConfigs
|
||||
@IntoMap
|
||||
|
|
|
@ -10,6 +10,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
|
|||
import info.nightscout.androidaps.plugins.pump.insight.InsightAlertService
|
||||
import info.nightscout.androidaps.plugins.pump.insight.connection_service.InsightConnectionService
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.service.RileyLinkOmnipodService
|
||||
import info.nightscout.androidaps.services.AlarmSoundService
|
||||
import info.nightscout.androidaps.services.DataService
|
||||
import info.nightscout.androidaps.services.LocationService
|
||||
|
@ -29,4 +30,5 @@ abstract class ServicesModule {
|
|||
@ContributesAndroidInjector abstract fun contributesInsightConnectionService(): InsightConnectionService
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkService(): RileyLinkService
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkMedtronicService(): RileyLinkMedtronicService
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkOmnipodService(): RileyLinkOmnipodService
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
@ -282,7 +285,7 @@ public class DetermineBasalAdapterSMBJS {
|
|||
mProfile.put("A52_risk_enable", SMBDefaults.A52_risk_enable);
|
||||
|
||||
boolean smbEnabled = sp.getBoolean(resourceHelper.gs(R.string.key_use_smb), false);
|
||||
mProfile.put("SMBInterval", sp.getInt("key_smbinterval", SMBDefaults.SMBInterval));
|
||||
mProfile.put("SMBInterval", sp.getInt(R.string.key_smbinterval, SMBDefaults.SMBInterval));
|
||||
mProfile.put("enableSMB_with_COB", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_COB, false));
|
||||
mProfile.put("enableSMB_with_temptarget", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_temptarget, false));
|
||||
mProfile.put("allowSMB_with_high_temptarget", smbEnabled && sp.getBoolean(R.string.key_allowSMB_with_high_temptarget, false));
|
||||
|
@ -354,6 +357,7 @@ public class DetermineBasalAdapterSMBJS {
|
|||
|
||||
mCurrentTime = now;
|
||||
|
||||
mIsSaveCgmSource = isSaveCgmSource;
|
||||
}
|
||||
|
||||
private Object makeParam(JSONObject jsonObject, Context rhino, Scriptable scope) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
@ -122,7 +124,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 +132,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 +141,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 +149,7 @@ class ImportExportPrefs @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun assureMasterPasswordSet(activity: Activity, @StringRes wrongPwdTitle: Int): Boolean {
|
||||
private fun assureMasterPasswordSet(activity: FragmentActivity, @StringRes wrongPwdTitle: Int): Boolean {
|
||||
if (!sp.contains(R.string.key_master_password) || (sp.getString(R.string.key_master_password, "") == "")) {
|
||||
WarningDialog.showWarning(activity,
|
||||
resourceHelper.gs(wrongPwdTitle),
|
||||
|
@ -163,23 +165,22 @@ class ImportExportPrefs @Inject constructor(
|
|||
return true
|
||||
}
|
||||
|
||||
private fun askToConfirmExport(activity: Activity, fileToExport: File, then: ((password: String) -> Unit)) {
|
||||
private fun askToConfirmExport(activity: FragmentActivity, fileToExport: File, then: ((password: String) -> Unit)) {
|
||||
if (!prefsEncryptionIsDisabled() && !assureMasterPasswordSet(activity, R.string.nav_export)) return
|
||||
|
||||
TwoMessagesAlertDialog.showAlert(activity, resourceHelper.gs(R.string.nav_export),
|
||||
resourceHelper.gs(R.string.export_to) + " " + fileToExport + " ?",
|
||||
resourceHelper.gs(R.string.export_to) + " " + fileToExport.name + " ?",
|
||||
resourceHelper.gs(R.string.password_preferences_encrypt_prompt), {
|
||||
askForMasterPassIfNeeded(activity, R.string.preferences_export_canceled, then)
|
||||
}, null, R.drawable.ic_header_export)
|
||||
}
|
||||
|
||||
private fun askToConfirmImport(activity: Activity, fileToImport: PrefsFile, then: ((password: String) -> Unit)) {
|
||||
private fun askToConfirmImport(activity: FragmentActivity, fileToImport: PrefsFile, then: ((password: String) -> Unit)) {
|
||||
|
||||
if (fileToImport.handler == PrefsFormatsHandler.ENCRYPTED) {
|
||||
if (!assureMasterPasswordSet(activity, R.string.nav_import)) return
|
||||
|
||||
TwoMessagesAlertDialog.showAlert(activity, resourceHelper.gs(R.string.nav_import),
|
||||
resourceHelper.gs(R.string.import_from) + " " + fileToImport.file + " ?",
|
||||
resourceHelper.gs(R.string.import_from) + " " + fileToImport.name + " ?",
|
||||
resourceHelper.gs(R.string.password_preferences_decrypt_prompt), {
|
||||
askForMasterPass(activity, R.string.preferences_import_canceled, then)
|
||||
}, null, R.drawable.ic_header_import)
|
||||
|
@ -191,7 +192,7 @@ class ImportExportPrefs @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun promptForDecryptionPasswordIfNeeded(activity: Activity, prefs: Prefs, importOk: Boolean,
|
||||
private fun promptForDecryptionPasswordIfNeeded(activity: FragmentActivity, prefs: Prefs, importOk: Boolean,
|
||||
format: PrefsFormat, importFile: PrefsFile, then: ((prefs: Prefs, importOk: Boolean) -> Unit)) {
|
||||
|
||||
// current master password was not the one used for decryption, so we prompt for old password...
|
||||
|
@ -213,7 +214,7 @@ class ImportExportPrefs @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun exportSharedPreferences(activity: Activity) {
|
||||
private fun exportSharedPreferences(activity: FragmentActivity) {
|
||||
|
||||
prefFileList.ensureExportDirExists()
|
||||
val legacyFile = prefFileList.legacyFile()
|
||||
|
@ -262,14 +263,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
|
||||
|
@ -278,12 +277,12 @@ class ImportExportPrefs @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun importSharedPreferences(activity: Activity, importFile: PrefsFile) {
|
||||
public fun importSharedPreferences(activity: FragmentActivity, importFile: PrefsFile) {
|
||||
|
||||
askToConfirmImport(activity, importFile) { password ->
|
||||
|
||||
val format: PrefsFormat = when (importFile.handler) {
|
||||
PrefsFormatsHandler.CLASSIC -> classicPrefsFormat
|
||||
PrefsFormatsHandler.CLASSIC -> classicPrefsFormat
|
||||
PrefsFormatsHandler.ENCRYPTED -> encryptedPrefsFormat
|
||||
}
|
||||
|
||||
|
@ -345,7 +344,7 @@ class ImportExportPrefs @Inject constructor(
|
|||
show(context, resourceHelper.gs(R.string.setting_imported), resourceHelper.gs(R.string.restartingapp), Runnable {
|
||||
log.debug(TAG, "Exiting")
|
||||
rxBus.send(EventAppExit())
|
||||
if (context is Activity) {
|
||||
if (context is AppCompatActivity) {
|
||||
context.finish()
|
||||
}
|
||||
System.runFinalization()
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
package info.nightscout.androidaps.plugins.general.maintenance
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Environment
|
||||
import android.os.Parcelable
|
||||
import androidx.activity.result.contract.ActivityResultContract
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import info.nightscout.androidaps.BuildConfig
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtils
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.activities.PrefImportListActivity
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.formats.*
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import info.nightscout.androidaps.utils.storage.Storage
|
||||
import kotlinx.android.parcel.Parcelize
|
||||
import kotlinx.android.parcel.RawValue
|
||||
|
@ -34,6 +32,7 @@ enum class PrefsImportDir {
|
|||
|
||||
@Parcelize
|
||||
data class PrefsFile(
|
||||
val name: String,
|
||||
val file: File,
|
||||
val baseDir: File,
|
||||
val dirKind: PrefsImportDir,
|
||||
|
@ -46,13 +45,14 @@ data class PrefsFile(
|
|||
class PrefsFileContract : ActivityResultContract<Void, PrefsFile>() {
|
||||
|
||||
companion object {
|
||||
|
||||
const val OUTPUT_PARAM = "prefs_file"
|
||||
}
|
||||
|
||||
override fun parseResult(resultCode: Int, intent: Intent?): PrefsFile? {
|
||||
return when (resultCode) {
|
||||
Activity.RESULT_OK -> intent?.getParcelableExtra(OUTPUT_PARAM)
|
||||
else -> null
|
||||
FragmentActivity.RESULT_OK -> intent?.getParcelableExtra(OUTPUT_PARAM)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,7 @@ class PrefFileListProvider @Inject constructor(
|
|||
) {
|
||||
|
||||
companion object {
|
||||
|
||||
private val path = File(Environment.getExternalStorageDirectory().toString())
|
||||
private val aapsPath = File(path, "AAPS" + File.separator + "preferences")
|
||||
private const val IMPORT_AGE_NOT_YET_OLD_DAYS = 60
|
||||
|
@ -96,7 +97,7 @@ class PrefFileListProvider @Inject constructor(
|
|||
val detectedOld = !detectedNew && classicPrefsFormat.isPreferencesFile(it, contents)
|
||||
if (detectedNew || detectedOld) {
|
||||
val formatHandler = if (detectedNew) PrefsFormatsHandler.ENCRYPTED else PrefsFormatsHandler.CLASSIC
|
||||
prefFiles.add(PrefsFile(it, path, PrefsImportDir.ROOT_DIR, formatHandler, metadataFor(loadMetadata, formatHandler, contents)))
|
||||
prefFiles.add(PrefsFile(it.name, it, path, PrefsImportDir.ROOT_DIR, formatHandler, metadataFor(loadMetadata, formatHandler, contents)))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,7 +105,7 @@ class PrefFileListProvider @Inject constructor(
|
|||
aapsPath.walk().filter { it.isFile && it.name.endsWith(".json") }.forEach {
|
||||
val contents = storage.getFileContents(it)
|
||||
if (encryptedPrefsFormat.isPreferencesFile(it, contents)) {
|
||||
prefFiles.add(PrefsFile(it, aapsPath, PrefsImportDir.AAPS_DIR, PrefsFormatsHandler.ENCRYPTED, metadataFor(loadMetadata, PrefsFormatsHandler.ENCRYPTED, contents)))
|
||||
prefFiles.add(PrefsFile(it.name, it, aapsPath, PrefsImportDir.AAPS_DIR, PrefsFormatsHandler.ENCRYPTED, metadataFor(loadMetadata, PrefsFormatsHandler.ENCRYPTED, contents)))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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?) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.jjoe64.graphview.DefaultLabelFormatter;
|
|||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Created by mike on 09.06.2016.
|
||||
|
@ -20,10 +21,22 @@ public class TimeAsXAxisLabelFormatter extends DefaultLabelFormatter {
|
|||
public String formatLabel(double value, boolean isValueX) {
|
||||
if (isValueX) {
|
||||
// format as date
|
||||
DateFormat dateFormat = new SimpleDateFormat(mFormat);
|
||||
DateFormat dateFormat = new SimpleDateFormat(mFormat, Locale.getDefault());
|
||||
return dateFormat.format((long) value);
|
||||
} else {
|
||||
return super.formatLabel(value, isValueX);
|
||||
try {
|
||||
// unknown reason for crashing on this
|
||||
// Fatal Exception: java.lang.NullPointerException
|
||||
// Attempt to invoke virtual method 'double com.jjoe64.graphview.Viewport.getMaxY(boolean)' on a null object reference
|
||||
// com.jjoe64.graphview.DefaultLabelFormatter.formatLabel (DefaultLabelFormatter.java:89)
|
||||
// info.nightscout.androidaps.plugins.general.overview.graphExtensions.TimeAsXAxisLabelFormatter.formatLabel (TimeAsXAxisLabelFormatter.java:26)
|
||||
// com.jjoe64.graphview.GridLabelRenderer.drawVerticalSteps (GridLabelRenderer.java:1057)
|
||||
// com.jjoe64.graphview.GridLabelRenderer.draw (GridLabelRenderer.java:866)
|
||||
// com.jjoe64.graphview.GraphView.onDraw (GraphView.java:296)
|
||||
return super.formatLabel(value, isValueX);
|
||||
} catch (Exception ignored) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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("=", "") }
|
||||
|
||||
}
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.*
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package info.nightscout.androidaps.plugins.insulin
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.interfaces.InsulinInterface
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class InsulinLyumjevPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
resourceHelper: ResourceHelper,
|
||||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBusWrapper, aapsLogger: AAPSLogger
|
||||
) : InsulinOrefBasePlugin(injector, resourceHelper, profileFunction, rxBus, aapsLogger) {
|
||||
|
||||
|
||||
override fun getId(): Int = InsulinInterface.OREF_LYUMJEV
|
||||
|
||||
override fun getFriendlyName(): String = resourceHelper.gs(R.string.lyumjev)
|
||||
|
||||
override fun commentStandardText(): String = resourceHelper.gs(R.string.lyumjev)
|
||||
|
||||
override val peak = 45
|
||||
|
||||
init {
|
||||
pluginDescription
|
||||
.pluginName(R.string.lyumjev)
|
||||
.description(R.string.description_insulin_lyumjev)
|
||||
}
|
||||
}
|
|
@ -41,5 +41,6 @@ class InsulinOrefRapidActingPlugin @Inject constructor(
|
|||
.pluginName(R.string.rapid_acting_oref)
|
||||
.description(R.string.description_insulin_rapid)
|
||||
.setDefault()
|
||||
.enableByDefault(true)
|
||||
}
|
||||
}
|
|
@ -34,6 +34,5 @@ class InsulinOrefUltraRapidActingPlugin @Inject constructor(
|
|||
pluginDescription
|
||||
.pluginName(R.string.ultrarapid_oref)
|
||||
.description(R.string.description_insulin_ultra_rapid)
|
||||
.enableByDefault(true)
|
||||
}
|
||||
}
|
|
@ -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 + "_"
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ import info.nightscout.androidaps.db.CareportalEvent;
|
|||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.db.TDD;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.db.Treatment;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview;
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
|
||||
|
@ -36,6 +37,7 @@ import info.nightscout.androidaps.interfaces.Constraint;
|
|||
import info.nightscout.androidaps.interfaces.ConstraintsInterface;
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
||||
import info.nightscout.androidaps.interfaces.PumpDescription;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.interfaces.PumpPluginBase;
|
||||
|
@ -43,9 +45,9 @@ import info.nightscout.androidaps.logging.AAPSLogger;
|
|||
import info.nightscout.androidaps.logging.LTag;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
|
||||
import info.nightscout.androidaps.plugins.common.ManufacturerType;
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
|
||||
import info.nightscout.androidaps.queue.commands.CustomCommand;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
|
||||
|
@ -64,7 +66,6 @@ import info.nightscout.androidaps.plugins.pump.combo.ruffyscripter.history.PumpH
|
|||
import info.nightscout.androidaps.plugins.pump.combo.ruffyscripter.history.PumpHistoryRequest;
|
||||
import info.nightscout.androidaps.plugins.pump.combo.ruffyscripter.history.Tdd;
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||
import info.nightscout.androidaps.db.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.InstanceId;
|
||||
|
@ -1395,7 +1396,10 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
|
|||
|
||||
@Override
|
||||
public void executeCustomAction(CustomActionType customActionType) {
|
||||
}
|
||||
|
||||
@Nullable @Override public PumpEnactResult executeCustomCommand(CustomCommand customCommand) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,6 +12,7 @@ import android.os.IBinder;
|
|||
import android.os.Looper;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
@ -56,6 +57,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
|
|||
import info.nightscout.androidaps.plugins.common.ManufacturerType;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
|
||||
import info.nightscout.androidaps.queue.commands.CustomCommand;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
|
||||
|
@ -1171,7 +1173,10 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
|
|||
|
||||
@Override
|
||||
public void executeCustomAction(CustomActionType customActionType) {
|
||||
}
|
||||
|
||||
@Nullable @Override public PumpEnactResult executeCustomCommand(CustomCommand customCommand) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void readHistory() {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package info.nightscout.androidaps.plugins.pump.mdi;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
@ -27,6 +28,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
|
|||
import info.nightscout.androidaps.plugins.common.ManufacturerType;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
|
||||
import info.nightscout.androidaps.queue.commands.CustomCommand;
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
|
@ -281,7 +283,10 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
|
|||
|
||||
@Override
|
||||
public void executeCustomAction(CustomActionType customActionType) {
|
||||
}
|
||||
|
||||
@Nullable @Override public PumpEnactResult executeCustomCommand(CustomCommand customCommand) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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
|
||||
|
@ -16,9 +18,9 @@ import info.nightscout.androidaps.logging.AAPSLogger
|
|||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.common.ManufacturerType
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
|
||||
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType
|
||||
import info.nightscout.androidaps.queue.commands.CustomCommand
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -133,6 +141,11 @@ class VirtualPumpPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun executeCustomAction(customActionType: CustomActionType) {}
|
||||
|
||||
override fun executeCustomCommand(customCommand: CustomCommand?): PumpEnactResult? {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun isInitialized(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
@ -327,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()
|
||||
|
|
|
@ -62,6 +62,7 @@ class BGSourceFragment : DaggerFragment() {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateGUI() }) { fabricPrivacy.logException(it) }
|
||||
)
|
||||
updateGUI()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
|
|
@ -20,16 +20,16 @@ import info.nightscout.androidaps.events.EventProfileNeedsUpdate
|
|||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.queue.commands.CustomCommand
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.queue.commands.Command
|
||||
import info.nightscout.androidaps.queue.commands.*
|
||||
import info.nightscout.androidaps.queue.commands.Command.CommandType
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
|
@ -260,7 +260,7 @@ class CommandQueue @Inject constructor(
|
|||
} else {
|
||||
add(CommandBolus(injector, detailedBolusInfo, callback, type))
|
||||
if (type == CommandType.BOLUS) { // Bring up bolus progress dialog (start here, so the dialog is shown when the bolus is requested,
|
||||
// not when the Bolus command is starting. The command closes the dialog upon completion).
|
||||
// not when the Bolus command is starting. The command closes the dialog upon completion).
|
||||
showBolusProgressDialog(detailedBolusInfo.insulin, detailedBolusInfo.context)
|
||||
// Notify Wear about upcoming bolus
|
||||
rxBus.send(EventBolusRequested(detailedBolusInfo.insulin))
|
||||
|
@ -485,6 +485,55 @@ class CommandQueue @Inject constructor(
|
|||
return true
|
||||
}
|
||||
|
||||
override fun customCommand(customCommand: CustomCommand, callback: Callback?): Boolean {
|
||||
if (isCustomCommandInQueue(customCommand.javaClass)) {
|
||||
callback?.result(executingNowError())?.run()
|
||||
return false
|
||||
}
|
||||
// remove all unfinished
|
||||
removeAllCustomCommands(customCommand.javaClass)
|
||||
// add new command to queue
|
||||
add(CommandCustomCommand(injector, customCommand, callback))
|
||||
notifyAboutNewCommand()
|
||||
return true
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun isCustomCommandInQueue(customCommandType: Class<out CustomCommand>): Boolean {
|
||||
if(isCustomCommandRunning(customCommandType)) {
|
||||
return true
|
||||
}
|
||||
synchronized(queue) {
|
||||
for (i in queue.indices) {
|
||||
val command = queue[i]
|
||||
if (command is CommandCustomCommand && customCommandType.isInstance(command.customCommand)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun isCustomCommandRunning(customCommandType: Class<out CustomCommand>): Boolean {
|
||||
val performing = this.performing
|
||||
if (performing is CommandCustomCommand && customCommandType.isInstance(performing.customCommand)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun removeAllCustomCommands(targetType: Class<out CustomCommand>) {
|
||||
synchronized(queue) {
|
||||
for (i in queue.indices.reversed()) {
|
||||
val command = queue[i]
|
||||
if (command is CustomCommand && targetType.isInstance(command.commandType)) {
|
||||
queue.removeAt(i)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun spannedStatus(): Spanned {
|
||||
var s = ""
|
||||
var line = 0
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package info.nightscout.androidaps.queue.commands
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import javax.inject.Inject
|
||||
|
||||
class CommandCustomCommand(
|
||||
injector: HasAndroidInjector,
|
||||
val customCommand: CustomCommand,
|
||||
callback: Callback?
|
||||
) : Command(injector, CommandType.CUSTOM_COMMAND, callback) {
|
||||
|
||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||
|
||||
override fun execute() {
|
||||
val result = activePlugin.activePump.executeCustomCommand(customCommand)
|
||||
aapsLogger.debug(LTag.PUMPQUEUE, "Result success: ${result?.success} enacted: ${result?.enacted}")
|
||||
callback?.result(result)?.run()
|
||||
}
|
||||
|
||||
override fun status(): String {
|
||||
return customCommand.statusDescription
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ package info.nightscout.androidaps.queue.commands
|
|||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
|
||||
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import javax.inject.Inject
|
||||
|
@ -14,17 +12,12 @@ class CommandStartPump(
|
|||
) : Command(injector, CommandType.START_PUMP, callback) {
|
||||
|
||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
|
||||
override fun execute() {
|
||||
val pump = activePlugin.activePump
|
||||
if (pump is LocalInsightPlugin) {
|
||||
val result = pump.startPump()
|
||||
callback?.result(result)?.run()
|
||||
} else if (pump.pumpDescription.pumpType == PumpType.Insulet_Omnipod) {
|
||||
// When using CommandQueue.setProfile, it refuses to set the profile is the same as the current profile
|
||||
// However we need to set the current profile to resume delivery in case the Pod is suspended
|
||||
pump.setNewBasalProfile(profileFunction.getProfile())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,10 +16,10 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
|||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
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.constraints.objectives.ObjectivesFragment
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
|
||||
|
@ -30,12 +30,14 @@ 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
|
||||
import info.nightscout.androidaps.utils.AndroidPermission
|
||||
import info.nightscout.androidaps.utils.CryptoUtil
|
||||
import info.nightscout.androidaps.utils.locale.LocaleHelper.update
|
||||
import info.nightscout.androidaps.utils.extensions.isRunningTest
|
||||
import info.nightscout.androidaps.utils.locale.LocaleHelper.update
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
|
@ -313,11 +315,44 @@ class SWDefinition @Inject constructor(
|
|||
}, null)
|
||||
})
|
||||
.visibility(SWValidator { (activePlugin.activePump as PluginBase).preferencesId > 0 }))
|
||||
.add(SWInfotext(injector)
|
||||
.label(R.string.setupwizard_pump_pump_not_initialized)
|
||||
.visibility(SWValidator { !isPumpInitialized() }))
|
||||
.add( // Omnipod only
|
||||
SWInfotext(injector)
|
||||
.label(R.string.setupwizard_pump_waiting_for_riley_link_connection)
|
||||
.visibility(SWValidator {
|
||||
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) }))
|
||||
.add(SWEventListener(injector, EventPumpStatusChanged::class.java))
|
||||
.validator(SWValidator { activePlugin.activePump.isInitialized })
|
||||
.action(Runnable { commandQueue.readStatus("Clicked connect to pump", null) })
|
||||
.visibility(SWValidator {
|
||||
// Hide for Omnipod, because as we don't require a Pod to be paired in the setup wizard,
|
||||
// Getting the status might not be possible
|
||||
activePlugin.activePump !is OmnipodPumpPlugin
|
||||
}))
|
||||
.add(SWEventListener(injector, EventPumpStatusChanged::class.java)
|
||||
.visibility(SWValidator { activePlugin.activePump !is OmnipodPumpPlugin }))
|
||||
.validator(SWValidator {
|
||||
isPumpInitialized()
|
||||
})
|
||||
|
||||
private fun isPumpInitialized(): Boolean {
|
||||
val activePump = activePlugin.activePump
|
||||
|
||||
// For Omnipod, consider the pump initialized when a RL has been configured successfully
|
||||
// Users will be prompted to activate a Pod after completing the setup wizard.
|
||||
return activePump.isInitialized || (activePump is OmnipodPumpPlugin && activePump.isRileyLinkReady)
|
||||
}
|
||||
|
||||
private val screenAps = SWScreen(injector, R.string.configbuilder_aps)
|
||||
.skippable(false)
|
||||
.add(SWInfotext(injector)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -16,13 +16,14 @@ import info.nightscout.androidaps.events.EventPumpStatusChanged
|
|||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWItem
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
|
||||
import info.nightscout.androidaps.utils.AndroidPermission
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.locale.LocaleHelper.update
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation
|
||||
import info.nightscout.androidaps.utils.locale.LocaleHelper.update
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
|
@ -81,6 +82,11 @@ class SetupWizardActivity : NoSplashAppCompatActivity() {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateButtons() }) { fabricPrivacy.logException(it) }
|
||||
)
|
||||
disposable.add(rxBus
|
||||
.toObservable(EventRileyLinkDeviceStatusChange::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateButtons() }) { fabricPrivacy.logException(it) }
|
||||
)
|
||||
disposable.add(rxBus
|
||||
.toObservable(EventNSClientStatus::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
|
@ -104,6 +110,7 @@ class SetupWizardActivity : NoSplashAppCompatActivity() {
|
|||
updateButtons()
|
||||
}) { fabricPrivacy.logException(it) }
|
||||
)
|
||||
updateButtons()
|
||||
}
|
||||
|
||||
private fun generateLayout() {
|
||||
|
@ -172,7 +179,7 @@ class SetupWizardActivity : NoSplashAppCompatActivity() {
|
|||
finish()
|
||||
}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER","SameParameterValue")
|
||||
@Suppress("UNUSED_PARAMETER", "SameParameterValue")
|
||||
private fun nextPage(view: View?): Int {
|
||||
var page = currentWizardPage + 1
|
||||
while (page < screens.size) {
|
||||
|
@ -182,7 +189,7 @@ class SetupWizardActivity : NoSplashAppCompatActivity() {
|
|||
return min(currentWizardPage, screens.size - 1)
|
||||
}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER","SameParameterValue")
|
||||
@Suppress("UNUSED_PARAMETER", "SameParameterValue")
|
||||
private fun previousPage(view: View?): Int {
|
||||
var page = currentWizardPage - 1
|
||||
while (page >= 0) {
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -66,7 +66,7 @@ object PrefImportSummaryDialog {
|
|||
rowLayout.setOnClickListener {
|
||||
val msg = "[${context.getString(metaKey.label)}] ${metaEntry.info}"
|
||||
when (metaEntry.status) {
|
||||
PrefsStatus.WARN -> ToastUtils.Long.warnToast(context, msg)
|
||||
PrefsStatus.WARN -> ToastUtils.Long.warnToast(context, msg)
|
||||
PrefsStatus.ERROR -> ToastUtils.Long.errorToast(context, msg)
|
||||
else -> ToastUtils.Long.infoToast(context, msg)
|
||||
}
|
||||
|
@ -132,6 +132,9 @@ object PrefImportSummaryDialog {
|
|||
}
|
||||
|
||||
val dialog = builder.show()
|
||||
val textView = dialog.findViewById<View>(android.R.id.message) as TextView?
|
||||
textView?.textSize = 12f
|
||||
textView?.setPadding(10,0,0,0)
|
||||
dialog.setCanceledOnTouchOutside(false)
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ class BuildHelper @Inject constructor(private val config: Config) {
|
|||
if (!config.APS) true else engineeringMode || !devBranch
|
||||
|
||||
fun isEngineeringMode(): Boolean =
|
||||
if (!config.APS) true else engineeringMode || !devBranch
|
||||
engineeringMode
|
||||
|
||||
fun isDev(): Boolean = devBranch
|
||||
}
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" />
|
||||
|
||||
|
||||
|
|
|
@ -1,30 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="10dp">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TableLayout
|
||||
android:id="@+id/summary_table"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:stretchColumns="2" />
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scroll_content_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="210dp">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/summary_details_btn"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:text="@string/check_preferences_details_btn"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:visibility="gone" />
|
||||
<TableLayout
|
||||
android:id="@+id/summary_table"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:stretchColumns="2" />
|
||||
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/summary_details_btn"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="bottom"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:text="@string/check_preferences_details_btn"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:visibility="gone" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -3,7 +3,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="20dp">
|
||||
android:padding="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/password_prompt_title"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -655,7 +655,7 @@
|
|||
<string name="apssetup">Konfigureer APS plugin</string>
|
||||
<string name="sensitivitysetup">Konfigureer Sensitiwiteits plugin</string>
|
||||
<string name="setupwizard_sensitivity_description">Sensitiwiteit plugin vir sensitiwiteit opsporing en KAB berekening. Vir meer inligting besoek:</string>
|
||||
<string name="setupwizard_sensitivity_url">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
|
||||
<string name="diawarning">Onthou asseblief: dat nuwe insulien profiele vereis DIA van minstens 5h. DIA 5 – 6h op nuwe profiel is gelyk aan DIA 3h op ou insulien profiele.</string>
|
||||
<string name="bgsourcesetup">Konfigureer BG bron</string>
|
||||
<string name="setupwizard_profile_description">Kies asseblief bron van profiel. As Pasiënt \'n kind is gebruik NS profiel. As niemand jou volg op Nightscout sal jy waarskynlik plaaslike profiel kies. Onthou asseblief dat jy net die bron kies van profiel. Om dit te gebruik moet jy dit aktiveer deur uitvoering \"Profiel skakelaar\"</string>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Показва въведените в Nightscout храни</string>
|
||||
<string name="description_insulin_rapid">Действие на инсулините Humalog и NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Действие на инсулин Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Действие на инсулин Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Позволява да зададете сами пика на инсулиновата активност (не използвайте, ако сте нови потребители)</string>
|
||||
<string name="description_loop">Включва или изключва затворения кръг (loop).</string>
|
||||
<string name="description_ns_client">Синхронизира локалните данни с Nightscout</string>
|
||||
|
@ -535,6 +536,7 @@
|
|||
<string name="free_peak_oref">Със свободен пик по Oref</string>
|
||||
<string name="rapid_acting_oref">Бързодействащ по Oref</string>
|
||||
<string name="ultrarapid_oref">Ултра бързодействащ по Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">DIA от %1$f е твърде кратка - използвай %2$f вместо това!</string>
|
||||
<string name="activate_profile">Активирай профила</string>
|
||||
<string name="invalid">НЕВАЛИДНО</string>
|
||||
|
@ -797,6 +799,8 @@
|
|||
<string name="bgsourcesetup">Конфигуриране на източник на КЗ</string>
|
||||
<string name="setupwizard_profile_description">Моля изберете вид профил. Ако пациентът е дете, трябва да използвате NS профил. Ако никой освен Вас не ви проследява в Nightscout вероятно ще предпочетете Локален профил. Моля, не забравяйте, че тук само избирате източника на профил. За да го използвате трябва да го активирате с натискане на \"Смяна на профила\"</string>
|
||||
<string name="setupwizard_aps_description">Изберете един от наличните алгоритми. Те са подредени от най-стария до най-новия. По-новите алгоритми са обикновено по-мощни и по-агресивни. Така ако сте новак в APS системите може да започнете с AMA. Не забравяйте да прочетете документацията на OpenAPS и да го конфигурирате преди употреба.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Изчакване на RileyLink връзка…\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Заб:</b> Можете да продължите след като помпата се инициализира.\n</string>
|
||||
<string name="startobjective">Започнете първа цел</string>
|
||||
<string name="permission">Разрешение</string>
|
||||
<string name="askforpermission">Питане за разрешение</string>
|
||||
|
@ -1213,4 +1217,5 @@
|
|||
<string name="only_upload_if_charging">Качване само при зареждане</string>
|
||||
<string name="worker_state">Статус: %s</string>
|
||||
<string name="uploaded_data">Качени данни</string>
|
||||
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Следните данни ще бъдат качвани във вашия Open Humans акаунт: Глюкозни стойности, болуси, въглехидрати, удължени болуси, профилни смени, общи дневни дози, временни базали, временни цели, предпочитания, версия на AAPS, модел на телефона и размери на екрана. Тайна или лична информация, като например вашия адрес на Nightscout или API, няма да бъдат качени.</string>
|
||||
</resources>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Zobrazení jídel definovaných v NS</string>
|
||||
<string name="description_insulin_rapid">Předvolba pro Novorapid</string>
|
||||
<string name="description_insulin_ultra_rapid">Předvolba pro Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Předvolba pro Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Možnost definice vrcholu účinnosti inzulínu pro pokročilé uživatele</string>
|
||||
<string name="description_loop">Povolení nebo zakázání smyčky.</string>
|
||||
<string name="description_ns_client">Synchronizace dat s NS</string>
|
||||
|
@ -535,6 +536,7 @@
|
|||
<string name="free_peak_oref">Volitelný vrchol - Oref</string>
|
||||
<string name="rapid_acting_oref">Rychle působící - Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra rychlý - Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">DIA %1$f je příliš krátké - použito %2$f !</string>
|
||||
<string name="activate_profile">Aktivovat profil</string>
|
||||
<string name="invalid">NEPLATNÝ</string>
|
||||
|
@ -797,6 +799,8 @@
|
|||
<string name="bgsourcesetup">Konfigurace zdroje glykémií</string>
|
||||
<string name="setupwizard_profile_description">Vyberte zdroj profilů. Pokud jde o dítě, využijte nejspíše NS profil. Pokud Vás nikdo přes NS nesleduje, budete patrně preferovat Místní profil. Uvědomte si, že nastavujete pouze zdroj profilů. Na to aby se opravdu profil začal používat, je třeba provést aktivaci profilu použitím \"Přepnutí profilu\"</string>
|
||||
<string name="setupwizard_aps_description">Vyberte jeden z algoritmů. Jsou setříděné od nejstaršího po nejnovější. Novější je obvykle lepší a agresivnější, ale vyžaduje přesnější nastavení. Proto pokud se smyčkou začínáte, měli byste nejdříve vybrat jen AMA a ne ten poslední. Nezapomeňte si přečíst dokumentaci k OpenAPS a provést nastavení, než ho začnete používat.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Čekám na připojení RileyLink.... \n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Poznámka:</b> Po inicializaci pumpy můžete pokračovat v nastavení.\n</string>
|
||||
<string name="startobjective">Spusťte první cíl</string>
|
||||
<string name="permission">Povolení</string>
|
||||
<string name="askforpermission">Získat povolení</string>
|
||||
|
@ -986,6 +990,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>
|
||||
|
@ -1214,4 +1219,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>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Zeigt die Essensvorlagen aus Nightscout an</string>
|
||||
<string name="description_insulin_rapid">Insulinprofil für Humalog und NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Insulinprofil für Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Insulin-Voreinstellung für Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Erlaubt dir, das Wirkmaximum der Insulinaktivität zu definieren, und sollte nur von erfahrenen Anwendern genutzt werden</string>
|
||||
<string name="description_loop">Aktiviere oder deaktiviere die Anwendung, die den Loop ausführt.</string>
|
||||
<string name="description_ns_client">Synchronisiert deine Daten mit Nightscout</string>
|
||||
|
@ -535,6 +536,7 @@
|
|||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">DIA von %1$f ist zu kurz - AAPS nutzt stattdessen %2$f!</string>
|
||||
<string name="activate_profile">Aktiviere Profil</string>
|
||||
<string name="invalid">Ungültig</string>
|
||||
|
@ -797,6 +799,8 @@
|
|||
<string name="bgsourcesetup">BZ-Quelle konfigurieren</string>
|
||||
<string name="setupwizard_profile_description">Wähle eine Profilquelle aus. Verwende für ein Kind das NS-Profil. Wenn Dir niemand auf Nightscout folgt, wirst Du wahrscheinlich das lokale Profil bevorzugen. Beachte, dass hier nur die Profilquelle festgelegt wird. Damit das Profil verwendet werden kann, muss es mit einem \"Profil-Wechsel\" aktiviert werden.</string>
|
||||
<string name="setupwizard_aps_description">Wähle einen der verfügbaren Algorithmen aus. Sie sind vom Ältesten zum Neuesten sortiert. Neuere Algorithmen sind meist stärker und aggressiver. Wenn du ein Anfänger bist, solltest du nicht mit dem Neuesten sondern mit AMA starten. Vergiss nicht, die OpenAPS-Dokumentation zu lesen und die entsprechenden Einstellungen vor der Benutzung vorzunehmen.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Warte auf Verbindung mit RileyLink…\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Hinweis:</b> Du kannst das Setup fortsetzen, sobald die Pumpe initialisiert wurde.\n</string>
|
||||
<string name="startobjective">Starte deine erste Zielsetzung</string>
|
||||
<string name="permission">Berechtigung</string>
|
||||
<string name="askforpermission">Nach Berechtigung fragen</string>
|
||||
|
@ -819,7 +823,7 @@
|
|||
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Erhöhe die Sensitivität für temporäre Ziele >= 100.]]></string>
|
||||
<string name="low_temptarget_lowers_sensitivity_title">Niedrige temporäre Ziele senken die Sensitivität</string>
|
||||
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Senke die Sensitivität für temporäre Ziele < 100.]]></string>
|
||||
<string name="resistance_lowers_target_title">Resistenz senkt Zielwert</string>
|
||||
<string name="resistance_lowers_target_title">Resistenz senkt den Zielwert</string>
|
||||
<string name="resistance_lowers_target_summary">Wenn Resistenz festgestellt wird, senke den Glukose-Zielwert</string>
|
||||
<string name="sensitivity_raises_target_title">Empfindlichkeit erhöht den Zielwert</string>
|
||||
<string name="sensitivity_raises_target_summary">Wenn eine höhere Empfindlichkeit festgestellt wird, wird der Glukose-Zielwert erhöht.</string>
|
||||
|
@ -987,6 +991,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,11 +1157,14 @@ 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>
|
||||
<string name="smscommunicator_otp_reset_header">Authentifikators zurücksetzen</string>
|
||||
<string name="smscommunicator_otp_install_info">Installiere auf jedem Folloer-Phone eine Authenticator-App, die RFC 6238 TOTP-Token unterstützt. Beliebte kostenlose Apps sind:\n Authy\n Google Authenticator\n LastPass Authenticator\n FreeOTP Authenticator</string>
|
||||
<string name="smscommunicator_otp_install_info">Installiere auf jedem Follower-Phone eine Authenticator-App, die RFC 6238 TOTP-Token unterstützt. Beliebte kostenlose Apps sind:\n Authy\n Google Authenticator\n LastPass Authenticator\n FreeOTP Authenticator</string>
|
||||
<string name="smscommunicator_otp_provisioning_warning">Diesen Code NICHT ONLINE TEILEN!\nVerwende ihn nur zur Einrichtung der Authenticator App auf den Follower-Phones.</string>
|
||||
<string name="smscommunicator_otp_reset_warning">Wenn Du den Authentifikator zurücksetzt werden alle bestehenden Authentifikatoren ungültig. Du musst sie dann neu einrichten!</string>
|
||||
<string name="onconnect">Beim Verbinden</string>
|
||||
|
@ -1193,7 +1201,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 & 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 +1223,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>
|
||||
|
|
|
@ -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 l’activité de l’insuline et ne doit être utilisé que par les utilisateurs avancés</string>
|
||||
<string name="description_loop">Activer ou désactiver la mise en œuvre déclenchant la Boucle.</string>
|
||||
<string name="description_ns_client">Synchronise vos données avec Nightscout</string>
|
||||
|
@ -228,13 +229,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="smscommunicator">Communicateur SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Numéros de tél autorisés</string>
|
||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">Renvoyer le code %2$s pour injecter le bolus %1$.2fU</string>
|
||||
<string name="smscommunicator_mealbolusreplywithcode">Pour injecter le bolus repas de %1$.2fU renvoyer le code %2$s</string>
|
||||
<string name="smscommunicator_temptargetwithcode">Pour définir la Cible Temp %1$s renvoyer le code %2$s</string>
|
||||
<string name="smscommunicator_temptargetcancel">Pour annuler la Cible Temp renvoyer le code %1$s</string>
|
||||
<string name="smscommunicator_stopsmswithcode">Pour désactiver les commandes à distance SMS renvoyer le code %1$s.\n\nGardez à l\'esprit que vous ne pourrez le réactiver que directement à partir de l\'application AAPS du smartphone maître.</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">Pour injecter le bolus de %1$.2f U, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_mealbolusreplywithcode">Pour injecter le bolus repas de %1$.2f U, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_temptargetwithcode">Pour définir la cible temp %1$s, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_temptargetcancel">Pour annuler la cible temp, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_stopsmswithcode">Pour désactiver les commandes à distance SMS, renvoyez le code %1$s.\n\nGardez à l\'esprit que vous ne pourrez le réactiver que directement à partir de l\'application AAPS du smartphone maître.</string>
|
||||
<string name="smscommunicator_stoppedsms">Service de commande à distance SMS arrêté. Pour le réactiver, utilisez AAPS sur le smartphone maître.</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">Renvoyer le code %2$s pour envoyer la calibration %1$.2f</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">Pour envoyer la calibration %1$.2f, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_bolusfailed">Échec du Bolus</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_summary">Nombre minimum de minutes qu\'il doit y avoir entre un bolus distant et le suivant</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Combien de minutes doit-il y avoir, au minimum, entre un bolus et le suivant</string>
|
||||
|
@ -259,22 +260,22 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="smscommunicator_loopisenabled">La Boucle est activée</string>
|
||||
<string name="valuelimitedto">%1$.2f limité à %2$.2f</string>
|
||||
<string name="valueoutofrange">La valeur %1$s est en dehors des limites</string>
|
||||
<string name="smscommunicator_pumpconnectwithcode">Pour connecter la pompe, répondre avec le code %1$s</string>
|
||||
<string name="smscommunicator_pumpconnectwithcode">Pour connecter la pompe, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_pumpconnectfail">Echec de la connexion pompe</string>
|
||||
<string name="smscommunicator_pumpdisconnectwithcode">Pour déconnecter la pompe pendant %1d minutes, répondre avec le code %2$s</string>
|
||||
<string name="smscommunicator_pumpdisconnectwithcode">Pour déconnecter la pompe pendant %1d min, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_pumpdisconnected">Pompe déconnectée</string>
|
||||
<string name="smscommunicator_reconnect">Pompe reconnectée</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">La commande à distance n\'est pas autorisée</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Bolus à distance non disponible. Réessayez plus tard.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Pour démarrer la basal de %1$.2f U/h pendant %2$d min, renvoyer le code %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Pour changer le profil vers %1$s %2$d%%, renvoyer le code %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Pour démarrer le bolus étendu de %1$.2f U/h pendant %2$d min, renvoyer le code %3$s</string>
|
||||
<string name="smscommunicator_carbsreplywithcode">Pour entrer %1$dg à %2$s renvoyer le code %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer la Basal %1$d%% pendant %2$d min, renvoyer le code %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Envoyer le code %2$s pour suspendre la Boucle pour %1$d minutes</string>
|
||||
<string name="smscommunicator_loopresumereplywithcode">Pour reprendre la veuillez répondre avec le code %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Pour activer la boucle veuillez répondre avec le code %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Pour désactiver la boucle veuillez répondre avec le code %1$s</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Pour démarrer la basal de %1$.2f U/h pendant %2$d min, renvoyez le code %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Pour changer le profil vers %1$s %2$d%%, renvoyez le code %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Pour démarrer le bolus étendu de %1$.2f U/h pendant %2$d min, renvoyez le code %3$s</string>
|
||||
<string name="smscommunicator_carbsreplywithcode">Pour entrer %1$dg à %2$s, renvoyez le code %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer la Basal %1$d%% pendant %2$d min, renvoyez le code %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Pour suspendre la boucle pendant %1$d min, renvoyez le code %2$s</string>
|
||||
<string name="smscommunicator_loopresumereplywithcode">Pour reprendre la boucle, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Pour activer la boucle, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Pour désactiver la boucle, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Démarrage réussi pour %1$.2fU/h de basal temporaire pour %2$d min</string>
|
||||
<string name="smscommunicator_extendedset">Le Bolus étendu %1$.2fU pendant %2$d min a commencé avec succès</string>
|
||||
<string name="smscommunicator_carbsset">%1$d g de glucides entrés avec succès</string>
|
||||
|
@ -282,15 +283,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="smscommunicator_tempbasalset_percent">Démarrage réussi pour %1$d%% de Basal temporaire pour %2$d min</string>
|
||||
<string name="smscommunicator_tempbasalfailed">Le démarrage du basal temporaire a échoué</string>
|
||||
<string name="smscommunicator_extendedfailed">Le départ du Bolus étendu a échoué</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">Envoyer le code %1$s pour arrêter la Basal temporaire</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">Pour arrêter le Bolus étendu, renvoyer le code %1$s</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">Pour arrêter la basal temp, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">Pour arrêter le bolus étendu, renvoyez le code %1$s</string>
|
||||
<string name="smscommunicator_tempbasalcanceled">Basal temporaire annulé</string>
|
||||
<string name="smscommunicator_extendedcanceled">Bolus étendu annulé</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">Echec de l\'annulation du basal temporaire</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Échec de l\'annulation du Bolus étendu</string>
|
||||
<string name="smscommunicator_unknowncommand">Commande inconnue ou mauvaise réponse</string>
|
||||
<string name="quickwizard">Assistant Rapide</string>
|
||||
<string name="quickwizardsettings">Paramètres de l\'Assistant Rapide</string>
|
||||
<string name="quickwizardsettings">Assistant Rapide</string>
|
||||
<string name="overview_editquickwizard_buttontext">Texte du bouton :</string>
|
||||
<string name="overview_editquickwizard_carbs">Glucides:</string>
|
||||
<string name="overview_editquickwizard_valid">Valide:</string>
|
||||
|
@ -306,7 +307,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="primefill">Amorcer/Remplir</string>
|
||||
<string name="fillwarning">Veuillez à ce que la quantité corresponde aux caractéristiques de votre cathéter !</string>
|
||||
<string name="othersettings_title">Autres</string>
|
||||
<string name="fillbolus_title">Quantité d\'insuline par défaut pour Amorcer/Remplir</string>
|
||||
<string name="fillbolus_title">Insuline par défaut pour Amorcer/Remplir</string>
|
||||
<string name="button1">Bouton 1</string>
|
||||
<string name="button2">Bouton 2</string>
|
||||
<string name="button3">Bouton 3</string>
|
||||
|
@ -475,7 +476,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="xdripstatus">Barre d\'état pour xDrip (Montre)</string>
|
||||
<string name="xdripstatus_shortname">xds</string>
|
||||
<string name="wear_showbgi_title">Afficher l’Impact Glycémie</string>
|
||||
<string name="wear_showbgi_summary">Ajouter l’IG sur la vue générale</string>
|
||||
<string name="wear_showbgi_summary">Ajouter l’IGly sur la vue générale</string>
|
||||
<string name="ns_noupload">Pas de téléchargement vers NS</string>
|
||||
<string name="ns_noupload_summary">Toutes les données envoyées à NS sont abandonnées. AAPS est connecté à NS mais aucun changement n’est fait dans NS</string>
|
||||
<string name="overview_extendedbolus_cancel_button">Annuler Bolus étendu</string>
|
||||
|
@ -536,6 +537,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="free_peak_oref">Profil d\'insuline ajustable Oref</string>
|
||||
<string name="rapid_acting_oref">Insuline à Action Rapide Oref </string>
|
||||
<string name="ultrarapid_oref">Insuline Ultra Rapide Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">Durée d’Action pour %1$f trop courte - utiliser %2$f à la place !</string>
|
||||
<string name="activate_profile">Activer le profil</string>
|
||||
<string name="invalid">INVALIDE</string>
|
||||
|
@ -798,6 +800,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="bgsourcesetup">Configurez la source des glycémies</string>
|
||||
<string name="setupwizard_profile_description">Sélectionnez la source du profil. Si le patient est un enfant vous devriez utiliser un profil NS. Si personne ne vous suit sur Nightscout, vous préférerez probablement un profil local. N\'oubliez pas que vous êtes simplement en train de sélectionner la source du profil. Afin de pouvoir l\'utiliser vous devrez l\'activer via \"Changement de Profil\"</string>
|
||||
<string name="setupwizard_aps_description">Sélectionnez un des algorithmes disponibles. Ils sont organisés du plus ancien au plus récent. Les algorithmes les plus récents sont habituellement plus puissants et plus agressifs. De ce fait, si vous êtes un nouvel utilisateur, vous devriez probablement démarrer avec AMA au lieu de choisir un algorithme plus récent. N\'oubliez pas de lire la documentation OpenAPS et en faire la configuration avant utilisation.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">En attente de connexion RileyLink...\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Remarque :</b> Vous pouvez continuer l\'installation une fois que la pompe a été initialisée.\n</string>
|
||||
<string name="startobjective">Démarrez votre premier objectif</string>
|
||||
<string name="permission">Autorisation</string>
|
||||
<string name="askforpermission">Demande d\'autorisation</string>
|
||||
|
@ -820,7 +824,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Augmente la Sensibilité pour les cibles temporaires >= 100]]></string>
|
||||
<string name="low_temptarget_lowers_sensitivity_title">Cible temp. basse abaisse la sensibilité</string>
|
||||
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Diminue la Sensibilité pour les cibles temporaires < 100]]></string>
|
||||
<string name="resistance_lowers_target_title">La résistance diminue la cible</string>
|
||||
<string name="resistance_lowers_target_title">Résistance diminue la cible</string>
|
||||
<string name="resistance_lowers_target_summary">Quand une résistance est détectée, baisse de la glycémie cible</string>
|
||||
<string name="sensitivity_raises_target_title">Sensibilité augmente la cible</string>
|
||||
<string name="sensitivity_raises_target_summary">Quand une sensibilité est détectée, augmentation de la glycémie cible</string>
|
||||
|
@ -987,6 +991,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>
|
||||
|
@ -1171,14 +1176,14 @@ 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="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 +1220,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>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Visualizza i preset dei cibi definiti in Nightscout</string>
|
||||
<string name="description_insulin_rapid">Preset per insulina Humalog e NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Preset per insulina Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Preset per insulina Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Ti consente di definire il picco di attività dell\'insulina e deve essere utilizzato solo dagli utenti avanzati</string>
|
||||
<string name="description_loop">Attiva o disattiva l\'implementazione per la gestione del loop.</string>
|
||||
<string name="description_ns_client">Sincronizza i tuoi dati con Nightscout</string>
|
||||
|
@ -535,6 +536,7 @@
|
|||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">DIA di %1$f troppo breve - utilizzo %2$f.</string>
|
||||
<string name="activate_profile">Attiva profilo</string>
|
||||
<string name="invalid">NON VALIDO</string>
|
||||
|
@ -797,6 +799,8 @@
|
|||
<string name="bgsourcesetup">Configura sorgente BG</string>
|
||||
<string name="setupwizard_profile_description">Seleziona il tipo di profilo. Se il paziente è un bambino dovresti utilizzare il profilo di NS. Se non c\'è nessuno a seguirti su Nightscout probabilmente preferirai il profilo locale. Ricorda che stai solo selezionando la sorgente del profilo. Per utilizzarlo devi attivarlo tramite l\'esecuzione del comando \"Cambio profilo\"</string>
|
||||
<string name="setupwizard_aps_description">Seleziona uno degli algoritmi disponibili. Sono ordinati dal più vecchio al più recente. L\'algoritmo più recente è solitamente più potente e più aggressivo. Pertanto, se sei un nuovo utente, probabilmente dovresti iniziare con AMA e non con l\'ultimo. Non dimenticare di leggere la documentazione di OpenAPS e di configurarlo prima dell\'uso.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Attesa connessione RileyLink…\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Nota:</b> Puoi continuare la configurazione una volta che il micro è stato inizializzato.\n</string>
|
||||
<string name="startobjective">Avvia il tuo primo obiettivo</string>
|
||||
<string name="permission">Autorizzazione</string>
|
||||
<string name="askforpermission">Chiedi l\'autorizzazione</string>
|
||||
|
@ -986,6 +990,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>
|
||||
|
@ -1214,4 +1219,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>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Rodyti maisto ruošinius iš Nightscout</string>
|
||||
<string name="description_insulin_rapid">Nustatymai Humalog ir NovoRapid / NovoLog insulinams</string>
|
||||
<string name="description_insulin_ultra_rapid">Nustatymai Fiasp insulinui</string>
|
||||
<string name="description_insulin_lyumjev">Nustatymai Lyumjev insulinui</string>
|
||||
<string name="description_insulin_free_peak">Leidžia pasirinkti insulino veikimo piką ir turėtų būti naudojama tik patyrusių vartotojų</string>
|
||||
<string name="description_loop">Aktyvuoja arba deaktyvuoja Ciklo paleidimą.</string>
|
||||
<string name="description_ns_client">Sinchronizuoja duomenis su Nightscout</string>
|
||||
|
@ -535,6 +536,7 @@
|
|||
<string name="free_peak_oref">Oref be piko</string>
|
||||
<string name="rapid_acting_oref">Greito veikimo Oref</string>
|
||||
<string name="ultrarapid_oref">Staigaus veikimo Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">IVT %1$f per trumpa - bus naudojama %2$f!</string>
|
||||
<string name="activate_profile">Aktyvuoti profilį</string>
|
||||
<string name="invalid">KLAIDA</string>
|
||||
|
@ -797,6 +799,8 @@
|
|||
<string name="bgsourcesetup">Sukonfigūruoti KG šaltinį</string>
|
||||
<string name="setupwizard_profile_description">Prašome pasirinkti profilį. Jei pacientas yra vaikas, turite naudoti NS profilį. Jei niekas neseka jūsų Nightscout platformoje, tada geriau pasirinkti Vietinį profilį. Atminkite, kad čia Jūs tik pasirenkate profilio šaltinį. Norėdami jį aktyvuoti, turite atlikti Profilio keitimą</string>
|
||||
<string name="setupwizard_aps_description">Pasirinkite vieną iš esamų algoritmų. Jie yra išdėstyti nuo seniausio iki naujausio. Naujesni algoritmai yra galingesni ir agresyvesni. Taigi jei esate naujas vartotojas, geriau pradėti nuo AMA, o ne naujesnio. Nepamirškite perskaityti dokumentaciją ir sukonfigūruoti jį prieš naudojant.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Laukiama RileyLink ryšio...\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b> Pastaba:</b> sąranką galite tęsti, kai tik inicijuojama pompa.\n</string>
|
||||
<string name="startobjective">Pradėti jūsų pirmąjį tikslą</string>
|
||||
<string name="permission">Leidimas</string>
|
||||
<string name="askforpermission">Prašyti leidimo</string>
|
||||
|
@ -1213,4 +1217,5 @@
|
|||
<string name="only_upload_if_charging">Įkelti tik akumuliatoriaus įkrovimo metu</string>
|
||||
<string name="worker_state">Darbinė Būklė: %s</string>
|
||||
<string name="uploaded_data">Įkelti duomenis</string>
|
||||
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">Į jūsų Open Humans paskyrą bus įkelti šie duomenys: glikemijos reikšmės, bolusai, angliavandeniai, priežiūros portalo įvykiai (išskyrus pastabas), ištęstiniai bolusai, profilio pakeitimai, visos paros dozės, laikinos valandinės bazės, laikini tikslai, nustatymai, programos versija, įrenginio modelis ir ekrano matmenys. Konfidenciali ar privati informacija, pvz., Jūsų Nightscout URL arba API slaptažodis, nebus įkelta.</string>
|
||||
</resources>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<string name="description_food">Toon de instellingen voor Voeding in Nightscout</string>
|
||||
<string name="description_insulin_rapid">Insuline instelling voor Humalog en NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Insuline instelling voor Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Insuline instelling voor Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Hiermee kan je de piek van de insulineactiviteit definiëren en deze mag alleen worden gebruikt door gevorderde gebruikers</string>
|
||||
<string name="description_loop">Activeer of deactiveer de implementatie die de Loop triggert.</string>
|
||||
<string name="description_ns_client">Synchroniseert je data met Nightscout</string>
|
||||
|
@ -156,6 +157,7 @@
|
|||
<string name="overview_tempbasal_button">Tijdelijk basaal</string>
|
||||
<string name="overview_extendedbolus_button">Vertraagde bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versie:</string>
|
||||
<string name="missing_carbs">Er ontbreekt %1$d g</string>
|
||||
<string name="exported">Instellingen geëxporteerd</string>
|
||||
<string name="export_to">Exporteer instellingen naar</string>
|
||||
<string name="import_from">Importeer instellingen van</string>
|
||||
|
@ -171,6 +173,11 @@
|
|||
<string name="password_preferences_decrypt_prompt">Je wordt gevraagd om een masterwachtwoord. Daarmee worden geïmporteerde instellingen ontsleuteld.</string>
|
||||
<string name="preferences_export_canceled">Exporteren geannuleerd! Instellingen zijn NIET geëxporteerd!</string>
|
||||
<string name="preferences_import_canceled">Importeren geannuleerd! Instellingen zijn NIET geïmporteerd!</string>
|
||||
<string name="preferences_import_impossible">Kan voorkeuren niet importeren!</string>
|
||||
<string name="goto_main_try_again">Ga terug naar het hoofdscherm en probeer opnieuw.</string>
|
||||
<string name="old_master_password">Oud hoofdwachtwoord</string>
|
||||
<string name="different_password_used">Dit bestand is geëxporteerd en gecodeerd met een ander hoofdwachtwoord. Geef het oude hoofdwachtwoord op om het bestand te kunnen decoderen.</string>
|
||||
<string name="master_password_will_be_replaced">Als gevolg van het importeren, zal het huidige hoofdwachtwoord worden vervangen door het oude hoofdwachtwoord!</string>
|
||||
<string name="preferences_import_list_title">Kies bestand om te importeren</string>
|
||||
<string name="check_preferences_before_import">Controleer instellingen voor het importeren:</string>
|
||||
<string name="check_preferences_cannot_import">Instellingen kunnen niet worden geïmporteerd!</string>
|
||||
|
@ -232,6 +239,10 @@
|
|||
<string name="smscommunicator_remotebolusmindistance_summary">Minimum aantal minuten dat moet verstrijken tussen de ene bolus op afstand en de volgende</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Hoeveel minuten er ten minste moeten verstrijken tussen de ene bolus en de volgende</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">Voor de veiligheid moet je ten minste 2 telefoonnummers toevoegen om deze instelling te kunnen bijwerken.</string>
|
||||
<string name="bolusdelivered">Bolus van %1$.2f E succesvol toegediend</string>
|
||||
<string name="bolusrequested">%1$.2f E toedienen</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolus van %1$.2f E succesvol toegediend</string>
|
||||
<string name="smscommunicator_mealbolusdelivered">Maaltijdbolus van %1$.2f E succesvol toegediend</string>
|
||||
<string name="smscommunicator_mealbolusdelivered_tt">Streefdoel %1$s gedurende %2$d minuten</string>
|
||||
<string name="smscommunicator_tt_set">Streefdoel %1$s gedurende %2$d minuten succesvol ingesteld</string>
|
||||
<string name="smscommunicator_tt_canceled">Tijdelijk streefdoel is geannuleerd</string>
|
||||
|
@ -255,7 +266,9 @@
|
|||
<string name="smscommunicator_reconnect">Pomp opnieuw verbonden</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">Commando\'s op afstand zijn niet toegestaan</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Bolus op afstand niet beschikbaar. Probeer het later opnieuw.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Om een basaal van %1$.2f E/uur voor %2$d min te starten, antwoord met code %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Om naar profiel %1$s %2$d%% te wisselen antwoord met code %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Om een vertraagde bolus van %1$.2f E voor %2$d min te starten, antwoord met code %3$s</string>
|
||||
<string name="smscommunicator_carbsreplywithcode">Antwoord met code %3$s om %1$dg in te voeren op %2$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Om een basaal van %1$d%% voor %2$d min te starten antwoord met code %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Om de loop te onderbreken voor %1$d minuten antwoord met de code %2$s</string>
|
||||
|
@ -264,6 +277,7 @@
|
|||
<string name="smscommunicator_loopdisablereplywithcode">Om loop uit te schakelen antwoord met code %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Tijdelijk basaal %1$.2fE/u voor %2$d minuten succesvol gestart</string>
|
||||
<string name="smscommunicator_extendedset">Vertraagde bolus %1$.2fE voor %2$d minuten succesvol gestart</string>
|
||||
<string name="smscommunicator_carbsset">Koolhydraten %1$d g succesvol ingevoerd</string>
|
||||
<string name="smscommunicator_carbsfailed">Invoeren van %1$dg koolhydraten is mislukt</string>
|
||||
<string name="smscommunicator_tempbasalset_percent">Tijdelijk basaal van %1$d%% voor %2$d minuten succesvol gestart</string>
|
||||
<string name="smscommunicator_tempbasalfailed">Start tijdelijk basaal mislukt</string>
|
||||
|
@ -522,6 +536,7 @@
|
|||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Snel-werkende Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||
<string name="lyumjev">Lyumjev</string>
|
||||
<string name="dia_too_short">DIA van %1$f te kort - %2$f wordt inplaats gebruikt!</string>
|
||||
<string name="activate_profile">Activeer profiel</string>
|
||||
<string name="invalid">Ongeldig</string>
|
||||
|
@ -549,6 +564,7 @@
|
|||
<string name="pump_unreachable">Pomp niet beschikbaar</string>
|
||||
<string name="missed_bg_readings">Geen BG metingen</string>
|
||||
<string name="raise_notifications_as_android_notifications">Gebruik systeem notificaties voor waarschuwingen en notificaties</string>
|
||||
<string name="gradually_increase_notification_volume">Volume van notificaties en meldingen geleidelijk verhogen</string>
|
||||
<string name="localalertsettings_title">Lokaal gegenereerde waarschuwingen</string>
|
||||
<string name="enable_missed_bg_readings_alert">Alarm als er geen BG gegevens ontvangen zijn</string>
|
||||
<string name="enable_pump_unreachable_alert">Waarschuwing bij niet bereikbare pomp</string>
|
||||
|
@ -637,6 +653,7 @@
|
|||
<string name="enablesmbwithtemptarget">Gebruik SMB met tijdelijke streefdoelen</string>
|
||||
<string name="enablesmbwithtemptarget_summary">Gebruik SMB bij een actief tijdelijk streefdoel (eet binnenkort, activiteit)</string>
|
||||
<string name="enablesmbwithhightemptarget">Gebruik SMB met een hoog tijdelijk streefdoel</string>
|
||||
<string name="enablesmbwithhightemptarget_summary">Schakel SMB in wanneer er een hoog tijdelijk doel actief is (uitvoeren boven 100 mg/dl of 5,5 mmol/l)</string>
|
||||
<string name="overview_insulin_label">Insuline</string>
|
||||
<string name="overview_carbs_label">Koolhydraten</string>
|
||||
<string name="overview_buttons_selection">Knoppen</string>
|
||||
|
@ -670,6 +687,7 @@
|
|||
<string name="do_not_bolus_record_only">Geen bolus toedienen enkel in behandelingen zetten</string>
|
||||
<string name="category">Categorie</string>
|
||||
<string name="subcategory">Subcategorie</string>
|
||||
<string name="bolusrecordedonly">Bolus wordt alleen geregistreerd (niet toegediend door pomp)</string>
|
||||
<string name="ns_autobackfill_summary">Automatische onbekende BGs aanvullen van NS</string>
|
||||
<string name="loop_smbsetbypump_label">SMB op de pomp ingesteld</string>
|
||||
<string name="overview_show_activity">Activiteit</string>
|
||||
|
@ -781,11 +799,14 @@
|
|||
<string name="bgsourcesetup">BG bron configureren</string>
|
||||
<string name="setupwizard_profile_description">Kies een bron van het profiel. Als de patiënt een kind is, moet u het NS-profiel gebruiken. Als er niemand is die je volgt op Nightscout, zul je waarschijnlijk een lokaal profiel prefereren. Onthoud dat u alleen de profielbron selecteert. Om het te gebruiken, moet u het activeren door \"Profiel wisselen\" uit te voeren</string>
|
||||
<string name="setupwizard_aps_description">Selecteer een van beschikbare algoritmen. Ze zijn gesorteerd van oudste naar nieuwste. Nieuwer algoritme is meestal krachtiger en agressiever. Dus als je een nieuwe looper bent, kun je waarschijnlijk beginnen met AMA en niet met de nieuwste. Vergeet niet de OpenAPS-documentatie te lezen en deze vóór gebruik te configureren.</string>
|
||||
<string name="setupwizard_pump_waiting_for_riley_link_connection">Wachten op verbinding met RileyLink…\n</string>
|
||||
<string name="setupwizard_pump_pump_not_initialized"><b>Opmerking:</b> je kunt de setup voortzetten zodra de pomp geïnitialiseerd is.\n</string>
|
||||
<string name="startobjective">Start je eerste Doel</string>
|
||||
<string name="permission">Toestemming</string>
|
||||
<string name="askforpermission">Vragen om toestemming</string>
|
||||
<string name="needsystemwindowpermission">Toepassing vereist systeemvenstermachtiging voor meldingen</string>
|
||||
<string name="needlocationpermission">App heeft locatie toestemming nodig voor Bluetooth scan en WiFi identificatie</string>
|
||||
<string name="needstoragepermission">Applicatie heeft toestemming nodig om log bestanden op te slaan en instellingen te exporteren</string>
|
||||
<string name="request">Verzoek</string>
|
||||
<string name="insulinsourcesetup">Gevoeligheid plugin configureren</string>
|
||||
<string name="exit">Afsluiten</string>
|
||||
|
@ -841,6 +862,7 @@
|
|||
<string name="code_compare">Worden dezelfde codes weergegeven op dit apparaat als op je pomp?</string>
|
||||
<string name="insight_pairing">Insight koppelen</string>
|
||||
<string name="insight_local">Accu-Chek Insight</string>
|
||||
<string name="insight_delivered">%1$.2f E / %2$.2f E toegediend</string>
|
||||
<string name="insight_alert_formatter">%1$s: %2$s</string>
|
||||
<string name="tube_changed">Slang vervangen</string>
|
||||
<string name="pump_time_updated">Pomp tijd bijgewerkt</string>
|
||||
|
@ -898,6 +920,7 @@
|
|||
<string name="short_status_extended">Vertraagd: %1$.2f / %2$.2f U gedurende %3$d min</string>
|
||||
<string name="short_status_multiwave">Multiwave: %1$.2f / %2$.2f E gedurende %3$d min</string>
|
||||
<string name="short_status_tdd">TDD: %1$.2f</string>
|
||||
<string name="short_status_reservoir">Reservoir: %1$.2f E</string>
|
||||
<string name="short_status_battery">Batt.: %1$d%%</string>
|
||||
<string name="max_recovery_duration">Max. herstel duur [s]</string>
|
||||
<string name="min_recovery_duration">Min. herstel duur [s]</string>
|
||||
|
@ -967,6 +990,7 @@
|
|||
<string name="storage">interne opslag bijna vol</string>
|
||||
<string name="diskfull">Maak minstens %1$d MB vrij in interne opslag! Loop is uitgeschakeld!</string>
|
||||
<string name="wrongformat">Verkeerde invoer</string>
|
||||
<string name="wrongTbrDuration">Tijdelijk basaal duur moet een veelvoud van %1$d minuten en groter dan 0 zijn.</string>
|
||||
<string name="sms_wrongcode">Verkeerde code. Opdracht geannuleerd.</string>
|
||||
<string name="notconfigured">Niet ingesteld</string>
|
||||
<string name="profileswitchcreated">Profiel wissel aangemaakt</string>
|
||||
|
@ -1040,6 +1064,8 @@
|
|||
<string name="sendsmsactionlabel">Stuur SMS: %1$s</string>
|
||||
<string name="sendsmsactiondescription">SMS verzenden naar alle nummers</string>
|
||||
<string name="sendsmsactiontext">Stuur SMS met tekst</string>
|
||||
<string name="cobvsiob">COB vs IOB</string>
|
||||
<string name="bolusconstraintappliedwarn">Bolusbeperking toegepast: %1$.2f E naar %2$.2f E</string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!! Trage koolhydraat absorptie gedetecteerd: %2$d%% van de tijd. Controleer je berekening nogmaals. COB kan zijn overschat waardoor er misschien meer insuline wordt afgegeven!!!</font> zijn]]></string>
|
||||
<string name="partialboluswizard">Voer dit deel van het bolus wizard resultaat uit [%]</string>
|
||||
<string name="deliverpartofboluswizard">Bolus wizard voert de berekening uit maar alleen dit deel van berekende insuline wordt geleverd. Handig in combinatie met het SMB algoritme.</string>
|
||||
|
@ -1075,6 +1101,7 @@
|
|||
<string name="clone_label">Dupliceren</string>
|
||||
<string name="saveorresetchangesfirst">Huidige wijzigingen eerst opslaan of ongedaan maken</string>
|
||||
<string name="deletecurrentprofile">Huidige profiel verwijderen?</string>
|
||||
<string name="copytolocalprofile">Nieuw lokaal profiel aanmaken van dit profiel?</string>
|
||||
<string name="profilenamecontainsdot">Profielnaam bevat punten.\nDit wordt niet ondersteund door NS.\nProfiel is niet geüpload naar NS.</string>
|
||||
<string name="low_mark_comment">Laagste waarde in bereik (alleen weergave)</string>
|
||||
<string name="high_mark_comment">Hoogste waarde in bereik (alleen weergave)</string>
|
||||
|
@ -1088,6 +1115,7 @@
|
|||
<string name="nav_survey">Enquête</string>
|
||||
<string name="invalidage">Ongeldige leeftijd invoer</string>
|
||||
<string name="invalidweight">Ongeldige gewicht invoer</string>
|
||||
<string name="invalidpct">Ongeldig % invoer</string>
|
||||
<string name="tirformat"><![CDATA[<b>%1$s:</b> Laag: <b>%2$02d%%</b> In: <b>%3$02d%%</b> Hoog: <b>%4$02d%%</b>]]></string>
|
||||
<string name="average">Gemiddelde</string>
|
||||
<string name="tir">TIR</string>
|
||||
|
@ -1114,15 +1142,23 @@
|
|||
<string name="loop_tbrexecution_time_label">Tijdelijke basaal uitvoering tijd</string>
|
||||
<string name="insight_alert_notification_channel">Insight pomp waarschuwingen</string>
|
||||
<!-- SMS Communicator & OTP Authenticator -->
|
||||
<string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">van de Authenticator-app voor: %1$s gevolgd door PIN</string>
|
||||
<string name="smscommunicator_otp_enabled">Authentificatie inschakelen</string>
|
||||
<string name="smscommunicator_otp_enabled_summary">Authentificeer SMS commando\'s met behulp van One Time Passwords (OTPs, eenmalige wachtwoorden) gegenereerd door Google Authenticator of soortgelijke 2FA apps.</string>
|
||||
<string name="smscommunicator_otp_pin">Extra verplichte PIN aan einde van token</string>
|
||||
<string name="smscommunicator_otp_pin_summary">Extra cijfers die je moet onthouden, en aan het eind van elk gegenereerd eenmalig wachtwoord moet toevoegen.</string>
|
||||
<string name="smscomunicator_tab_otp_label">Authentificatie instellingen</string>
|
||||
<string name="smscommunicator_code_verify_label">Te controleren code:</string>
|
||||
<string name="smscommunicator_code_verify_hint">OTP + PIN</string>
|
||||
<string name="smscommunicator_code_verify_info">De verificatiecode bestaat uit 6 cijfers die worden afgebeeld door de Authenticator-app (bekend als OTP), gevolgd door 3 of meer cijfers van de verplichte PIN-code.</string>
|
||||
<string name="smscommunicator_otp_verify_label">Te controleren OTP:</string>
|
||||
<string name="smscommunicator_otp_reset_btn">Reset Authentificatie</string>
|
||||
<string name="smscommunicator_otp_reset_title">Reset Authentificatie-sleutel</string>
|
||||
<string name="smscommunicator_otp_reset_prompt">Weet je zeker dat je de Autentificatie-sleutel wilt resetten? Met deze actie maak je alle Authentificatie instellingen van verbonden telefoons ongeldig, en je zult ze opnieuw moeten instellen.</string>
|
||||
<string name="smscommunicator_otp_reset_successful">Er is een nieuwe Authentificatie-sleutel gegenereerd! Gebruik de nieuwe QR-Code voor het instellen van geautoriseerde telefoons.</string>
|
||||
<string name="smscommunicator_otp_export_title">OTP-secret wordt geëxporteerd</string>
|
||||
<string name="smscommunicator_otp_export_prompt">Weet je zeker dat je het OTP-secret naar het klembord wilt kopiëren?\n\nJe hebt dit alleen nodig als je Authenticator-app problemen heeft met het scannen van QR-codes, als je het handmatig wilt invullen of als je een hardware OTP-token met een speciale app wilt configureren.</string>
|
||||
<string name="smscommunicator_otp_export_successful">OTP-secret (in Base32-formaat) is geëxporteerd en gekopieerd naar het klembord. Plak het in de Authenticator-app of de app van de hardware OTP-token!</string>
|
||||
<string name="smscommunicator_otp_step1_install_header">1. Installeer Authenticator app</string>
|
||||
<string name="smscommunicator_otp_step2_provisioning_header">2. Scan code om AndroidAPS OTP codes in te stellen</string>
|
||||
<string name="smscommunicator_otp_step3_test_header">3. Test eenmalig wachtwoord (One Time Password)</string>
|
||||
|
@ -1145,5 +1181,46 @@
|
|||
<string name="buttonson_description">Knoppen worden altijd weergegeven aan de onderkant van het scherm</string>
|
||||
<string name="largedisplay_description">Groot scherm</string>
|
||||
<string name="skin">Skin</string>
|
||||
<string name="comapareprofile">Vergelijk profielen</string>
|
||||
<string name="nav_profilehelper">Profiel hulp</string>
|
||||
<string name="motoldefaultprofile">Basis profiel</string>
|
||||
<string name="currentprofile">Huidig profiel</string>
|
||||
<string name="availableprofile">Beschikbaar profiel</string>
|
||||
<string name="profiletype">Profieltype</string>
|
||||
<string name="formatwithtdd">Duur: %1$.0f TDD: %2$.0f E</string>
|
||||
<string name="formatwittddandpct">Leeftijd: %1$.0f TDD: %2$.0f E %3$d%%</string>
|
||||
<string name="formatwithweight">Leeftijd: %1$.0f gewicht: %2$.0f kg</string>
|
||||
<string name="basalpctfromtdd_label">% van basaal</string>
|
||||
<string name="dpvdefaultprofile">DPV Basis profiel</string>
|
||||
<string name="open_humans">Open Humans</string>
|
||||
<string name="finishing_open_humans_setup">Setup van Open Humans voltooien…</string>
|
||||
<string name="this_may_take_a_while">Dit kan even duren. Zet de telefoon of plugin niet uit.</string>
|
||||
<string name="setup_finished">Setup voltooid</string>
|
||||
<string name="your_phone_will_upload_data">Je telefoon zal binnenkort data gaan uploaden naar Open Humans.</string>
|
||||
<string name="your_phone_is_upload_data">Je telefoon is data aan het uploaden naar Open Humans.</string>
|
||||
<string name="setup_failed">Setup mislukt</string>
|
||||
<string name="there_was_an_error">Er is een fout opgetreden. Probeer opnieuw in te loggen. Sorry & bedankt!</string>
|
||||
<string name="open_humans_terms">Dit is een open source tool die je data uploadt naar Open Humans. Wij behouden geen rechten om je gegevens te delen met derden zonder jouw uitdrukkelijke toestemming. De gegevens die het project en de app ontvangen, worden geïdentificeerd aan de hand van een willekeurig gebruikers-ID en worden uitsluitend veilig verzonden naar een Open Humans account met jouw toestemming voor dat proces. Je kunt op elk gewenst moment stoppen met uploaden en je data verwijderen via www.openhumans.org.</string>
|
||||
<string name="i_understand_and_agree">Ik begrijp het en ga akkoord.</string>
|
||||
<string name="login">Inloggen</string>
|
||||
<string name="logout">Uitloggen</string>
|
||||
<string name="oh_logout_confirmation">Weet je zeker dat je uit wilt loggen en wilt stoppen met het doneren van gegevens aan de wetenschap?</string>
|
||||
<string name="project_member_id">Projectlid-ID: %s</string>
|
||||
<string name="queue_size">Grootte wachtrij: %d</string>
|
||||
<string name="terms_of_use">Gebruiksvoorwaarden</string>
|
||||
<string name="not_logged_in">Niet ingelogd</string>
|
||||
<string name="you_need_to_accept_the_of_use_first">Je moet eerst instemmen met de voorwaarden.</string>
|
||||
<string name="successfully_logged_in">Succesvol ingelogd</string>
|
||||
<string name="setup_will_continue_in_background">De setup wordt nu op de achtergrond voltooid. Bedankt voor het uploaden van je gegevens.\n\nHoud deze plugin en je telefoon even ingeschakeld om de setup te voltooien.</string>
|
||||
<string name="completing_login">Login voltooien…</string>
|
||||
<string name="donate_your_data_to_science">Doneer je gegevens aan de wetenschap</string>
|
||||
<string name="open_humans_short">OH</string>
|
||||
<string name="you_have_been_signed_out_of_open_humans">Je bent uitgelogd van Open Humans</string>
|
||||
<string name="click_here_to_sign_in_again_if_this_wasnt_on_purpose">Klik hier om opnieuw in te loggen als dit niet opzettelijk was.</string>
|
||||
<string name="only_upload_if_connected_to_wifi">Alleen uploaden indien verbonden met WiFi</string>
|
||||
<string name="only_upload_if_charging">Alleen uploaden tijdens opladen</string>
|
||||
<string name="worker_state">Werkstatus: %s</string>
|
||||
<string name="uploaded_data">Geüploade gegevens</string>
|
||||
<string name="the_following_data_will_be_uploaded_to_your_open_humans_account">De volgende gegevens worden geüpload naar je Open Humans account: glucosewaarden, bolussen, koolhydraten, careportal-events (met uitzondering van notities), verlengde bolussen, profielwissels, totale dagelijkse doses, tijdelijke basaalstanden, tijdelijke doelen, voorkeuren, app-versie, apparaatmodel en schermafmetingen. Geheime of persoonlijke gegevens zoals je Nightscout-URL of API-secret worden niet geüpload.</string>
|
||||
<string name="setupwizard_pump_riley_link_status">RileyLink Status:</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,168 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="dia_whatmeansdia">Hva er riktig om DIA?</string>
|
||||
<string name="dia_label_exam">Tema: Insulinvarighet (DIA)</string>
|
||||
<string name="dia_minimumis3h">Minimumsverdien er 3 timer.</string>
|
||||
<string name="dia_minimumis5h">Minimumsverdien er 5 timer.</string>
|
||||
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
|
||||
<string name="dia_meaningisequaltodiapump">Betydningen er lik DIA verdien angitt i pumpen.</string>
|
||||
<string name="dia_valuemustbedetermined">Du må bestemme din individuelle verdi (men ikke mindre enn 5 timer).</string>
|
||||
<string name="hypott_label">Tema: Hypo Temp Target</string>
|
||||
<string name="hypott_whenhypott">Hva er hovedgrunnen til å velge en hypo TT?</string>
|
||||
<string name="hypott_goinglow">Forhindre at BS går lavt hvis du allerede har en null temp gående.</string>
|
||||
<string name="hypott_preventoversmb">Forhindre at AAPS skal doserer for mye insulin etter en BS stigning forårsaket av hurtigvirkende karbohydrater gitt for å behandle et lavt BS.</string>
|
||||
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
|
||||
<string name="offlineprofile_whatprofile">Hvilken profiltype kan brukes og konfigureres offline?</string>
|
||||
<string name="offlineprofile_label">Tema: Offline profil</string>
|
||||
<string name="offlineprofile_nsprofile">NS profil kan brukes, men ikke konfigureres.</string>
|
||||
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
|
||||
<string name="pumpdisconnect_label">Tema: koble fra pumpen</string>
|
||||
<string name="pumpdisconnect_whattodo">Hva bør gjøres innen du kobler fra pumpen?</string>
|
||||
<string name="pumpdisconnect_letknow">Trykk på \"Koble fra pumpen\" slik at AAPS vet at ingen insulin vil bli levert.</string>
|
||||
<string name="pumpdisconnect_suspend">Trykk \"Pause loop\" så AAPS stopper å loope mens pumpen er frakoblet.</string>
|
||||
<string name="pumpdisconnect_dontchnage">Endre ikke på noe i AAPS, koble bare fra pumpen.</string>
|
||||
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
|
||||
<string name="objectives_label">Tema: AndroidAPS innstillinger</string>
|
||||
<string name="objectives_howtosave">Hva er beste praksis for å ta backup av dine innstillinger?</string>
|
||||
<string name="objectives_exportsettings">Eksportere dem lokalt fra Vedlikeholds menyen.</string>
|
||||
<string name="objectives_storeelsewhere">Lagre den eksporterte filen til en annen plass som epost, Dropbox, Google Drive…</string>
|
||||
<string name="objectives_doexportonstart">Eksporter dem rett etter installeringen av AAPS.</string>
|
||||
<string name="objectives_doexportafterchange">Eksporter dem rett etter at du har gjort endringer i dine innstillinger.</string>
|
||||
<string name="objectives_doexportafterobjective">Eksporter dem etter at du har fullført et nytt læringsmål.</string>
|
||||
<string name="objectives_doexportafterfirtssettings">Eksporter dem etter at du har avsluttet dine første innstillinger.</string>
|
||||
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
|
||||
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
|
||||
<string name="noisycgm_label">Emne: CGM-målingern med støy</string>
|
||||
<string name="noisycgm_whattodo">Hva bør gjøres hvis CGM data har støy?</string>
|
||||
<string name="nothing">Ingenting, AAPS vil håndtere det.</string>
|
||||
<string name="noisycgm_pause">Deaktiver loop for å unngå overdosering.</string>
|
||||
<string name="noisycgm_replacesensor">Bytt CGM sensor.</string>
|
||||
<string name="noisycgm_turnoffphone">Slå av telefonen.</string>
|
||||
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
|
||||
<string name="noisycgm_checksmoothing">Kontroller at CGM appen din jevner ut BS målinger.</string>
|
||||
<string name="exercise_label">Tema: Trening</string>
|
||||
<string name="exercise_whattodo">Hvordan kan du hjelpe systemet med å håndtere trening?</string>
|
||||
<string name="exercise_setactivitytt">Ved å bruke funksjonen for temp target/mål.</string>
|
||||
<string name="exercise_switchprofilebelow100">Gjør et profilbytte til under 100%.</string>
|
||||
<string name="exercise_switchprofileabove100">Gjør et profilbytte til over 100%.</string>
|
||||
<string name="exercise_stoploop">Stopp loop.</string>
|
||||
<string name="exercise_doitbeforestart">Angi et \"aktivitet\" temp mål før du begynner treningen.</string>
|
||||
<string name="exercise_afterstart">Å angi et \"aktivitet\" temp mål etter at du har startet treningen fører til dårligere resultater enn om man startet før.</string>
|
||||
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#active temp-target</string>
|
||||
<string name="suspendloop_label">Tema: Stanset/pauset loop</string>
|
||||
<string name="suspendloop_doigetinsulin">Får jag insulin når loop er stanset/pauset?</string>
|
||||
<string name="suspendloop_yes">Ja, basal insulin vil fortsatt bli levert.</string>
|
||||
<string name="suspendloop_no">Nei, levering av insulin er stanset.</string>
|
||||
<string name="basaltest_label">Tema: Basal, ISF og IC testing</string>
|
||||
<string name="basaltest_when">Når bør jeg validere basal, ISF og IC verdier?</string>
|
||||
<string name="basaltest_beforeloop">Før jeg begynner å loope.</string>
|
||||
<string name="basaltest_havingregularhypo">Om du ofte opplever lave BS verdier.</string>
|
||||
<string name="basaltest_havingregularhyper">Om du ofte opplever høye BS verdier.</string>
|
||||
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
|
||||
<string name="prerequisites_label">Tema: Forutsetninger før oppstart</string>
|
||||
<string name="prerequisites_what">Hva trenger jeg?</string>
|
||||
<string name="prerequisites_determinedcorrectprofile">Validert profil informasjon (basal, IC, ISF, DIA).</string>
|
||||
<string name="prerequisites_computer">En datamaskin for å lage en APK.</string>
|
||||
<string name="prerequisites_phone">En telefon som støttes.</string>
|
||||
<string name="prerequisites_car">En bil.</string>
|
||||
<string name="prerequisites_nightscout">Nightscout for å klare læringsmålene.</string>
|
||||
<string name="prerequisites_tidepoolaccount">En Tidepool konto.</string>
|
||||
<string name="prerequisites_googleaccount">En Google konto.</string>
|
||||
<string name="prerequisites_githubaccount">En Github konto.</string>
|
||||
<string name="prerequisites_beanandroiddeveloper">Erfaring med Android programmering.</string>
|
||||
<string name="prerequisites_own670g">En MiniMed 670G pumpe.</string>
|
||||
<string name="prerequisites_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html</string>
|
||||
<string name="prerequisites_smartwatch">En smartklokke.</string>
|
||||
<string name="prerequisites_supportedcgm">En CGM som støttes.</string>
|
||||
<string name="update_label">Tema: Oppdatering av AndroidAPS</string>
|
||||
<string name="whatistrue">Hva er sant?</string>
|
||||
<string name="update_git">Du må ha Git installert.</string>
|
||||
<string name="update_asap">Oppdater så snart den nye versjonen er publisert og du har nok tid til å gjøre det.</string>
|
||||
<string name="update_keys">Du bør bruke de samme signeringsnøklene.</string>
|
||||
<string name="update_neverupdate">Aldri oppdater hvis systemet fungerer bra.</string>
|
||||
<string name="update_askfriend">Spør en venn om den nye APK filen.</string>
|
||||
<string name="update_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch</string>
|
||||
<string name="troubleshooting_label">Tema: Feilsøking</string>
|
||||
<string name="troubleshooting_wheretoask">Hvor skal jeg lete etter hjelp?</string>
|
||||
<string name="troubleshooting_fb">Bli medlem av AndroidAPS Facebook gruppen.</string>
|
||||
<string name="troubleshooting_wiki">Les AndroidAPS dokumentasjonen.</string>
|
||||
<string name="troubleshooting_gitter">Besøk AndroidAPS Gitter rommet.</string>
|
||||
<string name="troubleshooting_googlesupport">Besøk AndroidAPS Google support</string>
|
||||
<string name="troubleshooting_yourendo">Snakk med din diabeteslege.</string>
|
||||
<string name="troubleshooting_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting</string>
|
||||
<string name="troubleshooting_hint2">https://www.facebook.com/groups/AndroidAPSUsers/</string>
|
||||
<string name="troubleshooting_hint3">https://gitter.im/MilosKozak/AndroidAPS</string>
|
||||
<string name="insulin_label">Tema: Insulin plugin</string>
|
||||
<string name="insulin_ultrarapid">Hvilke typer insulin kan brukes sammen med insulinprofilen \"Ultra-Rapid-Oref\"?</string>
|
||||
<string name="insulin_fiasp">Fiasp®</string>
|
||||
<string name="insulin_novorapid">Novorapid®</string>
|
||||
<string name="insulin_humalog">Humalog®</string>
|
||||
<string name="insulin_actrapid">Actrapid®</string>
|
||||
<string name="insulin_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin</string>
|
||||
<string name="sensitivity_label">Tema: Sensitivitet plugin</string>
|
||||
<string name="sensitivity_which">Hvilken sensitivitetsalgoritme har et konfigurerbart tidsintervall?</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivityuam_which">Hvilken sensitivitets plugin må anvendes for å bruke UAM funksjonen?</string>
|
||||
<string name="wrongcarbs_label">Tema: Feilaktig registrering av karbohydrater</string>
|
||||
<string name="wrongcarbs_whattodo">Hva skal du gjøre hvis du har gjort en feilaktig registrering av karbohydrater?</string>
|
||||
<string name="wrongcarbs_treatmentstab">I Behandlinger, slett den feilaktige registreringen og legg inn karbohydrater på nytt.</string>
|
||||
<string name="wrongcarbs_addfakeinsulin">Legg inn falsk insulin ved å bruke prime/fyll funksjonen</string>
|
||||
<string name="extendedcarbs_label">Tema: Mat med fett og protein</string>
|
||||
<string name="extendedcarbs_handling">Hva skal du gjøre om maten inneholder store mengder fett og/eller proteiner?</string>
|
||||
<string name="extendedcarbs_useextendedcarbs">Regn om fett og proteiner til karbohydrater og bruk eKarbo funksjonen.</string>
|
||||
<string name="extendedcarbs_add">Regn om fett og proteiner til karbohydrater og legg det til bolus beregningen.</string>
|
||||
<string name="extendedcarbs_useextendedbolus">Bruk forlenget bolus til å dekke inntaket av fett og proteiner.</string>
|
||||
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html</string>
|
||||
<string name="nsclient_label">Tema: Fjernovervåking</string>
|
||||
<string name="nsclient_howcanyou">Hvordan kan du overvåke AAPS for ditt barn på avstand?</string>
|
||||
<string name="nsclient_nightscout">Ved å bruke Nightscout.</string>
|
||||
<string name="nsclient_dexcomfollow">Dexcom Follow app hvis du bruker Dexcom appen (bare for BS).</string>
|
||||
<string name="nsclient_dexcomfollowxdrip">Dexcom Follow hvis du bruker xDrip appen.</string>
|
||||
<string name="nsclient_xdripfollower">xDrip app kjører i følger-modus.</string>
|
||||
<string name="nsclient_looponiphone">Loop app på iPhone.</string>
|
||||
<string name="nsclient_spikeiphone">Spike app på iPhone.</string>
|
||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
|
||||
<string name="isf_label_exam">Tema: Insulin sensitivitetsfaktor (ISF)</string>
|
||||
<string name="isf_increasingvalue">Høyere ISF verdier fører til mindre insulintilførsel når AAPS korrigerer for høyt BS.</string>
|
||||
<string name="isf_decreasingvalue">Lavere ISF verdier fører til mindre insulintilførsel når AAPS korrigerer for høyt BS.</string>
|
||||
<string name="isf_noeffect">Endring av ISF verdier har ingen effekt på mengden insulin som tilføres når AAPS korrigerer høyt BS.</string>
|
||||
<string name="isf_preferences">Du må angi ISF i Innstillinger.</string>
|
||||
<string name="isf_profile">Å endre ISF verdien i din profil er tilstrekkelig for å ta i bruk endringen.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
|
||||
<string name="ic_label_exam">Tema: Insulin-karbo (IK) forholdet</string>
|
||||
<string name="ic_increasingvalue">Høyere IC forhold fører til at mindre insulin leveres for en gitt mengde karbohydrater.</string>
|
||||
<string name="ic_decreasingvalue">Lavere IC forhold fører til at mindre insulin leveres for en gitt mengde karbohydrater.</string>
|
||||
<string name="ic_noeffect">Hvis du har 0 COB, vil endring av IC forholdet føre til endring av insulinmengden som trengs for å korrigere ditt BS nivå.</string>
|
||||
<string name="ic_different">IC vil være forskjellig hvis du regner en skive brød som 10g eller 12g.</string>
|
||||
<string name="ic_meaning">IC betyr: Hvor mange brødenheter som dekkes av 1E insulin.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
<string name="profileswitch_label">Tema: Profilbytte</string>
|
||||
<string name="profileswitch_pctwillchange"> Når man angir 90% i profilbytte…</string>
|
||||
<string name="profileswitch_basalhigher">Basal vil være 10% høyere.</string>
|
||||
<string name="profileswitch_basallower">Basal vil være 10% lavere.</string>
|
||||
<string name="profileswitch_ichigher">IC verdien vil være 10% høyere.</string>
|
||||
<string name="profileswitch_iclower">IC verdien vil være 10% lavere.</string>
|
||||
<string name="profileswitch_isfhigher">ISF verdien vil være 10% høyere.</string>
|
||||
<string name="profileswitch_isflower">ISF verdien vil være 10% lavere.</string>
|
||||
<string name="profileswitch_overall">Du vil få omtrent 10% mindre insulin totalt.</string>
|
||||
<string name="profileswitch_targethigher">Mål BS vil bli 10% høyere.</string>
|
||||
<string name="profileswitch_targetlower">Mål BS vil bli 10% lavere.</string>
|
||||
<string name="profileswitch_targetbottom">Bare laveste BS grenseverdi vil bli 10% lavere.</string>
|
||||
<string name="profileswitch_hint1" formatted="false">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch</string>
|
||||
<string name="profileswitchtime_iwant">Hvis du våkner 1t tidligere enn normalt, hvordan skal du varsle AAPS om endringen i døgnrytmen din?</string>
|
||||
<string name="profileswitchtime_1">Gjøre et profilbytte med en tidsforskyvning på 1t</string>
|
||||
<string name="profileswitchtime__1">Gjøre et profil bytte med en tidsforskyvning på -1t</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
|
||||
<string name="profileswitchtime_60">Gjør et profilbytte med en tidsforskyvning på 60</string>
|
||||
<string name="profileswitchtime__60">Gjør et profilbytte med en tidsforskyvning på -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
|
||||
<string name="basalhelp_label">Tema: Hjelp med basaldoser</string>
|
||||
<string name="basalhelp_where">Hvor finner du hjelp for basaldoser m. m.</string>
|
||||
<string name="basalhelp_diabetesteam">Ditt diabetesteam</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Annen medisinering</string>
|
||||
<string name="other_medication_text">AAPS senker basalen for å øke glukosemengden i blodet. Medisiner av typen SGLT2-hemmere (glifloziner) kan motvirke den forventede økningen i BS og som kan resultere i livsfarlig insulinmangel eller ketoacidose (DKA). \nVanlige merker i markedet: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\n
|
||||
Jeg lover herved å ALDRI ta slike medisiner samtidig som jeg bruker AAPS, eller jeg kommer til å ta en pause i looping så lenge jeg bruker slik medisin.</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="alert_r1_code">Påminnelses R1</string>
|
||||
<string name="alert_r2_code">Påminnelse R2</string>
|
||||
<string name="alert_r3_code">Påminnelse R3</string>
|
||||
<string name="alert_r4_code">Påminnelse R4</string>
|
||||
<string name="alert_r7_code">Påminnelse R7</string>
|
||||
<string name="alert_w31_code">Advarsel W31</string>
|
||||
<string name="alert_w32_code">Advarsel W32</string>
|
||||
<string name="alert_w33_code">Advarsel W33</string>
|
||||
<string name="alert_w34_code">Advarsel W34</string>
|
||||
<string name="alert_w36_code">Advarsel W36</string>
|
||||
<string name="alert_w38_code">8Advarsel W38</string>
|
||||
<string name="alert_w39_code">Advarsel W39</string>
|
||||
<string name="alert_m20_code">Vedlikehold M20</string>
|
||||
<string name="alert_m21_code">Vedlikehold M21</string>
|
||||
<string name="alert_m22_code">Vedlikehold M22</string>
|
||||
<string name="alert_m23_code">Vedlikehold M23</string>
|
||||
<string name="alert_m24_code">Vedlikehold M24</string>
|
||||
<string name="alert_m25_code">Vedlikehold M25</string>
|
||||
<string name="alert_m26_code">Vedlikehold M26</string>
|
||||
<string name="alert_m27_code">Vedlikehold M27</string>
|
||||
<string name="alert_m28_code">Vedlikehold M28</string>
|
||||
<string name="alert_m29_code">Vedlikehold M29</string>
|
||||
<string name="alert_m30_code">Vedlikehold M30</string>
|
||||
<string name="alert_e6_code">Feil E6</string>
|
||||
<string name="alert_e10_code">Feil E10</string>
|
||||
<string name="alert_e13_code">Feil E13</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="alert_r7_description"><![CDATA[Mengde: <b>%1$d%%</b>\nVarighet: <b>%2$s t</b>]]></string>
|
||||
<string name="alert_w31_description"><![CDATA[Ampullens innhold: <b>%1$s E</b>]]></string>
|
||||
<string name="alert_w32_description">Bytt batteri.</string>
|
||||
<string name="alert_w33_description">Angi tidspunkt/dato.</string>
|
||||
<string name="alert_w34_description">Kontakt Accu-Chek kundestøtte.</string>
|
||||
<string name="alert_w36_description"><![CDATA[Mengde: <b>%1$d%%</b><br/>\nVarighet: <b>%2$s t</b>]]></string>
|
||||
<string name="alert_w38_description"><![CDATA[Angitt: <b>%1$s E</b><br/>Levert: <b>%2$s E</b>]]></string>
|
||||
<string name="alert_m20_description">Sett inn ampulle.</string>
|
||||
<string name="alert_m21_description">Bytt ampulle.</string>
|
||||
<string name="alert_m22_description">Bytt batteri.</string>
|
||||
<string name="alert_m23_description">Kontroller pumpestatus.</string>
|
||||
<string name="alert_m24_description">Bytt infusjonssett.</string>
|
||||
<string name="alert_m25_description">Kontakt Accu-Chek kundestøtte.</string>
|
||||
<string name="alert_m26_description">Bytt ampulle.</string>
|
||||
<string name="alert_m27_description">Restart nedlasting av data.</string>
|
||||
<string name="alert_m28_description">Kontroller pumpestatus.</string>
|
||||
<string name="alert_m29_description">Angi batteritype.</string>
|
||||
<string name="alert_m30_description">Angi ampulle type.</string>
|
||||
<string name="alert_e6_description">Bytt batteri og ampulle.</string>
|
||||
<string name="alert_e10_description">Bytt ampulle.</string>
|
||||
<string name="alert_e13_description">Bytt språk.</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="alert_r1_title">Tilfør bolus</string>
|
||||
<string name="alert_r2_title">Manglende bolus</string>
|
||||
<string name="alert_r3_title">Alarmklokke</string>
|
||||
<string name="alert_r4_title">Bytt infusjonssett</string>
|
||||
<string name="alert_r7_title">Midlertidig basaldose fullført</string>
|
||||
<string name="alert_w31_title">Lavt ampulleinnhold</string>
|
||||
<string name="alert_w32_title">Batteri lavt</string>
|
||||
<string name="alert_w33_title">Ugyldig klokkeslett/dato</string>
|
||||
<string name="alert_w34_title">Slutt på garanti</string>
|
||||
<string name="alert_w36_title">Midlertidig basaldose avbrutt</string>
|
||||
<string name="alert_w38_title">Bolus avbrutt</string>
|
||||
<string name="alert_w39_title">Lånetidsadvarsel</string>
|
||||
<string name="alert_m20_title">Ampulle ikke satt inn</string>
|
||||
<string name="alert_m21_title">Ampulle tom</string>
|
||||
<string name="alert_m22_title">Batteri tomt</string>
|
||||
<string name="alert_m23_title">Automatisk av - pumpe stoppet</string>
|
||||
<string name="alert_m24_title">Tilstopping</string>
|
||||
<string name="alert_m25_title">Lånetid over - drift stoppes</string>
|
||||
<string name="alert_m26_title">Bytte av ampulle ikke fullført</string>
|
||||
<string name="alert_m27_title">Nedlasting av data mislyktes</string>
|
||||
<string name="alert_m28_title">Tidsavbrudd for pausemodus</string>
|
||||
<string name="alert_m29_title">Batteritype ikke angitt</string>
|
||||
<string name="alert_m30_title">Ampulletype ikke angitt</string>
|
||||
<string name="alert_e6_title">Mekanisk feil</string>
|
||||
<string name="alert_e10_title">Tilbakespolingsfeil</string>
|
||||
<string name="alert_e13_title">Språkfeil</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,2 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="connection_failed">Tilkobling mislyktes</string>
|
||||
<string name="connection_lost">Mistet forbindelsen</string>
|
||||
<string name="pairing_rejected">Sammenkobling avvist</string>
|
||||
<string name="socket_creation_failed">Mislykket opprettelse av socket tilkobling</string>
|
||||
<string name="timeout">Tidsavbrudd</string>
|
||||
<string name="maximum_number_of_bolus_type_already_running">Maksimalt antall bolusdoser som allerede går</string>
|
||||
<string name="no_active_tbr_to_cancel">Ingen aktiv midlertidig basaldose å kansellere</string>
|
||||
<string name="no_active_tbr_to_change">Ingen aktiv midlertidig basaldose å endre</string>
|
||||
<string name="no_such_bolus_to_cancel">Ingen slik bolus til å avbryte</string>
|
||||
<string name="pump_already_in_that_state_exception">Pumpe allerede i den tilstanden</string>
|
||||
<string name="run_mode_not_allowed">Kjør modus ikke tillatt</string>
|
||||
</resources>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue