Merge branch 'dev' of https://github.com/MilosKozak/AndroidAPS into dev
This commit is contained in:
commit
95e6b02873
33 changed files with 308 additions and 161 deletions
|
@ -26,16 +26,16 @@ import info.nightscout.androidaps.data.IobTotal;
|
|||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.logging.AAPSLogger;
|
||||
import info.nightscout.androidaps.logging.LTag;
|
||||
import info.nightscout.androidaps.plugins.aps.loop.ScriptReader;
|
||||
import info.nightscout.androidaps.plugins.aps.logger.LoggerCallback;
|
||||
import info.nightscout.androidaps.plugins.aps.loop.ScriptReader;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
|
||||
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.SafeParse;
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
||||
|
@ -237,7 +237,8 @@ public class DetermineBasalAdapterSMBJS {
|
|||
) throws JSONException {
|
||||
|
||||
String units = profile.getUnits();
|
||||
Double pumpbolusstep = activePluginProvider.getActivePump().getPumpDescription().bolusStep;
|
||||
PumpInterface pump = activePluginProvider.getActivePump();
|
||||
Double pumpbolusstep = pump.getPumpDescription().bolusStep;
|
||||
mProfile = new JSONObject();
|
||||
|
||||
mProfile.put("max_iob", maxIob);
|
||||
|
@ -265,7 +266,7 @@ public class DetermineBasalAdapterSMBJS {
|
|||
mProfile.put("exercise_mode", SMBDefaults.exercise_mode);
|
||||
mProfile.put("half_basal_exercise_target", SMBDefaults.half_basal_exercise_target);
|
||||
mProfile.put("maxCOB", SMBDefaults.maxCOB);
|
||||
mProfile.put("skip_neutral_temps", SMBDefaults.skip_neutral_temps);
|
||||
mProfile.put("skip_neutral_temps", pump.setNeutralTempAtFullHour());
|
||||
// min_5m_carbimpact is not used within SMB determinebasal
|
||||
//if (mealData.usedMinCarbsImpact > 0) {
|
||||
// mProfile.put("min_5m_carbimpact", mealData.usedMinCarbsImpact);
|
||||
|
|
|
@ -35,7 +35,7 @@ class TriggerBolusAgo(injector: HasAndroidInjector) : Trigger(injector) {
|
|||
}
|
||||
|
||||
override fun shouldRun(): Boolean {
|
||||
val lastBolusTime = treatmentsPlugin.getLastBolusTime(false)
|
||||
val lastBolusTime = treatmentsPlugin.getLastBolusTime(true)
|
||||
if (lastBolusTime == 0L)
|
||||
return if (comparator.value == Comparator.Compare.IS_NOT_AVAILABLE) {
|
||||
aapsLogger.debug(LTag.AUTOMATION, "Ready for execution: " + friendlyDescription())
|
||||
|
|
|
@ -61,16 +61,16 @@ class OverviewMenus @Inject constructor(
|
|||
private val config: Config
|
||||
) {
|
||||
|
||||
enum class CharType(@StringRes val nameId: Int, @ColorRes val colorId: Int, val primary: Boolean, val secondary: Boolean) {
|
||||
PRE(R.string.overview_show_predictions, R.color.prediction, primary = true, secondary = false),
|
||||
BAS(R.string.overview_show_basals, R.color.basal, primary = true, secondary = false),
|
||||
IOB(R.string.overview_show_iob, R.color.iob, primary = false, secondary = true),
|
||||
COB(R.string.overview_show_cob, R.color.cob, primary = false, secondary = true),
|
||||
DEV(R.string.overview_show_deviations, R.color.deviations, primary = false, secondary = true),
|
||||
SEN(R.string.overview_show_sensitivity, R.color.ratio, primary = false, secondary = true),
|
||||
ACT(R.string.overview_show_activity, R.color.activity, primary = true, secondary = true),
|
||||
ABS(R.string.overview_show_absinsulin, R.color.iob, primary = false, secondary = true),
|
||||
DEVSLOPE(R.string.overview_show_deviationslope, R.color.devslopepos, primary = false, secondary = true)
|
||||
enum class CharType(@StringRes val nameId: Int, @ColorRes val colorId: Int, val primary: Boolean, val secondary: Boolean, @StringRes val shortnameId: Int) {
|
||||
PRE(R.string.overview_show_predictions, R.color.prediction, primary = true, secondary = false, shortnameId = R.string.prediction_shortname),
|
||||
BAS(R.string.overview_show_basals, R.color.basal, primary = true, secondary = false,shortnameId = R.string.basal_shortname),
|
||||
IOB(R.string.overview_show_iob, R.color.iob, primary = false, secondary = true,shortnameId = R.string.iob),
|
||||
COB(R.string.overview_show_cob, R.color.cob, primary = false, secondary = true,shortnameId = R.string.cob),
|
||||
DEV(R.string.overview_show_deviations, R.color.deviations, primary = false, secondary = true,shortnameId = R.string.deviation_shortname),
|
||||
SEN(R.string.overview_show_sensitivity, R.color.ratio, primary = false, secondary = true,shortnameId = R.string.sensitivity_shortname),
|
||||
ACT(R.string.overview_show_activity, R.color.activity, primary = true, secondary = true,shortnameId = R.string.activity_shortname),
|
||||
ABS(R.string.overview_show_absinsulin, R.color.iob, primary = false, secondary = true,shortnameId = R.string.abs_insulin_shortname),
|
||||
DEVSLOPE(R.string.overview_show_deviationslope, R.color.devslopepos, primary = false, secondary = true,shortnameId = R.string.devslope_shortname)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -80,7 +80,7 @@ class OverviewMenus @Inject constructor(
|
|||
fun enabledTypes(graph: Int): String {
|
||||
val r = StringBuilder()
|
||||
for (type in CharType.values()) if (setting[graph][type.ordinal]) {
|
||||
r.append(type.name)
|
||||
r.append(resourceHelper.gs(type.shortnameId))
|
||||
r.append(" ")
|
||||
}
|
||||
return r.toString()
|
||||
|
|
|
@ -814,9 +814,9 @@ public class IobCobCalculatorPlugin extends PluginBase implements IobCobCalculat
|
|||
getAapsLogger().debug(LTag.AUTOSENS, "Starting calculation thread: " + from + " to " + dateUtil.dateAndTimeString(end));
|
||||
if (thread == null || thread.getState() == Thread.State.TERMINATED) {
|
||||
if (sensitivityOref1Plugin.isEnabled())
|
||||
thread = new IobCobOref1Thread(injector, this, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||
thread = new IobCobOref1Thread(injector, this, treatmentsPlugin, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||
else
|
||||
thread = new IobCobThread(injector, this, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||
thread = new IobCobThread(injector, this, treatmentsPlugin, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||
thread.start();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCa
|
|||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
|
||||
import info.nightscout.androidaps.db.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
|
@ -62,7 +63,6 @@ public class IobCobOref1Thread extends Thread {
|
|||
@Inject ResourceHelper resourceHelper;
|
||||
@Inject ProfileFunction profileFunction;
|
||||
@Inject Context context;
|
||||
@Inject ActivePluginProvider activePluginProvider;
|
||||
@Inject SensitivityAAPSPlugin sensitivityAAPSPlugin;
|
||||
@Inject SensitivityWeightedAveragePlugin sensitivityWeightedAveragePlugin;
|
||||
@Inject BuildHelper buildHelper;
|
||||
|
@ -72,6 +72,7 @@ public class IobCobOref1Thread extends Thread {
|
|||
|
||||
private final HasAndroidInjector injector;
|
||||
private final IobCobCalculatorPlugin iobCobCalculatorPlugin; // cannot be injected : HistoryBrowser uses different instance
|
||||
private final TreatmentsPlugin treatmentsPlugin; // cannot be injected : HistoryBrowser uses different instance
|
||||
private boolean bgDataReload;
|
||||
private boolean limitDataToOldestAvailable;
|
||||
private String from;
|
||||
|
@ -79,11 +80,12 @@ public class IobCobOref1Thread extends Thread {
|
|||
|
||||
private PowerManager.WakeLock mWakeLock;
|
||||
|
||||
IobCobOref1Thread(HasAndroidInjector injector, IobCobCalculatorPlugin iobCobCalculatorPlugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||
IobCobOref1Thread(HasAndroidInjector injector, IobCobCalculatorPlugin iobCobCalculatorPlugin, TreatmentsPlugin treatmentsPlugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||
super();
|
||||
injector.androidInjector().inject(this);
|
||||
this.injector = injector;
|
||||
this.iobCobCalculatorPlugin = iobCobCalculatorPlugin;
|
||||
this.treatmentsPlugin = treatmentsPlugin;
|
||||
|
||||
this.bgDataReload = bgDataReload;
|
||||
this.limitDataToOldestAvailable = limitDataToOldestAvailable;
|
||||
|
@ -242,7 +244,7 @@ public class IobCobOref1Thread extends Thread {
|
|||
}
|
||||
}
|
||||
|
||||
List<Treatment> recentCarbTreatments = activePluginProvider.getActiveTreatments().getCarbTreatments5MinBackFromHistory(bgTime);
|
||||
List<Treatment> recentCarbTreatments = treatmentsPlugin.getCarbTreatments5MinBackFromHistory(bgTime);
|
||||
for (Treatment recentCarbTreatment : recentCarbTreatments) {
|
||||
autosensData.carbsFromBolus += recentCarbTreatment.carbs;
|
||||
boolean isAAPSOrWeighted = sensitivityAAPSPlugin.isEnabled() || sensitivityWeightedAveragePlugin.isEnabled();
|
||||
|
@ -365,7 +367,7 @@ public class IobCobOref1Thread extends Thread {
|
|||
// add an extra negative deviation if a high temptarget is running and exercise mode is set
|
||||
// TODO AS-FIX
|
||||
if (false && sp.getBoolean(R.string.key_high_temptarget_raises_sensitivity, SMBDefaults.high_temptarget_raises_sensitivity)) {
|
||||
TempTarget tempTarget = activePluginProvider.getActiveTreatments().getTempTargetFromHistory(bgTime);
|
||||
TempTarget tempTarget = treatmentsPlugin.getTempTargetFromHistory(bgTime);
|
||||
if (tempTarget != null && tempTarget.target() >= 100) {
|
||||
autosensData.extraDeviation.add(-(tempTarget.target() - 100) / 20);
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCa
|
|||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
|
||||
import info.nightscout.androidaps.db.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
|
@ -59,7 +60,6 @@ public class IobCobThread extends Thread {
|
|||
@Inject ResourceHelper resourceHelper;
|
||||
@Inject ProfileFunction profileFunction;
|
||||
@Inject Context context;
|
||||
@Inject ActivePluginProvider activePluginProvider;
|
||||
@Inject SensitivityAAPSPlugin sensitivityAAPSPlugin;
|
||||
@Inject SensitivityWeightedAveragePlugin sensitivityWeightedAveragePlugin;
|
||||
@Inject BuildHelper buildHelper;
|
||||
|
@ -69,6 +69,7 @@ public class IobCobThread extends Thread {
|
|||
|
||||
private final HasAndroidInjector injector;
|
||||
private final IobCobCalculatorPlugin iobCobCalculatorPlugin; // cannot be injected : HistoryBrowser uses different instance
|
||||
private final TreatmentsPlugin treatmentsPlugin; // cannot be injected : HistoryBrowser uses different instance
|
||||
private boolean bgDataReload;
|
||||
private boolean limitDataToOldestAvailable;
|
||||
private String from;
|
||||
|
@ -76,11 +77,12 @@ public class IobCobThread extends Thread {
|
|||
|
||||
private PowerManager.WakeLock mWakeLock;
|
||||
|
||||
@Inject IobCobThread(HasAndroidInjector injector, IobCobCalculatorPlugin iobCobCalculatorPlugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||
@Inject IobCobThread(HasAndroidInjector injector, IobCobCalculatorPlugin iobCobCalculatorPlugin, TreatmentsPlugin treatmentsPlugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||
super();
|
||||
injector.androidInjector().inject(this);
|
||||
this.injector = injector;
|
||||
this.iobCobCalculatorPlugin = iobCobCalculatorPlugin;
|
||||
this.treatmentsPlugin = treatmentsPlugin;
|
||||
|
||||
this.bgDataReload = bgDataReload;
|
||||
this.limitDataToOldestAvailable = limitDataToOldestAvailable;
|
||||
|
@ -239,7 +241,7 @@ public class IobCobThread extends Thread {
|
|||
}
|
||||
}
|
||||
|
||||
List<Treatment> recentCarbTreatments = activePluginProvider.getActiveTreatments().getCarbTreatments5MinBackFromHistory(bgTime);
|
||||
List<Treatment> recentCarbTreatments = treatmentsPlugin.getCarbTreatments5MinBackFromHistory(bgTime);
|
||||
for (Treatment recentCarbTreatment : recentCarbTreatments) {
|
||||
autosensData.carbsFromBolus += recentCarbTreatment.carbs;
|
||||
boolean isAAPSOrWeighted = sensitivityAAPSPlugin.isEnabled() || sensitivityWeightedAveragePlugin.isEnabled();
|
||||
|
|
|
@ -1571,6 +1571,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
|
|||
this.hasTimeDateOrTimeZoneChanged = true;
|
||||
}
|
||||
|
||||
@Override public boolean setNeutralTempAtFullHour() {
|
||||
return sp.getBoolean(R.string.key_set_neutral_temps, true);
|
||||
}
|
||||
|
||||
|
||||
private void setEnableCustomAction(MedtronicCustomActionType customAction, boolean isEnabled) {
|
||||
|
||||
|
|
|
@ -61,14 +61,11 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
|||
*/
|
||||
public class MedtronicCommunicationManager extends RileyLinkCommunicationManager {
|
||||
|
||||
@Inject AAPSLogger aapsLogger;
|
||||
@Inject MedtronicPumpStatus medtronicPumpStatus;
|
||||
@Inject MedtronicPumpPlugin medtronicPumpPlugin;
|
||||
@Inject MedtronicConverter medtronicConverter;
|
||||
@Inject MedtronicUtil medtronicUtil;
|
||||
@Inject MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder;
|
||||
@Inject RileyLinkServiceData rileyLinkServiceData;
|
||||
@Inject ServiceTaskExecutor serviceTaskExecutor;
|
||||
|
||||
private final int MAX_COMMAND_TRIES = 3;
|
||||
private final int DEFAULT_TIMEOUT = 2000;
|
||||
|
|
|
@ -55,7 +55,7 @@ class RandomBgPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun advancedFilteringSupported(): Boolean {
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
|
@ -69,7 +69,7 @@ class RandomBgPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun specialEnableCondition(): Boolean {
|
||||
return isRunningTest() || virtualPumpPlugin.isEnabled(PluginType.PUMP) && buildHelper.isEngineeringMode()
|
||||
return true //isRunningTest() || virtualPumpPlugin.isEnabled(PluginType.PUMP) && buildHelper.isEngineeringMode()
|
||||
}
|
||||
|
||||
override fun handleNewData(intent: Intent) {
|
||||
|
|
|
@ -45,6 +45,7 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import info.nightscout.androidaps.utils.JsonHelper;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
@ -588,6 +589,30 @@ public class TreatmentService extends OrmLiteBaseService<DatabaseHelper> {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the newest record with insulin > 0
|
||||
*/
|
||||
@Nullable
|
||||
public Treatment getLastBolus(boolean excludeSMB) {
|
||||
try {
|
||||
QueryBuilder<Treatment, Long> queryBuilder = getDao().queryBuilder();
|
||||
Where where = queryBuilder.where();
|
||||
where.gt("insulin", 0);
|
||||
where.and().le("date", DateUtil.now());
|
||||
where.and().eq("isValid", true);
|
||||
if (excludeSMB) where.and().eq("isSMB", false);
|
||||
queryBuilder.orderBy("date", false);
|
||||
queryBuilder.limit(1L);
|
||||
|
||||
List<Treatment> result = getDao().query(queryBuilder.prepare());
|
||||
if (result.isEmpty())
|
||||
return null;
|
||||
return result.get(0);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteNS(JSONObject json) {
|
||||
String _id = JsonHelper.safeGetString(json, "_id");
|
||||
if (_id != null && !_id.isEmpty())
|
||||
|
|
|
@ -335,33 +335,27 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
|
||||
@Override
|
||||
public long getLastBolusTime() {
|
||||
long now = System.currentTimeMillis();
|
||||
long last = 0;
|
||||
synchronized (treatments) {
|
||||
for (Treatment t : treatments) {
|
||||
if (!t.isValid)
|
||||
continue;
|
||||
if (t.date > last && t.insulin > 0 && t.date <= now)
|
||||
last = t.date;
|
||||
}
|
||||
Treatment last = getService().getLastBolus(false);
|
||||
if (last == null) {
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last bolus time: NOTHING FOUND");
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last bolus time: " + dateUtil.dateAndTimeString(last.date));
|
||||
return last.date;
|
||||
}
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last bolus time: " + dateUtil.dateAndTimeString(last));
|
||||
return last;
|
||||
}
|
||||
|
||||
public long getLastBolusTime(boolean isSMB) {
|
||||
long now = System.currentTimeMillis();
|
||||
long last = 0;
|
||||
synchronized (treatments) {
|
||||
for (Treatment t : treatments) {
|
||||
if (!t.isValid)
|
||||
continue;
|
||||
if (t.date > last && t.insulin > 0 && t.date <= now && isSMB == t.isSMB)
|
||||
last = t.date;
|
||||
}
|
||||
public long getLastBolusTime(boolean excludeSMB) {
|
||||
Treatment last = getService().getLastBolus(excludeSMB);
|
||||
if (last == null) {
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last manual bolus time: NOTHING FOUND");
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last manual bolus time: " + dateUtil.dateAndTimeString(last.date));
|
||||
return last.date;
|
||||
}
|
||||
getAapsLogger().debug(LTag.DATATREATMENTS, "Last manual bolus time: " + dateUtil.dateAndTimeString(last));
|
||||
return last;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -264,6 +264,9 @@
|
|||
<string name="smscommunicator_carbsreplywithcode">Pro zadání %1$dg na %2$s odpovězte pomocí SMS s kódem %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Pro spuštění bazálu %1$d%% na %2$d min odpovězte SMS s kódem %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">K pozastavení smyčky na %1$d minut odpověz SMS s kódem %2$s</string>
|
||||
<string name="smscommunicator_loopresumereplywithcode">Chcete-li obnovit smyčku, odpovězte SMS s kódem %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Chcete-li povolit smyčku, odpovězte SMS s kódem %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Chcete-li zakázat smyčku, odpovězte SMS s kódem %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Dočasný bazál %1$.2fU/h na %2$d minut spuštěn</string>
|
||||
<string name="smscommunicator_extendedset">Prodloužený bolus %1$.2fU na %2$d min úspěšně spuštěn</string>
|
||||
<string name="smscommunicator_carbsset">Sacharidy %1$dg byly úspěšně zadány</string>
|
||||
|
@ -468,6 +471,8 @@
|
|||
<string name="doprofileswitch">Proveďte přepnutí profilu</string>
|
||||
<string name="careportal_pbage_label">Stáří baterie v pumpě</string>
|
||||
<string name="ns_alarmoptions">Nastavení alarmů</string>
|
||||
<string name="ns_alarms">Vytvořit oznámení z alarmů NS</string>
|
||||
<string name="ns_announcements">Vytvořit oznámení z NS upozornění </string>
|
||||
<string name="nsalarm_staledatavalue_label">Mezní hodnota pro zastaralá data [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Urgentní mezní hodnota pro zastaralá data [min]</string>
|
||||
<string name="openapsama_autosens_period">Interval pro detekci senzitivity [h]</string>
|
||||
|
@ -845,6 +850,10 @@
|
|||
<string name="log_alerts">Zaznamenat výstrahy</string>
|
||||
<string name="enable_tbr_emulation">Povolit emulaci dočasných bazálů</string>
|
||||
<string name="enable_tbr_emulation_summary">Používat prodloužené bolusy na obejití limitu dočasných bazálů 250%%</string>
|
||||
<string name="disable_vibration">Zakázat vibrace při ručním podání bolusu</string>
|
||||
<string name="disable_vibration_summary">Pro bolus a prodloužený bolus (dostupné pouze s Insight firmware 3.x)</string>
|
||||
<string name="disable_vibration_auto">Zakázat vibrace při automatickém podání bolusu</string>
|
||||
<string name="disable_vibration_auto_summary">Pro SMB a Dočasný bazál s emulací TBR (k dispozici pouze s Insight firmware 3.x)</string>
|
||||
<string name="disconnect_delay">Limit pro odpojení [s]</string>
|
||||
<string name="serial_number">Sériové číslo</string>
|
||||
<string name="release_software_version">Verze softwaru</string>
|
||||
|
@ -1341,9 +1350,43 @@
|
|||
<string name="omnipod_cmd_bolus_value">%1$.1f U</string>
|
||||
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.1f U, Sach=%2$.1f g</string>
|
||||
<string name="omnipod_cmd_tbr_value">Rychlost: %1$.1f U, doba trvání: %2$d min</string>
|
||||
<string name="omnipod_cmd_reset_pod_desc">Pokud stisknete <b>OK</b>, stav Podu bude vynuceně resetován a již nebudete moci komunikovat s Podem. Udělejte to pouze v případě, že s Podem již nelze komunikovat. Pokud stále můžete komunikovat s Podem, použijte volbu <b>Deaktivovat Pod</b>.</string>
|
||||
<string name="omnipod_cmd_pod_history_na">Historie Podu není v daném okamžiku k dispozici.</string>
|
||||
<string name="omnipod_init_pod_wizard_step1_title">Naplňte Pod</string>
|
||||
<string name="omnipod_init_pod_wizard_step1_desc">\nNaplňte nový Pod dostatkem inzulínu na 3 dny.\n\nSledujte dvě pípnutí z Podu během procesu plnění. Tyto ukazují, že minimální množství 85U bylo naplněno. Ujistěte se, že stříkačka je zcela vyprázdněná a to i po vyslechnutí dvou pípnutí.\n\nPo naplnění Podu, prosím, stiskněte <b>Další</b>.\n\n<b>Poznámka:</b> prozatím nesundavejte kryt jehly.</string>
|
||||
<string name="omnipod_init_pod_wizard_step2_title">Plnění</string>
|
||||
<string name="omnipod_init_pod_wizard_step2_action_header">Snažím se spárovat s novým Podem a naplnit ho.\n\nJakmile budou zaškrtnuty všechny položky, můžete stisknout <b>Další</b>.\n\n<b>Poznámka:</b> ponechte prosím Pod velmi blízko RileyLinku.</string>
|
||||
<string name="omnipod_init_pod_wizard_step3_title">Nasaďte Pod</string>
|
||||
<string name="omnipod_init_pod_wizard_step3_desc">\nPřipravte infuzní místo. Odstraňte krytku jehly a náplasti a nalepte Pod.\n\nPokud se kanyla odlepí, stiskněte <b>Zrušit</b> a zahoďte Pod.\n\nStiskněte <b>Další</b> pro vložení kanyly a spuštění bazálů.</string>
|
||||
<string name="omnipod_init_pod_wizard_step4_title">Vkládání kanyly</string>
|
||||
<string name="omnipod_init_pod_wizard_step4_action_header">Snažím se nastavit počáteční základní bazální plán a vložit kanylu.\n\nPři zaškrtnutí všech položek můžete stisknout tlačítko <b>Další</b>.</string>
|
||||
<string name="omnipod_init_pod_wizard_pod_info_title">Pod Info</string>
|
||||
<string name="omnipod_init_pod_wizard_pod_info_init_pod_description">\nPod je nyní aktivní.\n\nVáš bazál byl naprogramován a kanyla byla vložena.\n\nOvěřte, prosím, že kanyla byla vložena správně a případně vyměňte Pod.</string>
|
||||
<string name="omnipod_remove_pod_wizard_step1_title">Deaktivovat Pod</string>
|
||||
<string name="omnipod_remove_pod_wizard_step1_desc">\nStiskněte <b>Další</b> pro deaktivaci Podu.\n\n<b>Poznámka:</b> Zastavíte veškerý výdej inzulínu a deaktivujete Pod.</string>
|
||||
<string name="omnipod_remove_pod_wizard_step2_title">Deaktivace Podu</string>
|
||||
<string name="omnipod_remove_pod_wizard_step2_action_header">Deaktivace Podu.\n\nKdyž jsou zaškrtnuty všechny položky, můžete stisknout <b>Další</b>.\n\n<b>Poznámka:</b> Pokud deaktivace nepřetržitě selhává, prosím stiskněte <b>Zrušit</b> a použijte možnost <b>Resetovat Pod</b> pro resetování stavu Podu.</string>
|
||||
<string name="omnipod_init_pod_wizard_pod_info_remove_pod_description">Pod deaktivován.\n\nOdstraňte Pod z těla a znehodnoťte jej.</string>
|
||||
<string name="omnipod_init_pod_pair_pod">Párování Podu</string>
|
||||
<string name="omnipod_init_pod_prime_pod">Plnění Podu</string>
|
||||
<string name="omnipod_init_pod_fill_cannula">Plnění kanyly</string>
|
||||
<string name="omnipod_init_pod_set_basal_profile">Nastavit bazální profil</string>
|
||||
<string name="omnipod_deactivate_pod_cancel_delivery">Zrušit podávání</string>
|
||||
<string name="omnipod_deactivate_pod_deactivate_pod">Deaktivovat Pod</string>
|
||||
<!-- Omnipod Dash -->
|
||||
<!-- Omnipod - Base -->
|
||||
<string name="description_pump_omnipod_dash">Integrace pumpy pro Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Upomínka dokončení párování</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Upomínka dokončení nastavení</string>
|
||||
<string name="omnipod_alert_expiration">Životnost Podu brzy skončí</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Pod brzy vyprší</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Blíží se vypnutí</string>
|
||||
<string name="omnipod_alert_low_reservoir">Nízký stav zásobníku</string>
|
||||
<string name="omnipod_alert_unknown_alert">Neznámá výstraha</string>
|
||||
<string name="omnipod_error_set_basal_failed_uncertain">Nastavení bazálního profilu se možná nezdařilo. Výdej může být pozastaven! Obnovte prosím stav Podu.</string>
|
||||
<string name="omnipod_error_set_temp_basal_failed_uncertain">Nastavení dočasného bazálu mohlo být neúspěšné. Pokud je dočasný bazál již spuštěn, mohl by být zrušen! Aktualizujte prosím stav Podu.</string>
|
||||
<string name="omnipod_error_set_time_failed_uncertain">Nastavení času se možná nezdařilo. Výdej může být pozastaven! Obnovte prosím stav Podu.</string>
|
||||
<string name="omnipod_bolus_failed_uncertain">Nelze ověřit, zda byl bolus úspěšný. Ověřte prosím, zda Váš Pod dodává bolus nebo ho zrušte.</string>
|
||||
<string name="omnipod_rl_stats">Statistika RL</string>
|
||||
<string name="omnipod_read_pulse_log_short">Pulse Log</string>
|
||||
</resources>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<string name="description_actions">Einige Schaltflächen, um auf häufig verwendete Funktionen zugreifen zu können.</string>
|
||||
<string name="description_config_builder">Dient zum Konfigurieren der aktiven Plugins</string>
|
||||
<string name="description_objectives">Das Programm kennenlernen</string>
|
||||
<string name="description_food">Zeigt die Essens-Vorlagen aus Nightscout an</string>
|
||||
<string name="description_food">Zeigt die Essensvorlagen aus Nightscout an</string>
|
||||
<string name="description_insulin_rapid">Insulinprofil für Humalog und NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Insulinprofil für Fiasp</string>
|
||||
<string name="description_insulin_free_peak">Erlaubt dir, das Wirkmaximum der Insulinaktivität zu definieren, und sollte nur von erfahrenen Anwendern genutzt werden</string>
|
||||
|
@ -27,26 +27,26 @@
|
|||
<string name="description_ma">Stand des Algorithmus in 2016</string>
|
||||
<string name="description_ama">Stand des Algorithmus in 2017</string>
|
||||
<string name="description_smb">Der aktuellste Algorithmus für erfahrene Nutzer</string>
|
||||
<string name="description_overview">Zeigt den aktuellen Status deines Loops und Knöpfe für die geläufigsten Aktionen an</string>
|
||||
<string name="description_overview">Zeigt den aktuellen Status deines Loops und Schaltflächen für die geläufigsten Aktionen an</string>
|
||||
<string name="description_persistent_notification">Zeigt eine fortlaufende Benachrichtigung mit einer kurzen Übersicht darüber, was dein Loop derzeit tut</string>
|
||||
<string name="description_profile_local">Definiere ein Profil, was auch offline verfügbar ist.</string>
|
||||
<string name="description_profile_nightscout">Stellt das Profil zur Verfügung, das in Nightscout definiert ist</string>
|
||||
<string name="description_profile_simple">Definiere ein Profil mit nur einem Zeitblock.</string>
|
||||
<string name="description_pump_combo">Pumpen-Integration für Accu-Chek Combo Pumpen; erfordert, dass ruffy installiert ist</string>
|
||||
<string name="description_pump_mdi">Pumpen-Integration für Personen, die täglich mehrere Injektionen für ihre Diabetestherapie vornehmen</string>
|
||||
<string name="description_pump_virtual">Pumpen-Integration für Pumpen, die noch nicht über einen Treiber verfügen (Open Loop)</string>
|
||||
<string name="description_pump_mdi">Pumpenintegration für Personen, die täglich mehrere Injektionen für ihre Diabetestherapie vornehmen</string>
|
||||
<string name="description_pump_virtual">Pumpenintegration für Pumpen, die noch nicht über einen Treiber verfügen (Open Loop)</string>
|
||||
<string name="description_sensitivity_aaps">Die Sensitivität wird genauso wie bei Oref0 berechnet, aber Du kannst dafür ein Zeitfenster bestimmen. Die minimale Kohlenhydrat-Absorptionsrate wird aus der maximalen Absorptionsdauer aus den Einstellungen abgeleitet.</string>
|
||||
<string name="description_sensitivity_oref1">Die Sensitivität wird aus den Daten der letzten 8 Stunden berechnet und Kohlenhydrate (falls nicht bereits absorbiert) werden nach der in den Einstellungen angegebenen Zeit als absorbiert betrachtet. Das Plugin bezieht Zeiträume, in denen UAM annimmt, dass Kohlenhydrate aktiv waren, nicht mit in die Berechnung ein.</string>
|
||||
<string name="description_sensitivity_weighted_average">Die Sensitivität wird aus den Abweichungen errechnet. Dabei werden neuere Abweichungen stärker gewichtet als ältere. Die minimale Kohlenhydrat-Aufnahme wird aus der in den Präferenzen angegebenen maximalen Kohlenhydrat-Resorptionszeit abgeleitet. Dieser Algorithmus reagiert am schnellsten auf Änderungen der Empfindlichkeit.</string>
|
||||
<string name="description_source_eversense">Empfange BZ-Werte von der gepatchten Eversense App.</string>
|
||||
<string name="description_source_glimp">Empfange Blutzucker-Werte von Glimp.</string>
|
||||
<string name="description_source_mm640g">Empfange Blutzucker-Werte vom 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Lade Blutzucker-Daten von Nightscout</string>
|
||||
<string name="description_source_xdrip">Empfange Blutzucker-Werte von xDrip.</string>
|
||||
<string name="description_source_eversense">Empfange BZ-Werte von der gepatchten Eversense-App.</string>
|
||||
<string name="description_source_glimp">Empfange Blutzuckerwerte von Glimp.</string>
|
||||
<string name="description_source_mm640g">Empfange Blutzuckerwerte vom 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Lade Blutzuckerdaten von Nightscout</string>
|
||||
<string name="description_source_xdrip">Empfange Blutzuckerwerte von xDrip.</string>
|
||||
<string name="description_treatments">Speichert alle eingegebenen Behandlungen</string>
|
||||
<string name="description_wear">Überwache und steuere AndroidAPS mit Deiner WearOS-Smartwatch.</string>
|
||||
<string name="description_xdrip_status_line">Zeige Loop-Informationen auf Deinem xDrip+-Watchface.</string>
|
||||
<string name="description_sms_communicator">Steuere AndroiAPS fern mittels SMS-Anweisungen.</string>
|
||||
<string name="description_sms_communicator">AndroidAPS mit SMS-Befehlen fernsteuern.</string>
|
||||
<string name="treatments_insulin_label_string">Insulin:</string>
|
||||
<string name="treatments_carbs_label_string">Kohlenhydrate:</string>
|
||||
<string name="treatments_iob_label_string">IOB:</string>
|
||||
|
@ -72,7 +72,7 @@
|
|||
<string name="openapsma_currenttemp_label">Aktuelle TBR</string>
|
||||
<string name="openapsma_iobdata_label">IOB-Daten</string>
|
||||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Mahlzeiten-Daten</string>
|
||||
<string name="openapsma_mealdata_label">Mahlzeitendaten</string>
|
||||
<string name="result">Ergebnis</string>
|
||||
<string name="result_insulin_carbs">Ergebnis: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Keine BZ-Werte verfügbar</string>
|
||||
|
@ -94,7 +94,7 @@
|
|||
<string name="configbuilder_profile">Profil</string>
|
||||
<string name="configbuilder_profile_description">Welches Profil soll AndroidAPS nutzen?</string>
|
||||
<string name="configbuilder_aps">APS</string>
|
||||
<string name="configbuilder_aps_description">Welcher APS-Algorithmus soll Therapie-Anpassungen vornehmen?</string>
|
||||
<string name="configbuilder_aps_description">Welcher APS-Algorithmus soll Therapieanpassungen vornehmen?</string>
|
||||
<string name="configbuilder_general">Allgemein</string>
|
||||
<string name="configbuilder_general_description">Dies sind einige generelle Plugins, die Du vielleicht hilfreich findest.</string>
|
||||
<string name="configbuilder_constraints_description">Welche Beschränkungen werden angewendet?</string>
|
||||
|
@ -117,7 +117,7 @@
|
|||
<string name="setbasalquestion">Akzeptiere neue TBR:</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Rechner</string>
|
||||
<string name="constraintapllied">Beschränkungen angewendet!</string>
|
||||
<string name="constraintapllied">Beschränkung angewendet!</string>
|
||||
<string name="confirmation">Bestätigung</string>
|
||||
<string name="bolus">Bolus</string>
|
||||
<string name="sms_bolus">Bolus:</string>
|
||||
|
@ -135,7 +135,7 @@
|
|||
<string name="disableloop">Deaktiviere Loop</string>
|
||||
<string name="enableloop">Aktiviere Loop</string>
|
||||
<string name="openloop_newsuggestion">Neue Empfehlung verfügbar</string>
|
||||
<string name="unsupportednsversion">Nicht unterstütze Nightscout-Version</string>
|
||||
<string name="unsupportednsversion">Nicht unterstützte Nightscout-Version</string>
|
||||
<string name="loopdisabled">LOOP DEAKTIVIERT DURCH BESCHRÄNKUNGEN</string>
|
||||
<string name="treatments_wizard_basaliob_label">Basal-IOB</string>
|
||||
<string name="bolusconstraintapplied">Bolus-Beschränkung angewendet</string>
|
||||
|
@ -151,10 +151,10 @@
|
|||
<string name="careportal_newnstreatment_percent_label">Prozent</string>
|
||||
<string name="careportal_newnstreatment_absolute_label">Absolut</string>
|
||||
<string name="careportal_newnstreatment_notes_label">Notiz</string>
|
||||
<string name="event_time_label">Ereignis-Zeit</string>
|
||||
<string name="event_time_label">Ereigniszeit</string>
|
||||
<string name="careportal_newnstreatment_profile_label">Profil</string>
|
||||
<string name="careportal_newnstreatment_enteredby_title">Eingegeben durch</string>
|
||||
<string name="careportal_newnstreatment_glucosetype">Glukose-Art</string>
|
||||
<string name="careportal_newnstreatment_glucosetype">Glukoseart</string>
|
||||
<string name="noprofile">Bisher noch kein Profil von Nightscout geladen</string>
|
||||
<string name="overview_tempbasal_button">TBR</string>
|
||||
<string name="overview_extendedbolus_button">Verzögerter Bolus</string>
|
||||
|
@ -167,10 +167,10 @@
|
|||
<string name="filenotfound">Datei nicht gefunden</string>
|
||||
<string name="nav_export">Einstellungen exportieren</string>
|
||||
<string name="nav_import">Einstellungen importieren</string>
|
||||
<string name="openapsma_maxbasal_title">Max IE/h, die als TBR gesetzt werden können</string>
|
||||
<string name="openapsma_maxbasal_title">Max. IE/h, die als TBR gesetzt werden können</string>
|
||||
<string name="openapsma_maxbasal_summary">Dieser Wert wird \"max basal\" in OpenAPS genannt.</string>
|
||||
<string name="openapsma_maxiob_title">Maximales Basal-IOB, das OpenAPS abgeben darf [IE]</string>
|
||||
<string name="openapsma_maxiob_summary">Maximale Menge von nicht Bolus-IOB, die OpenAPs abgeben kann.</string>
|
||||
<string name="openapsma_maxiob_summary">Maximale Menge von Nicht-Bolus-IOB, die OpenAPS abgeben kann.</string>
|
||||
<string name="password_preferences_encrypt_prompt">Du wirst nach dem Master-Passwort gefragt. Mit diesem werden die exportierten Einstellungen verschlüsselt.</string>
|
||||
<string name="password_preferences_decrypt_prompt">Du wirst nach dem Master-Passwort gefragt. Mit diesem werden die importierten Einstellungen entschlüsselt.</string>
|
||||
<string name="preferences_export_canceled">Export abgebrochen! Einstellungen wurden NICHT exportiert!</string>
|
||||
|
@ -201,7 +201,7 @@
|
|||
<string name="metadata_format_new">Neues verschlüsseltes Format</string>
|
||||
<string name="metadata_format_debug">Neues Debugformat (unverschlüsselt)</string>
|
||||
<string name="metadata_format_other">Unbekanntes Export-Format</string>
|
||||
<string name="prefdecrypt_settings_tampered">Einstellungen-Datei wurde manipuliert.</string>
|
||||
<string name="prefdecrypt_settings_tampered">Konfigurationsdatei wurde manipuliert.</string>
|
||||
<string name="prefdecrypt_settings_secure">Einstellungsdatei ist sicher.</string>
|
||||
<string name="prefdecrypt_settings_unencrypted">Nicht sicheres, unverschlüsseltes Einstellungsformat verwenden</string>
|
||||
<string name="prefdecrypt_wrong_json">Fehler im JSON-Format, fehlendes erforderliches Feld (Format, Inhalt, Metadaten oder Sicherheit)</string>
|
||||
|
@ -218,23 +218,23 @@
|
|||
<string name="exported_less_than_hour_ago">vor weniger als einer Stunde exportiert</string>
|
||||
<string name="in_directory" comment="placeholder is for exported file path">in Verzeichnis: %1$s</string>
|
||||
<string name="end_user_license_agreement">Endbenutzervereinbarung</string>
|
||||
<string name="end_user_license_agreement_text">DAS PROGRAMM DARF NICHT FÜR MEDIZINISCHE ENTSCHEIDUNGEN BENUTZT WERDEN. ES GIBT IN DIESEM PROJEKT KEINE GEWÄHRLEISTUNG ODER GARANTIERTE UNTERSTÜTZUNG IN IRGENDEINER ART. WENN DU DICH ENTSCHEIDEST, ES ZU NUTZEN, HÄNGT DIE QUALITÄT UND LEISTUNGSFÄHIGKEIT DIESES PROJEKTES VON DIR SELBST AB. ES WIRD \"WIE BESEHEN\" ZUR VERFÜGUNG GESTELLT. SOLLTE SICH DAS PROGRAMM ALS FEHLERHAFT ERWEISEN, ÜBERNEHMEN SIE ALLE NOTWENDIGEN KRANKHEITSKOSTEN, SERVICELEISTUNGEN, REPARATUREN ODER KORREKTUREN.</string>
|
||||
<string name="end_user_license_agreement_text">DAS PROGRAMM DARF NICHT FÜR MEDIZINISCHE ENTSCHEIDUNGEN BENUTZT WERDEN. ES GIBT IN DIESEM PROJEKT KEINE GEWÄHRLEISTUNG ODER GARANTIERTE UNTERSTÜTZUNG IN IRGENDEINER ART. WENN DU DICH ENTSCHEIDEST, ES ZU NUTZEN, HÄNGT DIE QUALITÄT UND LEISTUNGSFÄHIGKEIT DIESES PROJEKTES VON DIR SELBST AB. ES WIRD \"WIE BESEHEN\" ZUR VERFÜGUNG GESTELLT. SOLLTE SICH DAS PROGRAMM ALS FEHLERHAFT ERWEISEN, ÜBERNIMMST DU ALLE NOTWENDIGEN KRANKHEITSKOSTEN, SERVICELEISTUNGEN, REPARATUREN ODER KORREKTUREN.</string>
|
||||
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu.</string>
|
||||
<string name="save">Speichern</string>
|
||||
<string name="reloadprofile">Profil neuladen</string>
|
||||
<string name="smscommunicator">SMS-Kommunikator</string>
|
||||
<string name="smscommunicator_allowednumbers">Erlaubte Telefonnummern</string>
|
||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">Um einen Bolus von %1$.2f IE abzugeben, antworte mit dem Code %2$s.</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">Um einen Bolus von %1$.2f IE abzugeben, antworte mit dem Code %2$s.</string>
|
||||
<string name="smscommunicator_mealbolusreplywithcode">Um einen Mahlzeitenbolus von %1$.2f IE abzugeben, antworte mit dem Code %2$s.</string>
|
||||
<string name="smscommunicator_temptargetwithcode">Um ein Temp Target von %1$s zu setzen, antworte mit dem Code %2$s</string>
|
||||
<string name="smscommunicator_temptargetwithcode">Um ein temporäres Ziel von %1$s zu setzen, antworte mit dem Code %2$s</string>
|
||||
<string name="smscommunicator_temptargetcancel">Um das temporäre Ziel zu stoppen, antworte mit dem Code %1$s</string>
|
||||
<string name="smscommunicator_stopsmswithcode">Um den SMS Remote Service zu deaktivieren, antworte mit dem Code %1$s.\n\nBeachte, dass Du diesen nur am AAPS Master Smartphone wieder aktivieren kannst.</string>
|
||||
<string name="smscommunicator_stoppedsms">SMS Remote Service gestoppt. Verwende das AAPS Master, um ihn wieder zu aktivieren.</string>
|
||||
<string name="smscommunicator_stopsmswithcode">Um die SMS-Fernsteuerung zu deaktivieren, antworte mit dem Code %1$s\n\nBeachte, dass Du diesen nur am AAPS-Master-Smartphone wieder aktivieren kannst.</string>
|
||||
<string name="smscommunicator_stoppedsms">SMS-Fernsteuerung gestoppt. Verwende das AAPS-Master-Smartphone, um sie wieder zu aktivieren.</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">Um die Kalibrierung %1$.2f zu senden, antworte mit dem Code %2$s.</string>
|
||||
<string name="smscommunicator_bolusfailed">Bolus fehlgeschlagen</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_summary">Minimale Dauer in Minuten, die nach einem Remote Bolus verstrichen sein muss, bevor ein neuer abgegeben werden kann.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Anzahl Minuten, die mindestens zwischen zwei Bolusgaben liegen müssen.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_summary">Minimale Dauer in Minuten, die nach einem Remote-Bolus verstrichen sein muss, bevor ein neuer abgegeben werden kann.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Anzahl der Minuten, die mindestens zwischen zwei Remote-Bolusabgaben liegen müssen.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">Aus Sicherheitsgründen musst Du mindestens zwei Telefonnummern eintragen, um diese Voreinstellung zu ändern.</string>
|
||||
<string name="bolusdelivered">Bolus %1$.2fIE erfolgreich abgegeben</string>
|
||||
<string name="bolusrequested">Werde %1$.2fIE abgeben</string>
|
||||
|
@ -243,7 +243,7 @@
|
|||
<string name="smscommunicator_mealbolusdelivered_tt">Ziel %1$s für %2$d Minuten</string>
|
||||
<string name="smscommunicator_tt_set">Ziel %1$s für %2$d Minuten erfolgreich gesetzt.</string>
|
||||
<string name="smscommunicator_tt_canceled">Temporäres Ziel wurde erfolgreich abgebrochen</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Erlaube externe Befehle per SMS</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Erlaube Fernsteuerung per SMS</string>
|
||||
<string name="danarprofile">DanaR Profil-Einstellungen</string>
|
||||
<string name="danarprofile_dia">DIA [h]</string>
|
||||
<string name="danarprofile_dia_summary">Dauer der Insulinwirkung</string>
|
||||
|
@ -264,6 +264,9 @@
|
|||
<string name="smscommunicator_carbsreplywithcode">Um %1$dg Kohlenhydrate um %2$s einzugeben, antworte mit dem Code %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Um die Basalrate von %1$d%% für %2$d Minuten zu setzen, antworte mit dem Code %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Um das Loopen für %1$d Minuten zu pausieren, antworte mit dem Code %2$s.</string>
|
||||
<string name="smscommunicator_loopresumereplywithcode">Um den Loop fortzusetzen, antworte mit dem Code %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Um den Loop zu aktivieren, antworte mit dem Code %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Um den Loop zu deaktivieren, antworte mit dem Code %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">TBR mit %1$.2f IE/h für %2$d min wurde erfolgreich gestartet.</string>
|
||||
<string name="smscommunicator_extendedset">Der erweiterte Bolus %1$.2f IE/h für %2$d Minuten wurde erfolgreich gestartet</string>
|
||||
<string name="smscommunicator_carbsset">%1$dg Kohlenhydrate erfolgreich erfasst.</string>
|
||||
|
@ -276,7 +279,7 @@
|
|||
<string name="smscommunicator_tempbasalcanceled">TBR abgebrochen</string>
|
||||
<string name="smscommunicator_extendedcanceled">Die Abgabe des erweiterten Bolus wurde abgebrochen.</string>
|
||||
<string name="smscommunicator_tempbasalcancelfailed">Das Abbrechen der TBR ist fehlgeschlagen.</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Der Abbruch des erweiterten Bolus ist fehlgeschlagen</string>
|
||||
<string name="smscommunicator_extendedcancelfailed">Der Abbruch des erweiterten Bolus ist fehlgeschlagen.</string>
|
||||
<string name="smscommunicator_unknowncommand">Unbekannter Befehl oder falsche Antwort</string>
|
||||
<string name="quickwizard">QuickWizard</string>
|
||||
<string name="quickwizardsettings">QuickWizard-Einstellungen</string>
|
||||
|
@ -352,7 +355,7 @@
|
|||
<string name="profile">Profil</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier_summary">Standardwert: 3\nDies ist eine wichtige Sicherheitseinstellung. Sie begrenzt das maximale Basal-IOB auf die dreifache Menge (im Standardfall) deiner größten Basalrate. In der Regel solltest Du diesen Wert nicht ändern. Aber Du solltest wissen, was \"3x max daily, 4x current\" als Sicherheitseinstellung bedeutet.</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">Standardwert: 4\nDies ist die andere wichtige Sicherheitseinstellung, die zweite Hälfte von \"3x max daily, 4x current\". Diese Grenze beschränkt das Basal-IOB auf die (im Standardfall) vierfache Menge der aktuellen Basalrate. Dies ist wichtig, um Nutzer davor zu bewahren, zuviel Basal-Insulin zu verabreichen. Nochmals, der Standardwert ist 4x. Die meisten Nutzer werden niemals diese Einstellung verändern, sondern andere Einstellungen anpassen, um sich nicht dieser Sicherheitsgrenze zu nähern.</string>
|
||||
<string name="openapsama_autosens_max_summary">Standardwert: 1.2\nDies ist eine Sicherheitsgrenze für Autosens (und bald auch Autotune), die besagt, wie hoch Autosens Basalraten anpassen darf und wie niedrig der ISF (Insulin-Sensitivitäts-Faktor) und der BZ-Zielwert eingestellt werden können. 1.2 ist dabei der Multiplikationsfaktor und erlaubt eine Anpassung um 20%%.</string>
|
||||
<string name="openapsama_autosens_max_summary">Standardwert: 1.2\nDies ist eine Sicherheitsgrenze für Autosens (und bald auch Autotune), die besagt, wie stark Autosens Basalraten erhöhen darf und wie niedrig der ISF (Insulin-Sensitivitäts-Faktor) und der BZ-Zielwert eingestellt werden können. 1.2 ist dabei der Multiplikationsfaktor und erlaubt eine Anpassung um 20%%.</string>
|
||||
<string name="openapsama_autosens_min_summary">Standardwert: 0.7\nDies ist die andere Sicherheitsgrenze für autosens. Sie beschränkt, wie weit Basalraten abgesenkt und wie sehr ISF und BZ-Zielwerte erhöht werden können.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens passt Zielwerte ebenfalls an</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Vorgabe: erlaubt.\nErlaubt Autosens den Ziel-BZ-Bereich in Verbindung mit ISF und Basal anzupassen.</string>
|
||||
|
@ -401,7 +404,7 @@
|
|||
<string name="resistantadult">Insulinresistenter Erwachsener</string>
|
||||
<string name="patientage_summary">Bitte wähle das Patientenalter, um die Sicherheits-Limits festzulegen</string>
|
||||
<string name="patient_name">Name des Patienten</string>
|
||||
<string name="patient_name_summary">Gib den Namen des Patienten oder einen Spitznamen für die Unterscheidung zwischen mehreren Setups an.</string>
|
||||
<string name="patient_name_summary">Bitte gib den Namen des Patienten oder einen Spitznamen an, um mehrere Setups unterscheiden zu können.</string>
|
||||
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Nutzer</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%1$s benötigt eine deaktivierte Akku-Leistungsoptimierung, um korrekt arbeiten zu können.</string>
|
||||
|
@ -502,7 +505,7 @@
|
|||
<string name="mdtp_cancel">Abbrechen</string>
|
||||
<string name="notloadedplugins">Es sind nicht alle Profile geladen!</string>
|
||||
<string name="valuesnotstored">Werte nicht gespeichert!</string>
|
||||
<string name="ns_localbroadcasts">Aktiviere die Datenübertragung zu anderen Apps (z.B. xDrip). Nicht aktivieren falls Du mehr als eine Instanz von AAPS oder NSClient installiert hast!</string>
|
||||
<string name="ns_localbroadcasts">Aktiviere die Datenübertragung zu anderen Apps (z.B. xDrip). Nicht aktivieren, falls Du mehr als eine Instanz von AAPS oder NSClient installiert hast!</string>
|
||||
<string name="ns_localbroadcasts_title">Aktiviere lokale Broadcasts</string>
|
||||
<string name="careportal_activity_label">AKTIVITÄT & FEEDBACK</string>
|
||||
<string name="careportal_carbsandbolus_label">CARBS & BOLUS</string>
|
||||
|
@ -557,10 +560,10 @@
|
|||
<string name="bgsource_upload">BZ Upload Einstellungen</string>
|
||||
<string name="wear_detailed_delta_title">Zeige detailliertes Delta</string>
|
||||
<string name="wear_detailed_delta_summary">Delta wird mit Dezimalstelle angezeigt.</string>
|
||||
<string name="smbinterval_summary">Wie häufig SMBs angegeben werden (in Min.)</string>
|
||||
<string name="smbinterval_summary">Wie häufig SMBs abgegeben werden (in Min.)</string>
|
||||
<string name="smbmaxminutes">SMB max. Minuten</string>
|
||||
<string name="smbmaxminutes_summary">SMB Basal-Limit in Minuten</string>
|
||||
<string name="uamsmbmaxminutes">UAM SMB max minutes</string>
|
||||
<string name="uamsmbmaxminutes">UAM SMB max. Minuten</string>
|
||||
<string name="uamsmbmaxminutes_summary">SMB Basal-Limit in Minuten für UAM</string>
|
||||
<string name="carbsReqThreshold">Schwellenwert für KH-Empfehlung</string>
|
||||
<string name="dexcomg5_xdripupload_title">Sende BZ-Werte zu xDrip+</string>
|
||||
|
|
|
@ -1374,7 +1374,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="description_pump_omnipod_dash">Intégration de la pompe Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Rappel fin d\'appairage</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Rappel fin de configuration</string>
|
||||
<string name="omnipod_alert_expiration">Le Pod expire bientôt</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Le Pod expire bientôt</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Arrêt imminent</string>
|
||||
<string name="omnipod_alert_low_reservoir">Réservoir bas</string>
|
||||
|
|
|
@ -264,6 +264,9 @@
|
|||
<string name="smscommunicator_carbsreplywithcode">Per inserire %1$dg a %2$s rispondi col codice %3$s</string>
|
||||
<string name="smscommunicator_basalpctreplywithcode">Per avviare la basale %1$d%% per %2$d min rispondi col codice %3$s</string>
|
||||
<string name="smscommunicator_suspendreplywithcode">Per sospendere il loop per %1$d minuti rispondi col codice %2$s</string>
|
||||
<string name="smscommunicator_loopresumereplywithcode">Per riprendere il loop rispondi col codice %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Per abilitare il loop rispondi col codice %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Per disabilitare il loop rispondi col codice %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">Basale temporanea %1$.2fU/h per %2$d min avviata con successo</string>
|
||||
<string name="smscommunicator_extendedset">Bolo esteso %1$.2fU/h per %2$d min avviato con successo</string>
|
||||
<string name="smscommunicator_carbsset">CHO %1$dg inseriti con successo</string>
|
||||
|
|
|
@ -1369,7 +1369,6 @@
|
|||
<string name="description_pump_omnipod_dash">Integração da Bomba para Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Lembrete Concluir Emparelhamento</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Lembrete Terminar Configuração</string>
|
||||
<string name="omnipod_alert_expiration">Pod vai expirar em breve</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Pod vai expirar em breve</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Encerramento iminente</string>
|
||||
<string name="omnipod_alert_low_reservoir">Reservatório baixo</string>
|
||||
|
|
|
@ -1369,7 +1369,6 @@
|
|||
<string name="description_pump_omnipod_dash">Integração da Bomba para Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Lembrete Concluir Emparelhamento</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Lembrete Terminar Configuração</string>
|
||||
<string name="omnipod_alert_expiration">Pod vai expirar em breve</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Pod vai expirar em breve</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Encerramento iminente</string>
|
||||
<string name="omnipod_alert_low_reservoir">Reservatório baixo</string>
|
||||
|
|
|
@ -264,6 +264,9 @@
|
|||
<string name="smscommunicator_carbsreplywithcode">Чтобы ввести %1$d г в %2$s ответьте кодом %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_loopresumereplywithcode">Чтобы возобновить цикл ответьте кодом %1$s</string>
|
||||
<string name="smscommunicator_loopenablereplywithcode">Чтобы включить цикл ответьте кодом %1$s</string>
|
||||
<string name="smscommunicator_loopdisablereplywithcode">Чтобы отключить цикл ответьте кодом %1$s</string>
|
||||
<string name="smscommunicator_tempbasalset">врем базал %1$.2fU/h на %2$d мин начат успешно</string>
|
||||
<string name="smscommunicator_extendedset">Пролонгированный болюс %1$.2fед. на %2$d мин. начат успешно</string>
|
||||
<string name="smscommunicator_carbsset">Углеводы %1$d г введены успешно</string>
|
||||
|
@ -468,6 +471,8 @@
|
|||
<string name="doprofileswitch">Переключить профиль</string>
|
||||
<string name="careportal_pbage_label">Батарея помпы работает</string>
|
||||
<string name="ns_alarmoptions">опции оповещения</string>
|
||||
<string name="ns_alarms">Создать уведомления из оповещений NS</string>
|
||||
<string name="ns_announcements">Создать уведомления из оповещений NS</string>
|
||||
<string name="nsalarm_staledatavalue_label">Порог оповещения об устаревших данных [min] (мин)</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Порог тревоги об устаревших данных [min] (мин)</string>
|
||||
<string name="openapsama_autosens_period">Интервал для autosens [h] (ч)</string>
|
||||
|
@ -1375,7 +1380,7 @@ Context | Edit Context</string>
|
|||
<string name="description_pump_omnipod_dash">Интеграция с помпой Omnompod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Напоминание о завершении сопряжения</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Напоминание о завершении настройки</string>
|
||||
<string name="omnipod_alert_expiration">Срок Pod\'a истекает в ближайшее время</string>
|
||||
<string name="omnipod_alert_expiration">Срок работы Pod\'a истекает</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Срок Pod\'a истекает в ближайшее время</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Остановка неизбежна</string>
|
||||
<string name="omnipod_alert_low_reservoir">В резервуаре мало инсулина</string>
|
||||
|
|
|
@ -1369,7 +1369,6 @@
|
|||
<string name="description_pump_omnipod_dash">Integrácia pumpy pre Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Pripomienka ukončenia párovania</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Pripomienka ukončenia nastavenia</string>
|
||||
<string name="omnipod_alert_expiration">Pod čoskoro expiruje</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Pod čoskoro expiruje</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Vypnutie je bezprostredné</string>
|
||||
<string name="omnipod_alert_low_reservoir">Nízka hladina zásobníka</string>
|
||||
|
|
|
@ -1370,7 +1370,6 @@ Eversense-appen.</string>
|
|||
<string name="description_pump_omnipod_dash">Pumpintegration för Omnipod Dash.</string>
|
||||
<string name="omnipod_alert_finish_pairing_reminder">Påminnelse att slutföra parkoppling</string>
|
||||
<string name="omnipod_alert_finish_setup_reminder_reminder">Påminnelse att slutföra installation</string>
|
||||
<string name="omnipod_alert_expiration">Pod kommer att gå ut inom kort</string>
|
||||
<string name="omnipod_alert_expiration_advisory">Pod kommer att gå ut inom kort</string>
|
||||
<string name="omnipod_alert_shutdown_imminent">Pod kommer snart att stängas av</string>
|
||||
<string name="omnipod_alert_low_reservoir">Låg reservoar</string>
|
||||
|
|
|
@ -531,8 +531,14 @@
|
|||
<string name="statuslights_bat_warning">Threshold warning battery level [%]</string>
|
||||
<string name="key_statuslights_bat_critical" translatable="false">statuslights_bat_critical</string>
|
||||
<string name="statuslights_bat_critical">Threshold critical battery level [%]</string>
|
||||
<string name="prediction_shortname">PRED</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="basal_shortname">BAS</string>
|
||||
<string name="deviation_shortname">DEV</string>
|
||||
<string name="activity_shortname">ACT</string>
|
||||
<string name="abs_insulin_shortname">ABS</string>
|
||||
<string name="devslope_shortname">DEVSLOPE</string>
|
||||
<string name="nav_about">About</string>
|
||||
<string name="smscommunicator_missingsmspermission">Missing SMS permission</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">Missing phone state permission</string>
|
||||
|
@ -736,6 +742,9 @@
|
|||
<string name="key_enableSMB_with_temptarget" translatable="false">enableSMB_with_temptarget</string>
|
||||
<string name="key_enableSMB_after_carbs" translatable="false">enableSMB_after_carbs</string>
|
||||
<string name="key_allowSMB_with_high_temptarget" translatable="false">enableSMB_with_high_temptarget</string>
|
||||
<string name="key_set_neutral_temps" translatable="false">set_neutral_temps</string>
|
||||
<string name="set_neutral_temps_title">Set neutral temp basals</string>
|
||||
<string name="set_neutral_temps_summary">If enabled, it will cancel a temporary basal before the end of each hour. This method can help stop some pumps beeping/vibrating on the hour.</string>
|
||||
<string name="enablesmbalways">Enable SMB always</string>
|
||||
<string name="enablesmbalways_summary">Enable SMB always independently to boluses. Possible only with BG source with nice filtering of data like G5</string>
|
||||
<string name="enablesmbaftercarbs">Enable SMB after carbs</string>
|
||||
|
|
|
@ -98,6 +98,12 @@
|
|||
<intent android:action="info.nightscout.androidaps.plugins.PumpCommon.dialog.RileyLinkBLEScanActivity" />
|
||||
</Preference>
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/key_set_neutral_temps"
|
||||
android:summary="@string/set_neutral_temps_summary"
|
||||
android:title="@string/set_neutral_temps_title" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
|
@ -30,7 +30,7 @@ class TriggerBolusAgoTest : TriggerTestBase() {
|
|||
|
||||
@Test
|
||||
fun shouldRunTest() {
|
||||
`when`(treatmentsPlugin.getLastBolusTime(false)).thenReturn(now) // Set last bolus time to now
|
||||
`when`(treatmentsPlugin.getLastBolusTime(true)).thenReturn(now) // Set last bolus time to now
|
||||
`when`(DateUtil.now()).thenReturn(now + 10 * 60 * 1000) // set current time to now + 10 min
|
||||
var t = TriggerBolusAgo(injector).setValue(110).comparator(Comparator.Compare.IS_EQUAL)
|
||||
Assert.assertEquals(110, t.minutesAgo.value)
|
||||
|
@ -53,7 +53,7 @@ class TriggerBolusAgoTest : TriggerTestBase() {
|
|||
Assert.assertTrue(t.shouldRun())
|
||||
t = TriggerBolusAgo(injector).setValue(390).comparator(Comparator.Compare.IS_EQUAL_OR_LESSER)
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
PowerMockito.`when`(treatmentsPlugin.getLastBolusTime(false)).thenReturn(0L) // Set last bolus time to 0
|
||||
PowerMockito.`when`(treatmentsPlugin.getLastBolusTime(true)).thenReturn(0L) // Set last bolus time to 0
|
||||
t = TriggerBolusAgo(injector).comparator(Comparator.Compare.IS_NOT_AVAILABLE)
|
||||
Assert.assertTrue(t.shouldRun())
|
||||
}
|
||||
|
|
|
@ -119,4 +119,8 @@ public interface PumpInterface {
|
|||
default boolean isUnreachableAlertTimeoutExceeded(long alertTimeoutMilliseconds) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean setNeutralTempAtFullHour() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class SMBDefaults {
|
|||
// (If someone enters more carbs or stacks more; OpenAPS will just truncate dosing based on 120.
|
||||
// Essentially, this just limits AMA/SMB as a safety cap against excessive COB entry)
|
||||
public final static int maxCOB = 120;
|
||||
public final static boolean skip_neutral_temps = true; // ***** default false in oref1 ***** if true, don't set neutral temps
|
||||
//public final static boolean skip_neutral_temps = true; // ***** default false in oref1 ***** if true, don't set neutral temps
|
||||
// unsuspend_if_no_temp:false // if true, pump will un-suspend after a zero temp finishes
|
||||
// bolussnooze_dia_divisor:2 // bolus snooze decays after 1/2 of DIA
|
||||
public final static double min_5m_carbimpact = 8d; // mg/dL per 5m (8 mg/dL/5m corresponds to 24g/hr at a CSF of 4 mg/dL/g (x/5*60/4))
|
||||
|
|
|
@ -12,6 +12,7 @@ import info.nightscout.androidaps.utils.extensions.runOnUiThread
|
|||
object OKDialog {
|
||||
@SuppressLint("InflateParams")
|
||||
fun show(context: Context, title: String, message: String, runnable: Runnable? = null) {
|
||||
var okClicked = false
|
||||
var notEmptytitle = title
|
||||
if (notEmptytitle.isEmpty()) notEmptytitle = context.getString(R.string.message)
|
||||
|
||||
|
@ -19,18 +20,21 @@ object OKDialog {
|
|||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, notEmptytitle))
|
||||
.setMessage(message)
|
||||
.setPositiveButton(context.getString(R.string.ok)) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(runnable)
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(runnable)
|
||||
}
|
||||
}
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
}
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun show(activity: Activity, title: String, message: Spanned, runnable: Runnable? = null) {
|
||||
var okClicked = false
|
||||
var notEmptytitle = title
|
||||
if (notEmptytitle.isEmpty()) notEmptytitle = activity.getString(R.string.message)
|
||||
|
||||
|
@ -38,9 +42,13 @@ object OKDialog {
|
|||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, notEmptytitle))
|
||||
.setMessage(message)
|
||||
.setPositiveButton(activity.getString(R.string.ok)) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runnable?.let { activity.runOnUiThread(it) }
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runnable?.let { activity.runOnUiThread(it) }
|
||||
}
|
||||
}
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
|
@ -57,71 +65,89 @@ object OKDialog {
|
|||
}
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showConfirmation(activity: Activity, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
|
||||
var okClicked = false
|
||||
AlertDialogHelper.Builder(activity)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, title))
|
||||
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.let { activity.runOnUiThread(it) }
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.let { activity.runOnUiThread(it) }
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.let { activity.runOnUiThread(it) }
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.let { activity.runOnUiThread(it) }
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
}
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@JvmStatic
|
||||
fun showConfirmation(activity: Activity, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
|
||||
var okClicked = false
|
||||
AlertDialogHelper.Builder(activity)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, title))
|
||||
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.let { activity.runOnUiThread(it) }
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.let { activity.runOnUiThread(it) }
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.let { activity.runOnUiThread(it) }
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.let { activity.runOnUiThread(it) }
|
||||
}
|
||||
}
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showConfirmation(context: Context, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
|
||||
showConfirmation(context, context.getString(R.string.confirmation), message, ok, cancel)
|
||||
}
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showConfirmation(context: Context, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
|
||||
var okClicked = false
|
||||
AlertDialogHelper.Builder(context)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
|
||||
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(ok)
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(ok)
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(cancel)
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(cancel)
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
}
|
||||
|
@ -136,18 +162,27 @@ object OKDialog {
|
|||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showConfirmation(context: Context, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
|
||||
var okClicked = false
|
||||
AlertDialogHelper.Builder(context)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
|
||||
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(ok)
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(ok)
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(cancel)
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
runOnUiThread(cancel)
|
||||
}
|
||||
}
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
|
@ -157,18 +192,27 @@ object OKDialog {
|
|||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showConfirmation(context: Context, title: String, message: String, ok: DialogInterface.OnClickListener?, cancel: DialogInterface.OnClickListener? = null) {
|
||||
var okClicked = false
|
||||
AlertDialogHelper.Builder(context)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
|
||||
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, which: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.onClick(dialog, which)
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
ok?.onClick(dialog, which)
|
||||
}
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, which: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.onClick(dialog, which)
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
cancel?.onClick(dialog, which)
|
||||
}
|
||||
}
|
||||
.show()
|
||||
.setCanceledOnTouchOutside(false)
|
||||
|
|
|
@ -13,31 +13,37 @@ import info.nightscout.androidaps.utils.extensions.runOnUiThread
|
|||
object WarningDialog {
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showWarning(context: Context, title: String, message: String, @StringRes positiveButton: Int = -1, ok: (() -> Unit)? = null, cancel: (() -> Unit)? = null) {
|
||||
|
||||
var okClicked = false
|
||||
val builder = AlertDialogHelper.Builder(context, R.style.AppThemeWarningDialog)
|
||||
.setMessage(message)
|
||||
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title, R.drawable.ic_header_warning, R.style.AppThemeWarningDialog))
|
||||
.setNegativeButton(R.string.dismiss) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
if (cancel != null) {
|
||||
runOnUiThread(Runnable {
|
||||
cancel()
|
||||
})
|
||||
if (okClicked) return@setNegativeButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
if (cancel != null) {
|
||||
runOnUiThread(Runnable {
|
||||
cancel()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (positiveButton != -1) {
|
||||
builder.setPositiveButton(positiveButton) { dialog: DialogInterface, _: Int ->
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
if (ok != null) {
|
||||
runOnUiThread(Runnable {
|
||||
ok()
|
||||
})
|
||||
if (okClicked) return@setPositiveButton
|
||||
else {
|
||||
okClicked = true
|
||||
dialog.dismiss()
|
||||
SystemClock.sleep(100)
|
||||
if (ok != null) {
|
||||
runOnUiThread(Runnable {
|
||||
ok()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 974 B |
Binary file not shown.
Before Width: | Height: | Size: 1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.2 KiB |
|
@ -1,10 +1,11 @@
|
|||
package info.nightscout.androidaps.danars.comm
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.dana.DanaPump
|
||||
import info.nightscout.androidaps.danars.encryption.BleEncryption
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
import javax.inject.Inject
|
||||
|
||||
class DanaRS_Packet_Bolus_Get_Step_Bolus_Information(
|
||||
|
@ -24,7 +25,8 @@ class DanaRS_Packet_Bolus_Get_Step_Bolus_Information(
|
|||
danaPump.initialBolusAmount = intFromBuff(data, 2, 2) / 100.0
|
||||
val hours = intFromBuff(data, 4, 1)
|
||||
val minutes = intFromBuff(data, 5, 1)
|
||||
danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
if (danaPump.usingUTC) danaPump.lastBolusTime = DateTime.now().withZone(DateTimeZone.UTC).withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
else danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
danaPump.lastBolusAmount = intFromBuff(data, 6, 2) / 100.0
|
||||
danaPump.maxBolus = intFromBuff(data, 8, 2) / 100.0
|
||||
danaPump.bolusStep = intFromBuff(data, 10, 1) / 100.0
|
||||
|
|
|
@ -5,6 +5,7 @@ import info.nightscout.androidaps.logging.LTag
|
|||
import info.nightscout.androidaps.dana.DanaPump
|
||||
import info.nightscout.androidaps.danars.encryption.BleEncryption
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
import javax.inject.Inject
|
||||
|
||||
class DanaRS_Packet_General_Get_More_Information(
|
||||
|
@ -30,7 +31,8 @@ class DanaRS_Packet_General_Get_More_Information(
|
|||
// val remainRate = intFromBuff(data, 7, 2) / 100.0
|
||||
val hours = intFromBuff(data, 9, 1)
|
||||
val minutes = intFromBuff(data, 10, 1)
|
||||
danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
if (danaPump.usingUTC) danaPump.lastBolusTime = DateTime.now().withZone(DateTimeZone.UTC).withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
else danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
|
||||
danaPump.lastBolusAmount = intFromBuff(data, 11, 2) / 100.0
|
||||
// On DanaRS DailyUnits can't be more than 160
|
||||
if (danaPump.dailyTotalUnits > 160) failed = true
|
||||
|
|
Loading…
Reference in a new issue