Merge branch 'dev' into medtronic_andy
This commit is contained in:
commit
26f837397d
72 changed files with 1205 additions and 641 deletions
|
@ -10,6 +10,8 @@ buildscript {
|
|||
}
|
||||
}
|
||||
apply plugin: "com.android.application"
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: "io.fabric"
|
||||
apply plugin: "jacoco-android"
|
||||
|
@ -27,6 +29,7 @@ ext {
|
|||
repositories {
|
||||
maven { url 'https://maven.fabric.io/public' }
|
||||
jcenter { url "https://jcenter.bintray.com/" }
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
def generateGitBuild = { ->
|
||||
|
@ -45,12 +48,49 @@ def generateGitBuild = { ->
|
|||
return stringBuilder.toString()
|
||||
}
|
||||
|
||||
def generateGitRemote = { ->
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
try {
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine 'git', 'remote', 'get-url', 'origin'
|
||||
standardOutput = stdout
|
||||
}
|
||||
String commitObject = stdout.toString().trim()
|
||||
stringBuilder.append(commitObject)
|
||||
} catch (ignored) {
|
||||
stringBuilder.append('NoGitSystemAvailable')
|
||||
}
|
||||
return stringBuilder.toString()
|
||||
}
|
||||
|
||||
def generateDate = { ->
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append((new Date()).format('yyyy.MM.dd-HH:mm'))
|
||||
return stringBuilder.toString()
|
||||
}
|
||||
|
||||
def isMaster = { ->
|
||||
return !version.contains('-')
|
||||
}
|
||||
|
||||
def allCommited = { ->
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
try {
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine 'git', 'status', '-s'
|
||||
standardOutput = stdout
|
||||
}
|
||||
String commitObject = stdout.toString().trim()
|
||||
stringBuilder.append(commitObject)
|
||||
} catch (ignored) {
|
||||
return false; // NoGitSystemAvailable
|
||||
}
|
||||
return stringBuilder.toString().isEmpty()
|
||||
|
||||
}
|
||||
|
||||
tasks.matching { it instanceof Test }.all {
|
||||
testLogging.events = ["failed", "skipped", "started"]
|
||||
testLogging.exceptionFormat = "full"
|
||||
|
@ -64,14 +104,14 @@ android {
|
|||
targetSdkVersion 25
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
// dev_version: 2.2.3-dev
|
||||
version "medtronic-0.9.3-SNAPSHOT"
|
||||
// dev_version: 2.3.1-dev
|
||||
version "medtronic-0.9.4-SNAPSHOT"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "HEAD", '"' + generateGitBuild() + '"'
|
||||
buildConfigField "String", "DEV_VERSION", '"2.2.3-dev"'
|
||||
buildConfigField "String", "DEV_DATE", '"7.4.2019"'
|
||||
buildConfigField "String", "DEV_CHECKIN", '"a076b00363067fd43c83cbbd91cc964fa6978ddd"'
|
||||
buildConfigField "String", "DEV_VERSION", '"2.3.1-dev"'
|
||||
buildConfigField "String", "DEV_DATE", '"29.4.2019"'
|
||||
buildConfigField "String", "DEV_CHECKIN", '"ea60b6ceef30ccf32566bf7c6caa4f1f33b42f41"'
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
// if you change minSdkVersion to less than 11, you need to change executeTask for wear
|
||||
|
||||
|
@ -79,6 +119,9 @@ android {
|
|||
moduleName "BleCommandUtil"
|
||||
}
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
lintOptions {
|
||||
// TODO remove once wear dependency com.google.android.gms:play-services-wearable:7.3.0
|
||||
// has been upgraded (requiring significant code changes), which currently fails release
|
||||
|
@ -232,12 +275,11 @@ dependencies {
|
|||
testImplementation "com.google.truth:truth:0.39"
|
||||
testImplementation 'org.robolectric:robolectric:3.8'
|
||||
testImplementation "org.skyscreamer:jsonassert:1.5.0"
|
||||
testImplementation "org.hamcrest:hamcrest-all:1.3"
|
||||
testImplementation "uk.org.lidalia:slf4j-test:1.2.0"
|
||||
|
||||
androidTestImplementation "org.mockito:mockito-core:2.8.47"
|
||||
androidTestImplementation "com.google.dexmaker:dexmaker:${dexmakerVersion}"
|
||||
androidTestImplementation "com.google.dexmaker:dexmaker-mockito:${dexmakerVersion}"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
}
|
||||
|
||||
task unzip(type: Copy) {
|
||||
|
@ -263,3 +305,12 @@ task full_clean(type: Delete) {
|
|||
|
||||
clean.dependsOn full_clean
|
||||
preBuild.dependsOn copyLibs
|
||||
|
||||
printf('--------------\n')
|
||||
printf('isMaster: %s\n', isMaster().toString())
|
||||
printf('allCommited: %s\n', allCommited().toString())
|
||||
printf('--------------\n')
|
||||
if (isMaster() && !allCommited()) {
|
||||
throw new GradleException('There are uncommitted changes or git system is not available. Clone sources again as described in wiki and do not allow gradle update')
|
||||
}
|
||||
|
||||
|
|
|
@ -73,15 +73,12 @@
|
|||
<activity android:name=".plugins.pump.danaRS.activities.PairingHelperActivity" />
|
||||
<activity android:name=".activities.HistoryBrowseActivity" />
|
||||
|
||||
<!-- Receive new BG readings from other local apps -->
|
||||
<receiver
|
||||
android:name=".receivers.DataReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
|
||||
<!-- Receive new SMS messages -->
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||
<!-- Receiver from xDrip -->
|
||||
<action android:name="com.eveningoutpost.dexdrip.BgEstimate"/>
|
||||
<!-- Receiver from 640g uploader -->
|
||||
|
@ -98,6 +95,18 @@
|
|||
<action android:name="com.fanqies.tomatofn.BgEstimate"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Receive new SMS messages -->
|
||||
<receiver
|
||||
android:name=".receivers.SmsReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
<intent-filter>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Receiver keepalive, scheduled every 30 min -->
|
||||
<receiver android:name=".receivers.KeepAliveReceiver" />
|
||||
|
||||
|
|
|
@ -48,9 +48,12 @@ import info.nightscout.androidaps.events.EventFeatureRunning;
|
|||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.events.EventRefreshGui;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
|
||||
import info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerUtilsKt;
|
||||
import info.nightscout.androidaps.setupwizard.SetupWizardActivity;
|
||||
import info.nightscout.androidaps.tabs.TabPageAdapter;
|
||||
import info.nightscout.androidaps.utils.AndroidPermission;
|
||||
|
@ -59,7 +62,6 @@ import info.nightscout.androidaps.utils.LocaleHelper;
|
|||
import info.nightscout.androidaps.utils.OKDialog;
|
||||
import info.nightscout.androidaps.utils.PasswordProtection;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import info.nightscout.androidaps.utils.VersionChecker;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
||||
|
@ -115,7 +117,11 @@ public class MainActivity extends AppCompatActivity {
|
|||
public void onPageScrollStateChanged(int state) {
|
||||
}
|
||||
});
|
||||
VersionChecker.check();
|
||||
|
||||
//Check here if loop plugin is disabled. Else check via constraints
|
||||
if (!LoopPlugin.getPlugin().isEnabled(PluginType.LOOP))
|
||||
VersionCheckerUtilsKt.triggerCheckVersion();
|
||||
|
||||
FabricPrivacy.setUserStats();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,34 +1,28 @@
|
|||
package info.nightscout.androidaps;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.danlew.android.joda.JodaTimeAndroid;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import android.app.Application;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.Resources;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.PluralsRes;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.crashlytics.android.answers.Answers;
|
||||
import com.google.firebase.analytics.FirebaseAnalytics;
|
||||
import com.j256.ormlite.android.apptools.OpenHelperManager;
|
||||
import com.squareup.otto.Bus;
|
||||
import com.squareup.otto.LoggingBus;
|
||||
import com.squareup.otto.ThreadEnforcer;
|
||||
|
||||
import net.danlew.android.joda.JodaTimeAndroid;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import info.nightscout.androidaps.data.ConstraintChecker;
|
||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
|
@ -56,6 +50,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.receivers.DBAccessRec
|
|||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
||||
|
@ -66,16 +61,12 @@ import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin;
|
|||
import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.profile.simple.SimpleProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
|
||||
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.mdi.MDIPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref0Plugin;
|
||||
|
@ -96,11 +87,12 @@ import info.nightscout.androidaps.receivers.KeepAliveReceiver;
|
|||
import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
||||
import info.nightscout.androidaps.services.Intents;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
public class MainApp extends Application {
|
||||
import static info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
||||
|
||||
|
||||
public class MainApp extends Application {
|
||||
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
||||
private static KeepAliveReceiver keepAliveReceiver;
|
||||
|
||||
|
@ -125,21 +117,18 @@ public class MainApp extends Application {
|
|||
public static boolean devBranch;
|
||||
public static boolean engineeringMode;
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
log.debug("onCreate");
|
||||
sInstance = this;
|
||||
sResources = getResources();
|
||||
sConstraintsChecker = new ConstraintChecker(this);
|
||||
sConstraintsChecker = new ConstraintChecker();
|
||||
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
||||
|
||||
try {
|
||||
if (FabricPrivacy.fabricEnabled()) {
|
||||
Fabric.with(this, new Crashlytics());
|
||||
Fabric.with(this, new Answers());
|
||||
Crashlytics.setString("BUILDVERSION", BuildConfig.BUILDVERSION);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Error with Fabric init! " + e);
|
||||
|
@ -151,6 +140,7 @@ public class MainApp extends Application {
|
|||
|
||||
log.info("Version: " + BuildConfig.VERSION_NAME);
|
||||
log.info("BuildVersion: " + BuildConfig.BUILDVERSION);
|
||||
log.info("Remote: " + BuildConfig.REMOTE);
|
||||
|
||||
String extFilesDir = LoggerUtils.getLogDirectory();
|
||||
File engineeringModeSemaphore = new File(extFilesDir, "engineering_mode");
|
||||
|
@ -162,6 +152,8 @@ public class MainApp extends Application {
|
|||
|
||||
registerLocalBroadcastReceiver();
|
||||
|
||||
//trigger here to see the new version on app start after an update
|
||||
triggerCheckVersion();
|
||||
setBTReceiver();
|
||||
|
||||
if (pluginsList == null) {
|
||||
|
@ -169,8 +161,7 @@ public class MainApp extends Application {
|
|||
// Register all tabs in app here
|
||||
pluginsList.add(OverviewPlugin.getPlugin());
|
||||
pluginsList.add(IobCobCalculatorPlugin.getPlugin());
|
||||
if (Config.ACTION)
|
||||
pluginsList.add(ActionsFragment.getPlugin());
|
||||
if (Config.ACTION) pluginsList.add(ActionsFragment.getPlugin());
|
||||
pluginsList.add(InsulinOrefRapidActingPlugin.getPlugin());
|
||||
pluginsList.add(InsulinOrefUltraRapidActingPlugin.getPlugin());
|
||||
pluginsList.add(InsulinOrefFreePeakPlugin.getPlugin());
|
||||
|
@ -178,45 +169,30 @@ public class MainApp extends Application {
|
|||
pluginsList.add(SensitivityAAPSPlugin.getPlugin());
|
||||
pluginsList.add(SensitivityWeightedAveragePlugin.getPlugin());
|
||||
pluginsList.add(SensitivityOref1Plugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(DanaRPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(DanaRKoreanPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(DanaRv2Plugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(DanaRSPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(LocalInsightPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRKoreanPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRv2Plugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRSPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(LocalInsightPlugin.getPlugin());
|
||||
pluginsList.add(CareportalPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS)
|
||||
pluginsList.add(ComboPlugin.getPlugin());
|
||||
if (Config.MDI)
|
||||
pluginsList.add(MDIPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(ComboPlugin.getPlugin());
|
||||
if (Config.MDI) pluginsList.add(MDIPlugin.getPlugin());
|
||||
pluginsList.add(VirtualPumpPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS && engineeringMode) {
|
||||
pluginsList.add(MedtronicPumpPlugin.getPlugin());
|
||||
}
|
||||
pluginsList.add(VirtualPumpPlugin.getPlugin());
|
||||
if (Config.APS)
|
||||
pluginsList.add(LoopPlugin.getPlugin());
|
||||
if (Config.APS)
|
||||
pluginsList.add(OpenAPSMAPlugin.getPlugin());
|
||||
if (Config.APS)
|
||||
pluginsList.add(OpenAPSAMAPlugin.getPlugin());
|
||||
if (Config.APS)
|
||||
pluginsList.add(OpenAPSSMBPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(LoopPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSMAPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSAMAPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSSMBPlugin.getPlugin());
|
||||
pluginsList.add(NSProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES)
|
||||
pluginsList.add(SimpleProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES)
|
||||
pluginsList.add(LocalProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(SimpleProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(LocalProfilePlugin.getPlugin());
|
||||
pluginsList.add(TreatmentsPlugin.getPlugin());
|
||||
if (Config.SAFETY)
|
||||
pluginsList.add(SafetyPlugin.getPlugin());
|
||||
if (Config.SAFETY)
|
||||
pluginsList.add(StorageConstraintPlugin.getPlugin());
|
||||
if (Config.APS)
|
||||
pluginsList.add(ObjectivesPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(SafetyPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(VersionCheckerPlugin.INSTANCE);
|
||||
if (Config.SAFETY) pluginsList.add(StorageConstraintPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(ObjectivesPlugin.getPlugin());
|
||||
pluginsList.add(SourceXdripPlugin.getPlugin());
|
||||
pluginsList.add(SourceNSClientPlugin.getPlugin());
|
||||
pluginsList.add(SourceMM640gPlugin.getPlugin());
|
||||
|
@ -226,8 +202,7 @@ public class MainApp extends Application {
|
|||
pluginsList.add(SourcePoctechPlugin.getPlugin());
|
||||
pluginsList.add(SourceTomatoPlugin.getPlugin());
|
||||
pluginsList.add(SourceEversensePlugin.getPlugin());
|
||||
if (Config.SMSCOMMUNICATORENABLED)
|
||||
pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
||||
if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
||||
pluginsList.add(FoodPlugin.getPlugin());
|
||||
|
||||
pluginsList.add(WearPlugin.initPlugin(this));
|
||||
|
@ -240,6 +215,7 @@ public class MainApp extends Application {
|
|||
|
||||
pluginsList.add(DstHelperPlugin.getPlugin());
|
||||
|
||||
|
||||
ConfigBuilderPlugin.getPlugin().initialize();
|
||||
}
|
||||
|
||||
|
@ -255,7 +231,6 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void registerLocalBroadcastReceiver() {
|
||||
lbm = LocalBroadcastManager.getInstance(this);
|
||||
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_TREATMENT));
|
||||
|
@ -330,13 +305,11 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void stopKeepAliveService() {
|
||||
if (keepAliveReceiver != null)
|
||||
KeepAliveReceiver.cancelAlarm(this);
|
||||
}
|
||||
|
||||
|
||||
public static void subscribe(Object subscriber) {
|
||||
try {
|
||||
bus().register(subscriber);
|
||||
|
@ -345,7 +318,6 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static void unsubscribe(Object subscriber) {
|
||||
try {
|
||||
bus().unregister(subscriber);
|
||||
|
@ -354,42 +326,34 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static Bus bus() {
|
||||
return sBus;
|
||||
}
|
||||
|
||||
|
||||
public static String gs(int id) {
|
||||
return sResources.getString(id);
|
||||
}
|
||||
|
||||
|
||||
public static String gs(int id, Object... args) {
|
||||
return sResources.getString(id, args);
|
||||
}
|
||||
|
||||
|
||||
public static String gq(@PluralsRes int id, int quantity, Object... args) {
|
||||
return sResources.getQuantityString(id, quantity, args);
|
||||
}
|
||||
|
||||
|
||||
public static int gc(int id) {
|
||||
return sResources.getColor(id);
|
||||
}
|
||||
|
||||
|
||||
public static MainApp instance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
|
||||
public static DatabaseHelper getDbHelper() {
|
||||
return sDatabaseHelper;
|
||||
}
|
||||
|
||||
|
||||
public static void closeDbHelper() {
|
||||
if (sDatabaseHelper != null) {
|
||||
sDatabaseHelper.close();
|
||||
|
@ -397,22 +361,18 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static FirebaseAnalytics getFirebaseAnalytics() {
|
||||
return mFirebaseAnalytics;
|
||||
}
|
||||
|
||||
|
||||
public static ConstraintChecker getConstraintChecker() {
|
||||
return sConstraintsChecker;
|
||||
}
|
||||
|
||||
|
||||
public static ArrayList<PluginBase> getPluginsList() {
|
||||
return pluginsList;
|
||||
}
|
||||
|
||||
|
||||
public static ArrayList<PluginBase> getSpecificPluginsList(PluginType type) {
|
||||
ArrayList<PluginBase> newList = new ArrayList<>();
|
||||
|
||||
|
@ -427,7 +387,6 @@ public class MainApp extends Application {
|
|||
return newList;
|
||||
}
|
||||
|
||||
|
||||
public static ArrayList<PluginBase> getSpecificPluginsVisibleInList(PluginType type) {
|
||||
ArrayList<PluginBase> newList = new ArrayList<>();
|
||||
|
||||
|
@ -443,7 +402,6 @@ public class MainApp extends Application {
|
|||
return newList;
|
||||
}
|
||||
|
||||
|
||||
public static ArrayList<PluginBase> getSpecificPluginsListByInterface(Class interfaceClass) {
|
||||
ArrayList<PluginBase> newList = new ArrayList<>();
|
||||
|
||||
|
@ -458,7 +416,6 @@ public class MainApp extends Application {
|
|||
return newList;
|
||||
}
|
||||
|
||||
|
||||
public static ArrayList<PluginBase> getSpecificPluginsVisibleInListByInterface(Class interfaceClass, PluginType type) {
|
||||
ArrayList<PluginBase> newList = new ArrayList<>();
|
||||
|
||||
|
@ -474,7 +431,6 @@ public class MainApp extends Application {
|
|||
return newList;
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
public static <T extends PluginBase> T getSpecificPlugin(Class<T> pluginClass) {
|
||||
if (pluginsList != null) {
|
||||
|
@ -488,26 +444,16 @@ public class MainApp extends Application {
|
|||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static boolean isEngineeringMode() {
|
||||
if (!Config.APS)
|
||||
return true;
|
||||
return engineeringMode;
|
||||
}
|
||||
|
||||
|
||||
public static boolean isEngineeringModeOrRelease() {
|
||||
if (!Config.APS)
|
||||
return true;
|
||||
return engineeringMode || !devBranch;
|
||||
}
|
||||
|
||||
|
||||
public static boolean isDev() {
|
||||
return devBranch;
|
||||
}
|
||||
|
||||
|
||||
public static int getIcon() {
|
||||
if (Config.NSCLIENT)
|
||||
return R.mipmap.ic_yellowowl;
|
||||
|
@ -517,7 +463,6 @@ public class MainApp extends Application {
|
|||
return R.mipmap.ic_launcher;
|
||||
}
|
||||
|
||||
|
||||
public static int getNotificationIcon() {
|
||||
if (Config.NSCLIENT)
|
||||
return R.drawable.ic_notif_nsclient;
|
||||
|
@ -527,7 +472,6 @@ public class MainApp extends Application {
|
|||
return R.drawable.ic_notif_aaps;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
if (L.isEnabled(L.CORE))
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
package info.nightscout.androidaps.data;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.interfaces.Constraint;
|
||||
|
@ -15,13 +19,6 @@ import info.nightscout.androidaps.interfaces.PluginType;
|
|||
|
||||
public class ConstraintChecker implements ConstraintsInterface {
|
||||
|
||||
private MainApp mainApp;
|
||||
|
||||
public ConstraintChecker(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
}
|
||||
|
||||
|
||||
public Constraint<Boolean> isLoopInvokationAllowed() {
|
||||
return isLoopInvocationAllowed(new Constraint<>(true));
|
||||
}
|
||||
|
@ -79,9 +76,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isLoopInvocationAllowed(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isLoopInvocationAllowed(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -91,9 +88,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isClosedLoopAllowed(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isClosedLoopAllowed(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -103,9 +100,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isAutosensModeEnabled(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isAutosensModeEnabled(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -115,9 +112,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isAMAModeEnabled(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isAMAModeEnabled(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -127,9 +124,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isSMBModeEnabled(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isSMBModeEnabled(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -139,9 +136,9 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isUAMEnabled(Constraint<Boolean> value) {
|
||||
public Constraint<Boolean> isUAMEnabled(@NonNull Constraint<Boolean> value) {
|
||||
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -151,8 +148,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isAdvancedFilteringEnabled(Constraint<Boolean> value) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Boolean> isAdvancedFilteringEnabled(@NonNull Constraint<Boolean> value) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -162,8 +159,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Boolean> isSuperBolusEnabled(Constraint<Boolean> value) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Boolean> isSuperBolusEnabled(@NonNull Constraint<Boolean> value) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -173,8 +170,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Double> applyBasalConstraints(Constraint<Double> absoluteRate, Profile profile) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Double> applyBasalConstraints(@NonNull Constraint<Double> absoluteRate, Profile profile) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constraint = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -184,8 +181,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Integer> applyBasalPercentConstraints(Constraint<Integer> percentRate, Profile profile) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Integer> applyBasalPercentConstraints(@NonNull Constraint<Integer> percentRate, Profile profile) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -195,8 +192,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Double> applyBolusConstraints(Constraint<Double> insulin) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Double> applyBolusConstraints(@NonNull Constraint<Double> insulin) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -206,8 +203,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Double> applyExtendedBolusConstraints(Constraint<Double> insulin) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Double> applyExtendedBolusConstraints(@NonNull Constraint<Double> insulin) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -217,8 +214,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Integer> applyCarbsConstraints(Constraint<Integer> carbs) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Integer> applyCarbsConstraints(@NonNull Constraint<Integer> carbs) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
@ -228,8 +225,8 @@ public class ConstraintChecker implements ConstraintsInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Constraint<Double> applyMaxIOBConstraints(Constraint<Double> maxIob) {
|
||||
ArrayList<PluginBase> constraintsPlugins = mainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
public Constraint<Double> applyMaxIOBConstraints(@NonNull Constraint<Double> maxIob) {
|
||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||
for (PluginBase p : constraintsPlugins) {
|
||||
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||
if (!p.isEnabled(PluginType.CONSTRAINTS)) continue;
|
||||
|
|
|
@ -1,166 +0,0 @@
|
|||
package info.nightscout.androidaps.data;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
import info.nightscout.androidaps.utils.Round;
|
||||
|
||||
/**
|
||||
* Created by mike on 04.01.2017.
|
||||
*/
|
||||
|
||||
public class GlucoseStatus {
|
||||
private static Logger log = LoggerFactory.getLogger(GlucoseStatus.class);
|
||||
public double glucose = 0d;
|
||||
public double delta = 0d;
|
||||
public double avgdelta = 0d;
|
||||
public double short_avgdelta = 0d;
|
||||
public double long_avgdelta = 0d;
|
||||
public long date = 0L;
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MainApp.gs(R.string.glucose) + " " + DecimalFormatter.to0Decimal(glucose) + " mg/dl\n" +
|
||||
MainApp.gs(R.string.delta) + " " + DecimalFormatter.to0Decimal(delta) + " mg/dl\n" +
|
||||
MainApp.gs(R.string.short_avgdelta) + " " + DecimalFormatter.to2Decimal(short_avgdelta) + " mg/dl\n" +
|
||||
MainApp.gs(R.string.long_avgdelta) + " " + DecimalFormatter.to2Decimal(long_avgdelta) + " mg/dl";
|
||||
}
|
||||
|
||||
public GlucoseStatus() {
|
||||
}
|
||||
|
||||
public GlucoseStatus round() {
|
||||
this.glucose = Round.roundTo(this.glucose, 0.1);
|
||||
this.delta = Round.roundTo(this.delta, 0.01);
|
||||
this.avgdelta = Round.roundTo(this.avgdelta, 0.01);
|
||||
this.short_avgdelta = Round.roundTo(this.short_avgdelta, 0.01);
|
||||
this.long_avgdelta = Round.roundTo(this.long_avgdelta, 0.01);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
public static GlucoseStatus getGlucoseStatusData() {
|
||||
return getGlucoseStatusData(false);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static GlucoseStatus getGlucoseStatusData(boolean allowOldData) {
|
||||
// load 45min
|
||||
//long fromtime = DateUtil.now() - 60 * 1000L * 45;
|
||||
//List<BgReading> data = MainApp.getDbHelper().getBgreadingsDataFromTime(fromtime, false);
|
||||
|
||||
List<BgReading> data = IobCobCalculatorPlugin.getPlugin().getBgReadings();
|
||||
|
||||
if (data == null)
|
||||
return null;
|
||||
|
||||
int sizeRecords = data.size();
|
||||
if (sizeRecords == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (data.get(0).date < DateUtil.now() - 7 * 60 * 1000L && !allowOldData) {
|
||||
return null;
|
||||
}
|
||||
|
||||
BgReading now = data.get(0);
|
||||
long now_date = now.date;
|
||||
double change;
|
||||
|
||||
if (sizeRecords == 1) {
|
||||
GlucoseStatus status = new GlucoseStatus();
|
||||
status.glucose = now.value;
|
||||
status.short_avgdelta = 0d;
|
||||
status.delta = 0d;
|
||||
status.long_avgdelta = 0d;
|
||||
status.avgdelta = 0d; // for OpenAPS MA
|
||||
status.date = now_date;
|
||||
return status.round();
|
||||
}
|
||||
|
||||
ArrayList<Double> now_value_list = new ArrayList<Double>();
|
||||
ArrayList<Double> last_deltas = new ArrayList<Double>();
|
||||
ArrayList<Double> short_deltas = new ArrayList<Double>();
|
||||
ArrayList<Double> long_deltas = new ArrayList<Double>();
|
||||
|
||||
// Use the latest sgv value in the now calculations
|
||||
now_value_list.add(now.value);
|
||||
|
||||
for (int i = 1; i < sizeRecords; i++) {
|
||||
if (data.get(i).value > 38) {
|
||||
BgReading then = data.get(i);
|
||||
long then_date = then.date;
|
||||
double avgdelta = 0;
|
||||
long minutesago;
|
||||
|
||||
minutesago = Math.round((now_date - then_date) / (1000d * 60));
|
||||
// multiply by 5 to get the same units as delta, i.e. mg/dL/5m
|
||||
change = now.value - then.value;
|
||||
avgdelta = change / minutesago * 5;
|
||||
|
||||
// use the average of all data points in the last 2.5m for all further "now" calculations
|
||||
if (0 < minutesago && minutesago < 2.5) {
|
||||
// Keep and average all values within the last 2.5 minutes
|
||||
now_value_list.add(then.value);
|
||||
now.value = average(now_value_list);
|
||||
// short_deltas are calculated from everything ~5-15 minutes ago
|
||||
} else if (2.5 < minutesago && minutesago < 17.5) {
|
||||
//console.error(minutesago, avgdelta);
|
||||
short_deltas.add(avgdelta);
|
||||
// last_deltas are calculated from everything ~5 minutes ago
|
||||
if (2.5 < minutesago && minutesago < 7.5) {
|
||||
last_deltas.add(avgdelta);
|
||||
}
|
||||
// long_deltas are calculated from everything ~20-40 minutes ago
|
||||
} else if (17.5 < minutesago && minutesago < 42.5) {
|
||||
long_deltas.add(avgdelta);
|
||||
} else {
|
||||
// Do not process any more records after >= 42.5 minutes
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GlucoseStatus status = new GlucoseStatus();
|
||||
status.glucose = now.value;
|
||||
status.date = now_date;
|
||||
|
||||
status.short_avgdelta = average(short_deltas);
|
||||
|
||||
if (last_deltas.isEmpty()) {
|
||||
status.delta = status.short_avgdelta;
|
||||
} else {
|
||||
status.delta = average(last_deltas);
|
||||
}
|
||||
|
||||
status.long_avgdelta = average(long_deltas);
|
||||
status.avgdelta = status.short_avgdelta; // for OpenAPS MA
|
||||
|
||||
return status.round();
|
||||
}
|
||||
|
||||
public static double average(ArrayList<Double> array) {
|
||||
double sum = 0d;
|
||||
|
||||
if (array.size() == 0)
|
||||
return 0d;
|
||||
|
||||
for (Double value : array) {
|
||||
sum += value;
|
||||
}
|
||||
return sum / array.size();
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import info.nightscout.androidaps.db.BgReading;
|
|||
import info.nightscout.androidaps.db.TempTarget;
|
||||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
|
|
|
@ -38,7 +38,7 @@ import info.nightscout.androidaps.data.ProfileStore;
|
|||
import info.nightscout.androidaps.events.EventCareportalEventChange;
|
||||
import info.nightscout.androidaps.events.EventExtendedBolusChange;
|
||||
import info.nightscout.androidaps.events.EventNewBG;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview;
|
||||
import info.nightscout.androidaps.events.EventReloadProfileSwitchData;
|
||||
import info.nightscout.androidaps.events.EventReloadTempBasalData;
|
||||
|
@ -48,9 +48,9 @@ import info.nightscout.androidaps.events.EventTempTargetChange;
|
|||
import info.nightscout.androidaps.interfaces.ProfileInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRNSHistorySync;
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes;
|
||||
import info.nightscout.androidaps.plugins.pump.insight.database.InsightBolusID;
|
||||
|
@ -86,7 +86,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
public static final String DATABASE_INSIGHT_BOLUS_IDS = "InsightBolusIDs";
|
||||
public static final String DATABASE_INSIGHT_PUMP_IDS = "InsightPumpIDs";
|
||||
|
||||
private static final int DATABASE_VERSION = 10;
|
||||
private static final int DATABASE_VERSION = 11;
|
||||
|
||||
public static Long earliestDataChange = null;
|
||||
|
||||
|
@ -134,6 +134,10 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
TableUtils.createTableIfNotExists(connectionSource, InsightHistoryOffset.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightBolusID.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightPumpID.class);
|
||||
database.execSQL("INSERT INTO sqlite_sequence (name, seq) SELECT \"" + DATABASE_INSIGHT_BOLUS_IDS + "\", " + System.currentTimeMillis() + " " +
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = \"" + DATABASE_INSIGHT_BOLUS_IDS + "\")");
|
||||
database.execSQL("INSERT INTO sqlite_sequence (name, seq) SELECT \"" + DATABASE_INSIGHT_PUMP_IDS + "\", " + System.currentTimeMillis() + " " +
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = \"" + DATABASE_INSIGHT_PUMP_IDS + "\")");
|
||||
} catch (SQLException e) {
|
||||
log.error("Can't create database", e);
|
||||
throw new RuntimeException(e);
|
||||
|
@ -146,15 +150,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
this.oldVersion = oldVersion;
|
||||
this.newVersion = newVersion;
|
||||
|
||||
if (oldVersion == 7 && newVersion == 8) {
|
||||
log.debug("Upgrading database from v7 to v8");
|
||||
} else if (oldVersion == 8 && newVersion == 9) {
|
||||
log.debug("Upgrading database from v8 to v9");
|
||||
} else if (oldVersion == 9 && newVersion == 10) {
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightHistoryOffset.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightBolusID.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightPumpID.class);
|
||||
} else {
|
||||
if (oldVersion < 7) {
|
||||
log.info(DatabaseHelper.class.getName(), "onUpgrade");
|
||||
TableUtils.dropTable(connectionSource, TempTarget.class, true);
|
||||
TableUtils.dropTable(connectionSource, BgReading.class, true);
|
||||
|
@ -165,6 +161,17 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
TableUtils.dropTable(connectionSource, CareportalEvent.class, true);
|
||||
TableUtils.dropTable(connectionSource, ProfileSwitch.class, true);
|
||||
onCreate(database, connectionSource);
|
||||
} else if (oldVersion < 10) {
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightHistoryOffset.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightBolusID.class);
|
||||
TableUtils.createTableIfNotExists(connectionSource, InsightPumpID.class);
|
||||
database.execSQL("INSERT INTO sqlite_sequence (name, seq) SELECT \"" + DATABASE_INSIGHT_BOLUS_IDS + "\", " + System.currentTimeMillis() + " " +
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = \"" + DATABASE_INSIGHT_BOLUS_IDS + "\")");
|
||||
database.execSQL("INSERT INTO sqlite_sequence (name, seq) SELECT \"" + DATABASE_INSIGHT_PUMP_IDS + "\", " + System.currentTimeMillis() + " " +
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = \"" + DATABASE_INSIGHT_PUMP_IDS + "\")");
|
||||
} else if (oldVersion < 11) {
|
||||
database.execSQL("UPDATE sqlite_sequence SET seq = " + System.currentTimeMillis() + " WHERE name = \"" + DATABASE_INSIGHT_BOLUS_IDS + "\"");
|
||||
database.execSQL("UPDATE sqlite_sequence SET seq = " + System.currentTimeMillis() + " WHERE name = \"" + DATABASE_INSIGHT_PUMP_IDS + "\"");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
log.error("Can't drop databases", e);
|
||||
|
@ -430,7 +437,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
return null;
|
||||
|
||||
for (int i = 0; i < bgList.size(); i++)
|
||||
if (bgList.get(i).value > 39)
|
||||
if (bgList.get(i).value >= 39)
|
||||
return bgList.get(i);
|
||||
return null;
|
||||
}
|
||||
|
@ -1598,9 +1605,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
class PostRunnable implements Runnable {
|
||||
public void run() {
|
||||
if (L.isEnabled(L.DATABASE))
|
||||
log.debug("Firing EventProfileSwitchChange");
|
||||
log.debug("Firing EventProfileNeedsUpdate");
|
||||
MainApp.bus().post(new EventReloadProfileSwitchData());
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
scheduledProfileSwitchEventPost = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,5 +4,5 @@ package info.nightscout.androidaps.events;
|
|||
* Created by mike on 02.06.2017.
|
||||
*/
|
||||
|
||||
public class EventProfileSwitchChange extends Event {
|
||||
public class EventProfileNeedsUpdate extends Event {
|
||||
}
|
|
@ -78,6 +78,7 @@ public class L {
|
|||
public static final String CORE = "CORE";
|
||||
public static final String AUTOSENS = "AUTOSENS";
|
||||
public static final String EVENTS = "EVENTS";
|
||||
public static final String GLUCOSE = "GLUCOSE";
|
||||
public static final String BGSOURCE = "BGSOURCE";
|
||||
public static final String OVERVIEW = "OVERVIEW";
|
||||
public static final String NOTIFICATION = "NOTIFICATION";
|
||||
|
@ -102,6 +103,7 @@ public class L {
|
|||
logElements.add(new LogElement(APS, true));
|
||||
logElements.add(new LogElement(AUTOSENS, false));
|
||||
logElements.add(new LogElement(BGSOURCE, true));
|
||||
logElements.add(new LogElement(GLUCOSE, false));
|
||||
logElements.add(new LogElement(CONFIGBUILDER, false));
|
||||
logElements.add(new LogElement(CONSTRAINTS, true));
|
||||
logElements.add(new LogElement(CORE, true));
|
||||
|
|
|
@ -20,7 +20,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -17,7 +17,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -20,7 +20,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
|
|
|
@ -19,7 +19,7 @@ import info.nightscout.androidaps.data.ProfileStore;
|
|||
import info.nightscout.androidaps.db.ProfileSwitch;
|
||||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.events.EventNewBasalProfile;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.interfaces.ProfileInterface;
|
||||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
|
@ -48,7 +48,7 @@ public class ProfileFunctions {
|
|||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProfileSwitch(EventProfileSwitchChange ignored) {
|
||||
public void onProfileSwitch(EventProfileNeedsUpdate ignored) {
|
||||
if (L.isEnabled(L.PROFILE))
|
||||
log.debug("onProfileSwitch");
|
||||
ConfigBuilderPlugin.getPlugin().getCommandQueue().setProfile(getProfile(), new Callback() {
|
||||
|
@ -62,6 +62,7 @@ public class ProfileFunctions {
|
|||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
if (result.enacted)
|
||||
MainApp.bus().post(new EventNewBasalProfile());
|
||||
}
|
||||
});
|
||||
|
|
|
@ -39,7 +39,7 @@ import java.util.List;
|
|||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
|
|
|
@ -222,6 +222,7 @@ public class MaintenancePlugin extends PluginBase {
|
|||
builder.append("NSCLIENT" + System.lineSeparator());
|
||||
|
||||
builder.append("Build: " + BuildConfig.BUILDVERSION + System.lineSeparator());
|
||||
builder.append("Remote: " + BuildConfig.REMOTE + System.lineSeparator());
|
||||
builder.append("Flavor: " + BuildConfig.FLAVOR + BuildConfig.BUILD_TYPE + System.lineSeparator());
|
||||
builder.append(MainApp.gs(R.string.configbuilder_nightscoutversion_label) + " " + NSSettingsStatus.getInstance().nightscoutVersionName + System.lineSeparator());
|
||||
if (MainApp.engineeringMode)
|
||||
|
|
|
@ -56,7 +56,7 @@ import info.nightscout.androidaps.Constants;
|
|||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.QuickWizardEntry;
|
||||
|
@ -72,7 +72,7 @@ import info.nightscout.androidaps.events.EventCareportalEventChange;
|
|||
import info.nightscout.androidaps.events.EventExtendedBolusChange;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview;
|
||||
import info.nightscout.androidaps.events.EventTempBasalChange;
|
||||
|
@ -982,8 +982,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventProfileSwitchChange ev) {
|
||||
scheduleUpdateGUI("EventProfileSwitchChange");
|
||||
public void onStatusEvent(final EventProfileNeedsUpdate ev) {
|
||||
scheduleUpdateGUI("EventProfileNeedsUpdate");
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
|
@ -18,7 +18,7 @@ import java.text.DecimalFormat;
|
|||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.utils.NumberPicker;
|
||||
|
|
|
@ -74,6 +74,7 @@ public class Notification {
|
|||
public static final int DST_LOOP_DISABLED = 49;
|
||||
public static final int DST_IN_24H = 50;
|
||||
public static final int DISKFULL = 51;
|
||||
public static final int OLDVERSION = 52;
|
||||
|
||||
|
||||
public int id;
|
||||
|
|
|
@ -20,7 +20,7 @@ import info.nightscout.androidaps.Constants;
|
|||
import info.nightscout.androidaps.MainActivity;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||
|
|
|
@ -20,7 +20,7 @@ import info.nightscout.androidaps.Constants;
|
|||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
package info.nightscout.androidaps.plugins.general.versionChecker
|
||||
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.utils.SP
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* Usually we would have a class here.
|
||||
* Instead of having a class we can use an object directly inherited from PluginBase.
|
||||
* This is a lazy loading singleton only loaded when actually used.
|
||||
* */
|
||||
|
||||
object VersionCheckerPlugin : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.CONSTRAINTS)
|
||||
.neverVisible(true)
|
||||
.alwaysEnabled(true)
|
||||
.showInList(false)
|
||||
.pluginName(R.string.versionChecker)), ConstraintsInterface {
|
||||
|
||||
override fun isClosedLoopAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
|
||||
checkWarning()
|
||||
triggerCheckVersion()
|
||||
return if (isOldVersion(GRACE_PERIOD_VERY_OLD))
|
||||
value.set(false, MainApp.gs(R.string.very_old_version), this)
|
||||
else
|
||||
value
|
||||
}
|
||||
|
||||
private fun checkWarning() {
|
||||
val now = System.currentTimeMillis()
|
||||
|
||||
if (!SP.contains(R.string.key_last_versionchecker_plugin_warning)) {
|
||||
SP.putLong(R.string.key_last_versionchecker_plugin_warning, now)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if (isOldVersion(GRACE_PERIOD_WARNING) && shouldWarnAgain(now)) {
|
||||
// store last notification time
|
||||
SP.putLong(R.string.key_last_versionchecker_plugin_warning, now)
|
||||
|
||||
//notify
|
||||
val message = MainApp.gs(R.string.new_version_warning, Math.round((now - SP.getLong(R.string.key_last_time_this_version_detected, now)) / TimeUnit.DAYS.toMillis(1).toDouble()))
|
||||
val notification = Notification(Notification.OLDVERSION, message, Notification.NORMAL)
|
||||
MainApp.bus().post(EventNewNotification(notification))
|
||||
}
|
||||
}
|
||||
|
||||
private fun shouldWarnAgain(now: Long) =
|
||||
now > SP.getLong(R.string.key_last_versionchecker_plugin_warning, 0) + WARN_EVERY
|
||||
|
||||
override fun applyMaxIOBConstraints(maxIob: Constraint<Double>): Constraint<Double> =
|
||||
if (isOldVersion(GRACE_PERIOD_OLD))
|
||||
maxIob.set(0.toDouble(), MainApp.gs(R.string.old_version), this)
|
||||
else
|
||||
maxIob
|
||||
|
||||
private fun isOldVersion(gracePeriod: Long): Boolean {
|
||||
val now = System.currentTimeMillis()
|
||||
return now > SP.getLong(R.string.key_last_time_this_version_detected, 0) + gracePeriod
|
||||
}
|
||||
|
||||
val WARN_EVERY = TimeUnit.DAYS.toMillis(1)
|
||||
val GRACE_PERIOD_WARNING = TimeUnit.DAYS.toMillis(30)
|
||||
val GRACE_PERIOD_OLD = TimeUnit.DAYS.toMillis(60)
|
||||
val GRACE_PERIOD_VERY_OLD = TimeUnit.DAYS.toMillis(90)
|
||||
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
package info.nightscout.androidaps.plugins.general.versionChecker
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import info.nightscout.androidaps.BuildConfig
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.logging.L
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.utils.SP
|
||||
import org.apache.http.HttpResponse
|
||||
import org.apache.http.client.methods.HttpGet
|
||||
import org.apache.http.impl.client.DefaultHttpClient
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
// check network connection
|
||||
fun isConnected(): Boolean {
|
||||
val connMgr = MainApp.instance().applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
return connMgr.activeNetworkInfo?.isConnected ?: false
|
||||
}
|
||||
|
||||
// convert inputstream to String
|
||||
@Throws(IOException::class)
|
||||
inline fun InputStream.findVersion(): String? {
|
||||
val regex = "(.*)version(.*)\"(((\\d+)\\.)+(\\d+))\"(.*)".toRegex()
|
||||
return bufferedReader()
|
||||
.readLines()
|
||||
.filter { regex.matches(it) }
|
||||
.mapNotNull { regex.matchEntire(it)?.groupValues?.getOrNull(3) }
|
||||
.firstOrNull()
|
||||
}
|
||||
|
||||
private val log = LoggerFactory.getLogger(L.CORE)
|
||||
|
||||
|
||||
fun triggerCheckVersion() {
|
||||
|
||||
if(!SP.contains(R.string.key_last_time_this_version_detected)) {
|
||||
// On a new installation, set it as 30 days old in order to warn that there is a new version.
|
||||
SP.putLong(R.string.key_last_time_this_version_detected, System.currentTimeMillis() - TimeUnit.DAYS.toMillis(30))
|
||||
}
|
||||
|
||||
// If we are good, only check once every day.
|
||||
if(System.currentTimeMillis() > SP.getLong(R.string.key_last_time_this_version_detected, 0) + CHECK_EVERY){
|
||||
checkVersion()
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
private fun checkVersion() = if (isConnected()) {
|
||||
Thread {
|
||||
try {
|
||||
val request = HttpGet("https://raw.githubusercontent.com/MilosKozak/AndroidAPS/master/app/build.gradle")
|
||||
val response: HttpResponse = DefaultHttpClient().execute(request)
|
||||
val version: String? = response.entity.content?.findVersion()
|
||||
compareWithCurrentVersion(version, BuildConfig.VERSION_NAME)
|
||||
} catch (e: IOException) {
|
||||
log.debug("Github master version check error: $e")
|
||||
}
|
||||
}.start()
|
||||
} else
|
||||
log.debug("Github master version no checked. No connectivity")
|
||||
|
||||
fun compareWithCurrentVersion(newVersion: String?, currentVersion: String) {
|
||||
val comparison: Int? = newVersion?.versionStrip()?.compareTo(currentVersion.versionStrip())
|
||||
when {
|
||||
comparison == null -> onVersionNotDetectable()
|
||||
comparison == 0 -> onSameVersionDetected()
|
||||
comparison > 0 -> onNewVersionDetected(currentVersion = currentVersion, newVersion = newVersion)
|
||||
else -> onOlderVersionDetected()
|
||||
}
|
||||
}
|
||||
|
||||
private fun onOlderVersionDetected() {
|
||||
log.debug("Version newer than master. Are you developer?")
|
||||
SP.putLong(R.string.key_last_time_this_version_detected, System.currentTimeMillis())
|
||||
}
|
||||
|
||||
fun onSameVersionDetected() {
|
||||
SP.putLong(R.string.key_last_time_this_version_detected, System.currentTimeMillis())
|
||||
}
|
||||
|
||||
fun onVersionNotDetectable() {
|
||||
log.debug("fetch failed, ignore and smartcast to non-null")
|
||||
}
|
||||
|
||||
fun onNewVersionDetected(currentVersion: String, newVersion: String?) {
|
||||
val now = System.currentTimeMillis()
|
||||
if(now > SP.getLong(R.string.key_last_versionchecker_warning, 0) + WARN_EVERY) {
|
||||
log.debug("Version ${currentVersion} outdated. Found $newVersion")
|
||||
val notification = Notification(Notification.NEWVERSIONDETECTED, String.format(MainApp.gs(R.string.versionavailable), newVersion.toString()), Notification.LOW)
|
||||
MainApp.bus().post(EventNewNotification(notification))
|
||||
SP.putLong(R.string.key_last_versionchecker_warning, now)
|
||||
}
|
||||
}
|
||||
|
||||
fun String.versionStrip() = this.mapNotNull {
|
||||
when (it) {
|
||||
in '0'..'9' -> it
|
||||
'.' -> it
|
||||
else -> null
|
||||
}
|
||||
}.joinToString(separator = "")
|
||||
|
||||
|
||||
val CHECK_EVERY = TimeUnit.DAYS.toMillis(1)
|
||||
val WARN_EVERY = TimeUnit.DAYS.toMillis(1)
|
|
@ -32,17 +32,11 @@ import com.google.android.gms.wearable.PutDataRequest;
|
|||
import com.google.android.gms.wearable.Wearable;
|
||||
import com.google.android.gms.wearable.WearableListenerService;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
|
@ -55,15 +49,11 @@ import info.nightscout.androidaps.interfaces.PluginType;
|
|||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus;
|
||||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler;
|
||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import info.nightscout.androidaps.utils.SafeParse;
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
package info.nightscout.androidaps.plugins.iob.iobCobCalculator;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
import info.nightscout.androidaps.utils.Round;
|
||||
|
||||
/**
|
||||
* Created by mike on 04.01.2017.
|
||||
*/
|
||||
|
||||
public class GlucoseStatus {
|
||||
private static Logger log = LoggerFactory.getLogger(GlucoseStatus.class);
|
||||
public double glucose = 0d;
|
||||
public double delta = 0d;
|
||||
public double avgdelta = 0d;
|
||||
public double short_avgdelta = 0d;
|
||||
public double long_avgdelta = 0d;
|
||||
public long date = 0L;
|
||||
|
||||
|
||||
public String log() {
|
||||
return "Glucose: " + DecimalFormatter.to0Decimal(glucose) + " mg/dl " +
|
||||
"Delta: " + DecimalFormatter.to0Decimal(delta) + " mg/dl" +
|
||||
"Short avg. delta: " + " " + DecimalFormatter.to2Decimal(short_avgdelta) + " mg/dl " +
|
||||
"Long avg. delta: " + DecimalFormatter.to2Decimal(long_avgdelta) + " mg/dl";
|
||||
}
|
||||
|
||||
public GlucoseStatus() {
|
||||
}
|
||||
|
||||
public GlucoseStatus round() {
|
||||
this.glucose = Round.roundTo(this.glucose, 0.1);
|
||||
this.delta = Round.roundTo(this.delta, 0.01);
|
||||
this.avgdelta = Round.roundTo(this.avgdelta, 0.01);
|
||||
this.short_avgdelta = Round.roundTo(this.short_avgdelta, 0.01);
|
||||
this.long_avgdelta = Round.roundTo(this.long_avgdelta, 0.01);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
public static GlucoseStatus getGlucoseStatusData() {
|
||||
return getGlucoseStatusData(false);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static GlucoseStatus getGlucoseStatusData(boolean allowOldData) {
|
||||
// load 45min
|
||||
//long fromtime = DateUtil.now() - 60 * 1000L * 45;
|
||||
//List<BgReading> data = MainApp.getDbHelper().getBgreadingsDataFromTime(fromtime, false);
|
||||
|
||||
synchronized (IobCobCalculatorPlugin.getPlugin().getDataLock()) {
|
||||
|
||||
List<BgReading> data = IobCobCalculatorPlugin.getPlugin().getBgReadings();
|
||||
|
||||
if (data == null) {
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug("data=null");
|
||||
return null;
|
||||
}
|
||||
|
||||
int sizeRecords = data.size();
|
||||
if (sizeRecords == 0) {
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug("sizeRecords==0");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (data.get(0).date < DateUtil.now() - 7 * 60 * 1000L && !allowOldData) {
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug("olddata");
|
||||
return null;
|
||||
}
|
||||
|
||||
BgReading now = data.get(0);
|
||||
long now_date = now.date;
|
||||
double change;
|
||||
|
||||
if (sizeRecords == 1) {
|
||||
GlucoseStatus status = new GlucoseStatus();
|
||||
status.glucose = now.value;
|
||||
status.short_avgdelta = 0d;
|
||||
status.delta = 0d;
|
||||
status.long_avgdelta = 0d;
|
||||
status.avgdelta = 0d; // for OpenAPS MA
|
||||
status.date = now_date;
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug("sizeRecords==1");
|
||||
return status.round();
|
||||
}
|
||||
|
||||
ArrayList<Double> now_value_list = new ArrayList<>();
|
||||
ArrayList<Double> last_deltas = new ArrayList<>();
|
||||
ArrayList<Double> short_deltas = new ArrayList<>();
|
||||
ArrayList<Double> long_deltas = new ArrayList<>();
|
||||
|
||||
// Use the latest sgv value in the now calculations
|
||||
now_value_list.add(now.value);
|
||||
|
||||
for (int i = 1; i < sizeRecords; i++) {
|
||||
if (data.get(i).value > 38) {
|
||||
BgReading then = data.get(i);
|
||||
long then_date = then.date;
|
||||
double avgdelta;
|
||||
long minutesago;
|
||||
|
||||
minutesago = Math.round((now_date - then_date) / (1000d * 60));
|
||||
// multiply by 5 to get the same units as delta, i.e. mg/dL/5m
|
||||
change = now.value - then.value;
|
||||
avgdelta = change / minutesago * 5;
|
||||
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug(then.toString() + " minutesago=" + minutesago + " avgdelta=" + avgdelta);
|
||||
|
||||
// use the average of all data points in the last 2.5m for all further "now" calculations
|
||||
if (0 < minutesago && minutesago < 2.5) {
|
||||
// Keep and average all values within the last 2.5 minutes
|
||||
now_value_list.add(then.value);
|
||||
now.value = average(now_value_list);
|
||||
// short_deltas are calculated from everything ~5-15 minutes ago
|
||||
} else if (2.5 < minutesago && minutesago < 17.5) {
|
||||
//console.error(minutesago, avgdelta);
|
||||
short_deltas.add(avgdelta);
|
||||
// last_deltas are calculated from everything ~5 minutes ago
|
||||
if (2.5 < minutesago && minutesago < 7.5) {
|
||||
last_deltas.add(avgdelta);
|
||||
}
|
||||
// long_deltas are calculated from everything ~20-40 minutes ago
|
||||
} else if (17.5 < minutesago && minutesago < 42.5) {
|
||||
long_deltas.add(avgdelta);
|
||||
} else {
|
||||
// Do not process any more records after >= 42.5 minutes
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GlucoseStatus status = new GlucoseStatus();
|
||||
status.glucose = now.value;
|
||||
status.date = now_date;
|
||||
|
||||
status.short_avgdelta = average(short_deltas);
|
||||
|
||||
if (last_deltas.isEmpty()) {
|
||||
status.delta = status.short_avgdelta;
|
||||
} else {
|
||||
status.delta = average(last_deltas);
|
||||
}
|
||||
|
||||
status.long_avgdelta = average(long_deltas);
|
||||
status.avgdelta = status.short_avgdelta; // for OpenAPS MA
|
||||
|
||||
if (L.isEnabled(L.GLUCOSE))
|
||||
log.debug(status.log());
|
||||
return status.round();
|
||||
}
|
||||
}
|
||||
|
||||
public static double average(ArrayList<Double> array) {
|
||||
double sum = 0d;
|
||||
|
||||
if (array.size() == 0)
|
||||
return 0d;
|
||||
|
||||
for (Double value : array) {
|
||||
sum += value;
|
||||
}
|
||||
return sum / array.size();
|
||||
}
|
||||
}
|
|
@ -65,7 +65,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
private volatile List<BgReading> bgReadings = null; // newest at index 0
|
||||
private volatile List<BgReading> bucketed_data = null;
|
||||
|
||||
final Object dataLock = new Object();
|
||||
private final Object dataLock = new Object();
|
||||
|
||||
boolean stopCalculationTrigger = false;
|
||||
private Thread thread = null;
|
||||
|
@ -108,6 +108,10 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
return bucketed_data;
|
||||
}
|
||||
|
||||
public Object getDataLock() {
|
||||
return dataLock;
|
||||
}
|
||||
|
||||
// roundup to whole minute
|
||||
public static long roundUpTime(long time) {
|
||||
if (time % 60000 == 0)
|
||||
|
@ -630,6 +634,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
log.debug("Invalidating cached data because of new profile. IOB: " + iobTable.size() + " Autosens: " + autosensDataTable.size() + " records");
|
||||
iobTable = new LongSparseArray<>();
|
||||
autosensDataTable = new LongSparseArray<>();
|
||||
basalDataTable = new LongSparseArray<>();
|
||||
}
|
||||
runCalculation("onNewProfile", System.currentTimeMillis(), false, true, ev);
|
||||
}
|
||||
|
@ -652,9 +657,10 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
stopCalculation("onEventPreferenceChange");
|
||||
synchronized (dataLock) {
|
||||
if (L.isEnabled(L.AUTOSENS))
|
||||
log.debug("Invalidating cached data because of preference change. IOB: " + iobTable.size() + " Autosens: " + autosensDataTable.size() + " records");
|
||||
log.debug("Invalidating cached data because of preference change. IOB: " + iobTable.size() + " Autosens: " + autosensDataTable.size() + " records" + " BasalData: " + basalDataTable.size() + " records");
|
||||
iobTable = new LongSparseArray<>();
|
||||
autosensDataTable = new LongSparseArray<>();
|
||||
basalDataTable = new LongSparseArray<>();
|
||||
}
|
||||
runCalculation("onEventPreferenceChange", System.currentTimeMillis(), false, true, ev);
|
||||
}
|
||||
|
@ -730,6 +736,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
log.debug("Clearing cached data.");
|
||||
iobTable = new LongSparseArray<>();
|
||||
autosensDataTable = new LongSparseArray<>();
|
||||
basalDataTable = new LongSparseArray<>();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ public class IobCobOref1Thread extends Thread {
|
|||
|
||||
long oldestTimeWithData = iobCobCalculatorPlugin.calculateDetectionStart(end, limitDataToOldestAvailable);
|
||||
|
||||
synchronized (iobCobCalculatorPlugin.dataLock) {
|
||||
synchronized (iobCobCalculatorPlugin.getDataLock()) {
|
||||
if (bgDataReload) {
|
||||
iobCobCalculatorPlugin.loadBgData(end);
|
||||
iobCobCalculatorPlugin.createBucketedData();
|
||||
|
|
|
@ -95,7 +95,7 @@ public class IobCobThread extends Thread {
|
|||
|
||||
long oldestTimeWithData = iobCobCalculatorPlugin.calculateDetectionStart(end, limitDataToOldestAvailable);
|
||||
|
||||
synchronized (iobCobCalculatorPlugin.dataLock) {
|
||||
synchronized (iobCobCalculatorPlugin.getDataLock()) {
|
||||
if (bgDataReload) {
|
||||
iobCobCalculatorPlugin.loadBgData(end);
|
||||
iobCobCalculatorPlugin.createBucketedData();
|
||||
|
|
|
@ -18,7 +18,7 @@ import info.nightscout.androidaps.data.PumpEnactResult;
|
|||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
|
@ -166,7 +166,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
|
|||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
|
||||
mSerialIOThread.sendMessage(new MsgSettingBasal());
|
||||
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import info.nightscout.androidaps.data.PumpEnactResult;
|
|||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
|
@ -171,7 +171,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
|
|||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
|
||||
mSerialIOThread.sendMessage(new MsgSettingBasal());
|
||||
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import info.nightscout.androidaps.data.Profile;
|
|||
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
|
@ -149,7 +149,7 @@ public class DanaRSService extends Service {
|
|||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
|
||||
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Basal_Rate()); // basal profile, basalStep, maxBasal
|
||||
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ import info.nightscout.androidaps.data.PumpEnactResult;
|
|||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
|
@ -188,7 +188,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
|
||||
mSerialIOThread.sendMessage(new MsgSettingBasal());
|
||||
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,13 +27,13 @@ import java.util.List;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.services.Intents;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.db.ProfileSwitch;
|
||||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.plugins.common.SubscriberFragment;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
|
@ -216,7 +216,7 @@ public class TreatmentsProfileSwitchFragment extends SubscriberFragment implemen
|
|||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventProfileSwitchChange ev) {
|
||||
public void onStatusEvent(final EventProfileNeedsUpdate ev) {
|
||||
updateGUI();
|
||||
}
|
||||
|
||||
|
|
|
@ -381,7 +381,7 @@ public class CommandQueue {
|
|||
Notification notification = new Notification(Notification.NOT_ENG_MODE_OR_RELEASE, MainApp.gs(R.string.not_eng_mode_or_release), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(notification));
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(false).comment(MainApp.gs(R.string.not_eng_mode_or_release))).run();
|
||||
callback.result(new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.not_eng_mode_or_release))).run();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -394,7 +394,7 @@ public class CommandQueue {
|
|||
Notification notification = new Notification(Notification.BASAL_VALUE_BELOW_MINIMUM, MainApp.gs(R.string.basalvaluebelowminimum), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(notification));
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(false).comment(MainApp.gs(R.string.basalvaluebelowminimum))).run();
|
||||
callback.result(new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.basalvaluebelowminimum))).run();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import org.slf4j.LoggerFactory;
|
|||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
|
@ -73,7 +73,7 @@ public class KeepAliveReceiver extends BroadcastReceiver {
|
|||
}
|
||||
|
||||
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
|
||||
MainApp.bus().post(new EventProfileSwitchChange());
|
||||
MainApp.bus().post(new EventProfileNeedsUpdate());
|
||||
} else if (isStatusOutdated && !pump.isBusy()) {
|
||||
lastReadStatus = System.currentTimeMillis();
|
||||
ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("KeepAlive. Status outdated.", null);
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package info.nightscout.androidaps.receivers;
|
||||
|
||||
/**
|
||||
* Forward received SMS intents. This is a separate class, because unlike local broadcasts handled by DataReceiver,
|
||||
* receiving SMS requires a special permission in the manifest, which necessitates a separate receiver.
|
||||
*/
|
||||
public class SmsReceiver extends DataReceiver {}
|
|
@ -75,8 +75,11 @@ public class AlarmSoundService extends Service {
|
|||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (player != null) {
|
||||
player.stop();
|
||||
player.release();
|
||||
}
|
||||
|
||||
if (L.isEnabled(L.CORE))
|
||||
log.debug("onDestroy");
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import info.nightscout.androidaps.MainActivity;
|
|||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventProfileStoreChanged;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesSaved;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus;
|
||||
|
@ -115,7 +115,7 @@ public class SetupWizardActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEventProfileSwitchChange(EventProfileSwitchChange ignored) {
|
||||
public void onEventProfileSwitchChange(EventProfileNeedsUpdate ignored) {
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package info.nightscout.androidaps.utils;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.db.TempTarget;
|
||||
|
|
|
@ -112,11 +112,20 @@ public class FabricPrivacy {
|
|||
if (!fabricEnabled()) return;
|
||||
|
||||
String closedLoopEnabled = MainApp.getConstraintChecker().isClosedLoopAllowed().value() ? "CLOSED_LOOP_ENABLED" : "CLOSED_LOOP_DISABLED";
|
||||
// Size is limited to 36 chars
|
||||
String remote = BuildConfig.REMOTE
|
||||
.replace("https://","")
|
||||
.replace("http://","")
|
||||
.replace(".git", "")
|
||||
.replace(".com/", ":")
|
||||
.replace(".org/", ":")
|
||||
.replace(".net/", ":");
|
||||
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Mode", BuildConfig.APPLICATION_ID + "-" + closedLoopEnabled);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Language", LocaleHelper.getLanguage(MainApp.instance()));
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Version", BuildConfig.VERSION);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("HEAD", BuildConfig.HEAD);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Remote", remote);
|
||||
if (ConfigBuilderPlugin.getPlugin().getActivePump() != null)
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Pump", ConfigBuilderPlugin.getPlugin().getActivePump().getClass().getSimpleName());
|
||||
if (ConfigBuilderPlugin.getPlugin().getActiveAPS() != null)
|
||||
|
|
|
@ -5,11 +5,13 @@ import android.util.LongSparseArray;
|
|||
import java.util.Calendar;
|
||||
|
||||
public class MidnightTime {
|
||||
private static final LongSparseArray<Long> times = new LongSparseArray<>();
|
||||
static final LongSparseArray<Long> times = new LongSparseArray<>();
|
||||
|
||||
private static long hits = 0;
|
||||
private static long misses = 0;
|
||||
|
||||
private static final int THRESHOLD = 100000;
|
||||
|
||||
public static long calc() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
@ -36,10 +38,17 @@ public class MidnightTime {
|
|||
m = c.getTimeInMillis();
|
||||
times.append(time, m);
|
||||
++misses;
|
||||
if (times.size() > THRESHOLD) resetCache();
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
static void resetCache() {
|
||||
hits = 0;
|
||||
misses = 0;
|
||||
times.clear();
|
||||
}
|
||||
|
||||
public static String log() {
|
||||
return "Hits: " + hits + " misses: " + misses + " stored: " + times.size();
|
||||
}
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
package info.nightscout.androidaps.utils;
|
||||
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import info.nightscout.androidaps.BuildConfig;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
|
||||
|
||||
import static android.content.Context.CONNECTIVITY_SERVICE;
|
||||
|
||||
public class VersionChecker {
|
||||
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
||||
|
||||
public static void check() {
|
||||
if (isConnected())
|
||||
new Thread(() -> {
|
||||
HttpClient client = new DefaultHttpClient();
|
||||
HttpGet request = new HttpGet("https://raw.githubusercontent.com/MilosKozak/AndroidAPS/master/app/build.gradle");
|
||||
HttpResponse response;
|
||||
|
||||
try {
|
||||
response = client.execute(request);
|
||||
InputStream inputStream = response.getEntity().getContent();
|
||||
|
||||
if (inputStream != null) {
|
||||
String result = findLine(inputStream);
|
||||
if (result != null) {
|
||||
int compare = result.compareTo(BuildConfig.VERSION_NAME.replace("\"", ""));
|
||||
if (compare == 0) {
|
||||
log.debug("Version equal to master");
|
||||
return;
|
||||
} else if (compare > 0) {
|
||||
log.debug("Version outdated. Found " + result);
|
||||
Notification notification = new Notification(Notification.NEWVERSIONDETECTED, String.format(MainApp.gs(R.string.versionavailable), result), Notification.LOW);
|
||||
MainApp.bus().post(new EventNewNotification(notification));
|
||||
return;
|
||||
} else {
|
||||
log.debug("Version newer than master. Are you developer?");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.debug("Github master version not found");
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
log.debug("Github master version check error");
|
||||
}
|
||||
}).start();
|
||||
else
|
||||
log.debug("Github master version no checked. No connectivity");
|
||||
}
|
||||
|
||||
// convert inputstream to String
|
||||
private static String findLine(InputStream inputStream) throws IOException {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
|
||||
String line;
|
||||
String regex = "(.*)version(.*)\"(((\\d+)\\.)+(\\d+))\"(.*)";
|
||||
Pattern p = Pattern.compile(regex);
|
||||
|
||||
while ((line = bufferedReader.readLine()) != null) {
|
||||
Matcher m = p.matcher(line);
|
||||
if (m.matches()) {
|
||||
log.debug("+++ " + line);
|
||||
return m.group(3);
|
||||
} else {
|
||||
log.debug("--- " + line);
|
||||
}
|
||||
}
|
||||
inputStream.close();
|
||||
return null;
|
||||
}
|
||||
|
||||
// check network connection
|
||||
public static boolean isConnected() {
|
||||
ConnectivityManager connMgr = (ConnectivityManager) MainApp.instance().getApplicationContext().getSystemService(CONNECTIVITY_SERVICE);
|
||||
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
|
||||
return networkInfo != null && networkInfo.isConnected();
|
||||
}
|
||||
|
||||
}
|
|
@ -147,8 +147,6 @@
|
|||
<string name="constraints_violation">Beperkings skending</string>
|
||||
<string name="treatmentdeliveryerror">Bolus aflewering fout</string>
|
||||
<string name="tempbasaldeliveryerror">Tempbasal aflewering fout</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basale waarde [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% =huidig)</string>
|
||||
<string name="setbasalquestion">Aanvaar nuwe tydelike basale:</string>
|
||||
<string name="overview_treatment_label">Behandeling</string>
|
||||
<string name="overview_calculator_label">Rekenaar</string>
|
||||
|
@ -248,7 +246,6 @@
|
|||
<string name="danar_iob_label">Pomp IAB</string>
|
||||
<string name="danar_dailyunits">Daaglikse eenhede</string>
|
||||
<string name="pump_lastbolus_label">Laaste bolus</string>
|
||||
<string name="hoursago">%.1fh gelede</string>
|
||||
<string name="danar_invalidinput">Ongeldige invoer</string>
|
||||
<string name="danar_valuenotsetproperly">Waarde nie behoorlik gestel</string>
|
||||
<string name="reloadprofile">Herlaai profiel</string>
|
||||
|
@ -528,7 +525,6 @@
|
|||
<string name="resistantadult">Insulien weerstandige volwasse</string>
|
||||
<string name="patientage_summary">Kies asseblief pasiënt ouderdom om veiligheids limiete te stel</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s benodig battery optimisering whitelisting vir behoorlike prestasie</string>
|
||||
<string name="loopsuspended">Lus opgeskort</string>
|
||||
<string name="loopsuspendedfor">Opgeskort (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -564,8 +560,6 @@
|
|||
<string name="show_statuslights_summary">Wys status vlae vir cage, iage, sage, stoor en battery vlak op tuisskerm.</string>
|
||||
<string name="statuslights_res_warning">Drempel waarskuwings stoor vlak [U]</string>
|
||||
<string name="statuslights_res_critical">Drempel kritieke stoor vlak [U]</string>
|
||||
<string name="statuslights_bat_warning">Drempel waarskuwing battery vlak [%]</string>
|
||||
<string name="statuslights_bat_critical">Drempel kritieke battery vlak [%]</string>
|
||||
<string name="iob">IAB</string>
|
||||
<string name="cob">KOB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -764,7 +758,6 @@
|
|||
<string name="combo_pump_state_running">Loop tans</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Kanselleer TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Stel TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusing (%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Verfris</string>
|
||||
<string name="combo_pump_unsupported_operation">Versoekte bewerking nie ondersteun deur pomp</string>
|
||||
<string name="combo_low_suspend_forced_notification">Onveilige gebruik: uitgebreide of multigolf boluses is aktief. Lus modus is gestel om laag te opskort net 6 ure. Net gewone boluses is ondersteun in lus modus</string>
|
||||
|
|
|
@ -146,8 +146,8 @@
|
|||
<string name="constraints_violation">Нарушено ограничение</string>
|
||||
<string name="treatmentdeliveryerror">Грешка при подаване на болус</string>
|
||||
<string name="tempbasaldeliveryerror">Грешка при подаване на временен базал</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Стойност на базал [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = текущ)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Базална стойност [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = текущ)</string>
|
||||
<string name="setbasalquestion">Приложи нов временен базал:</string>
|
||||
<string name="overview_treatment_label">Болус</string>
|
||||
<string name="overview_calculator_label">Калкулатор</string>
|
||||
|
@ -247,7 +247,7 @@
|
|||
<string name="danar_iob_label">IOB на помпата</string>
|
||||
<string name="danar_dailyunits">Инсулин за деня</string>
|
||||
<string name="pump_lastbolus_label">Последен болус:</string>
|
||||
<string name="hoursago">преди %.1fч</string>
|
||||
<string name="hoursago">преди %1$.1fч</string>
|
||||
<string name="danar_invalidinput">Грешни входящи данни</string>
|
||||
<string name="danar_valuenotsetproperly">Неправилна стойност</string>
|
||||
<string name="reloadprofile">Презареди профил</string>
|
||||
|
@ -527,7 +527,7 @@
|
|||
<string name="resistantadult">Възрастни с голяма инсулинова резистентност</string>
|
||||
<string name="patientage_summary">Изберете възраст за определяне лимитите на безопасност</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s се нуждае от зключване на оптимизиране на батерията за пълна функционалност</string>
|
||||
<string name="needwhitelisting">%1$s се нуждае от изключване от списъка за оптимизиране на батерията за пълна функционалност</string>
|
||||
<string name="loopsuspended">Loop изключен</string>
|
||||
<string name="loopsuspendedfor">Изключен (%1$d мин)</string>
|
||||
<string name="loopsuperbolusfor">Суперболус (%1$d мин)</string>
|
||||
|
@ -563,8 +563,8 @@
|
|||
<string name="show_statuslights_summary">Покажи статус светлини за канула, инсулин, сензор, резервоар и батерията на началния екран.</string>
|
||||
<string name="statuslights_res_warning">Ниво за аларма за останал инсулин в резервоара [Е]</string>
|
||||
<string name="statuslights_res_critical">Критично ниво на останал инсулин в резервоар [Е]</string>
|
||||
<string name="statuslights_bat_warning">Аларма за заряд на батерия [%]</string>
|
||||
<string name="statuslights_bat_critical">Критично ниво на батерията под [%]</string>
|
||||
<string name="statuslights_bat_warning">Ниско ниво на батерията под [%%]</string>
|
||||
<string name="statuslights_bat_critical">Критично ниво на батерията под [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">СОВ</string>
|
||||
<string name="virtualpump_firmware_label">Фърмуер</string>
|
||||
|
@ -763,7 +763,7 @@
|
|||
<string name="combo_pump_state_running">Изпълнява</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Отказва временен базал</string>
|
||||
<string name="combo_pump_action_setting_tbr">Задава временен базал (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Болус (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Болус (%1$.1f Е)</string>
|
||||
<string name="combo_pump_action_refreshing">Обновява</string>
|
||||
<string name="combo_pump_unsupported_operation">Исканата операция не се поддържа от помпата</string>
|
||||
<string name="combo_low_suspend_forced_notification">Опасно използване: удължени или многовълнови болуси са активни. Помпата е изключена за само 6 часа. Само нормални болуси се поддържат.</string>
|
||||
|
@ -1155,6 +1155,10 @@
|
|||
<string name="sms_wrongcode">Грешен код. Командата не е изпълнена.</string>
|
||||
<string name="notconfigured">Не е конфигуриран</string>
|
||||
<string name="profileswitchcreated">Създаден запис - Промяна на профил</string>
|
||||
<string name="versionChecker">Проверка на версията</string>
|
||||
<string name="old_version">стара версия</string>
|
||||
<string name="very_old_version">много стара версия</string>
|
||||
<string name="new_version_warning">Има нова версия от най-малко %1$d дни! Връщане към LGS след 60 дни, цикълът ще бъде изключен след 90 дни</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d дeн</item>
|
||||
<item quantity="other">%1$d дни</item>
|
||||
|
|
|
@ -147,8 +147,8 @@
|
|||
<string name="constraints_violation">Mimo povolený rozsah</string>
|
||||
<string name="treatmentdeliveryerror">Chyba podání bolusu</string>
|
||||
<string name="tempbasaldeliveryerror">Chyba nastavování dočasného bazálu</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Hodnota bazálu [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = současný)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Hodnota bazálu [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = současný)</string>
|
||||
<string name="setbasalquestion">Spustit nový dočasný bazál:</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Kalkulačka</string>
|
||||
|
@ -248,7 +248,7 @@
|
|||
<string name="danar_iob_label">IOB z pumpy</string>
|
||||
<string name="danar_dailyunits">Jednotek za den</string>
|
||||
<string name="pump_lastbolus_label">Poslední bolus</string>
|
||||
<string name="hoursago">před %.1fh</string>
|
||||
<string name="hoursago">před %1$.1fh</string>
|
||||
<string name="danar_invalidinput">Chybná vstupní data</string>
|
||||
<string name="danar_valuenotsetproperly">Hodnota nenastavena správně</string>
|
||||
<string name="reloadprofile">Obnovit profil</string>
|
||||
|
@ -528,7 +528,7 @@
|
|||
<string name="resistantadult">Dospělý s nízkou citlivostí</string>
|
||||
<string name="patientage_summary">Vyberte věk pacienta pro nastavení bezpečnostních limitů</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s potřebuje vypnout optimalizace baterie pro optimální výkon</string>
|
||||
<string name="needwhitelisting">%1$s potřebuje vypnout optimalizace baterie pro optimální výkon</string>
|
||||
<string name="loopsuspended">Smyčka pozastavena</string>
|
||||
<string name="loopsuspendedfor">Pozastaveno (%1$d min)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -564,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Povolte stavové indikátory pro stáří kanyly, inzulínu, senzoru, zásobníku a baterie na domovské obrazovce.</string>
|
||||
<string name="statuslights_res_warning">Úroveň varování stavu zásobníku [U]</string>
|
||||
<string name="statuslights_res_critical">Úroveň kritického varování stavu zásobníku [U]</string>
|
||||
<string name="statuslights_bat_warning">Úroveň varování stavu baterie [%]</string>
|
||||
<string name="statuslights_bat_critical">Úroveň kritického varování stavu baterie [%]</string>
|
||||
<string name="statuslights_bat_warning">Úroveň varování stavu baterie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Úroveň kritického varování stavu baterie [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -764,7 +764,7 @@
|
|||
<string name="combo_pump_state_running">Běží</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Rušení dočasného bazálu</string>
|
||||
<string name="combo_pump_action_setting_tbr">Nastavování doč. bazálu (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Obnovování</string>
|
||||
<string name="combo_pump_unsupported_operation">Požadovaná operace není pumpou podporována</string>
|
||||
<string name="combo_low_suspend_forced_notification">Nebezpečné použití: extended nebo multiwave bolus je aktivní. Pumpa byla vypnuta jen na 6 hodin. Povolené jsou pouze normální bolusy.</string>
|
||||
|
@ -1156,6 +1156,10 @@
|
|||
<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>
|
||||
<string name="versionChecker">Kontrola verze</string>
|
||||
<string name="old_version">stará verze</string>
|
||||
<string name="very_old_version">velmi stará verze</string>
|
||||
<string name="new_version_warning">Nová verze je dostupná minimálně %1$d dní! Přepnutí na ochranu před nízkou glykémií po 60 dnech, vypnutí smyčky po 90 dnech</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d den</item>
|
||||
<item quantity="few">%1$d dnů</item>
|
||||
|
|
|
@ -147,8 +147,8 @@
|
|||
<string name="constraints_violation">Beschränkungen wurden verletzt oder Limit erreicht.</string>
|
||||
<string name="treatmentdeliveryerror">Bolus-Abgabefehler</string>
|
||||
<string name="tempbasaldeliveryerror">TBR Abgabe-Fehler</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal-Wert [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = aktuell)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal-Wert [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = aktuell)</string>
|
||||
<string name="setbasalquestion">Akzeptiere neue TBR:</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Rechner</string>
|
||||
|
@ -248,7 +248,7 @@
|
|||
<string name="danar_iob_label">Pumpen-IOB</string>
|
||||
<string name="danar_dailyunits">Tägliche Einheiten</string>
|
||||
<string name="pump_lastbolus_label">Letzter Bolus:</string>
|
||||
<string name="hoursago">vor %.1f h</string>
|
||||
<string name="hoursago">vor %1$.1f Stunde</string>
|
||||
<string name="danar_invalidinput">Ungültige Eingabedaten</string>
|
||||
<string name="danar_valuenotsetproperly">Wert nicht korrekt gesetzt</string>
|
||||
<string name="reloadprofile">Profil neuladen</string>
|
||||
|
@ -529,7 +529,7 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
|
|||
<string name="resistantadult">Insulinresistenter Erwachsener</string>
|
||||
<string name="patientage_summary">Bitte wähle das Patientenalter, um die Sicherheits-Limits festzulegen</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s benötigt eine deaktivierte Akku-Leistungsoptimierung, um korrekt arbeiten zu können.</string>
|
||||
<string name="needwhitelisting">%1$s benötigt eine deaktivierte Akku-Leistungsoptimierung, um korrekt arbeiten zu können.</string>
|
||||
<string name="loopsuspended">Loop pausiert</string>
|
||||
<string name="loopsuspendedfor">Pausiert (%1$d min)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -565,8 +565,8 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
|
|||
<string name="show_statuslights_summary">Statusanzeige für CAGE, IAGE, SAGE, Reservoir- und Batteriestand auf dem Homescreen.</string>
|
||||
<string name="statuslights_res_warning">Warnschwelle Reservoirstand [IE]</string>
|
||||
<string name="statuslights_res_critical">Warnschwelle kritischer Reservoirstand [IE]</string>
|
||||
<string name="statuslights_bat_warning">Warnschwelle Batteriestand [%]</string>
|
||||
<string name="statuslights_bat_critical">Warnschwelle kritischer Batteriestand [%]</string>
|
||||
<string name="statuslights_bat_warning">Warnschwelle Batteriestand [%%]</string>
|
||||
<string name="statuslights_bat_critical">Warnschwelle kritischer Batteriestand [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1158,6 +1158,10 @@ Unerwartetes Verhalten.</string>
|
|||
<string name="sms_wrongcode">Falscher Code. Befehl wurde abgebrochen.</string>
|
||||
<string name="notconfigured">Nicht konfiguriert</string>
|
||||
<string name="profileswitchcreated">Profilwechsel wurde erstellt</string>
|
||||
<string name="versionChecker">Versionsprüfer</string>
|
||||
<string name="old_version">Vorherige Version</string>
|
||||
<string name="very_old_version">sehr alte Version</string>
|
||||
<string name="new_version_warning">Neue Version für mindestens %1$d Tage verfügbar! Rückfall zur sensorunterstützten Pumpentherapie nach 60 Tagen, Loop wird nach 90 Tagen deaktiviert</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d Tag</item>
|
||||
<item quantity="other">%1$d Tage</item>
|
||||
|
|
|
@ -146,8 +146,8 @@
|
|||
<string name="constraints_violation">Παραβίαση Περιορισμών</string>
|
||||
<string name="treatmentdeliveryerror">Σφάλμα παράδοσης Bolus</string>
|
||||
<string name="tempbasaldeliveryerror">Σφάλμα παράδοσης Προσ Ρυθμού</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Τιμή Βασικού [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = τρέχων)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Τιμή Βασικού [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = τρέχων)</string>
|
||||
<string name="setbasalquestion">Αποδοχή νέου Προσ Ρυθμού:</string>
|
||||
<string name="overview_treatment_label">Θεραπεία</string>
|
||||
<string name="overview_calculator_label">Υπολογιστής</string>
|
||||
|
@ -247,7 +247,7 @@
|
|||
<string name="danar_iob_label">IOB αντλίας</string>
|
||||
<string name="danar_dailyunits">Μονάδες ανά ημέρα </string>
|
||||
<string name="pump_lastbolus_label">Τελευταίο Bolus:</string>
|
||||
<string name="hoursago">πριν από %.1fh</string>
|
||||
<string name="hoursago">%1$.1fώρες πριν</string>
|
||||
<string name="danar_invalidinput">Μη έγκυρα δεδομένα</string>
|
||||
<string name="danar_valuenotsetproperly">Η τιμή δεν μπήκε σωστά</string>
|
||||
<string name="reloadprofile">Ξαναφορτώστε το προφίλ</string>
|
||||
|
@ -527,7 +527,7 @@
|
|||
<string name="resistantadult">Αντίσταση ινσουλίνης ενηλίκων</string>
|
||||
<string name="patientage_summary">Παρακαλώ επιλέξτε ηλικία χρήστη για να ορισθούν όρια ασφαλείας</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">Το %s πρέπει να απενεργοποιήσει τη βελτιστοποίηση της μπαταρίας για βέλτιστη απόδοση</string>
|
||||
<string name="needwhitelisting">%1$s χρειάζεται λίστα βελτιστοποίησης μπαταρίας για σωστή απόδοση</string>
|
||||
<string name="loopsuspended">Κύκλωμα σε αναστολή</string>
|
||||
<string name="loopsuspendedfor">Αναστολή (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -563,8 +563,8 @@
|
|||
<string name="show_statuslights_summary">Ενεργοποίηση του φωτισμού κατάστασης για cage, iage, sage, reservoir και επίπεδο μπεταρίας στην αρχική οθόνη.</string>
|
||||
<string name="statuslights_res_warning">Όριο προειδοποίησης χαμηλής αμπούλας [U]</string>
|
||||
<string name="statuslights_res_critical">Όριο προειδοποίησης πολύ χαμηλής αμπούλας [U]</string>
|
||||
<string name="statuslights_bat_warning">Όριο προειδοποίησης χαμηλής μπαταρίας [%]</string>
|
||||
<string name="statuslights_bat_critical">Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%]</string>
|
||||
<string name="statuslights_bat_warning">Όριο προειδοποίησης χαμηλής μπαταρίας [%%]</string>
|
||||
<string name="statuslights_bat_critical">Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Έκδοση</string>
|
||||
|
@ -763,7 +763,7 @@
|
|||
<string name="combo_pump_state_running">Εκτελείτε</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Ακυρώνεται TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Ρύθμιση TBR (%1$d%% / %2$d λεπτά)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Ανανέωση</string>
|
||||
<string name="combo_pump_unsupported_operation">Η λειτουργία που ζητήθηκε δεν υποστηρίζεται από την αντλία</string>
|
||||
<string name="combo_low_suspend_forced_notification">Επικίνδυνη χρήση: Εκτεταμένο ή πολλαπλά bolus είναι ενεργό. Το κύκλωμα απενεργοποιήθηκε λόγω low-suspend μόνο για 6 ώρες. Επιτρέπονται μόνο κανονικά bolus</string>
|
||||
|
@ -1155,6 +1155,10 @@
|
|||
<string name="sms_wrongcode">Λάθος κωδικός. Η εντολή ακυρώθηκε.</string>
|
||||
<string name="notconfigured">Δεν έχει ρυθμιστεί</string>
|
||||
<string name="profileswitchcreated">Δημιουργήθηκε αλλαγή προφίλ</string>
|
||||
<string name="versionChecker">Έλεγχος Έκδοσης</string>
|
||||
<string name="old_version">παλιά έκδοση</string>
|
||||
<string name="very_old_version">πολύ παλιά έκδοση</string>
|
||||
<string name="new_version_warning">Νέα έκδοση για τουλάχιστον %1$d ημέρες διαθέσιμη! Επιστροφή σε LGS μετά από 60 ημέρες, το κύκλωμα θα απενεργοποιηθεί μετά από 90 ημέρες</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d ημέρα</item>
|
||||
<item quantity="other">%1$d ημέρες</item>
|
||||
|
|
|
@ -143,8 +143,6 @@
|
|||
<string name="constraints_violation">Violación restricciones</string>
|
||||
<string name="treatmentdeliveryerror">Error de administración del bolo</string>
|
||||
<string name="tempbasaldeliveryerror">Basal Temporal no emitida</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valor basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = actual)</string>
|
||||
<string name="setbasalquestion">Aceptar nueva basal temporal:</string>
|
||||
<string name="overview_treatment_label">Tratamiento</string>
|
||||
<string name="overview_calculator_label">Calculadora</string>
|
||||
|
@ -244,7 +242,6 @@
|
|||
<string name="danar_iob_label">Bomba IOB</string>
|
||||
<string name="danar_dailyunits">Unidades diarias</string>
|
||||
<string name="pump_lastbolus_label">Último bolo</string>
|
||||
<string name="hoursago">Hace %.1fh</string>
|
||||
<string name="danar_invalidinput">Datos inválidos</string>
|
||||
<string name="danar_valuenotsetproperly">Valor no establecido correctamente</string>
|
||||
<string name="reloadprofile">Recargar Perfil</string>
|
||||
|
@ -503,7 +500,6 @@
|
|||
<string name="resistantadult">Adulto resistente a la insulina</string>
|
||||
<string name="patientage_summary">Por favor elige la edad del paciente para ajustar los límites de seguridad</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s necesita optimización de batería lista blanca para funcionar bien</string>
|
||||
<string name="loopsuspended">Loop desactivado</string>
|
||||
<string name="loopsuspendedfor">Desactivado (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolo (%1$d m)</string>
|
||||
|
@ -539,8 +535,6 @@
|
|||
<string name="show_statuslights_summary">Habilitar las luces de estado para tiempo de la canula, tiempo de la insulina, tiempo del sensor y nivel de bateria en la pantalla de inicio.</string>
|
||||
<string name="statuslights_res_warning">Umbral de advertencia de nivel de reservorio [U]</string>
|
||||
<string name="statuslights_res_critical">Umbral crítico de nivel de reservorio [U]</string>
|
||||
<string name="statuslights_bat_warning">Umbral de advertencia de nivel de pila [%]</string>
|
||||
<string name="statuslights_bat_critical">Umbral crítico de nivel de batería [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -734,7 +728,6 @@
|
|||
<string name="combo_pump_state_running">Funcionando</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Cancelando TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Poniendo TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Emitiendo bolo (%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Actualizando</string>
|
||||
<string name="combo_pump_unsupported_operation">Acción requerida no disponible por la bomba</string>
|
||||
<string name="combo_low_suspend_forced_notification">Uso inseguro: bolo extendido o multionda activo. El modo del lazo ha sido fijado a sólo suspensión en baja glucosa durante 6 horas. En modo lazo sólo se soportan los bolo estándar.</string>
|
||||
|
|
|
@ -146,8 +146,8 @@
|
|||
<string name="constraints_violation">Violation des restrictions</string>
|
||||
<string name="treatmentdeliveryerror">Erreur injection bolus</string>
|
||||
<string name="tempbasaldeliveryerror">Erreur injection basal temporaire</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valeur Basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = actuel)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valeur de Basal [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = actuel)</string>
|
||||
<string name="setbasalquestion">Accepter nouveau basal temporaire :</string>
|
||||
<string name="overview_treatment_label">Traitement</string>
|
||||
<string name="overview_calculator_label">Calculatrice</string>
|
||||
|
@ -248,7 +248,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="danar_iob_label">Insuline Active pompe</string>
|
||||
<string name="danar_dailyunits">Unités journalières</string>
|
||||
<string name="pump_lastbolus_label">Dernier bolus</string>
|
||||
<string name="hoursago">%.1fh passées</string>
|
||||
<string name="hoursago">il y a %1$.1fh</string>
|
||||
<string name="danar_invalidinput">Données saisies invalides</string>
|
||||
<string name="danar_valuenotsetproperly">Valeur pas correctement définie</string>
|
||||
<string name="reloadprofile">Actualiser le profil</string>
|
||||
|
@ -528,7 +528,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="resistantadult">Adulte résistant à l\'insuline</string>
|
||||
<string name="patientage_summary">Veuillez svp sélectionner l’âge du patient pour définir les limites de sécurité</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s a besoin de la liste blanche de l’optimisation batterie pour une bonne performance</string>
|
||||
<string name="needwhitelisting">%1$s a besoin d\'optimisation de la batterie (whitelisting) pour une performance correcte</string>
|
||||
<string name="loopsuspended">La Boucle est suspendue</string>
|
||||
<string name="loopsuspendedfor">Suspendu (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -564,8 +564,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="show_statuslights_summary">Activer les lumières d\'état pour AgeC, AgeI, AgeS, niveaux du réservoir et de batterie sur l\'écran d\'accueil.</string>
|
||||
<string name="statuslights_res_warning">Seuil d\'avertissement de niveau du réservoir [U]</string>
|
||||
<string name="statuslights_res_critical">Seuil critique de niveau du réservoir [U]</string>
|
||||
<string name="statuslights_bat_warning">Seuil d’avertissement du niveau de batterie [%]</string>
|
||||
<string name="statuslights_bat_critical">Seuil critique du niveau de la batterie [%]</string>
|
||||
<string name="statuslights_bat_warning">Seuil d’avertissement du niveau de batterie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Seuil critique du niveau de la batterie [%%]</string>
|
||||
<string name="iob">IA</string>
|
||||
<string name="cob">GA</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -764,7 +764,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="combo_pump_state_running">En cours d\'exécution</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Annulation en cours du TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Paramétrer TBR (%1$d%% / %2$d min) </string>
|
||||
<string name="combo_pump_action_bolusing">Injection du bolus en cours (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Injection du Bolus en cours (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Actualisation en cours</string>
|
||||
<string name="combo_pump_unsupported_operation">L\'opération demandée n\'est pas prise en charge par la pompe</string>
|
||||
<string name="combo_low_suspend_forced_notification">Utilisation dangereuse : les bolus étendus ou carrés sont actifs. Le mode Boucle a été programmé pour des suspensions seulement pour 6 heures. Uniquement les bolus normaux sont pris en charge par le mode Boucle</string>
|
||||
|
@ -1156,6 +1156,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="sms_wrongcode">Code incorrect. Commande annulée.</string>
|
||||
<string name="notconfigured">Non configuré</string>
|
||||
<string name="profileswitchcreated">Changement de profil effectué</string>
|
||||
<string name="versionChecker">Vérificateur de version</string>
|
||||
<string name="old_version">ancienne version</string>
|
||||
<string name="very_old_version">très ancienne version</string>
|
||||
<string name="new_version_warning">Une nouvelle version est disponible depuis au moins %1$d jours ! Retour au traitement par pompe assistée par capteur (Arrêt par Glycémie Basse (AGB), Low Glucose Suspend (LGS) ) après 60 jours et la Boucle sera désactivée après 90 jours</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d jour</item>
|
||||
<item quantity="other">%1$d jours</item>
|
||||
|
|
|
@ -143,8 +143,6 @@
|
|||
<string name="constraints_violation">Vincolo Violato</string>
|
||||
<string name="treatmentdeliveryerror">Errore di erogazione del bolo</string>
|
||||
<string name="tempbasaldeliveryerror">Errore di somministrazione basale temporale</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valore Basale [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = corrente)</string>
|
||||
<string name="setbasalquestion">Accettare il nuovo basale temp</string>
|
||||
<string name="overview_treatment_label">Boli</string>
|
||||
<string name="overview_calculator_label">Calcolatore</string>
|
||||
|
@ -244,7 +242,6 @@
|
|||
<string name="danar_iob_label">IOB Microinfusore</string>
|
||||
<string name="danar_dailyunits">Unita\' giornaliera</string>
|
||||
<string name="pump_lastbolus_label">Ultimo Bolo</string>
|
||||
<string name="hoursago">%.1fh fa</string>
|
||||
<string name="danar_invalidinput">Data Errata</string>
|
||||
<string name="danar_valuenotsetproperly">Valore non impostato correttamente</string>
|
||||
<string name="reloadprofile">Aggiorna Profilo</string>
|
||||
|
@ -502,7 +499,6 @@
|
|||
<string name="resistantadult">Insulina resistente</string>
|
||||
<string name="patientage_summary">Si prega di selezionare l\'età paziente e di impostare i limiti di sicurezza</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s ha bisogno di whitelisting di ottimizzazione della batteria per un buon funzionamento</string>
|
||||
<string name="loopsuspended">Sospensione Loop</string>
|
||||
<string name="loopsuspendedfor">Sospendi (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolo (%1$d m)</string>
|
||||
|
@ -722,7 +718,6 @@
|
|||
<string name="combo_pump_state_running">In esecuzione</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Annullamento di TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">L\'impostazione di TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusing (%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Aggiornando</string>
|
||||
<string name="combo_pump_unsupported_operation">Richiesta operazione non supportata dal micro</string>
|
||||
<string name="combo_low_suspend_forced_notification">L\'utilizzo non sicuro: estesi o multiwave boli sono attivi. Modalità loop è stato impostato basso-sospendere solo 6 ore. Solo normali boli sono supportati in modalità loop</string>
|
||||
|
|
|
@ -143,8 +143,6 @@
|
|||
<string name="constraints_violation">제한 위반</string>
|
||||
<string name="treatmentdeliveryerror">Bolus 주입 에러</string>
|
||||
<string name="tempbasaldeliveryerror">임시Basal 주입 에러</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal값[%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = 현재)</string>
|
||||
<string name="setbasalquestion">새 임시Basal 적용:</string>
|
||||
<string name="overview_treatment_label">관리</string>
|
||||
<string name="overview_calculator_label">계산기</string>
|
||||
|
@ -244,7 +242,6 @@
|
|||
<string name="danar_iob_label">펌프 IOB</string>
|
||||
<string name="danar_dailyunits">일 인슐린 총량</string>
|
||||
<string name="pump_lastbolus_label">최근 Bolus:</string>
|
||||
<string name="hoursago">%.1f시간 전</string>
|
||||
<string name="danar_invalidinput">사용할수 없는 입력 데이터</string>
|
||||
<string name="danar_valuenotsetproperly">값이 제대로 설정되지 않았습니다</string>
|
||||
<string name="reloadprofile">프로파일 새로고침</string>
|
||||
|
@ -502,7 +499,6 @@
|
|||
<string name="resistantadult">인슐린 저항성 높은 성인</string>
|
||||
<string name="patientage_summary">안전제한을 설정하기 위해 당뇨인의 나이를 선택하세요</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">최적의 성능을 위해 %s에서 배터리 최적화를 해제해야합니다.</string>
|
||||
<string name="loopsuspended">Loop 일시중지</string>
|
||||
<string name="loopsuspendedfor">일시중지중 (%d분)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d 분)</string>
|
||||
|
@ -722,7 +718,6 @@
|
|||
<string name="combo_pump_state_running">실행중</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">임시기초주입 취소중</string>
|
||||
<string name="combo_pump_action_setting_tbr">임시기초주입 설정중 (%1$d%% / %2$d분)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus 주입중(%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">새로고침중</string>
|
||||
<string name="combo_pump_unsupported_operation">요청하신 동작은 펌프에서 지원하지 않습니다.</string>
|
||||
<string name="combo_low_suspend_forced_notification">위험한 사용: 확장Bolus 혹은 멀티웨이브Bolus가 활성화 됩니다. Loop 모드가 저혈당 방지로 오직 6시간만 설정됩니다. Loop 모드에선 일반 Bolus만 지원합니다.</string>
|
||||
|
|
|
@ -8,9 +8,10 @@
|
|||
<string name="nav_resetdb">Iš naujo nustatyti duomenų bazę</string>
|
||||
<string name="reset_db_confirm">Ar tikrai norite iš naujo nustatyti duomenų bazę?</string>
|
||||
<string name="nav_exit">Išeiti</string>
|
||||
<string name="danar_useextended_title">Naudoti ištęstinį bolusą >200%%</string>
|
||||
<string name="danar_bt_name_title">DanaR Bluetooth įrenginys</string>
|
||||
<string name="ns_sync_use_absolute_title">Visada naudoti bazės absoliučias vertes</string>
|
||||
<string name="alert_dialog_storage_permission_text">Prašome iš naujo paleisti telefoną arba sistemos nustatymuose iš naujo paleisti AndroidAPS \nkitaip AndroidAPS negalės registruoti prisijungimų (svarbu stebint ir tikrinant, ar algoritmai veikia tinkamai)!</string>
|
||||
<string name="alert_dialog_storage_permission_text">Prašome iš naujo paleisti telefoną arba sistemos nustatymuose iš naujo paleisti AndroidAPS \nkitaip AndroidAPS negalės registruoti prisijungimų (svarbu stebėti ir tikrinti ar algoritmai veikia tinkamai)!</string>
|
||||
<string name="description_actions">Mygtukai greitesniam pagrindinių funkcijų paleidimui</string>
|
||||
<string name="description_careportal">Papildomų įrašų žurnalas.</string>
|
||||
<string name="description_config_builder">Naudojama aktyvių įskiepių konfigūravimui</string>
|
||||
|
@ -145,8 +146,8 @@
|
|||
<string name="constraints_violation">Apribojimų pažeidimas</string>
|
||||
<string name="treatmentdeliveryerror">Boluso suleidimo klaida</string>
|
||||
<string name="tempbasaldeliveryerror">Laikinos bazės suleidimo klaida</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valandinė bazė [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100 % = dabartinis)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valandinė bazė [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%%(100%% - pasirinkta)</string>
|
||||
<string name="setbasalquestion">Patvirtinti naują laikiną bazę:</string>
|
||||
<string name="overview_treatment_label">Terapija</string>
|
||||
<string name="overview_calculator_label">Skaičiuotuvas</string>
|
||||
|
@ -246,7 +247,7 @@
|
|||
<string name="danar_iob_label">Pompos AIO</string>
|
||||
<string name="danar_dailyunits">Paros insulinas</string>
|
||||
<string name="pump_lastbolus_label">Paskutinis bolusas</string>
|
||||
<string name="hoursago">prieš %.1fval</string>
|
||||
<string name="hoursago">Prieš %1$.1f valandų</string>
|
||||
<string name="danar_invalidinput">Neteisingai įvesti duomenys</string>
|
||||
<string name="danar_valuenotsetproperly">Vertė nėra tinkamai nustatyta</string>
|
||||
<string name="reloadprofile">Atnaujinti profilį</string>
|
||||
|
@ -312,6 +313,7 @@
|
|||
<string name="overview_bolusprogress_stop">Stop</string>
|
||||
<string name="overview_bolusprogress_stoppressed">Paspausta STOP</string>
|
||||
<string name="waitingforpump">Laukiama ryšio su pompa</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Bus suleista %1$.2fvv</string>
|
||||
<string name="objectives_0_objective">Nustatymai vizualizacijai, monitoringui ir bazės verčių bei koeficientų analizei</string>
|
||||
<string name="objectives_0_gate">Įsitikinkite, kad gliukozės duomenys rodomi Nightscout, o pompos insulino duomenys yra įkelti</string>
|
||||
<string name="objectives_1_objective">Aktyvuojamas atviras ciklas</string>
|
||||
|
@ -334,6 +336,7 @@
|
|||
<string name="smscommunicator_loopisdisabled">Ciklas išjungtas</string>
|
||||
<string name="smscommunicator_loopisenabled">Ciklas įjungtas</string>
|
||||
<string name="valuelimitedto">%1$.2f apribotas iki %2$.2f</string>
|
||||
<string name="valueoutofrange">Vertė %1$s viršija griežtą limitą</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">Nuotolinis valdymas negalimas</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Nuotolinis bolusas negalimas. Bandykite vėliau.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Norėdami aktyvuoti %1$.2fvv/val bazę, kurios trukmė %2$d min, atsakykite kodu %3$s</string>
|
||||
|
@ -460,6 +463,7 @@
|
|||
<string name="profile">Profilis</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier_summary">Numatytoji reikšmė: 3 tai pagrindinis OpenAPS saugiklis. Jis apriboja Jūsų valandinę bazę iki trigubos maksimalios valandinės bazės (standartiniu atveju). Jums greičiausiai neprireiks šios reikšmės keisti, tačiau turėtumėte žinoti, kad ji naudojama kaip saugiklis apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\".</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">Numatytoji reikšmė: 4 tai antras pagrindinis OpenAPS saugiklis, apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\". Jis reiškia, kad jūsų valandinė bazė, nepriklausomai nuo to, kokia maksimali valandinė bazė suprogramuota pompoje, negali būti didesnė, nei keturguba dabartinė valandinė bazė. Tai apsaugo Jus nuo pavojingų situacijų, kai nustatoma pernelyg didelė valandinė bazė, pilnai nesuprantant, kaip veikia algoritmas. Numatytoji reikšmė yra 4x; daugumai vartotojų niekada neprireikia šio skaičiaus keisti, o pajutus, kad \"atsitrenkiama\" į saugiklį, rekomenduojama peržiūrėti kitus nustatymus.</string>
|
||||
<string name="openapsama_autosens_max_summary">Numatytoji reikšmė: 1.2\nTai daugiklis Autosens (ir netrukus Autotune) funkcijoje, kuris nustato 20%% maksimalią ribą iki kurios Autosens gali padidinti valandinę bazę, sumažinti JIF ir tikslinę gliukozės vertę.</string>
|
||||
<string name="openapsama_autosens_min_summary">Numatytoji reikšmė: 0.7\nTai antras daugiklis Autosens funkcijoje, kuris nustato, kad Autosens gali iki minimalios 70 % ribos sumažinti valandinę bazę bei padidinti JIF ir tikslinę gliukozės vertę.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens nustatomi tikslai</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Numatytoji reikšmė: true\nTai suteikia Autosens funkcijai leidimą keisti tikslinės gliukozės vertes, JIF ir valandinę bazę.</string>
|
||||
|
@ -472,6 +476,7 @@
|
|||
<string name="error_phone_not_valid">Telefono numeris negalioja</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Neteisingas SMS telefono numeris</string>
|
||||
<string name="overview_calibration">Kalibravimas</string>
|
||||
<string name="send_calibration">Siųsti kalibraciją %1$.1f į xDrip?</string>
|
||||
<string name="xdripnotinstalled">xDrip+ neįdiegta</string>
|
||||
<string name="calibrationsent">Kalibracija nusiųsta į xDrip</string>
|
||||
<string name="smscommunicator_calibrationsent">Kalibracija išsiųsta. xDrip programoje turi būti įgalintas gavimas.</string>
|
||||
|
@ -522,7 +527,7 @@
|
|||
<string name="resistantadult">Insulinui rezistentiškas suaugęs</string>
|
||||
<string name="patientage_summary">Pasirinkite paciento amžių saugumo riboms nustatyti</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s įtraukite baterijos optimizavimą į baltąjį sąrašą, tinkamam veikimui užtikrinti</string>
|
||||
<string name="needwhitelisting">%1$s įtraukite į baterijos optimizavimo baltąjį sąrašą tinkamam veikimui užtikrinti</string>
|
||||
<string name="loopsuspended">Ciklas sustabdytas</string>
|
||||
<string name="loopsuspendedfor">Sustabdyta (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolusas (%1$d m)</string>
|
||||
|
@ -558,8 +563,8 @@
|
|||
<string name="show_statuslights_summary">Pradžios ekrane rodyti spalvotus indikatorius adatos, insulino, sensoriaus naudojimo trukmei bei baterijos įkrovimo lygiui.</string>
|
||||
<string name="statuslights_res_warning">Įspėjimo apie žemą rezervuaro lygį riba [U]</string>
|
||||
<string name="statuslights_res_critical">Įspėjimo apie kritiškai žemą rezervuaro lygį riba [U]</string>
|
||||
<string name="statuslights_bat_warning">Įspėjimo apie žemą baterijos įkrovimo lygį riba [%]</string>
|
||||
<string name="statuslights_bat_critical">Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%]</string>
|
||||
<string name="statuslights_bat_warning">Įspėjimo apie žemą baterijos įkrovimo lygį riba [%%]</string>
|
||||
<string name="statuslights_bat_critical">Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%%]</string>
|
||||
<string name="iob">AIO</string>
|
||||
<string name="cob">AAO</string>
|
||||
<string name="virtualpump_firmware_label">Programinė įranga</string>
|
||||
|
@ -612,6 +617,7 @@
|
|||
<string name="absorptionsettings_title">Angliavandenių įsisavinimo parametrai</string>
|
||||
<string name="absorption_maxtime_title">Maksimalus angliavandenių įsisavinimo laikas [h]</string>
|
||||
<string name="absorption_maxtime_summary">Laikas, per kurį visi maisto angliavandeniai, tikėtina, bus įsisavinti</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Rodyti ištęstinį boliusą kaip %%</string>
|
||||
<string name="careportal_sensorage_label_short">SAMŽ</string>
|
||||
<string name="careportal_insulinage_label_short">IAMŽ</string>
|
||||
<string name="careportal_canulaage_label_short">KAMŽ</string>
|
||||
|
@ -724,6 +730,8 @@
|
|||
<string name="dexcomg5_xdripupload_title">Siųsti KG duomenis į xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">Xdrip+ pasirinkite 640g/Eversense duomenų šaltinį</string>
|
||||
<string name="nsclientbg">NSClient KG</string>
|
||||
<string name="minimalbasalvaluereplaced">Valandinė bazė pakeista mažiausia palaikoma verte: %1$s</string>
|
||||
<string name="maximumbasalvaluereplaced">Valandinė bazė pakeista didžiausia palaikoma verte: %1$s</string>
|
||||
<string name="overview_editquickwizard_usebg">KG apskaičiavimas</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolusų AIO apskaičiavimas</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Bazės AIO apskaičiavimas</string>
|
||||
|
@ -741,6 +749,8 @@
|
|||
<string name="closedmodeenabled">Uždaras ciklas aktyvus</string>
|
||||
<string name="maxiobset">Maksimalus AIO nustatytas tinkamai</string>
|
||||
<string name="hasbgdata">KG šaltinis pasirinktas teisingai</string>
|
||||
<string name="basalprofilenotaligned">Bazės reikšmės nesuderintos su valandomis: %1$s</string>
|
||||
<string name="zerovalueinprofile">Netinkamas profilis: %1$s</string>
|
||||
<string name="combo_programming_bolus">Programuojamas bolusas</string>
|
||||
<string name="combo_refresh">Atnaujinti</string>
|
||||
<string name="combo_pump_state_label">Būsena</string>
|
||||
|
@ -753,7 +763,7 @@
|
|||
<string name="combo_pump_state_running">Vykdoma</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Laikina bazė atšaukiama</string>
|
||||
<string name="combo_pump_action_setting_tbr">Nustatyti laikiną bazę (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusas (%.1f vv)</string>
|
||||
<string name="combo_pump_action_bolusing">Leidžiamas bolusas (%1$.1f vv)</string>
|
||||
<string name="combo_pump_action_refreshing">Atnaujinama</string>
|
||||
<string name="combo_pump_unsupported_operation">Pompa negali įvykdyti prašomos operacijos</string>
|
||||
<string name="combo_low_suspend_forced_notification">Nesaugu: aktyvus ištęstinis arba dvibangis bolusas. Ciklas nustatytas stabdymui prie žemo tik 6 valandoms. Aktyvūs tik paprasti bolusai.</string>
|
||||
|
@ -1082,6 +1092,7 @@
|
|||
<string name="log_operating_mode_changes">Įrašyti darbo režimo pakeitimus</string>
|
||||
<string name="log_alerts">Įrašyti įspėjimus</string>
|
||||
<string name="enable_tbr_emulation">Aktyvuoti LBD emuliaciją</string>
|
||||
<string name="enable_tbr_emulation_summary">Naudoti ištęstinius bolusus vietoj laikinos bazės, kai viršijama 250%% riba</string>
|
||||
<string name="disconnect_delay">Atjungimo vėlavimas [s]</string>
|
||||
<string name="serial_number">Serijos numeris</string>
|
||||
<string name="release_software_version">Išleistos programinės įrangos versija</string>
|
||||
|
@ -1144,6 +1155,10 @@
|
|||
<string name="sms_wrongcode">Neteisingas kodas. Komanda atšaukta.</string>
|
||||
<string name="notconfigured">Nesukonfigūruota</string>
|
||||
<string name="profileswitchcreated">Profilio perjungimas sukurtas</string>
|
||||
<string name="versionChecker">Versijos tikrintuvas</string>
|
||||
<string name="old_version">sena versija</string>
|
||||
<string name="very_old_version">labai sena versija</string>
|
||||
<string name="new_version_warning">Nauja versija pasiekiama mažiausiai %1$d dienų! Po 60 d. grįšite prie stabdymo prie žemo, po 90 d. ciklas bus išjungtas.</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d diena</item>
|
||||
<item quantity="few">%1$d diena</item>
|
||||
|
|
|
@ -145,8 +145,6 @@
|
|||
<string name="constraints_violation">In strijd met beperkingen</string>
|
||||
<string name="treatmentdeliveryerror">Bolus toedien storing</string>
|
||||
<string name="tempbasaldeliveryerror">Tijdelijk basaal toedien storing</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basale waarde [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = actueel)</string>
|
||||
<string name="setbasalquestion">Accepteer nieuw tijdelijk basaal:</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Bolus wizard</string>
|
||||
|
@ -246,7 +244,6 @@
|
|||
<string name="danar_iob_label">Pomp IOB</string>
|
||||
<string name="danar_dailyunits">Dag totaal</string>
|
||||
<string name="pump_lastbolus_label">Laatste bolus</string>
|
||||
<string name="hoursago">%.1fu geleden</string>
|
||||
<string name="danar_invalidinput">Verkeerde ingave</string>
|
||||
<string name="danar_valuenotsetproperly">Waarde niet correct ingesteld</string>
|
||||
<string name="reloadprofile">Herlaad profiel</string>
|
||||
|
@ -506,7 +503,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
|
|||
<string name="resistantadult">insuline resistente volwassene</string>
|
||||
<string name="patientage_summary">Kies leeftijd van de patient voor veiligheids limieten</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s benodigd batterij optimalistaie vrijwaring voor goede werking</string>
|
||||
<string name="loopsuspended">Loop pauzeren</string>
|
||||
<string name="loopsuspendedfor">Gepauzeerd (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -542,8 +538,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
|
|||
<string name="show_statuslights_summary">Statusindicatoren inschakelen voor cage, iage, sage, reservoir en batterijniveau op het beginscherm.</string>
|
||||
<string name="statuslights_res_warning">Drempel waarschuwing reservoir niveau [E]</string>
|
||||
<string name="statuslights_res_critical">Drempel alarm reservoir niveau [E]</string>
|
||||
<string name="statuslights_bat_warning">Drempel waarschuwing batterij niveau [%]</string>
|
||||
<string name="statuslights_bat_critical">Drempel alarm batterij niveau [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -737,7 +731,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
|
|||
<string name="combo_pump_state_running">Actief</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Annuleren van TB</string>
|
||||
<string name="combo_pump_action_setting_tbr">Instellen TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%.1f E)</string>
|
||||
<string name="combo_pump_action_refreshing">Vernieuwen</string>
|
||||
<string name="combo_pump_unsupported_operation">Gevraagde is niet mogelijk met de pomp</string>
|
||||
<string name="combo_low_suspend_forced_notification">Opgelet: verlengde en multi wave bolussen zijn actief. Loop is overgeschakeld naar low-suspend modus gedurende 6 uur. Alleen gewone bolussen worden ondersteund in loop modus</string>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<string name="nav_resetdb">Zresetuj bazy danych</string>
|
||||
<string name="reset_db_confirm">Na pewno chcesz zresetować bazy danych?</string>
|
||||
<string name="nav_exit">Wyjście</string>
|
||||
<string name="danar_useextended_title">Używaj przedłużonych bolusów dla >200%%</string>
|
||||
<string name="danar_bt_name_title">Urządzenie Bluetooth DanaR</string>
|
||||
<string name="ns_sync_use_absolute_title">Zawsze używaj wartości bezwzględnych bazy</string>
|
||||
<string name="alert_dialog_storage_permission_text">Proszę uruchomić ponownie telefon lub zrestartować AndroidAPS w ustawieniach systemu telefonu \ninaczej AndroidAPS nie będzie otrzymywał logowań (ważne ze względu na śledzenie i sprawdzanie poprawności działania algorytmów)!</string>
|
||||
|
@ -146,8 +147,8 @@
|
|||
<string name="constraints_violation">Naruszenie ograniczeń</string>
|
||||
<string name="treatmentdeliveryerror">Błąd podania bolusa</string>
|
||||
<string name="tempbasaldeliveryerror">Błąd podania bazy tymczasowej</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Wartość bazy [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = aktualny)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Wartość bazy [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = aktualny)</string>
|
||||
<string name="setbasalquestion">Akceptuj nową bazę tymczasową:</string>
|
||||
<string name="overview_treatment_label">Leczenie</string>
|
||||
<string name="overview_calculator_label">Kalkulator</string>
|
||||
|
@ -247,7 +248,7 @@
|
|||
<string name="danar_iob_label">IOB w pompie</string>
|
||||
<string name="danar_dailyunits">Jednostki dzienne</string>
|
||||
<string name="pump_lastbolus_label">Ostatni bolus</string>
|
||||
<string name="hoursago">%.1fh temu</string>
|
||||
<string name="hoursago">%1$.1fh temu</string>
|
||||
<string name="danar_invalidinput">Błędne dane wejściowe</string>
|
||||
<string name="danar_valuenotsetproperly">Wartość ustawiona nieprawidłowo</string>
|
||||
<string name="reloadprofile">Załaduj profil ponownie</string>
|
||||
|
@ -313,6 +314,7 @@
|
|||
<string name="overview_bolusprogress_stop">Stop</string>
|
||||
<string name="overview_bolusprogress_stoppressed">NACIŚNIĘTY STOP</string>
|
||||
<string name="waitingforpump">Czekam na pompę</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Zamierzam dostarczyć %1$.2fU</string>
|
||||
<string name="objectives_0_objective">Konfiguracja wizualizacji i monitorowania, analiza dawek i wartości bazowych</string>
|
||||
<string name="objectives_0_gate">Sprawdź czy BG (pomiary cukru) są dostępne w Nightscout, i dane pompy insulinowej są ładowane</string>
|
||||
<string name="objectives_1_objective">Uruchamiam otwartą pętle (OpenLoop)</string>
|
||||
|
@ -335,12 +337,26 @@
|
|||
<string name="smscommunicator_loopisdisabled">Pętla (Loop) jest wyłączona</string>
|
||||
<string name="smscommunicator_loopisenabled">Pętla (Loop) jest włączona</string>
|
||||
<string name="valuelimitedto">%1$.2f ograniczone do %2$.2f</string>
|
||||
<string name="valueoutofrange">Wartość %1$s jest poza dopuszczalną granicą</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">Zdalne komendy nie są dozwolone</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Bolus zdalny niedostępny. Spróbuj ponownie później.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Aby rozpocząć bazę %1$.2fU/h przez %2$d min. odpowiedz kodem %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Aby przełączyć profil na %1$s %2$d%% odpowiedz kodem %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Aby rozpocząć bolus przedłużony %1$.2fU przez %2$d min. odpowiedz kodem %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Aby rozpocząć bolus przedłużony %1$d%% przez %2$d min. odpowiedz kodem %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Aby wstrzymać pętle na %1$d minut odpowiedz kodem %2$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Tymczasowa baza %1$.2fU/h przez %2$d min rozpoczęta</string>
|
||||
<string name="smscommunicator_extendedset">Bolus przedłużony %1$.2fU na %2$d min. rozpoczęty pomyślnie</string>
|
||||
<string name="smscommunicator_tempbasalset_percent">Tymczasowa baza %1$d%% przez %2$d min. pomyślnie rozpoczęta</string>
|
||||
<string name="smscommunicator_tempbasalfailed">Rozpoczęcie tymczasowej bazy nie powiodło się</string>
|
||||
<string name="smscommunicator_extendedfailed">Nie powiodło się podanie bolusa przedłużonego</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">Aby zatrzymać bazę tymczasową wprowadź kod %1$s</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">Aby zatrzymać bolus przedłużony wprowadź kod %1$s</string>
|
||||
<string name="smscommunicator_tempbasalcanceled">Baza tymczasowa anulowana</string>
|
||||
<string name="smscommunicator_extendedcanceled">Przedłużony bolus anulowano</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">Anulowanie tymczasowej bazy nie powiodło się</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Anulowanie bolusa przedłużonego nie powiodło się</string>
|
||||
<string name="smscommunicator_unknowncommand">Nieznane polecenie lub błędna odpowiedź</string>
|
||||
<string name="quickwizard">Bolus zdefiniowany</string>
|
||||
<string name="quickwizardsettings">Ustaw szybkie bolusy</string>
|
||||
<string name="overview_editquickwizard_buttontext">Tekst przycisku:</string>
|
||||
|
@ -448,6 +464,7 @@
|
|||
<string name="profile">Profil</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier_summary">Wartość domyślna: 3 To jest kluczowy współczynnik bezpieczeństwa OpenAPS. Ogranicza dawki bazowe do 3x twojej największej dawki bazowej. Prawdopodobnie nie będziesz musiał tego zmieniać, ale powinieneś być świadomy tego, co się rozumie przez “3x max dzienna; 4x aktualna” dla współczynników bezpieczeństwa.</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">Wartość domyślna: 4 To jest drugi kluczowy współczynnik bezpieczeństwa OpenAPS, i druga wartość z “3x max dzienna; 4x aktualna”. To oznacza, że Twoja dawka bazowa niezależnie od maksymalnej bazy ustawionej na pompie nie może być większa niż ta ustawiona wartość razy twoja aktualna dawka bazowa. To ma na celu przestrzec ludzi przed ustawieniem zbyt wysokiej dawki maksymalnej przed zrozumieniem jak działa algorytm. Ponownie, wartość domyślna to 4x; większość ludzi nie będzie potrzebowała tego zmienić i raczej będą potrzebować dostosować inne ustawienia, jeśli czują, że zbliżają się do współczynnika bezpieczeństwa.</string>
|
||||
<string name="openapsama_autosens_max_summary">Wartość domyślna: 1.2\nTo jest mnożnik dla autosens (wkrótce autotune), ustawia 20%% maks. limit dla najwyższej wartości jaką autosens może przyjąć, co z kolei określa jak wysoko autosens może zwiększyć bazę, jak nisko może ustawić współczynnik wrażliwości insuliny ISF, i jak nisko może ustawić docelową wartość glikemii.</string>
|
||||
<string name="openapsama_autosens_min_summary">Wartość domyślna: 0.7\nDruga strona limitu bezpieczeństwa dla autosens, ustawia mnożnik minimalny dla wartości, do jakiej autosens może obniżyć bazę, i jak wysoko może ustawić ISF i wartość docelową BG.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens wpływa na wartości docelowe</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Domyślnie włączone\nTa funkcja pozwala wpływać na zmianę wartości docelowe BG, wartości bazy i oraz współczynnika wrażliwości na insulinę ISF.</string>
|
||||
|
@ -460,6 +477,7 @@
|
|||
<string name="error_phone_not_valid">Nieprawidłowy numer telefonu</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Nieprawidłowy numer telefonu SMS</string>
|
||||
<string name="overview_calibration">Kalibracja</string>
|
||||
<string name="send_calibration">Wysłać kalibrację %1$.1f do xDrip?</string>
|
||||
<string name="xdripnotinstalled">xDrip+ nie zainstalowany</string>
|
||||
<string name="calibrationsent">Kalibracja przesłana do xDrip</string>
|
||||
<string name="smscommunicator_calibrationsent">Kalibracja wysłana. Odbiór musi być dozwolony w xDrip.</string>
|
||||
|
@ -510,7 +528,7 @@
|
|||
<string name="resistantadult">Osoba dorosła insulino odporna</string>
|
||||
<string name="patientage_summary">Proszę wybierz wiek pacjenta w celu ustawienia wartości limitów bezpieczeństwa</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s Potrzebuję wpisu na białą listę optymalizacji baterii, w celu zapewnienia poprawnego działania</string>
|
||||
<string name="needwhitelisting">%1$s potrzebuję wyłączenia z optymalizacji baterii, w celu zapewnienia poprawnego działania</string>
|
||||
<string name="loopsuspended">Pętla wstrzymana</string>
|
||||
<string name="loopsuspendedfor">Wstrzymana (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -546,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Włącz diody stanu dla cage, iage, sage, rezerwuar i poziom baterii na ekranie głównym.</string>
|
||||
<string name="statuslights_res_warning">Próg ostrzeżenia o poziomie zbiornika [U]</string>
|
||||
<string name="statuslights_res_critical">Próg ostrzeżenia o krytycznym poziomie zbiornika [U]</string>
|
||||
<string name="statuslights_bat_warning">Próg ostrzeżenia o poziomie baterii [%]</string>
|
||||
<string name="statuslights_bat_critical">Próg ostrzeżenia o krytycznym poziomie baterii [%]</string>
|
||||
<string name="statuslights_bat_warning">Próg ostrzeżenia o poziomie baterii [%%]</string>
|
||||
<string name="statuslights_bat_critical">Próg ostrzeżenia o krytycznym poziomie baterii [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -601,6 +619,7 @@
|
|||
<string name="absorptionsettings_title">Ustawienia wchłaniania</string>
|
||||
<string name="absorption_maxtime_title">Maks. czas wchłaniania posiłku [h]</string>
|
||||
<string name="absorption_maxtime_summary">Oczekiwany czas w godzinach, w którym wszystkie węglowodany zostają wchłonięte</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Wizualizacja bolusa przedłużonego jako %%</string>
|
||||
<string name="careportal_sensorage_label_short">SAGE</string>
|
||||
<string name="careportal_insulinage_label_short">IAGE</string>
|
||||
<string name="careportal_canulaage_label_short">CAGE</string>
|
||||
|
@ -713,6 +732,8 @@
|
|||
<string name="dexcomg5_xdripupload_title">Prześlij dane BG do xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">W xDrip+ wybierz źródło danych 640g/Eversense</string>
|
||||
<string name="nsclientbg">NSClient BG</string>
|
||||
<string name="minimalbasalvaluereplaced">Wartość bazy zastąpiona minimalną obsługiwaną wartością: %1$s</string>
|
||||
<string name="maximumbasalvaluereplaced">Wartość bazy zastąpiona maksymalną obsługiwaną wartością: %1$s</string>
|
||||
<string name="overview_editquickwizard_usebg">Obliczenia BG</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Obliczenia Bolus IOB</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Obliczenia IOB</string>
|
||||
|
@ -730,6 +751,8 @@
|
|||
<string name="closedmodeenabled">Tryb zamknięty włączony</string>
|
||||
<string name="maxiobset">Maks. IOB ustawione poprawnie</string>
|
||||
<string name="hasbgdata">BG dostępne z wybranego źródła</string>
|
||||
<string name="basalprofilenotaligned">Wartości bazy nie są ustawione w pełnych godzinach: %1$s</string>
|
||||
<string name="zerovalueinprofile">Nieprawidłowy profil: %1$s</string>
|
||||
<string name="combo_programming_bolus">Programowanie pompy do podawania bolusa</string>
|
||||
<string name="combo_refresh">Odśwież</string>
|
||||
<string name="combo_pump_state_label">Stan</string>
|
||||
|
@ -742,7 +765,7 @@
|
|||
<string name="combo_pump_state_running">W działaniu</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Anulowanie TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Ustawianie TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Podawanie bolusa (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Podawanie bolusa (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Odświeżanie</string>
|
||||
<string name="combo_pump_unsupported_operation">Żądana operacja nie jest obsługiwana przez pompę</string>
|
||||
<string name="combo_low_suspend_forced_notification">Niebezpieczne użycie: aktywne są bolusy przedłużone lub wielofalowe. Tryb pętli został ustawiony tylko na 6 godzinne zawieszenie z uwagi na niski poziom (BG). W trybie pętli obsługiwane są tylko normalne bolusy</string>
|
||||
|
@ -1065,11 +1088,13 @@
|
|||
<string name="mute_alert">Wycisz</string>
|
||||
<string name="pump_alert">Alarm pompy</string>
|
||||
<string name="log_site_changes">Melduj zmianę miejsca wkłucia</string>
|
||||
<string name="log_reservoir_changes">Zapisz zmianę zbiornika</string>
|
||||
<string name="log_tube_changes">Melduj zmianę drenu</string>
|
||||
<string name="log_battery_changes">Melduj zmiany baterii</string>
|
||||
<string name="log_operating_mode_changes">Melduj zmiany trybu pracy</string>
|
||||
<string name="log_alerts">Melduj ostrzeżenia</string>
|
||||
<string name="enable_tbr_emulation">Włącz emulację TBR</string>
|
||||
<string name="enable_tbr_emulation_summary">Użyj rozszerzonych bolusów zamiast TBR by ominąć limit 250%% bazy</string>
|
||||
<string name="disconnect_delay">Opóźnienie rozłączenie [s]</string>
|
||||
<string name="serial_number">Numer seryjny</string>
|
||||
<string name="release_software_version">Wersja oprogramowania</string>
|
||||
|
@ -1124,6 +1149,18 @@
|
|||
<string name="dexcom_lognssensorchange_summary">Podaj \"Zmiana Sensora\" do NS do NS automatycznie przy uruchomieniu sensora</string>
|
||||
<string name="tomato">Tomato (MiaoMiao)</string>
|
||||
<string name="tomato_short">Tomato</string>
|
||||
<string name="dst_in_24h_warning">Zmiana na czas letni w ciągu 24 godzin lub krócej</string>
|
||||
<string name="dst_loop_disabled_warning">Zmiana czasu nastąpiła mniej niż 3 godziny temu - Zamknięta pętla wyłączona</string>
|
||||
<string name="storage">limit wielkości pamięci wewnętrznej</string>
|
||||
<string name="diskfull">Zwolnij co najmniej %1$d MB z pamięci wewnętrznej! Pętla zatrzymana!</string>
|
||||
<string name="wrongformat">Błędny format</string>
|
||||
<string name="sms_wrongcode">Zły kod. Polecenie anulowano.</string>
|
||||
<string name="notconfigured">Nie skonfigurowano</string>
|
||||
<string name="profileswitchcreated">Zmiana profilu wykonana</string>
|
||||
<string name="versionChecker">Kontroler wersji</string>
|
||||
<string name="old_version">stara wersja</string>
|
||||
<string name="very_old_version">bardzo stara wersja</string>
|
||||
<string name="new_version_warning">Nowa wersja dostępna co najmniej %1$d dni! Powrót do LGS (zawieszania podawania bazy przy niskim poziomie) po 60 dniach, pętla zostanie wyłączona po 90 dniach</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d dzień</item>
|
||||
<item quantity="few">%1$d dni</item>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<string name="nav_resetdb">Reinicializar base de dados</string>
|
||||
<string name="reset_db_confirm">Quer realmente reiniciar a base de dados?</string>
|
||||
<string name="nav_exit">Sair</string>
|
||||
<string name="danar_useextended_title">Usar bólus prolongado de >200%%</string>
|
||||
<string name="danar_bt_name_title">Dispositivo Bluetooth DanaR</string>
|
||||
<string name="ns_sync_use_absolute_title">Usar sempre valores absolutos de basal</string>
|
||||
<string name="alert_dialog_storage_permission_text">Por favor, reinicie o seu telefone ou reinicie o AndroidAPS a partir das Configurações do Sistema \ncaso contrário, o AndroidAPS não terá registro (importante para controlar e verificar se os algoritmos estão a funcionar corretamente)!</string>
|
||||
|
@ -146,8 +147,8 @@
|
|||
<string name="constraints_violation">Violação das restrições</string>
|
||||
<string name="treatmentdeliveryerror">Erro na entrega do bolus</string>
|
||||
<string name="tempbasaldeliveryerror">Erro na entrega da basal temporária</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valor da Basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = atual)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valor da Basal [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = actual)</string>
|
||||
<string name="setbasalquestion">Aceitar nova basal temporária:</string>
|
||||
<string name="overview_treatment_label">Tratamento</string>
|
||||
<string name="overview_calculator_label">Calculadora</string>
|
||||
|
@ -247,7 +248,7 @@
|
|||
<string name="danar_iob_label">IOB Bomba</string>
|
||||
<string name="danar_dailyunits">Unidades diárias</string>
|
||||
<string name="pump_lastbolus_label">Último bólus</string>
|
||||
<string name="hoursago">%.1fh atrás</string>
|
||||
<string name="hoursago">%1$.1fh atrás</string>
|
||||
<string name="danar_invalidinput">Entrada Inválida</string>
|
||||
<string name="danar_valuenotsetproperly">Valor não definido corretamente</string>
|
||||
<string name="reloadprofile">Recarregar perfil</string>
|
||||
|
@ -313,6 +314,7 @@
|
|||
<string name="overview_bolusprogress_stop">Parar</string>
|
||||
<string name="overview_bolusprogress_stoppressed">STOP PRESSIONADO</string>
|
||||
<string name="waitingforpump">À espera da bomba</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Vão ser administradas %1$.2fU</string>
|
||||
<string name="objectives_0_objective">Configuração da visualização e monitoramento, e análise de rácios e basals</string>
|
||||
<string name="objectives_0_gate">Verificar se a BG está disponível no Nightscout, e se os dados de insulina da bomba estão a ser carregados</string>
|
||||
<string name="objectives_1_objective">A iniciar um open loop</string>
|
||||
|
@ -335,11 +337,23 @@
|
|||
<string name="smscommunicator_loopisdisabled">Loop desactivado</string>
|
||||
<string name="smscommunicator_loopisenabled">Loop activado</string>
|
||||
<string name="valuelimitedto">%1$.2f limitado a %2$.2f</string>
|
||||
<string name="valueoutofrange">O valor %1$s está fora dos limites permitidos</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">O comando remoto não é permitido</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">O bólus remoto não está disponível. Tente novamente mais tarde.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Para começar a basal %1$.2fU/h durante%2$d min responda com o código %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Para mudar o perfil para %1$s %2$d%% responda com o código %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Para começar o bólus estendido %1$.2fU/h para %2$d min responda com o código %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Para começar a basal %1$d% U/h durante %2$d min responda com o código %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Para suspender o loop por %1$d minutos resposta com código %2$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Basal temporária %1$.2fU/h para %2$d min iniciada com êxito</string>
|
||||
<string name="smscommunicator_extendedset">Bólus estendido %1$.2fU/h para %2$d min iniciado com êxito</string>
|
||||
<string name="smscommunicator_tempbasalset_percent">Basal temporária %1$d% U/h durante%2$d min iniciada com êxito</string>
|
||||
<string name="smscommunicator_tempbasalfailed">Início basal temp falhou </string>
|
||||
<string name="smscommunicator_extendedfailed">Falha ao iniciar o bólus estendido</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">Para parar a basal temporária responda com o código %1$s</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">Para parar o bólus temporário responda com o código %1$s</string>
|
||||
<string name="smscommunicator_tempbasalcanceled">Basal temp cancelada</string>
|
||||
<string name="smscommunicator_extendedcanceled">Bólus estendido cancelado</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">Não foi possivel cancelar a basal temp</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Falhou o cancelamento do bolus extendido</string>
|
||||
<string name="smscommunicator_unknowncommand">Comando desconhecido ou resposta errada</string>
|
||||
|
@ -450,6 +464,7 @@
|
|||
<string name="profile">Perfil</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier_summary">Valor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor actual (qual seja menor) como valores máximos.</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objectivo é evitar que sejam determinadas basais temporárias demasiado elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança.</string>
|
||||
<string name="openapsama_autosens_max_summary">Valor predefinido: 1.2\n Este é um multiplicador para autosens (e em breve autotune) que coloca um limite máximo de 20%% aos rácios superiores e inferiores de autosens, o que por sua vez calcula o quão alto autosens pode ajustar a basal, quão pode baixar o Factor de Sensibilidade (FSI) e baixar o valor alvo de glicose no sangue.</string>
|
||||
<string name="openapsama_autosens_min_summary">Valor padrão: 0.7\nO outro lado dos limites de segurança do autosens. Coloca um tecto no quão baixo autosens pode ajustar as basais, e quão alto pode ajustar os valores de ISF e valor alvo de glucose no sangue (BG).</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens também ajusta os alvos</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Valor padrão: true\nÉ usado para permitir que autosens possa ajustar os valores alvo de glucose no sangue (BG), além de ISF e basais.</string>
|
||||
|
@ -462,6 +477,7 @@
|
|||
<string name="error_phone_not_valid">Número de telefone não é válido</string>
|
||||
<string name="smscommunicator_invalidphonennumber">SMS número de telefone inválido</string>
|
||||
<string name="overview_calibration">Calibração</string>
|
||||
<string name="send_calibration">Enviar calibração %1$.1f para o xDrip?</string>
|
||||
<string name="xdripnotinstalled">xDrip+ não está instalado</string>
|
||||
<string name="calibrationsent">Calibração enviada para o xDrip</string>
|
||||
<string name="smscommunicator_calibrationsent">Calibração enviada. Recepção têm de estar activada no xDrip.</string>
|
||||
|
@ -512,7 +528,7 @@
|
|||
<string name="resistantadult">Adulto resistente insulina</string>
|
||||
<string name="patientage_summary">Por favor seleccione a idade do diabético para definir os limites de segurança</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s necessita de autorizar a não optimização da bateria para assegurar a performance necessária</string>
|
||||
<string name="needwhitelisting">%1$s necessita de autorizar a não optimização da bateria para assegurar a performance necessária</string>
|
||||
<string name="loopsuspended">Loop suspenso</string>
|
||||
<string name="loopsuspendedfor">Suspendido (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbólus (%1$d m)</string>
|
||||
|
@ -548,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Ativar as luzes de status para idade da cânula, idade da insulina, idade do sensor, reservatório e bateria no ecrã inicial.</string>
|
||||
<string name="statuslights_res_warning">Limite de aviso de nível de reservatório [U]</string>
|
||||
<string name="statuslights_res_critical">Limite crítico de nível de reservatório [U]</string>
|
||||
<string name="statuslights_bat_warning">Limite de aviso de nível de bateria [%]</string>
|
||||
<string name="statuslights_bat_critical">Limite crítico de nível de bateria [%]</string>
|
||||
<string name="statuslights_bat_warning">Limite de aviso de nível de bateria [%%]</string>
|
||||
<string name="statuslights_bat_critical">Limite crítico de nível de bateria [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -602,6 +618,7 @@
|
|||
<string name="absorptionsettings_title">Configurações de absorção</string>
|
||||
<string name="absorption_maxtime_title">Tempo máx. absorção refeição [h]</string>
|
||||
<string name="absorption_maxtime_summary">Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Visualizar bólus prolongado como %%</string>
|
||||
<string name="careportal_sensorage_label_short">SAGE</string>
|
||||
<string name="careportal_insulinage_label_short">IAGE</string>
|
||||
<string name="careportal_canulaage_label_short">CAGE</string>
|
||||
|
@ -714,6 +731,8 @@
|
|||
<string name="dexcomg5_xdripupload_title">Enviar dados Glic. para xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">Seleccionar 640g/Eversense como fonte no xDrip+</string>
|
||||
<string name="nsclientbg">Glic NSCliente</string>
|
||||
<string name="minimalbasalvaluereplaced">Valor da basal alterado para o valor mínimo suportado: %1$s</string>
|
||||
<string name="maximumbasalvaluereplaced">Valor da basal alterado para o valor máximo suportado: %1$s</string>
|
||||
<string name="overview_editquickwizard_usebg">Cálculos Glic</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Cálculo de Bólus IOB</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Cálculo de Basal IOB</string>
|
||||
|
@ -731,6 +750,8 @@
|
|||
<string name="closedmodeenabled">Modo fechado ativado</string>
|
||||
<string name="maxiobset">IOB máxima definida correctamente</string>
|
||||
<string name="hasbgdata">Glicemia disponivel desde a fonte selecionada</string>
|
||||
<string name="basalprofilenotaligned">Valores das basais não definidos por horas: %1$s</string>
|
||||
<string name="zerovalueinprofile">Perfil inválido: %1$s</string>
|
||||
<string name="combo_programming_bolus">A programar a bomba para injectar o bolus</string>
|
||||
<string name="combo_refresh">Actualizar</string>
|
||||
<string name="combo_pump_state_label">Estado</string>
|
||||
|
@ -743,7 +764,7 @@
|
|||
<string name="combo_pump_state_running">A correr</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Cancelar TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">A definir TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Injectando (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Injectando (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">A actualizar</string>
|
||||
<string name="combo_pump_unsupported_operation">Operação solicitada não suportada pela bomba</string>
|
||||
<string name="combo_low_suspend_forced_notification">Ultilização nao segura: bolus estendudos ou multionda estão activos. Modo do loop foi alterado para apenas suspender em limite inferior por 6h. Apenas são suportados bolus normais em modo loop</string>
|
||||
|
@ -1072,6 +1093,7 @@
|
|||
<string name="log_operating_mode_changes">Alterações do modo de funcionamento de registo</string>
|
||||
<string name="log_alerts">Alertas de registo</string>
|
||||
<string name="enable_tbr_emulation">Ativar a emulação TBR</string>
|
||||
<string name="enable_tbr_emulation_summary">Usar bólus prolongados em vez de basais temporárias para contornar o limite de 250%%</string>
|
||||
<string name="disconnect_delay">Atraso de desconexão [s]</string>
|
||||
<string name="serial_number">Número de série</string>
|
||||
<string name="release_software_version">Lançar versão de software</string>
|
||||
|
@ -1107,15 +1129,17 @@
|
|||
<string name="refresh">Actualizar</string>
|
||||
<string name="description_pump_insight_local">Integração de bomba para bombas Accu-Chek Insight</string>
|
||||
<string name="not_inserted">Não inserido</string>
|
||||
<string name="short_status_last_connected">Última conexão:%1$d minutos atrás</string>
|
||||
<string name="short_status_last_connected">Última ligação:%1$d minutos atrás</string>
|
||||
<string name="short_status_tbr">Basal temporária: %1$d%% para %2$d / %3$d minutos</string>
|
||||
<string name="short_status_extended">Estendido: %1$.2f / %2$.2f U por %3$d min</string>
|
||||
<string name="short_status_multiwave">Multionda: %1$.2f / %2$.2f U por %3$d min</string>
|
||||
<string name="short_status_tdd">TDD: %1$.2f</string>
|
||||
<string name="short_status_reservoir">Reser:%1$.2fU</string>
|
||||
<string name="short_status_battery">Bat.: %1$d%%</string>
|
||||
<string name="max_recovery_duration">Duração máxima da recuperação [s]</string>
|
||||
<string name="min_recovery_duration">Duração mínima da recuperação [s]</string>
|
||||
<string name="recovery_duration">Duração da recuperação</string>
|
||||
<string name="timeout_during_handshake">Tempo de operação excedido - reinicar bluetooth</string>
|
||||
<string name="profile_total">== ∑ %1$s U</string>
|
||||
<string name="profile_ins_units_per_hout">U/h</string>
|
||||
<string name="profile_carbs_per_unit">g/U</string>
|
||||
|
@ -1124,12 +1148,18 @@
|
|||
<string name="dexcom_lognssensorchange_summary">Criar evento \"Mudança de Sensor\" automaticamente no NS aquando do início do sensor</string>
|
||||
<string name="tomato">Tomato (MiaoMiao)</string>
|
||||
<string name="tomato_short">Tomato</string>
|
||||
<string name="dst_in_24h_warning">Horário de Verão em 24h ou menos</string>
|
||||
<string name="dst_loop_disabled_warning">Horário de Verão a menos de 3 horas - Closed Loop desligado</string>
|
||||
<string name="storage">restrição de armazenamento interno</string>
|
||||
<string name="diskfull">Liberte pelo menos %1$d MB do armazenamento interno! Loop desativado!</string>
|
||||
<string name="wrongformat">Formato incorrecto</string>
|
||||
<string name="sms_wrongcode">Código errado. Comando cancelado.</string>
|
||||
<string name="notconfigured">Não configurado</string>
|
||||
<string name="profileswitchcreated">Troca de perfil criada</string>
|
||||
<string name="versionChecker">Verificador de Versão</string>
|
||||
<string name="old_version">versão antiga</string>
|
||||
<string name="very_old_version">versão muito antiga</string>
|
||||
<string name="new_version_warning">Nova versão para pelo menos %1$d dias disponíveis! Voltar para o LGS após 60 dias, o loop será desativado após 90 dias</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d dia</item>
|
||||
<item quantity="other">%1$d dias</item>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<string name="nav_resetdb">Resetează bazele de date</string>
|
||||
<string name="reset_db_confirm">Sigur resetați bazele de date?</string>
|
||||
<string name="nav_exit">Ieșire</string>
|
||||
<string name="danar_useextended_title">Folosiți bolusuri extinse pentru >200%%</string>
|
||||
<string name="danar_bt_name_title">Dispozitive bluetooth DanaR</string>
|
||||
<string name="ns_sync_use_absolute_title">Folosește întotdeauna valori absolute ale bazalei</string>
|
||||
<string name="alert_dialog_storage_permission_text">Restartați telefonul sau reporniți aplicația AndroidAPS din System Settings \naltfel AndroidAPS nu va putea face loguri (importante pentru verificarea corectitudinii funcționării algoritmilor)!</string>
|
||||
|
@ -53,6 +54,7 @@
|
|||
<string name="description_wear">Monitorizează și controlează aplicația AndroidAPS folosind smartwatchul WearOS.</string>
|
||||
<string name="description_xdrip_status_line">Afișează informații privind starea buclei pe watchface-ul xDrip+.</string>
|
||||
<string name="description_sms_communicator">Controlare de la distanță a AndroidAPS folosind comenzi date prin SMS.</string>
|
||||
<string name="objectives_button_back">Înapoi</string>
|
||||
<string name="objectives_button_start">Start</string>
|
||||
<string name="objectives_button_verify">Verifică</string>
|
||||
<string name="nsprofileview_units_label">Unități</string>
|
||||
|
@ -145,8 +147,8 @@
|
|||
<string name="constraints_violation">Încălcare a unei limite</string>
|
||||
<string name="treatmentdeliveryerror">Eroare la livrarea bolusului</string>
|
||||
<string name="tempbasaldeliveryerror">Eroare la setare bazală temporară</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valoare bazală [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = curent)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valoare bazală [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = curent)</string>
|
||||
<string name="setbasalquestion">Acceptă noua bazală temporară:</string>
|
||||
<string name="overview_treatment_label">Tratament</string>
|
||||
<string name="overview_calculator_label">Calculator</string>
|
||||
|
@ -246,7 +248,7 @@
|
|||
<string name="danar_iob_label">IOB din pompă</string>
|
||||
<string name="danar_dailyunits">Unități zilnic</string>
|
||||
<string name="pump_lastbolus_label">Ultimul bolus</string>
|
||||
<string name="hoursago">%.1f o în urmă</string>
|
||||
<string name="hoursago">%1$.1f o în urmă</string>
|
||||
<string name="danar_invalidinput">Date de intrare incorecte</string>
|
||||
<string name="danar_valuenotsetproperly">Valoare setată incorect</string>
|
||||
<string name="reloadprofile">Reîncarcă profilul</string>
|
||||
|
@ -264,6 +266,10 @@
|
|||
<string name="smscommunicator_bolusreplywithcode">Pentru a livra un bolus de %1$.2fU răspundeți cu codul %2$s</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">Pentru a trimite calibrarea cu %1$.2f răspundeți cu codul %2$s</string>
|
||||
<string name="smscommunicator_bolusfailed">Bolusare eșuată</string>
|
||||
<string name="bolusdelivered">Bolusul de %1$.2fU a fost livrat cu succes</string>
|
||||
<string name="bolusrequested">Se va livra un bolus de %1$.2fU</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolusul de %1$.2fU a fost livrat cu succes</string>
|
||||
<string name="bolusdelivering">Se livrează %1$.2fU</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Permite comenzi de la distanță, prin SMS</string>
|
||||
<string name="glucosetype_finger">Deget</string>
|
||||
<string name="glucosetype_sensor">Senzor</string>
|
||||
|
@ -308,6 +314,7 @@
|
|||
<string name="overview_bolusprogress_stop">Stop</string>
|
||||
<string name="overview_bolusprogress_stoppressed">STOP APĂSAT</string>
|
||||
<string name="waitingforpump">Se așteaptă pompa</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Se va livra un bolus de %1$.2fU</string>
|
||||
<string name="objectives_0_objective">Se stabilesc vizualizările și monitorizarea și se analizează bazalele și valorile ratelor</string>
|
||||
<string name="objectives_0_gate">Verificați că vedeți glicemia în Nightscout și că datele despre insulină date de pompă sunt înregistrate în site</string>
|
||||
<string name="objectives_1_objective">Pornire în mod buclă deschisă</string>
|
||||
|
@ -330,12 +337,26 @@
|
|||
<string name="smscommunicator_loopisdisabled">Bucla este dezactivată</string>
|
||||
<string name="smscommunicator_loopisenabled">Bucla este activată</string>
|
||||
<string name="valuelimitedto">%1$.2f este limitată la %2$.2f</string>
|
||||
<string name="valueoutofrange">Valoarea %1$s este mai mare decât limita stabilită</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">Comanda de la distanță nu este permisă</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Bolus de la distanță nu este disponibil. Încearcă din nou mai târziu.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">Pentru a iniția bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">Pentru a schimba profilul în %1$s %2$d%% trimiteți codul %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">Pentru a stabili bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Pentru a iniția bazala de %1$d%% pentru %2$d min trimiteți codul %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Pentru suspendarea buclei pentru %1$d minute trimiteți codul %2$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Bazala temporară %1$.2fU/h pentru %2$d minute a fost trimisă cu succes</string>
|
||||
<string name="smscommunicator_extendedset">Bolusul extins de %1$.2fU pentru %2$d min a fost inițiat</string>
|
||||
<string name="smscommunicator_tempbasalset_percent">Bazala temporară %1$d% pentru %2$d minute a fost stabilită cu succes</string>
|
||||
<string name="smscommunicator_tempbasalfailed">Trimiterea bazalei temporare a eșuat</string>
|
||||
<string name="smscommunicator_extendedfailed">Pornirea bolusului extins a eșuat</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">Pentru oprirea bazalei temporare, răspundeți cu codul %1$s</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">Pentru oprirea bolusului extins, răspundeți cu codul %1$s</string>
|
||||
<string name="smscommunicator_tempbasalcanceled">Bazala temporară a fost anulată</string>
|
||||
<string name="smscommunicator_extendedcanceled">Bolus extins anulat</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">Renunțarea la bazala temporară a eșuat</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Anularea bolusului extins a eșuat</string>
|
||||
<string name="smscommunicator_unknowncommand">Comandă necunoscută sau răspuns greșit</string>
|
||||
<string name="quickwizard">AsistentRapid</string>
|
||||
<string name="quickwizardsettings">Setări AsistentRapid</string>
|
||||
<string name="overview_editquickwizard_buttontext">Text buton:</string>
|
||||
|
@ -443,6 +464,7 @@
|
|||
<string name="profile">Profil</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier_summary">Valoare implicită: 3\nAceasta este o setare de critică de securitate a OpenAPS. Asta înseamnă că se limitează bazala lade 3x valoarea maximă a bazalelor tale.Cel mai probabil nu veți schimba această valoare, dar trebuie să țineți cont de ce se discută despre “3x max zilnic; 4x curent” ca valori de siguranță.</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">Valoare implicită: 4\nAceasta este cealaltă jumătate a cheii de siguranță a OpenAPS și cealaltă jumătate a \"3x max zilnic; 4x curent\" al setărilor de siguranță.Aceasta înseamnă că bazala dumneavoastră, indiferent de bazala maximă configurată în pompă, nu poate fi mai mare de acest număr înmulțit cu nivelul curent al bazalei active. Această limitare este impusă pentru a evita posibilitatea de a intra pe un teritoriu periculos prin setarea unei bazale maxime excesiv de mari înainte de a înțelege funcționarea algoritmului. Din nou, valoarea implictă este 4x; majoritatea oamenilor nu vor trebui să ajusteze această valoare și vor modifica, mai degrabă, alte valori dacă vor simți că această valoare le stă în cale.</string>
|
||||
<string name="openapsama_autosens_max_summary">Valoare implicită: 1.2\nAceasta este valoarea limită de multiplicare pentru autosens (și pentru autotune, în curând) pentru a seta o limită maximă de 20%% din cât de mare poate fi raportul autosens, care, la rândul ei, determină cât de mult poate autosens să modifice bazalele, cât de jos poate modifica ISF și cât de jos poate pune ținta glicemiei.</string>
|
||||
<string name="openapsama_autosens_min_summary">Valoare implicită: 0.7\nCealaltă parte a limitelor autosens, care limitează cât de jos poate ajusta bazalele și cât de mult poate mări ISF și țintele de glicemie.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens ajustează țintele la</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Valoare implicită: adevărat\nAceasta se folosește pentru a permite autosens să ajusteze țintele de glicemie, pe lângă modificările asupra ISF și bazalelor.</string>
|
||||
|
@ -455,6 +477,7 @@
|
|||
<string name="error_phone_not_valid">Numărul de telefon este invalid</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Număr de telefon SMS invalid</string>
|
||||
<string name="overview_calibration">Calibrare</string>
|
||||
<string name="send_calibration">Trimite calibrarea %1$.1f către xDrip?</string>
|
||||
<string name="xdripnotinstalled">xDrip+ nu este instalat.</string>
|
||||
<string name="calibrationsent">Calibrare trimisă către xDrip</string>
|
||||
<string name="smscommunicator_calibrationsent">Calibrare trimisă. Recepționarea trebuie să fie activată și în xDrip.</string>
|
||||
|
@ -505,7 +528,7 @@
|
|||
<string name="resistantadult">Adult rezistent la insulină</string>
|
||||
<string name="patientage_summary">Vă rog să selectați vârsta pacientului în vederea stabilirii valorilor maxime admise de siguranță</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s necesită excluderea din lista de optimizare a bateriei pentru funcționare corespunzătoare</string>
|
||||
<string name="needwhitelisting">%1$s necesită excluderea din lista de optimizare a bateriei pentru o funcționare corespunzătoare</string>
|
||||
<string name="loopsuspended">Buclă suspendată</string>
|
||||
<string name="loopsuspendedfor">Suspendat (%1$d min)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d min)</string>
|
||||
|
@ -541,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Activați indicatori pentru CAGE, IAGE, SAGE, nivel baterie și rezervor pe ecranul principal.</string>
|
||||
<string name="statuslights_res_warning">Pragul de avertisment pentru insulina din rezervor [U]</string>
|
||||
<string name="statuslights_res_critical">Pragul critic al nivelului insulinei în rezervor [U]</string>
|
||||
<string name="statuslights_bat_warning">Pragul de avertizare nivel baterie [%]</string>
|
||||
<string name="statuslights_bat_critical">Pragul critic al nivelului baterie [%]</string>
|
||||
<string name="statuslights_bat_warning">Pragul de avertizare nivel baterie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Pragul critic al nivelului baterie [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -595,6 +618,7 @@
|
|||
<string name="absorptionsettings_title">Setări absorbție</string>
|
||||
<string name="absorption_maxtime_title">Timp maxim absorbție masă [o]</string>
|
||||
<string name="absorption_maxtime_summary">Timp în ore la care se presupune că toți carbohidrații sunt absorbiți</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Afișati bolusul extins ca %%</string>
|
||||
<string name="careportal_sensorage_label_short">VS</string>
|
||||
<string name="careportal_insulinage_label_short">VI</string>
|
||||
<string name="careportal_canulaage_label_short">VC</string>
|
||||
|
@ -707,6 +731,8 @@
|
|||
<string name="dexcomg5_xdripupload_title">Trimite date glicemie la xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">Selectați 640g/Eversense ca sursă de date în xDrip+</string>
|
||||
<string name="nsclientbg">Glicemie NSClient</string>
|
||||
<string name="minimalbasalvaluereplaced">Valoarea bazalei a fost înlocuită cu valoarea minimă posibilă: %1$s</string>
|
||||
<string name="maximumbasalvaluereplaced">Valoarea bazalei a fost înlocuită cu valoarea maximă posibilă: %1$s</string>
|
||||
<string name="overview_editquickwizard_usebg">Calcul glicemie</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Calcul IOB bolus</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Calcul IOB bazală</string>
|
||||
|
@ -724,6 +750,8 @@
|
|||
<string name="closedmodeenabled">Mod buclă închisă activat</string>
|
||||
<string name="maxiobset">IOB maxim configurat corect</string>
|
||||
<string name="hasbgdata">Glicemie disponibilă din sursa selectată</string>
|
||||
<string name="basalprofilenotaligned">Valori bazale nesincronizate cu ora: %1$s</string>
|
||||
<string name="zerovalueinprofile">Profil invalid: %1$s</string>
|
||||
<string name="combo_programming_bolus">Se programează pompa pentru livrare bolus</string>
|
||||
<string name="combo_refresh">Reîncarcă</string>
|
||||
<string name="combo_pump_state_label">Stare</string>
|
||||
|
@ -736,7 +764,7 @@
|
|||
<string name="combo_pump_state_running">Rulează</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Se oprește TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Se setează TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusare (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusare (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Reîncărcare</string>
|
||||
<string name="combo_pump_unsupported_operation">Operațiunea nu este suportată de pompă</string>
|
||||
<string name="combo_low_suspend_forced_notification">Folosire nesigură: un bolus extins sau multiwave este activ. Modul buclă este setat să funcționeze în low-suspend pentru 6 ore. Doar bolusurile normale sunt posibile.</string>
|
||||
|
@ -1059,11 +1087,13 @@
|
|||
<string name="mute_alert">Liniște</string>
|
||||
<string name="pump_alert">Alertă a pompei</string>
|
||||
<string name="log_site_changes">Înregistrează schimbările locului de inserție</string>
|
||||
<string name="log_reservoir_changes">Jurnal al schimbărilor rezervorului</string>
|
||||
<string name="log_tube_changes">Înregistrează schimbările canulei</string>
|
||||
<string name="log_battery_changes">Înregistrează schimbările bateriei</string>
|
||||
<string name="log_operating_mode_changes">Înregistrează schimbările modului de operare</string>
|
||||
<string name="log_alerts">Înregistrează alertele</string>
|
||||
<string name="enable_tbr_emulation">Activează emularea RBT</string>
|
||||
<string name="enable_tbr_emulation_summary">Folosește bolus extins în locul RBT pentru a trece de limita de 250%%</string>
|
||||
<string name="disconnect_delay">Întârziere a deconectării [s]</string>
|
||||
<string name="serial_number">Număr de serie</string>
|
||||
<string name="release_software_version">Versiunea de software</string>
|
||||
|
@ -1078,6 +1108,58 @@
|
|||
<string name="delete_pairing">Șterge asocierea</string>
|
||||
<string name="pairing_information">Informații despre asociere</string>
|
||||
<string name="refreh_status">Reîmprospătare stare</string>
|
||||
<string name="start_pump">Porniți pompa</string>
|
||||
<string name="stop_pump">Opriți pompa</string>
|
||||
<string name="operating_mode">Modul de funcționare</string>
|
||||
<string name="insight_status">Stare</string>
|
||||
<string name="tdd_bolus">Bolus TDD</string>
|
||||
<string name="tdd_basal">Bazală TDD</string>
|
||||
<string name="tdd_total">Total TDD</string>
|
||||
<string name="recovering">Se recuperează...</string>
|
||||
<string name="not_paired">Nu există asociere</string>
|
||||
<string name="last_connected">Ultima conexiune</string>
|
||||
<string name="started">Pornit</string>
|
||||
<string name="stopped">Oprit</string>
|
||||
<string name="tbr_formatter">%1$d%% pentru %2$d / %3$d min</string>
|
||||
<string name="extended_bolus">Bolus extins</string>
|
||||
<string name="multiwave_bolus">Bolus multiwave</string>
|
||||
<string name="eb_formatter">%1$.2f / %2$.2f U pentru %3$d min</string>
|
||||
<string name="enable_tbr_over_notification">Permiteți notificarea de terminare RBT\n(setare a pompei)</string>
|
||||
<string name="disable_tbr_over_notification">Nu permiteți notificarea terminării RBT\n(setare a pompei)</string>
|
||||
<string name="refresh">Actualizează</string>
|
||||
<string name="description_pump_insight_local">Integrare pentru pompele Accu-Chek Insight</string>
|
||||
<string name="not_inserted">Nu este introdus</string>
|
||||
<string name="short_status_last_connected">Ultima conexiune: acum %1$d min</string>
|
||||
<string name="short_status_tbr">TBR: %1$d%% pentru %2$d / %3$d min</string>
|
||||
<string name="short_status_extended">Extins: %1$.2f / %2$.2f U pentru %3$d min</string>
|
||||
<string name="short_status_multiwave">Multiwave: %1$.2f / %2$.2f U pentru %3$d min</string>
|
||||
<string name="short_status_tdd">TDD: %1$.2f</string>
|
||||
<string name="short_status_reservoir">Rzvr.: %1$.2fU</string>
|
||||
<string name="short_status_battery">Bat.: %1$d%%</string>
|
||||
<string name="max_recovery_duration">Timpul maxim de restabilire [s]</string>
|
||||
<string name="min_recovery_duration">Timpul minim de restabilire [s]</string>
|
||||
<string name="recovery_duration">Durata restabilirii</string>
|
||||
<string name="timeout_during_handshake">Durată timp expirat pe timpul negocierii - resetare bluetooth</string>
|
||||
<string name="profile_total">== ∑ %1$s U</string>
|
||||
<string name="profile_ins_units_per_hout">U/h</string>
|
||||
<string name="profile_carbs_per_unit">g/U</string>
|
||||
<string name="profile_per_unit">/U</string>
|
||||
<string name="dexcom_lognssensorchange_title">Înregistrează schimbarea senzorului în NS</string>
|
||||
<string name="dexcom_lognssensorchange_summary">Crează eveniment ”Schimbare Senzor” în NS la pornirea senzorului</string>
|
||||
<string name="tomato">Tomato (MiaoMiao)</string>
|
||||
<string name="tomato_short">Tomato</string>
|
||||
<string name="dst_in_24h_warning">Schimbare oră vară/iarnă în mai puțin de 24h</string>
|
||||
<string name="dst_loop_disabled_warning">Schimbare oră vară/iarnă în mai puțin de 3 ore - buclă dezactivată</string>
|
||||
<string name="storage">restricție de stocare internă</string>
|
||||
<string name="diskfull">Eliberați cel puțin %1$d MB din spațiunl de stocare al telefonlui! Buclă dezactivată!</string>
|
||||
<string name="wrongformat">Format greșit</string>
|
||||
<string name="sms_wrongcode">Cod greșit. Comandă anulată.</string>
|
||||
<string name="notconfigured">Nu este configurat</string>
|
||||
<string name="profileswitchcreated">Schimbare de profil creată</string>
|
||||
<string name="versionChecker">Verificator versiune</string>
|
||||
<string name="old_version">versiune veche</string>
|
||||
<string name="very_old_version">versiune foarte veche</string>
|
||||
<string name="new_version_warning">Noua versiune este disponibilă de cel puțin %1$d zile! Revenire la LGS după 60 zile, bucla va fi dezactivată după 90 zile</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d zi</item>
|
||||
<item quantity="few">%1$d zi</item>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<resources>
|
||||
<string name="treatmentssafety_title">Безопасность назначений</string>
|
||||
<string name="treatmentssafety_title">Безопасность терапии</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">макс разрешенные углеводы (г)</string>
|
||||
<string name="nav_preferences">опции</string>
|
||||
<string name="nav_refreshtreatments">синхронисировать назначения с NS</string>
|
||||
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
|
||||
<string name="nav_resetdb">обнулить базы</string>
|
||||
<string name="reset_db_confirm">Вы действительно хотите обнулить базы данных?</string>
|
||||
<string name="nav_exit">Выход</string>
|
||||
|
@ -116,7 +116,7 @@
|
|||
<string name="nsprofile">профиль NS</string>
|
||||
<string name="simpleprofile">простой профиль</string>
|
||||
<string name="tempbasal">ВремБазал</string>
|
||||
<string name="treatments">назначения</string>
|
||||
<string name="treatments">Терапия</string>
|
||||
<string name="virtualpump">виртуальная помпа</string>
|
||||
<string name="careportal">Портал лечения / назначений</string>
|
||||
<string name="configbuilder_pump">помпа</string>
|
||||
|
@ -147,14 +147,14 @@
|
|||
<string name="constraints_violation">ограничение нарушено</string>
|
||||
<string name="treatmentdeliveryerror">Ошибка подачи болюса</string>
|
||||
<string name="tempbasaldeliveryerror">Ошибка подачи врем базала</string>
|
||||
<string name="overview_newtempbasal_basalpercent">величина базала (%)</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = текущий)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Величина базала [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = текущее)</string>
|
||||
<string name="setbasalquestion">принять новый врем базал:</string>
|
||||
<string name="overview_treatment_label">болюс</string>
|
||||
<string name="overview_calculator_label">калькулятор</string>
|
||||
<string name="constraintapllied">применено ограничение!</string>
|
||||
<string name="confirmation">подтверждение</string>
|
||||
<string name="entertreatmentquestion">введите новое назначение</string>
|
||||
<string name="entertreatmentquestion">Ввести новое назначение:</string>
|
||||
<string name="bolus">болюс</string>
|
||||
<string name="sms_bolus">болюс:</string>
|
||||
<string name="basal">базал</string>
|
||||
|
@ -248,7 +248,7 @@
|
|||
<string name="danar_iob_label">активный инсулин на помпе</string>
|
||||
<string name="danar_dailyunits">суточные единицы</string>
|
||||
<string name="pump_lastbolus_label">предыдущий болюс</string>
|
||||
<string name="hoursago">%.1fч назад</string>
|
||||
<string name="hoursago">%1$.1fч назад</string>
|
||||
<string name="danar_invalidinput">введенные данные неверны</string>
|
||||
<string name="danar_valuenotsetproperly">величина не задана должным образом</string>
|
||||
<string name="reloadprofile">обновить профиль</string>
|
||||
|
@ -528,7 +528,7 @@
|
|||
<string name="resistantadult">Инсулинорезистентный взрослый</string>
|
||||
<string name="patientage_summary">выберите возраст пациента для определения ограничителей безопасности</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s необходимо включить в белый список для корректной работы</string>
|
||||
<string name="needwhitelisting">%1$s необходимо включить в белый список оптимизации батареи для корректной работы</string>
|
||||
<string name="loopsuspended">ЗЦ остановлен</string>
|
||||
<string name="loopsuspendedfor">Остановлен на(%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Суперболюс(%1$d m)</string>
|
||||
|
@ -564,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Включить на главном экране индикаторы отработанного времени для канюли помпы, инсулина, сенсора, резервуара, а также показать уровень аккумулятора.</string>
|
||||
<string name="statuslights_res_warning">Порог уровня наполненности резервуара для оповещения [ед.]</string>
|
||||
<string name="statuslights_res_critical">Порог критического уровня наполненности резервуара [U]</string>
|
||||
<string name="statuslights_bat_warning">Порог предупреждения о разрядке батареи [%]</string>
|
||||
<string name="statuslights_bat_critical">Порог предупреждения о критическом уровне разрядки батареи [%]</string>
|
||||
<string name="statuslights_bat_warning">Порог предупреждения о разрядке батареи [%%]</string>
|
||||
<string name="statuslights_bat_critical">Порог предупреждения о критическом уровне разрядки батареи [%%]</string>
|
||||
<string name="iob">IOB акт инс</string>
|
||||
<string name="cob">акт углев</string>
|
||||
<string name="virtualpump_firmware_label">прошивка</string>
|
||||
|
@ -690,7 +690,7 @@
|
|||
<string name="gettingpumptime">Получение времени помпы</string>
|
||||
<string name="reuse">повторное использование</string>
|
||||
<string name="wearcontrol_title">Контроль с часов</string>
|
||||
<string name="wearcontrol_summary">Поставить временные цели и ввести назначения с часов.</string>
|
||||
<string name="wearcontrol_summary">Ставить временные цели и вводить назначения с часов.</string>
|
||||
<string name="connectiontimedout">Истекло время ожидания соединения</string>
|
||||
<string name="food">Еда</string>
|
||||
<string name="shortgramm">грамм</string>
|
||||
|
@ -764,7 +764,7 @@
|
|||
<string name="combo_pump_state_running">Выполняется</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Отмена врем базала TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Установка врем базала TBR на (%1$d%% / %2$d мин)</string>
|
||||
<string name="combo_pump_action_bolusing">Введение болюса (%.1f ед)</string>
|
||||
<string name="combo_pump_action_bolusing">Введение болюса (%1$.1f ед)</string>
|
||||
<string name="combo_pump_action_refreshing">Обновление</string>
|
||||
<string name="combo_pump_unsupported_operation">Запрашиваемая операция не поддерживается помпой</string>
|
||||
<string name="combo_low_suspend_forced_notification">Небезопасное использование: Удлиненный или многоволновой болюс активны. Режим цикла Loop установлен на приостановку при низкой гликемии только на 6 часов. В режиме loop поддерживаются только обычные болюсы</string>
|
||||
|
@ -1044,7 +1044,7 @@ Context | Edit Context</string>
|
|||
<string name="careportal_removestartedevents">AndroidAPS перезапущен</string>
|
||||
<string name="storedsettingsfound">Найдены сохраненные параметры</string>
|
||||
<string name="allow_hardware_pump_text">Внимание: Если вы активируете подключение к невиртуальной помпе, AndroidAPS скопирует настройки базала в профиль помпы, перезаписывая существующие настройки, хранящиеся в ней. Убедитесь, что настройки базала в AndroidAPS корректны. Если вы не уверены или не хотите перезаписать настройки базала на помпу, нажмите отменить и повторите подключение в другое время.</string>
|
||||
<string name="error_adding_treatment_title">Данные назначений неполные</string>
|
||||
<string name="error_adding_treatment_title">Данные терапии неполные</string>
|
||||
<string name="maintenance_settings">Параметры обслуживания</string>
|
||||
<string name="maintenance_email">Адрес электронной почты</string>
|
||||
<string name="invalid_email_message">Недопустимый e-mail</string>
|
||||
|
@ -1158,4 +1158,8 @@ Context | Edit Context</string>
|
|||
<string name="sms_wrongcode">Неверный код. Команда отменена.</string>
|
||||
<string name="notconfigured">Не сконфигурировано</string>
|
||||
<string name="profileswitchcreated">Переключатель профиля создан</string>
|
||||
<string name="versionChecker">Проверка версии</string>
|
||||
<string name="old_version">старая версия</string>
|
||||
<string name="very_old_version">очень старая версия</string>
|
||||
<string name="new_version_warning">Новая версия доступна не менее %1$d дней! После 60 дней переход на остановку при низкой гликемии LGS, замкнутый цикл будет отключен через 90 дней</string>
|
||||
</resources>
|
||||
|
|
|
@ -147,8 +147,8 @@
|
|||
<string name="constraints_violation">Mimo povolený rozsah</string>
|
||||
<string name="treatmentdeliveryerror">Chyba podania bolusu</string>
|
||||
<string name="tempbasaldeliveryerror">Chyba podávania dočasného bazálu</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Hodnota bazálu [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = aktuálny)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Hodnota bazálu [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = aktuálny)</string>
|
||||
<string name="setbasalquestion">Povoliť nový dočasný bazál:</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Kalkulačka</string>
|
||||
|
@ -248,7 +248,7 @@
|
|||
<string name="danar_iob_label">IOB z pumpy</string>
|
||||
<string name="danar_dailyunits">Jednotiek za deň</string>
|
||||
<string name="pump_lastbolus_label">Posledný bolus</string>
|
||||
<string name="hoursago">pred %.1fh</string>
|
||||
<string name="hoursago">pred %1$.1fh</string>
|
||||
<string name="danar_invalidinput">Chybné vstupné dáta</string>
|
||||
<string name="danar_valuenotsetproperly">Hodnota nenastavená správne</string>
|
||||
<string name="reloadprofile">Obnoviť profil</string>
|
||||
|
@ -528,7 +528,7 @@
|
|||
<string name="resistantadult">Dospelý z nízkou citlivosťou</string>
|
||||
<string name="patientage_summary">Vyberte vek pacienta pre nastavenie bezpečnostných limitov</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s potrebuje vypnúť optimalizáciu baterie pre optimálny výkon</string>
|
||||
<string name="needwhitelisting">%1$s potrebuje vypnúť optimalizáciu batérie pre optimálny výkon</string>
|
||||
<string name="loopsuspended">Uzavretý okruh pozastavený</string>
|
||||
<string name="loopsuspendedfor">Pozastavený (%1$d min)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -564,8 +564,8 @@
|
|||
<string name="show_statuslights_summary">Povoliť indikátory stavu pre CAGE, IAGE, SAGE, Reservoir a Battery Level na domovskej obrazovke.</string>
|
||||
<string name="statuslights_res_warning">Prah upozornenia na úroveň hladiny zásobníka [U]</string>
|
||||
<string name="statuslights_res_critical">Prah kritickej úrovne hladiny zásobníka [U]</string>
|
||||
<string name="statuslights_bat_warning">Prah upozornenia na úroveň batérie [%]</string>
|
||||
<string name="statuslights_bat_critical">Prah kritickej úrovne batérie [%]</string>
|
||||
<string name="statuslights_bat_warning">Prah upozornenia na úroveň batérie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Prah kritickej úrovne batérie [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -764,7 +764,7 @@
|
|||
<string name="combo_pump_state_running">V prevádzke</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Rušenie dočasného bazálu</string>
|
||||
<string name="combo_pump_action_setting_tbr">Nastavovanie doč. bazálu (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Podávanie bolusu (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Podávanie bolusu (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Aktualizuje sa stav</string>
|
||||
<string name="combo_pump_unsupported_operation">Požadovaná operácia nie je pumpou podporovaná</string>
|
||||
<string name="combo_low_suspend_forced_notification">Nebezpečné použitie: predĺžený alebo multiwave bolus je aktívny. Pumpa bola vypnutá len na 6 hodín. Povolené sú iba normálne bolusy.</string>
|
||||
|
@ -1156,6 +1156,10 @@
|
|||
<string name="sms_wrongcode">Nesprávný kód. Príkaz zrušený.</string>
|
||||
<string name="notconfigured">Nie je nakonfigurované</string>
|
||||
<string name="profileswitchcreated">Prepnutie profilu vytvorené</string>
|
||||
<string name="versionChecker">Kontrola verzie</string>
|
||||
<string name="old_version">stará verzia</string>
|
||||
<string name="very_old_version">veľmi stará verzia</string>
|
||||
<string name="new_version_warning">Nová verzia dostupná najmenej %1$d dní! Návrat k liečbe inzulínovou pumpou s podporou senzora po 60 dňoch, okruh bude deaktivovaný po 90 dňoch.</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d deň</item>
|
||||
<item quantity="few">%1$d dní</item>
|
||||
|
|
|
@ -148,8 +148,6 @@ Eversense-appen.</string>
|
|||
<string name="constraints_violation">Begränsning nådd</string>
|
||||
<string name="treatmentdeliveryerror">Fel vid bolusleverans</string>
|
||||
<string name="tempbasaldeliveryerror">Fel vid justering av temp basal</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = profilens värde)</string>
|
||||
<string name="setbasalquestion">Acceptera ny temp basal:</string>
|
||||
<string name="overview_treatment_label">Behandling</string>
|
||||
<string name="overview_calculator_label">Kalkylator</string>
|
||||
|
@ -249,7 +247,6 @@ Eversense-appen.</string>
|
|||
<string name="danar_iob_label">Pumpens IOB</string>
|
||||
<string name="danar_dailyunits">Enheter per dag</string>
|
||||
<string name="pump_lastbolus_label">Senaste bolus</string>
|
||||
<string name="hoursago">%.1f tim sedan</string>
|
||||
<string name="danar_invalidinput">Fel på inmatning</string>
|
||||
<string name="danar_valuenotsetproperly">Misslyckades med inställning</string>
|
||||
<string name="reloadprofile">Ladda om profil</string>
|
||||
|
@ -529,7 +526,6 @@ Eversense-appen.</string>
|
|||
<string name="resistantadult">Insulinresistent vuxen</string>
|
||||
<string name="patientage_summary">Vg ange personens ålder för inställningar av gränser</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt</string>
|
||||
<string name="loopsuspended">Loop pausad</string>
|
||||
<string name="loopsuspendedfor">Pausad (%1$d min)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d min)</string>
|
||||
|
@ -565,8 +561,6 @@ Eversense-appen.</string>
|
|||
<string name="show_statuslights_summary">Aktivera statusindikationerna för cage, iage, sage, reservoar och batterinivå på hemskärmen.</string>
|
||||
<string name="statuslights_res_warning">Varningsnivå för reservoar [U]</string>
|
||||
<string name="statuslights_res_critical">Akut varningsnivå för reservoar [U]</string>
|
||||
<string name="statuslights_bat_warning">Varningsnivå för batteri [%]</string>
|
||||
<string name="statuslights_bat_critical">Akut varningsnivå för batteri [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmwareversion</string>
|
||||
|
@ -765,7 +759,6 @@ Eversense-appen.</string>
|
|||
<string name="combo_pump_state_running">Körs</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Avbryter temp basal</string>
|
||||
<string name="combo_pump_action_setting_tbr">Sätter temp basal (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Levererar bolus (%.1f enheter)</string>
|
||||
<string name="combo_pump_action_refreshing">Uppdaterar</string>
|
||||
<string name="combo_pump_unsupported_operation">Önskad åtgärd stöds inte av pumpen</string>
|
||||
<string name="combo_low_suspend_forced_notification">Osäker användning: Förlängd- eller kombibolus är aktiv. Loop mode är satt till att bromsa vid lågt BG i 6 timmar. Endast normala bolusar tillåtna i loopläge.</string>
|
||||
|
|
|
@ -143,8 +143,6 @@
|
|||
<string name="constraints_violation">Kısıtlamalar ihlali</string>
|
||||
<string name="treatmentdeliveryerror">Bolus teslimat hatası</string>
|
||||
<string name="tempbasaldeliveryerror">Geçici Bazal teslimat hatası</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Bazal değeri [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% ( 100% = aktuel)</string>
|
||||
<string name="setbasalquestion">Yeni geçici bazal oranını kabul et:</string>
|
||||
<string name="overview_treatment_label">Tedavi</string>
|
||||
<string name="overview_calculator_label">Hesap makinesi</string>
|
||||
|
@ -244,7 +242,6 @@
|
|||
<string name="danar_iob_label">IOB(Aktif insülin) pompa</string>
|
||||
<string name="danar_dailyunits">Günlük birimleri</string>
|
||||
<string name="pump_lastbolus_label">Son bolus</string>
|
||||
<string name="hoursago">%.1fs önce</string>
|
||||
<string name="danar_invalidinput">Geçersiz bilgi girişi</string>
|
||||
<string name="danar_valuenotsetproperly">Değer düzgün ayarlanmamış</string>
|
||||
<string name="reloadprofile">Dosyayı yeniden yükle</string>
|
||||
|
@ -503,7 +500,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="resistantadult">Yetişkin İnsülin direnci</string>
|
||||
<string name="patientage_summary">Güvenlik sınırlarını ayarlamak için lütfen hasta yaşını seçiniz</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s, düzgün bir şekilde çalışması için devre dışı bırakılmış pil performans ayarlaması gerektirir</string>
|
||||
<string name="loopsuspended">Döngü durduldu</string>
|
||||
<string name="loopsuspendedfor">Askıya alındı (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -725,7 +721,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="combo_pump_state_running">Çalışıyor</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">TBR (Geçici Bazal Oranı) İptal ediliyor</string>
|
||||
<string name="combo_pump_action_setting_tbr">TBR(Geçici Bazal Oranı) ayarı (%1$d%% / %2$d dak)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%.1f U) teslim ediliyor</string>
|
||||
<string name="combo_pump_action_refreshing">Yenileniyor...</string>
|
||||
<string name="combo_pump_unsupported_operation">İstenen işlem pompası tarafından desteklenmiyor</string>
|
||||
<string name="combo_low_suspend_forced_notification">Güvensiz kullanım: yayım veya çoklu dalgalı (kare dalgalı) boluslar aktiftir. Döngü modu 6 saat içinde ekstra insülin vermeyecektir. Döngü modunda sadece normal boluslar desteklenir</string>
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
<string name="description_wear">使用您的 WearOS 手表监视和控制 AndroidAPS。</string>
|
||||
<string name="description_xdrip_status_line">在 xDrip + 表盘上显示有关闭环的信息。</string>
|
||||
<string name="description_sms_communicator">远程控制 AndroidAPS 使用 SMS 短信命令。</string>
|
||||
<string name="objectives_button_back">返回</string>
|
||||
<string name="objectives_button_start">开始</string>
|
||||
<string name="objectives_button_verify">校验</string>
|
||||
<string name="nsprofileview_units_label">单位</string>
|
||||
|
@ -145,8 +146,6 @@
|
|||
<string name="constraints_violation">违反约束条件</string>
|
||||
<string name="treatmentdeliveryerror">大剂量输注错误</string>
|
||||
<string name="tempbasaldeliveryerror">临时基础输注错误</string>
|
||||
<string name="overview_newtempbasal_basalpercent">基础率数值 [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = 当前)</string>
|
||||
<string name="setbasalquestion">接受新的临时基础率</string>
|
||||
<string name="overview_treatment_label">治疗</string>
|
||||
<string name="overview_calculator_label">计算器</string>
|
||||
|
@ -246,7 +245,6 @@
|
|||
<string name="danar_iob_label">泵 IOB</string>
|
||||
<string name="danar_dailyunits">每日单位数</string>
|
||||
<string name="pump_lastbolus_label">上次大剂量</string>
|
||||
<string name="hoursago">%.1fh 前</string>
|
||||
<string name="danar_invalidinput">无效的输入数据</string>
|
||||
<string name="danar_valuenotsetproperly">数值设定的不正确</string>
|
||||
<string name="reloadprofile">重新加载配置文件</string>
|
||||
|
@ -264,6 +262,10 @@
|
|||
<string name="smscommunicator_bolusreplywithcode">要输注大剂量胰岛素%1$.2fU 回复如下代码 %2$s</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">要发送校准值 %1$.2f 回复如下代码 %2$s</string>
|
||||
<string name="smscommunicator_bolusfailed">大剂量输注失败</string>
|
||||
<string name="bolusdelivered">已经成功输注大剂量%1$.2fU</string>
|
||||
<string name="bolusrequested">将要输注 %1$.2fU</string>
|
||||
<string name="smscommunicator_bolusdelivered">已经成功输注大剂量%1$.2fU</string>
|
||||
<string name="bolusdelivering">正在输注 %1$.2fU</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">通过SMS短信允许远程命令</string>
|
||||
<string name="glucosetype_finger">手指</string>
|
||||
<string name="glucosetype_sensor">传感器</string>
|
||||
|
@ -331,11 +333,24 @@
|
|||
<string name="smscommunicator_loopisenabled">闭环被启用</string>
|
||||
<string name="valuelimitedto">%1$.2f 超过 %2$.2f的限制</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">远程命令没有被允许</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">远程大剂量不可用。请稍后再试。</string>
|
||||
<string name="smscommunicator_basalreplywithcode">要开始基础率 %1$.2fU/h 持续时间%2$d 分钟,请回复如下代码 %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">要切换配置文件到 %1$s %2$d%% 请回复代码 %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">要开始扩展大剂量 %1$.2fU/h 持续时间%2$d 分钟,请回复如下代码 %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">要开始基础率 %1$d%% 持续时间%2$d 分钟,请回复如下代码 %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">要暂停闭环 %1$d 分钟请回复如下代码 %2$s</string>
|
||||
<string name="smscommunicator_tempbasalset">临时基础率 %1$.2fU/h 持续 %2$d 分钟启用成功了</string>
|
||||
<string name="smscommunicator_extendedset">扩展大剂量 %1$.2fU/h 持续时间 %2$d 分钟已经启用成功了</string>
|
||||
<string name="smscommunicator_tempbasalset_percent">临时基础率 %1$d%% 持续时间 %2$d 分钟 启用成功了</string>
|
||||
<string name="smscommunicator_tempbasalfailed">开始临时基础率失败了</string>
|
||||
<string name="smscommunicator_extendedfailed">开始扩展大剂量失败了</string>
|
||||
<string name="smscommunicator_basalstopreplywithcode">要停止临时基础率,请回复如下代码 %1$s</string>
|
||||
<string name="smscommunicator_extendedstopreplywithcode">要停止扩展大剂量,请回复如下代码 %1$s</string>
|
||||
<string name="smscommunicator_tempbasalcanceled">临时基础率取消了</string>
|
||||
<string name="smscommunicator_extendedcanceled">扩展大剂量已经取消了</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">取消临时基础率失败</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">取消扩展大剂量失败</string>
|
||||
<string name="smscommunicator_unknowncommand">未知的命令或者错误的回复</string>
|
||||
<string name="quickwizard">快速向导</string>
|
||||
<string name="quickwizardsettings">快速向导设置</string>
|
||||
<string name="overview_editquickwizard_buttontext">按钮文本:</string>
|
||||
|
@ -505,7 +520,6 @@
|
|||
<string name="resistantadult">胰岛素抵抗成人</string>
|
||||
<string name="patientage_summary">请选择患者年龄以设置安全限制</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s 需要加入电池优化白名单才能正常运行</string>
|
||||
<string name="loopsuspended">闭环暂停了</string>
|
||||
<string name="loopsuspendedfor">暂停了 (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">超级大剂量 (%1$d m)</string>
|
||||
|
@ -541,8 +555,6 @@
|
|||
<string name="show_statuslights_summary">在主屏幕上启用cage(碳水时间)、iage(胰岛素时间)、sage(探头使用时间)、储药器和电池电量的状态指示灯。</string>
|
||||
<string name="statuslights_res_warning">储药器药量低于阈值[U] 警告</string>
|
||||
<string name="statuslights_res_critical">储药器药量低于阈值[U] 严重警告</string>
|
||||
<string name="statuslights_bat_warning">电池电量低于阈值[%] 警告</string>
|
||||
<string name="statuslights_bat_critical">电池电量低于阈值[%] 严重警告</string>
|
||||
<string name="iob">IOB活性胰岛素</string>
|
||||
<string name="cob">COB活性碳水</string>
|
||||
<string name="virtualpump_firmware_label">固件</string>
|
||||
|
@ -550,6 +562,7 @@
|
|||
<string name="danar_bluetooth_status">蓝牙状态</string>
|
||||
<string name="nav_about">关于</string>
|
||||
<string name="smscommunicator_missingsmspermission">缺少 SMS 短信权限</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">缺少手机状态权限</string>
|
||||
<string name="xdripstatus_settings">xDrip 状态 (手表)</string>
|
||||
<string name="xdripstatus">xDrip 状态线 (手表)</string>
|
||||
<string name="xdripstatus_shortname">xdrip</string>
|
||||
|
@ -735,7 +748,6 @@
|
|||
<string name="combo_pump_state_running">正在运行</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">正在取消临时基础率</string>
|
||||
<string name="combo_pump_action_setting_tbr">正在设置临时基础率 (%1$d%% / %2$d 分钟)</string>
|
||||
<string name="combo_pump_action_bolusing">正在输注大剂量 (%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">正在刷新</string>
|
||||
<string name="combo_pump_unsupported_operation">泵不支持请求的操作</string>
|
||||
<string name="combo_low_suspend_forced_notification">不安全的用法: 扩展大剂量(方波) 或者双波被启用了,闭环只支持常规大剂量, 闭环已经被设置为6个小时的低血糖暂停模式(low-suspend only 6 hours).</string>
|
||||
|
@ -1001,6 +1013,7 @@
|
|||
<string name="nth_objective">%1$d.目标</string>
|
||||
<string name="poctech">Poctech</string>
|
||||
<string name="description_source_poctech">从 Poctech app 接收血糖值。</string>
|
||||
<string name="description_source_tomato">从番茄app(喵喵设备) 接收血糖值</string>
|
||||
<string name="high_temptarget_raises_sensitivity_title">高临时目标增加灵敏度</string>
|
||||
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[当临时目标 >=100 mg/dl (5.5 mmol/l) 时提高灵敏度]]></string>
|
||||
<string name="low_temptarget_lowers_sensitivity_title">低临时目标降低灵敏度</string>
|
||||
|
@ -1057,6 +1070,7 @@
|
|||
<string name="mute_alert">静音</string>
|
||||
<string name="pump_alert">泵警报</string>
|
||||
<string name="log_site_changes">记录位置更换</string>
|
||||
<string name="log_reservoir_changes">记录储药器更换</string>
|
||||
<string name="log_tube_changes">记录管路更换</string>
|
||||
<string name="log_battery_changes">记录电池更换</string>
|
||||
<string name="log_operating_mode_changes">记录操作模式更改</string>
|
||||
|
@ -1100,6 +1114,7 @@
|
|||
<string name="short_status_last_connected">最后一次连接: %1$d 分钟前</string>
|
||||
<string name="short_status_tbr">临时基础率: %1$d%% for %2$d / %3$d 分钟</string>
|
||||
<string name="short_status_extended">扩展: %1$.2f / %2$.2f U 为 %3$d 分钟</string>
|
||||
<string name="short_status_multiwave">多波: %1$.2f / %2$.2f U 持续时间 %3$d 分钟</string>
|
||||
<string name="short_status_tdd">TDD(日输注总量): %1$.2f</string>
|
||||
<string name="short_status_reservoir">Reser.: %1$.2fU</string>
|
||||
<string name="short_status_battery">电池: %1$d%%</string>
|
||||
|
@ -1113,6 +1128,16 @@
|
|||
<string name="profile_per_unit">/U</string>
|
||||
<string name="dexcom_lognssensorchange_title">记录传感器更换至NS服务器</string>
|
||||
<string name="dexcom_lognssensorchange_summary">在传感器启动时在 NS服务器 自动创建事件 \"传感器更改\"</string>
|
||||
<string name="tomato">番茄(喵喵)</string>
|
||||
<string name="tomato_short">番茄</string>
|
||||
<string name="dst_in_24h_warning">在24小时内或更少时间内更夏令时时间</string>
|
||||
<string name="dst_loop_disabled_warning">不到3小时前夏令时时间变化了-已禁用闭环</string>
|
||||
<string name="storage">内部储存空间不足</string>
|
||||
<string name="diskfull">至少 剩余%1$d MB 内部存储!闭环已禁用!</string>
|
||||
<string name="wrongformat">格式错误</string>
|
||||
<string name="sms_wrongcode">错误的代码。命令取消</string>
|
||||
<string name="notconfigured">未配置</string>
|
||||
<string name="profileswitchcreated">配置文件切换已创建</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="other">%1$d 天</item>
|
||||
</plurals>
|
||||
|
|
|
@ -152,8 +152,8 @@
|
|||
<string name="constraints_violation">Constraints violation</string>
|
||||
<string name="treatmentdeliveryerror">Bolus delivery error</string>
|
||||
<string name="tempbasaldeliveryerror">Tempbasal delivery error</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal value [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = current)</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal value [%%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">%% (100%% = current)</string>
|
||||
<string name="setbasalquestion">Accept new temp basal:</string>
|
||||
<string name="overview_treatment_label">Treatment</string>
|
||||
<string name="overview_calculator_label">Calculator</string>
|
||||
|
@ -276,7 +276,7 @@
|
|||
<string name="danar_iob_label">Pump IOB</string>
|
||||
<string name="danar_dailyunits">Daily units</string>
|
||||
<string name="pump_lastbolus_label">Last bolus</string>
|
||||
<string name="hoursago">%.1fh ago</string>
|
||||
<string name="hoursago">%1$.1fh ago</string>
|
||||
<string name="danar_invalidinput">Invalid input data</string>
|
||||
<string name="danar_valuenotsetproperly">Value not set properly</string>
|
||||
<string name="reloadprofile">Reload profile</string>
|
||||
|
@ -582,7 +582,7 @@
|
|||
<string name="patientage_summary">Please select patient age to setup safety limits</string>
|
||||
<string name="key_i_understand" translatable="false">I_understand</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%s needs battery optimalization whitelisting for proper performance</string>
|
||||
<string name="needwhitelisting">%1$s needs battery optimalization whitelisting for proper performance</string>
|
||||
<string name="loopsuspended">Loop suspended</string>
|
||||
<string name="loopsuspendedfor">Suspended (%1$d m)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||
|
@ -624,9 +624,9 @@
|
|||
<string name="key_statuslights_res_critical" translatable="false">key_statuslights_res_critical</string>
|
||||
<string name="statuslights_res_critical">Threshold critical reservoir level [U]</string>
|
||||
<string name="key_statuslights_bat_warning" translatable="false">key_statuslights_bat_warning</string>
|
||||
<string name="statuslights_bat_warning">Threshold warning battery level [%]</string>
|
||||
<string name="statuslights_bat_warning">Threshold warning battery level [%%]</string>
|
||||
<string name="key_statuslights_bat_critical" translatable="false">key_statuslights_bat_critical</string>
|
||||
<string name="statuslights_bat_critical">Threshold critical battery level [%]</string>
|
||||
<string name="statuslights_bat_critical">Threshold critical battery level [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -869,7 +869,7 @@
|
|||
<string name="combo_pump_state_running">Running</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Cancelling TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr">Setting TBR (%1$d%% / %2$d min)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusing (%.1f U)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolusing (%1$.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Refreshing</string>
|
||||
<string name="combo_pump_unsupported_operation">Requested operation not supported by pump</string>
|
||||
<string name="combo_low_suspend_forced_notification">Unsafe usage: extended or multiwave boluses are active. Loop mode has been set to low-suspend only 6 hours. Only normal boluses are supported in loop mode</string>
|
||||
|
@ -1326,6 +1326,14 @@
|
|||
<string name="sms_wrongcode">Wrong code. Command cancelled.</string>
|
||||
<string name="notconfigured">Not configured</string>
|
||||
<string name="profileswitchcreated">Profile switch created</string>
|
||||
<string name="versionChecker">Version Checker</string>
|
||||
<string name="key_last_time_this_version_detected" translatable="false">last_time_this_version_detected</string>
|
||||
<string name="key_last_versionchecker_warning" translatable="false">last_versionchecker_waring</string>
|
||||
<string name="key_last_versionchecker_plugin_warning" translatable="false">last_versionchecker_plugin_waring</string>
|
||||
|
||||
<string name="old_version">old version</string>
|
||||
<string name="very_old_version">very old version</string>
|
||||
<string name="new_version_warning">New version for at least %1$d days available! Fallback to LGS after 60 days, loop will be disabled after 90 days</string>
|
||||
|
||||
<!-- Pump Abstract -->
|
||||
<string name="pump_operation_not_supported_by_pump_driver">Operation not supported by pump and/or driver.</string>
|
||||
|
|
|
@ -282,10 +282,13 @@ public class AAPSMocker {
|
|||
PowerMockito.when(ProfileFunctions.getInstance().getProfileName()).thenReturn(TESTPROFILENAME);
|
||||
}
|
||||
|
||||
public static void mockIobCobCalculatorPlugin() {
|
||||
public static IobCobCalculatorPlugin mockIobCobCalculatorPlugin() {
|
||||
PowerMockito.mockStatic(IobCobCalculatorPlugin.class);
|
||||
IobCobCalculatorPlugin iobCobCalculatorPlugin = PowerMockito.mock(IobCobCalculatorPlugin.class);
|
||||
PowerMockito.when(IobCobCalculatorPlugin.getPlugin()).thenReturn(iobCobCalculatorPlugin);
|
||||
Object dataLock = new Object();
|
||||
PowerMockito.when(iobCobCalculatorPlugin.getDataLock()).thenReturn(dataLock);
|
||||
return iobCobCalculatorPlugin;
|
||||
}
|
||||
|
||||
private static MockedBus bus = new MockedBus();
|
||||
|
|
|
@ -289,7 +289,7 @@ public class ConstraintsCheckerTest {
|
|||
//SafetyPlugin
|
||||
when(ConfigBuilderPlugin.getPlugin().getActivePump()).thenReturn(pump);
|
||||
|
||||
constraintChecker = new ConstraintChecker(mainApp);
|
||||
constraintChecker = new ConstraintChecker();
|
||||
|
||||
safetyPlugin = SafetyPlugin.getPlugin();
|
||||
objectivesPlugin = ObjectivesPlugin.getPlugin();
|
||||
|
|
|
@ -0,0 +1,230 @@
|
|||
package info.nightscout.androidaps.plugins.general.versionChecker
|
||||
|
||||
import com.squareup.otto.Bus
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.logging.L
|
||||
import info.nightscout.androidaps.utils.SP
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentMatchers
|
||||
import org.mockito.Mockito.*
|
||||
import org.powermock.api.mockito.PowerMockito
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest
|
||||
import org.powermock.modules.junit4.PowerMockRunner
|
||||
|
||||
|
||||
@RunWith(PowerMockRunner::class)
|
||||
class VersionCheckerUtilsKtTest {
|
||||
@Test
|
||||
fun findVersionMatchesRegularVersion() {
|
||||
val buildGradle = """blabla
|
||||
| android {
|
||||
| aosenuthoae
|
||||
| }
|
||||
| version = "2.2.2"
|
||||
| appName = "Aaoeu"
|
||||
""".trimMargin()
|
||||
val detectedVersion: String? = buildGradle.byteInputStream().findVersion()
|
||||
assertEquals("2.2.2", detectedVersion)
|
||||
}
|
||||
|
||||
|
||||
// In case we merge a "x.x.x-dev" into master, don't see it as update.
|
||||
@Test
|
||||
fun `should return null on non-digit versions on master`() {
|
||||
val buildGradle = """blabla
|
||||
| android {
|
||||
| aosenuthoae
|
||||
| }
|
||||
| version = "2.2.2-nefarious-underground-mod"
|
||||
| appName = "Aaoeu"
|
||||
""".trimMargin()
|
||||
val detectedVersion: String? = buildGradle.byteInputStream().findVersion()
|
||||
assertEquals(null, detectedVersion)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findVersionMatchesDoesNotMatchErrorResponse() {
|
||||
val buildGradle = """<html><body>Balls! No build.gradle here. Move along</body><html>"""
|
||||
val detectedVersion: String? = buildGradle.byteInputStream().findVersion()
|
||||
assertEquals(null, detectedVersion)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testVersionStrip() {
|
||||
assertEquals("2.2.2", "2.2.2".versionStrip())
|
||||
assertEquals("2.2.2", "2.2.2-dev".versionStrip())
|
||||
assertEquals("2.2.2", "2.2.2dev".versionStrip())
|
||||
assertEquals("2.2.2", """"2.2.2"""".versionStrip())
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update1`() {
|
||||
val bus = prepareBus()
|
||||
|
||||
compareWithCurrentVersion(newVersion = "2.2.3", currentVersion = "2.2.1")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update2`() {
|
||||
val bus = prepareBus()
|
||||
|
||||
compareWithCurrentVersion(newVersion = "2.2.3", currentVersion = "2.2.1-dev")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update3`() {
|
||||
val bus = prepareBus()
|
||||
|
||||
compareWithCurrentVersion(newVersion = "2.2.3", currentVersion = "2.1")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update4`() {
|
||||
val bus = prepareBus()
|
||||
|
||||
compareWithCurrentVersion(newVersion = "2.2", currentVersion = "2.1.1")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update5`() {
|
||||
val bus = prepareBus()
|
||||
compareWithCurrentVersion(newVersion = "2.2.1", currentVersion = "2.2-dev")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `should find update6`() {
|
||||
val bus = prepareBus()
|
||||
compareWithCurrentVersion(newVersion = "2.2.1", currentVersion = "2.2dev")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `find same version`() {
|
||||
val buildGradle = """blabla
|
||||
| android {
|
||||
| aosenuthoae
|
||||
| }
|
||||
| version = "2.2.2"
|
||||
| appName = "Aaoeu"
|
||||
""".trimMargin()
|
||||
val bus = prepareBus()
|
||||
compareWithCurrentVersion(buildGradle.byteInputStream().findVersion(), currentVersion = "2.2.2")
|
||||
|
||||
verify(bus, times(0)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_time_this_version_detected), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@PrepareForTest(MainApp::class, L::class, SP::class)
|
||||
fun `find higher version`() {
|
||||
val buildGradle = """blabla
|
||||
| android {
|
||||
| aosenuthoae
|
||||
| }
|
||||
| version = "3.0"
|
||||
| appName = "Aaoeu"
|
||||
""".trimMargin()
|
||||
val bus = prepareBus()
|
||||
compareWithCurrentVersion(buildGradle.byteInputStream().findVersion(), currentVersion = "2.2.2")
|
||||
|
||||
verify(bus, times(1)).post(any())
|
||||
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.getLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyStatic(SP::class.java, times(1))
|
||||
SP.putLong(eq(R.string.key_last_versionchecker_warning), ArgumentMatchers.anyLong())
|
||||
PowerMockito.verifyNoMoreInteractions(SP::class.java)
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@PrepareForTest(System::class)
|
||||
fun `set time`() {
|
||||
PowerMockito.spy(System::class.java)
|
||||
PowerMockito.`when`(System.currentTimeMillis()).thenReturn(100L)
|
||||
|
||||
assertEquals(100L, System.currentTimeMillis())
|
||||
}
|
||||
|
||||
private fun prepareBus(): Bus {
|
||||
PowerMockito.mockStatic(MainApp::class.java)
|
||||
val mainApp = mock<MainApp>(MainApp::class.java)
|
||||
`when`(MainApp.instance()).thenReturn(mainApp)
|
||||
val bus = mock(Bus::class.java)
|
||||
`when`(MainApp.bus()).thenReturn(bus)
|
||||
`when`(MainApp.gs(ArgumentMatchers.anyInt())).thenReturn("some dummy string")
|
||||
prepareSP()
|
||||
return bus
|
||||
}
|
||||
|
||||
private fun prepareSP() {
|
||||
PowerMockito.mockStatic(SP::class.java)
|
||||
}
|
||||
|
||||
private fun prepareLogging() {
|
||||
PowerMockito.mockStatic(L::class.java)
|
||||
`when`(L.isEnabled(any())).thenReturn(true)
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.data;
|
||||
package info.nightscout.androidaps.plugins.iob.iobCobCalculatorPlugin;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
@ -16,6 +16,7 @@ import java.util.List;
|
|||
import info.AAPSMocker;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.db.BgReading;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
|
@ -36,7 +37,7 @@ public class GlucoseStatusTest {
|
|||
@Test
|
||||
public void toStringShouldBeOverloaded() {
|
||||
GlucoseStatus glucoseStatus = new GlucoseStatus();
|
||||
Assert.assertEquals(true, glucoseStatus.toString().contains("Delta"));
|
||||
Assert.assertEquals(true, glucoseStatus.log().contains("Delta"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -133,10 +134,7 @@ public class GlucoseStatusTest {
|
|||
public void initMocking() {
|
||||
AAPSMocker.mockMainApp();
|
||||
AAPSMocker.mockStrings();
|
||||
|
||||
PowerMockito.mockStatic(IobCobCalculatorPlugin.class);
|
||||
iobCobCalculatorPlugin = mock(IobCobCalculatorPlugin.class);
|
||||
when(IobCobCalculatorPlugin.getPlugin()).thenReturn(iobCobCalculatorPlugin);
|
||||
iobCobCalculatorPlugin = AAPSMocker.mockIobCobCalculatorPlugin();
|
||||
|
||||
PowerMockito.mockStatic(DateUtil.class);
|
||||
when(DateUtil.now()).thenReturn(1514766900000L + T.mins(1).msecs());
|
|
@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
|
|||
|
||||
import info.AAPSMocker;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.data.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
|
|
|
@ -53,6 +53,13 @@ public class MidnightTimeTest {
|
|||
Assert.assertEquals(midnight, MidnightTime.calc(now));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resetCache() {
|
||||
long now = DateUtil.now();
|
||||
MidnightTime.calc(now);
|
||||
MidnightTime.resetCache();
|
||||
Assert.assertEquals(0, MidnightTime.times.size());
|
||||
}
|
||||
@Test
|
||||
public void log() {
|
||||
long now = DateUtil.now();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.3.21'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
@ -16,6 +17,7 @@ buildscript {
|
|||
// in the individual module build.gradle files
|
||||
|
||||
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue