Merge branch 'dev' into startupwizard

This commit is contained in:
Milos Kozak 2018-05-20 14:18:58 +02:00
commit 7714aa9138
32 changed files with 314 additions and 138 deletions

View file

@ -44,7 +44,7 @@ def generateGitBuild = { ->
stringBuilder.append('NoGitSystemAvailable')
}
stringBuilder.append('-')
stringBuilder.append((new Date()).format('yyyy.MM.dd'))
stringBuilder.append((new Date()).format('yyyy.MM.dd-HH:mm'))
stringBuilder.append('"')
return stringBuilder.toString()
}

View file

@ -179,10 +179,10 @@ public class FillDialog extends DialogFragment implements OnClickListener {
}
if (pumpSiteChangeCheckbox.isChecked())
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.actionsConfirm) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
if (insulinCartridgeChangeCheckbox.isChecked())
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.actionsConfirm) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
final String notes = notesEdit.getText().toString();
if (!notes.isEmpty()) {

View file

@ -112,7 +112,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
stopPressed = true;
stopPressedView.setVisibility(View.VISIBLE);
stopButton.setVisibility(View.INVISIBLE);
ConfigBuilderPlugin.getActivePump().stopBolusDelivering();
ConfigBuilderPlugin.getCommandQueue().cancelAllBoluses();
break;
}
}

View file

@ -303,21 +303,21 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
if (currentProfile.getUnits().equals(Constants.MMOL)) {
unitLabel = "mmol/l";
}
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(activityTT) + " " + unitLabel + " (" + activityTTDuration + " min)</font>");
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(activityTT) + " " + unitLabel + " (" + activityTTDuration + " min)</font>");
}
if (startEatingSoonTTCheckbox.isChecked()) {
if (currentProfile.getUnits().equals(Constants.MMOL)) {
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
} else
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
} else {
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
}
}
if (startHypoTTCheckbox.isChecked()) {
if (currentProfile.getUnits().equals(Constants.MMOL)) {
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(hypoTT) + " mmol/l (" + hypoTTDuration + " min)</font>");
} else
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(hypoTT) + " mg/dl (" + hypoTTDuration + " min)</font>");
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(hypoTT) + " mmol/l (" + hypoTTDuration + " min)</font>");
} else {
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(hypoTT) + " mg/dl (" + hypoTTDuration + " min)</font>");
}
}
int timeOffset = editTime.getValue().intValue();

View file

@ -217,9 +217,9 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener
if (startEatingSoonTTCheckbox.isChecked()) {
if (currentProfile.getUnits().equals(Constants.MMOL)) {
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
} else
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
}
int timeOffset = editTime.getValue().intValue();

View file

@ -59,6 +59,8 @@ public class Notification {
public static final int ZERO_VALUE_IN_PROFILE = 31;
public static final int PROFILE_SWITCH_MISSING = 32;
public static final int NOT_ENG_MODE_OR_RELEASE = 33;
public static final int WRONG_PUMP_PASSWORD = 34;
public int id;
public Date date;

View file

@ -56,6 +56,7 @@ import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.Bolus;
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.PumpHistory;
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.PumpHistoryRequest;
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.Tdd;
import info.nightscout.androidaps.plugins.Treatments.Treatment;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.androidaps.queue.CommandQueue;
@ -421,9 +422,6 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
return pump.basalProfile.hourlyRates[currentHour];
}
private static BolusProgressReporter nullBolusProgressReporter = (state, percent, delivered) -> {
};
private static BolusProgressReporter bolusProgressReporter = (state, percent, delivered) -> {
EventOverviewBolusProgress event = EventOverviewBolusProgress.getInstance();
switch (state) {
@ -549,12 +547,14 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
return new PumpEnactResult().success(true).enacted(false);
}
BolusProgressReporter progressReporter = detailedBolusInfo.isSMB ? nullBolusProgressReporter : bolusProgressReporter;
Treatment treatment = new Treatment();
treatment.isSMB = detailedBolusInfo.isSMB;
EventOverviewBolusProgress.getInstance().t = treatment;
// start bolus delivery
scripterIsBolusing = true;
runCommand(null, 0,
() -> ruffyScripter.deliverBolus(detailedBolusInfo.insulin, progressReporter));
() -> ruffyScripter.deliverBolus(detailedBolusInfo.insulin, bolusProgressReporter));
scripterIsBolusing = false;
// Note that the result of the issued bolus command is not checked. If there was

View file

@ -65,6 +65,11 @@ public abstract class AbstractDanaRExecutionService extends Service {
protected final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
protected long lastWrongPumpPassword = 0;
protected long lastApproachingDailyLimit = 0;
public abstract boolean updateBasalsInPump(final Profile profile);
public abstract void connect();

View file

@ -97,7 +97,11 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
public void connect() {
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
notification.soundId = R.raw.error;
lastWrongPumpPassword = System.currentTimeMillis();
}
return;
}
@ -192,9 +196,12 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
NSUpload.uploadDeviceStatus();
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
} catch (Exception e) {
log.error("Unhandled exception", e);

View file

@ -105,7 +105,11 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public void connect() {
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
notification.soundId = R.raw.error;
lastWrongPumpPassword = System.currentTimeMillis();
}
return;
}
@ -197,9 +201,12 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
NSUpload.uploadDeviceStatus();
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
} catch (Exception e) {
log.error("Unhandled exception", e);

View file

@ -87,6 +87,7 @@ public class DanaRSService extends Service {
private Treatment bolusingTreatment = null;
private long lastHistoryFetched = 0;
private long lastApproachingDailyLimit = 0;
public DanaRSService() {
try {
@ -165,9 +166,12 @@ public class DanaRSService extends Service {
NSUpload.uploadDeviceStatus();
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
} catch (Exception e) {
log.error("Unhandled exception", e);

View file

@ -120,7 +120,11 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public void connect() {
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
notification.soundId = R.raw.error;
lastWrongPumpPassword = System.currentTimeMillis();
}
return;
}
@ -218,9 +222,12 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
NSUpload.uploadDeviceStatus();
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
} catch (Exception e) {
log.error("Unhandled exception", e);

View file

@ -196,6 +196,7 @@ public class ActionStringHandler {
}
boolean useBG = SP.getBoolean(R.string.key_wearwizard_bg, true);
boolean useTT = SP.getBoolean(R.string.key_wearwizard_tt, false);
boolean useBolusIOB = SP.getBoolean(R.string.key_wearwizard_bolusiob, true);
boolean useBasalIOB = SP.getBoolean(R.string.key_wearwizard_basaliob, true);
boolean useCOB = SP.getBoolean(R.string.key_wearwizard_cob, true);
@ -223,7 +224,9 @@ public class ActionStringHandler {
DecimalFormat format = new DecimalFormat("0.00");
DecimalFormat formatInt = new DecimalFormat("0");
BolusWizard bolusWizard = new BolusWizard();
bolusWizard.doCalc(profile, null, carbsAfterConstraints, useCOB?cobInfo.displayCob:0d, useBG ? bgReading.valueToUnits(profile.getUnits()) : 0d, 0d, percentage, useBolusIOB, useBasalIOB, false, useTrend);
bolusWizard.doCalc(profile, useTT ? TreatmentsPlugin.getPlugin().getTempTargetFromHistory() : null,
carbsAfterConstraints, useCOB?cobInfo.displayCob:0d, useBG ? bgReading.valueToUnits(profile.getUnits()) : 0d,
0d, percentage, useBolusIOB, useBasalIOB, false, useTrend);
Double insulinAfterConstraints = MainApp.getConstraintChecker().applyBolusConstraints(new Constraint<>(bolusWizard.calculatedTotalInsulin)).value();
if (insulinAfterConstraints - bolusWizard.calculatedTotalInsulin != 0) {

View file

@ -213,6 +213,12 @@ public class CommandQueue {
return true;
}
public synchronized void cancelAllBoluses() {
removeAll(Command.CommandType.BOLUS);
removeAll(Command.CommandType.SMB_BOLUS);
ConfigBuilderPlugin.getActivePump().stopBolusDelivering();
}
// returns true if command is queued
public boolean tempBasalAbsolute(double absoluteRate, int durationInMinutes, boolean enforceNew, Profile profile, Callback callback) {
if (!enforceNew && isRunning(Command.CommandType.TEMPBASAL)) {

View file

@ -7,6 +7,12 @@ package info.nightscout.utils;
public class T {
private long time; // in msec
public static T now() {
T t = new T();
t.time = System.currentTimeMillis();
return t;
}
public static T msecs(long msec) {
T t = new T();
t.time = msec;
@ -56,4 +62,12 @@ public class T {
public long days() {
return time / 24 / 60 / 60 / 1000L;
}
public T plus(T plus) {
return T.msecs(time + plus.time);
}
public T minus(T minus) {
return T.msecs(time - minus.time);
}
}

View file

@ -11,27 +11,24 @@
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="5dp"
android:src="@drawable/icon_cp_pump_canula" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/primefill"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/colorInsulinButton" />

View file

@ -11,8 +11,8 @@
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
@ -20,10 +20,16 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="10dp"
android:text="@string/overview_calibration_bg_label"
android:text="@string/overview_calibration"
android:textColor="@color/colorCalibrationButton"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:src="@drawable/icon_calibration" />
<TextView
android:id="@+id/overview_calibration_units"
android:layout_width="wrap_content"

View file

@ -20,28 +20,25 @@
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/icon_cp_bolus_carbs" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/carbs"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/colorCarbsButton" />
</LinearLayout>

View file

@ -17,26 +17,23 @@
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/icon_bolus" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:textAlignment="center"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/overview_insulin_label"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/colorInsulinButton" />
@ -59,7 +56,7 @@
android:id="@+id/newinsulin_record_only"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/don_t_bolus_record_only" />
android:text="@string/do_not_bolus_record_only" />
</LinearLayout>
@ -124,6 +121,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="5dp"
android:text="@string/insulin_unit_shortname" />
</LinearLayout>

View file

@ -29,7 +29,7 @@
android:id="@+id/newtreatment_record_only"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/don_t_bolus_record_only" />
android:text="@string/do_not_bolus_record_only" />
<TextView
android:layout_width="wrap_content"

View file

@ -810,7 +810,7 @@
<string name="data_choices">Избор на данни</string>
<string name="allow_automated_crash_reporting">Позволява автоматично изпращане на данни за грешки и статистически данни до разработчиците чрез fabric.io service.</string>
<string name="g5appnotdetected">Моля обновете G5 приложението до поддържана версия.</string>
<string name="don_t_bolus_record_only">Не доставяй болус, само запис</string>
<string name="do_not_bolus_record_only">Не доставяй болус, само запис</string>
<string name="category">Категория</string>
<string name="subcategory">Подкатегория</string>
<string name="bolusrecordedonly">Болусът ще бъде само записан</string>

View file

@ -810,7 +810,7 @@
<string name="start_eating_soon_tt">Spustit Dočasný cíl Blížící se jídlo</string>
<string name="temptargetshort">DoCíl</string>
<string name="insight_min">min</string>
<string name="don_t_bolus_record_only">Nepouštět bolus, jen zaznamenat</string>
<string name="do_not_bolus_record_only">Nepouštět bolus, jen zaznamenat</string>
<string name="subcategory">Podkategorie</string>
<string name="category">Kategorie</string>
<string name="bolusrecordedonly">Bolus bude pouze zaznamenán</string>

View file

@ -241,7 +241,7 @@
<string name="overview_editquickwizardlistactivity_add">Hinzufügen</string>
<string name="overview_quickwizard_item_edit_button">Bearbeiten</string>
<string name="danar_history_basalhours">Basal-Stunden</string>
<string name="danar_history_connectingfor">Verbindungsaufbau %d s</string>
<string name="danar_history_connectingfor">Verbindungsaufbau %1$d s</string>
<string name="overview_editquickwizard_valid">Gültigkeit:</string>
<string name="overview_editquickwizard_carbs">Kohlenhydrate:</string>
<string name="quickwizardsettings">QuickWizard-Einstellungen</string>
@ -255,7 +255,7 @@
<string name="othersettings_title">Andere</string>
<string name="occlusion">Verstopfung</string>
<string name="overview_bolusprogress_delivered">Abgegeben</string>
<string name="overview_bolusprogress_goingtodeliver">Es werden %.2f IE abgegeben</string>
<string name="overview_bolusprogress_goingtodeliver">Es werden %1$.2f IE abgegeben</string>
<string name="primefill">Vorfüllen/Füllen</string>
<string name="uploading">Hochladen</string>
<string name="es_lang">Spanish</string>
@ -404,9 +404,9 @@
<string name="iob">IOB</string>
<string name="localprofile">Lokales Profil</string>
<string name="lock_screen">Sperrbildschirm</string>
<string name="loopsuperbolusfor">Superbolus (%d Min.)</string>
<string name="loopsuperbolusfor">Superbolus (%1$d Min.)</string>
<string name="loopsuspended">Loop pausiert</string>
<string name="loopsuspendedfor">Pausiert (%d Min.)</string>
<string name="loopsuspendedfor">Pausiert (%1$d Min.)</string>
<string name="mdtp_cancel">Abbrechen</string>
<string name="mdtp_ok">OK</string>
<string name="mgdl">mg/dl</string>
@ -444,7 +444,7 @@
<string name="openaps_short">OAPS</string>
<string name="openapsama">OpenAPS AMA</string>
<string name="openapsma_scriptdebugdata_label">Skript Debug</string>
<string name="valueoutofrange">Wert %s ist außerhalb des festen Limits</string>
<string name="valueoutofrange">Wert %1$s ist außerhalb des festen Limits</string>
<string name="overview_calibration">Kalibrierung</string>
<string name="overview_calibration_bg_label">Kalibrierung</string>
<string name="overview_editquickwizard_buttontext">Button-Text:</string>
@ -469,7 +469,7 @@
<string name="restartingapp">App wird beendet, um neue Einstellungen zu laden.</string>
<string name="resume">Fortsetzen</string>
<string name="ru_lang">Russisch</string>
<string name="send_calibration">Kalibrierung %.1f an xDrip+ senden?</string>
<string name="send_calibration">Kalibrierung %1$.1f an xDrip+ senden?</string>
<string name="settings_password">Passwort für die Einstellungen</string>
<string name="settingtempbasal">TBR wird gesetzt</string>
<string name="short_tabtitles">Kurze Tab-Überschriften</string>
@ -490,11 +490,11 @@
<string name="updatingbasalrates">Basalraten werden aktualisiert</string>
<string name="careportal_sensorage_label">Sensoralter</string>
<string name="danar_switchtouhmode">Wechsle Modus von IE/d zu IE/h in der Pumpe</string>
<string name="danar_totaluploaded">Insgesamt %d Einträge erfolgreich hochgeladen</string>
<string name="danar_totaluploaded">Insgesamt %1$d Einträge erfolgreich hochgeladen</string>
<string name="danarprofile_dia_summary">Dauer der Insulinwirkung</string>
<string name="insulin_shortname">INS</string>
<string name="lock_screen_short">Sperr</string>
<string name="needwhitelisting">%s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können</string>
<string name="needwhitelisting">%1$s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können</string>
<string name="nsalarm_staledata">Veraltete Daten</string>
<string name="nsalarm_staledatavalue_label">Veraltete Daten seit [Min.]</string>
<string name="openapsma_autosensdata_label">Autosens-Daten</string>
@ -508,7 +508,7 @@
<string name="sensitivityoref0">Sensitivität Oref0</string>
<string name="sensitivityweightedaverage">Durchschnittliche Sensitivität</string>
<string name="settingextendedbolus">Verlängerter Bolus wird gesetzt</string>
<string name="sms_minago">vor %d Min.</string>
<string name="sms_minago">vor %1$d Min.</string>
<string formatted="false" name="smscommunicator_basalstopreplywithcode">Um die TBR abzubrechen, antworte mit dem Code %s</string>
<string formatted="false" name="smscommunicator_bolusdelivered">Bolus %.2f IE erfolgreich abgegeben</string>
<string name="smscommunicator_calibrationfailed">xDrip+ hat die Kalbrierung nicht erhalten</string>
@ -628,7 +628,7 @@
<string name="gettingbolusstatus">Status des Bolus wird ermittelt</string>
<string name="pairing">PAIRING</string>
<string name="startingbolus">Bolus-Abgabe gestartet</string>
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %d Sek. verbleiben.</string>
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %1$d Sek. verbleiben.</string>
<string name="executingrightnow">Befehl wird zurzeit ausgeführt.</string>
<string name="missed_bg_readings">BZ-Werte fehlen</string>
<string name="btwatchdog_summary">Deaktiviert Bluetooth kurzzeitig, falls keine Verbindung zur Pumpe besteht. Dies kann für Smartphones mit Verbindungsproblemen nützlich sein.</string>
@ -659,16 +659,16 @@
<string name="btwatchdog_title">BT Watchdog</string>
<string name="DexcomG5">DexcomG5 App (patched)</string>
<string name="combo_pump_activity_label">Aktivität</string>
<string name="combo_tbr_remaining">%d%% (%d Min. verbleibend)</string>
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %d Min.</string>
<string name="combo_tbr_remaining">%1$d%% (%2$d Min. verbleibend)</string>
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %1$d Min.</string>
<string name="combo_pump_state_label">Status</string>
<string name="combo_pump_state_suspended_by_user">Gestoppt (Benutzer)</string>
<string name="combo_pump_state_suspended_due_to_error">Gestoppt (Fehler)</string>
<string name="combo_pump_state_running">In Betrieb</string>
<string name="combo_programming_bolus">Bolusabgabe wird vorbereitet</string>
<string name="combo_pump_action_cancelling_tbr">TBR wird abgebrochen</string>
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%d%% / %d Min.)</string>
<string name="combo_pump_action_bolusing">Bolus (%.1f IE) wird abgegeben</string>
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%1$d%% / %2$d Min.)</string>
<string name="combo_pump_action_bolusing">Bolus (%1$.1f IE) wird abgegeben</string>
<string name="alert_dialog_storage_permission_text">Bitte starte dein Telefon neu oder starte AndroidAPS in den System-Einstellungen neu. Andernfalls wird AndroidAPS nicht protokolliert (wichtig zum Nachverfolgen und Verifizieren, dass der Algorithmus korrekt funktioniert)</string>
<string name="pump_tempbasal_label">TBR</string>
<string name="bolus_frequency_exceeded">Ein gleich großer Bolus wurde in den letzten zwei Minuten angefordert. Dies ist nicht zulässig, um ungewollte Doppelboli zu verhindern und vor eventuellen Bugs zu schützen.</string>
@ -677,7 +677,7 @@
<string name="combo_error_bolus_recovery_progress">Verbindung wird wieder hergestellt</string>
<string name="combo_error_bolus_verification_failed">Der abgegebene Bolus konnte nicht bestätigt werden. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde und erstelle einen Eintrag im Careportal falls nötig.</string>
<string name="combo_error_no_bolus_delivered">Die Bolusabgabe ist fehlgeschlagen: Es wurde scheinbar kein Bolus abgegeben. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde. Um doppelte Boli durch Programmfehler zu vermeiden, werden Boli nicht automatisch wiederholt.</string>
<string name="combo_error_partial_bolus_delivered">Wegen eines Fehlers wurden nur %.2f IE von den angeforderten %.2f IE abgegeben. Bitte prüfe den abgegebenen Bolus auf der Pumpe.</string>
<string name="combo_error_partial_bolus_delivered">Wegen eines Fehlers wurden nur %1$.2f IE von den angeforderten %2$.2f IE abgegeben. Bitte prüfe den abgegebenen Bolus auf der Pumpe.</string>
<string name="combo_pump_action_refreshing">Status wird aktualisiert</string>
<string name="combo_pump_state_initializing">Die Pumpe wird initialisiert</string>
<string name="combo_pump_connected_now">Jetzt</string>
@ -689,7 +689,7 @@
<string name="combo_pump_unsupported_operation">Diese Aktion wird von der Pumpe nicht unterstützt</string>
<string name="combo_pump_battery_low_warrning">Die Batterie in der Pumpe ist fast leer</string>
<string name="combo_pump_cartridge_low_warrning">Das Reservoir in der Pumpe ist fast leer</string>
<string name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%d: %s</string>
<string formatted="false" name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%d: %s</string>
<string name="combo_force_disabled_notification">Unsichere Verwendung: In der Pumpe ist nicht das erste Basalratenprofil gewählt. Der Loop wird deaktiviert bis dies korrigiert ist.</string>
<string name="combo_low_suspend_forced_notification">Unsichere Verwendung: Ein erweiterter oder Multiwave-Bolus ist aktiv. Der Loop wird für die nächsten 6 Stunden kein zusätzliches Insulin abgeben.</string>
<string name="combo_notification_check_time_date">Bitte aktualisiere die Uhrzeit der Pumpe</string>
@ -713,7 +713,7 @@
<string name="openapsama_min_5m_carbimpact_summary">Standardwert: 3.0\nDies ist eine Einstellung für die Standard-Kohlenhydrat-Absorptionswirkung pro 5 Minuten. Der Standardwert ist 3mg/dl/5min. Dies wirkt sich darauf aus, wie schnell der COB-Wert fällt und wieviel KH-Absorption bei der Berechnung des vorhergesagten BZ angenommen wird, wenn der BZ stärker als erwartet fällt oder nicht so stark wie erwartet steigt.</string>
<string name="openapsama_link_to_preferncejson_doc_txt">Achtung! Normalerweise musst Du diese Werte nicht ändern. Bitte KLICKE HIER und LESE den Text. Verändere Werte erst, wenn Du den Inhalt des Textes verstanden hast.</string>
<string name="combo_actvity_reading_basal_profile">Basalratenprofil wird gelesen</string>
<string name="pump_basebasalrate">%.2f IE/h</string>
<string formatted="false" name="pump_basebasalrate">%.2f IE/h</string>
<string name="combo_error_no_connection_no_bolus_delivered">Keine Verbindung zur Pumpe: Es wurde kein Bolus abgegeben.</string>
<string name="extendedbolusdeliveryerror">Fehler bei der Abgabe eines verlängerten Bolus</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">Nach der Berechnung des Bolus hat sich die Pumpenhistorie geändert. Daher wurde kein Bolus abgegeben. Bitte prüfe, ob überhaupt noch ein Bolus benötigt wird. Wenn die gleiche Bolusmenge erforderlich ist, warte zwei Minuten ab, denn es werden aus Sicherheitsgründen keine gleich großen Boli abgegeben, wenn sie innerhalb von zwei Minuten angefordert wurden (unabhängig davon, ob sie verabreicht wurden oder nicht).</string>
@ -726,9 +726,9 @@
<string name="mute">Alarm stoppen</string>
<string name="bolusstopped">Bolus gestoppt</string>
<string name="bolusstopping">Bolus wird gestoppt</string>
<string name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %s</string>
<string name="zerovalueinprofile">Ungültiges Profil: %s</string>
<string name="hoursago">vor %.1f h</string>
<string formatted="false" name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %s</string>
<string formatted="false" name="zerovalueinprofile">Ungültiges Profil: %s</string>
<string formatted="false" name="hoursago">vor %.1f h</string>
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Es wurde keine hohe TBR gesetzt, da nach der Berechnung Boluseinträge in der Pumpenhistorik gefunden wurden.</string>
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
@ -737,4 +737,66 @@
<string name="pump_stopped">Pumpe gestoppt</string>
<string name="pump_started">Pumpe gestartet</string>
<string name="pump_paused">Pumpe pausiert</string>
<string name="with">mit</string>
<string name="ns_wifi_ssids">Wlan SSID</string>
<string name="week">Woche</string>
<string formatted="false" name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%d Sek.)</string>
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
<string name="ns_wifionly">Benutze nur WLAN Verbindung</string>
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von Temporären Basal für Schnellere Aktion</string>
<string name="unsafeusage">Unsichere Benutzung</string>
<string name="time">Zeit</string>
<string name="thirdcarbsincrement">Dritte KH Inkrement</string>
<string name="thirdinsulinincrement">Dritte Insulin Inkrement</string>
<string name="loop_tbrsetbypump_label">Temp. Basal der Pumpe</string>
<string name="subcategory">Unterkategorie</string>
<string name="insight_stay_always_connected">Bleibe immer verbunden</string>
<string name="start_hypo_tt">Starte Hypo TT</string>
<string name="start_eating_soon_tt">Starte Essen TT</string>
<string name="start_activity_tt">Starte Aktivität TT</string>
<string name="overview_show_sensitivity">Sensitivität</string>
<string name="show_calibration_button_summary">Sendet eine Kalibierung an xDrip+ oder öffnet den G5 Kalibrierungs-Dialog</string>
<string name="secondinsulinincrement">Zweites Insulin Inkrement</string>
<string name="secondcarbsincrement">Zweites KH Inkrement</string>
<string name="second">Sekunde</string>
<string name="closed_loop_disabled_on_dev_branch">Entwickler-Version. Closed Loop ist nicht verfügbar.</string>
<string name="record_pump_site_change">Erfasse Katheter-Wechsel</string>
<string name="record_insulin_cartridge_change">Erfasse Resoirvoir-Wechsel</string>
<string name="insight_needs">benötigt</string>
<string name="overview_show_deviations">Abweichungen</string>
<string name="day">Tag</string>
<string name="ns_wifi_allowedssids">Erlaubte SSIDs (Semikolon getrennt)</string>
<string name="ns_allowroaming">Erlaube Verbindung bei Roaming</string>
<string name="openapsama_autosens_adjusttargets">Autosense passt Zielwerte an</string>
<string name="resistantadult">Insulin Resistenter Erwachsener</string>
<string name="enableuam">Aktiviere UAM</string>
<string name="enablesmb">Aktiviere SMB</string>
<string name="enableuam_summary">Erkennung von Unangekündigten Mahlzeiten</string>
<string name="hypo_duration">Hypo Dauer</string>
<string name="hypo_target">Hypo Zielwert</string>
<string name="hasbgdata">BZ verfügbar von gewählter Quelle</string>
<string name="changed">Geändert</string>
<string name="pump_stopped_uppercase">PUMPE GESTOPPT</string>
<string name="insight_active_tbr">Aktive TBR</string>
<string name="statistics">Statistiken</string>
<string name="enablesmbalways">Aktiviere SMB immer</string>
<string name="enablesmbaftercarbs">Aktiviere SMB nach Mahlzeiten</string>
<string name="enablesmbwithcob">Aktiviere SMB bei COB</string>
<string name="enablesmbwithtemptarget">Aktiviere SMB mit Temporären Zielwerten</string>
<string name="wear_predictions_title">Vorhersagen</string>
<string name="data_choices">Daten Auswahl</string>
<string name="smbdisabledinpreferences">SMB in Einstellungen deaktiviert</string>
<string name="food_short">Mahlzeiten</string>
<string name="hardlimit">Hartes Limit</string>
<string name="readstatusfailed">Lesen des Status fehlgeschlagen</string>
<string name="loopdisconnectedfor">Getrennt (%1$d m)</string>
<string name="automatic_careportal_events">Automatische Careportal Ereignisse</string>
<string name="firstinsulinincrement">Erstes Insulin Inkrement</string>
<string name="firstcarbsincrement">Erstes KH Inkrement</string>
<string name="ns_chargingonly">Nur wenn geladen wird</string>
<string name="connectionsettings_title">Verbindungs-Einstellungen</string>
<string formatted="false" name="objectivenotstarted">Zielsetzung %d nicht gestartet</string>
<string formatted="false" name="objectivenotfinished">Zielsetzung %d nicht abgeschlossen</string>
<string name="do_not_bolus_record_only">Bolus nur erfassen</string>
<string name="bolusrecordedonly">Bolus wird nur erfasst</string>
</resources>

View file

@ -744,7 +744,7 @@
<string name="bolusrecordedonly">El Bolo solo será anotado</string>
<string name="category">Categoría</string>
<string name="subcategory">Subcategoría</string>
<string name="don_t_bolus_record_only">No administrar Bolo, solo anotar</string>
<string name="do_not_bolus_record_only">No administrar Bolo, solo anotar</string>
<string name="insight_min">min</string>
<string name="temptargetshort">TT</string>
<string name="start_activity_tt">Inicio TT Actividad</string>

View file

@ -557,7 +557,7 @@
<string name="careportal_sensorage_label">Czas sensora</string>
<string name="careportal_canulaage_label">Czas wkłucia</string>
<string name="careportal_insulinage_label">Czas insuliny</string>
<string name="hours">godziny</string>
<string name="hours">godzin</string>
<string name="overview_newtempbasal_basaltype_label">Typ bazy</string>
<string name="invalidprofile">Nieważny profil !!!</string>
<string name="profileswitch">ZmieńProfil</string>
@ -835,7 +835,7 @@
<string name="start_activity_tt">Rozpocznij TT Ćwiczenia</string>
<string name="start_eating_soon_tt">Rozpocznij TT WkrótcePosiłek</string>
<string name="temptargetshort">TT</string>
<string name="don_t_bolus_record_only">Nie podawaj bolusa, tylko zapisz rekord</string>
<string name="do_not_bolus_record_only">Nie podawaj bolusa, tylko zapisz rekord</string>
<string name="category">Kategoria</string>
<string name="subcategory">Podkategoria</string>
<string name="bolusrecordedonly">Bolus zostanie tylko zapisany w rekordach</string>

View file

@ -53,19 +53,19 @@
<string name="careportal_newnstreatment_carbs_label">KH</string>
<string name="careportal_newnstreatment_carbtime_label">KH-tid</string>
<string name="careportal_newnstreatment_duration_label">Duration</string>
<string name="careportal_newnstreatment_enteredby_title">Infört av</string>
<string name="careportal_newnstreatment_enteredby_title">Loggat av</string>
<string name="careportal_newnstreatment_eventtime_label">Tid</string>
<string name="careportal_newnstreatment_eventtype">Händelsetyp</string>
<string name="careportal_newnstreatment_insulin_label">Insulin</string>
<string name="careportal_newnstreatment_meter">Mätare</string>
<string name="careportal_newnstreatment_notes_label">Notering</string>
<string name="careportal_newnstreatment_notes_label">Anteckning</string>
<string name="careportal_newnstreatment_other">Annat</string>
<string name="careportal_newnstreatment_percent_label">Procent</string>
<string name="careportal_newnstreatment_profile_label">Profil</string>
<string name="careportal_newnstreatment_sensor">Sensor</string>
<string name="careportal_newnstreatment_split_label">Delad</string>
<string name="careportal_note">Notering</string>
<string name="careportal_openapsoffline">Offline</string>
<string name="careportal_note">Anteckning</string>
<string name="careportal_openapsoffline">OpenAPS Offline</string>
<string name="careportal_pbage_label">Pumpbatteri ålder</string>
<string name="careportal_profileswitch">Byt profil</string>
<string name="careportal_pumpsitechange">Byte pumpkanyl</string>
@ -89,7 +89,7 @@
<string name="configbuilder_aps">APS</string>
<string name="configbuilder_bgsource">BG-källa</string>
<string name="configbuilder_constraints">Begränsningar</string>
<string name="configbuilder_general">Generell</string>
<string name="configbuilder_general">Generella inställningar</string>
<string name="configbuilder_insulin">Insulin</string>
<string name="configbuilder_loop">Loop</string>
<string name="configbuilder_nightscoutversion_label">Nightscoutversion:</string>
@ -229,7 +229,7 @@
<string name="nav_export">Exportera inställningar</string>
<string name="nav_import">Importera inställningar</string>
<string name="nav_preferences">Inställningar</string>
<string name="nav_refreshtreatments">Uppdatera behandlingar från NS</string>
<string name="nav_refreshtreatments">Uppdatera från Nightscout</string>
<string name="nav_resetdb">Återställ databaserna</string>
<string name="nav_show_logcat">Visa logg</string>
<string name="nav_test_alert">Testa alarm</string>
@ -243,10 +243,10 @@
<string name="nosuccess">misslyckat - kontrollera telefonen</string>
<string name="notavailable">Ej tillgängligt</string>
<string name="nowritepermission">NS Client har inga skrivrättigheter. Fel API secret?</string>
<string name="ns_alarmoptions">Alarm inställningar</string>
<string name="ns_alarmoptions">Larminställningar</string>
<string name="ns_localbroadcasts">Slå på sändning av data till alla appar i telefonen (ex xDrip).</string>
<string name="ns_localbroadcasts_title">Aktivera lokala broadcasts</string>
<string name="ns_logappstartedevent">Markera app start till Nightscout</string>
<string name="ns_logappstartedevent">Markera appstart till Nightscout</string>
<string name="ns_noupload">Ingen uppladdning till Nightscout</string>
<string name="ns_noupload_summary">Ingen data sänds till Nightscout. AAPS ansluter till Nightscout men inga ändringar görs i Nightscout.</string>
<string name="ns_sync_use_absolute_title">Använd alltid absoluta värden i basal</string>
@ -254,19 +254,19 @@
<string name="ns_upload_only_summary">Endast uppladdning till Nightscout. Kommer inte få BG-data om inte lokal källa som xDrip används. Kommer heller inte att kunna hämta basalprofiler från Nightscout.</string>
<string name="nsalarm_high">Hög</string>
<string name="nsalarm_low">Låg</string>
<string name="nsalarm_staledata">Gammal data</string>
<string name="nsalarm_staledata">BG-data saknas</string>
<string name="nsclient">NSClient</string>
<string name="nsclientinternal_devicename_dialogtitle">Ange enhetens namn</string>
<string name="nsclientinternal_devicename_title">Enhetens namn</string>
<string name="nsclientinternal_secret_dialogmessage">Ange NS API secret (min 12 tecken)</string>
<string name="nsclientinternal_secret_dialogtitle">NS API secret</string>
<string name="nsclientinternal_secret_dialogmessage">Ange Nightscout API secret (min 12 tecken)</string>
<string name="nsclientinternal_secret_dialogtitle">Nightscout API secret</string>
<string name="nsclientnotinstalled">NSClient är inte installerad. Data förlorad!</string>
<string name="nsclientinternal_url_title">Nightscout URL</string>
<string name="nsclientinternal_url_dialogmessage">Ange Nightscout URL</string>
<string name="nsclientinternal_url">URL:</string>
<string name="nsclientinternal_title">NSClient</string>
<string name="nsclientinternal_shortname">NSCI</string>
<string name="nsclientinternal_secret_title">NS API secret</string>
<string name="nsclientinternal_secret_title">Nightscout API secret</string>
<string name="nsprofileview_activeprofile_label">Aktiv profil</string>
<string name="nsprofileview_basal_label">Basal</string>
<string name="nsprofileview_dia_label">DIA</string>
@ -318,7 +318,7 @@
<string name="unsupportedclientver">Osupportad version av NSClient</string>
<string name="unlock_settings">Lås upp inställningar</string>
<string name="units">Enheter:</string>
<string name="treatmentssafety_title">Säkerhet vid behandling</string>
<string name="treatmentssafety_title">Säkerhetsbegränsingar</string>
<string name="treatmentssafety_maxcarbs_title">Max tillåtna KH [g]</string>
<string name="treatmentssafety_maxbolus_title">Max tillåten bolus [E]</string>
<string name="treatments_wizard_unit_label">E</string>
@ -333,21 +333,21 @@
<string name="treatments_shortname">Beh</string>
<string name="treatments_newtreatment_insulinamount_label">Insulin</string>
<string name="treatments_newtreatment_carbsamount_label">KH</string>
<string name="treatments_iobtotal_label_string">Total IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Totalt aktiverat IOB:</string>
<string name="treatments_iobtotal_label_string">Total IOB (bolus):</string>
<string name="treatments_iobactivitytotal_label_string">Total aktivitet (5m):</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="treatments_insulin_label_string">Insulin:</string>
<string name="treatments_carbs_label_string">KH:</string>
<string name="treatments_activity_string">Redan aktiverat:</string>
<string name="treatments_activity_string">5m:</string>
<string name="treatments">Behandlingar</string>
<string name="treatmentdeliveryerror">Fel vid bolusleverans</string>
<string name="temptargetrange_shortname">TT</string>
<string name="temptarget">Temp mål</string>
<string name="tempbasals_shortname">TB</string>
<string name="tempbasals_realduration_label_string">Dur:</string>
<string name="tempbasals_netratio_label_string">Kvot:</string>
<string name="tempbasals_netratio_label_string">Tot:</string>
<string name="tempbasals_netinsulin_label_string">Ins:</string>
<string name="tempbasals_iobtotal_label_string">Total IOB:</string>
<string name="tempbasals_iobtotal_label_string">Total IOB (basal):</string>
<string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasaldeliveryerror">Fel vid justering av tempbasal</string>
<string name="tempbasal">Temp basal</string>
@ -409,19 +409,19 @@
<string name="resume">Återuppta</string>
<string name="result">Resultat</string>
<string name="restartingapp">Avslutar appen för att inställningarna ska läsas in.</string>
<string name="restart">Omstart</string>
<string name="restart">Starta om</string>
<string name="reset_db_confirm">Vill du verkligen återställa databaserna?</string>
<string name="resend_all_data">Uppdatera klockans data</string>
<string name="removerecord">Ta bort sparad data:</string>
<string name="reloadprofile">Ladda om profil</string>
<string name="refresheventsfromnightscout">Uppdatera händelser från Nightscout</string>
<string name="refresheventsfromnightscout">Uppdatera från Nightscout</string>
<string name="reason">Orsak</string>
<string name="ratio_short">RAT</string>
<string name="rate">Hastighet</string>
<string name="quickwizardsettings">Kalkylatorinställningar</string>
<string name="quickwizard">Kalkylator</string>
<string name="queue">Kö:</string>
<string name="pumpsuspendedclicktorefresh">Pump pausad. Klicka för ladda om status.</string>
<string name="pumpsuspendedclicktorefresh">Pump pausad. Klicka för att ladda om status.</string>
<string name="pumpsuspended">Pump pausad</string>
<string name="pumpshutdown">Pump avstängd</string>
<string name="pumperror">Pumpfel</string>
@ -457,7 +457,7 @@
<string name="overview_calibration_bg_label">Kalibrering</string>
<string name="overview_calibration">Kalibrering</string>
<string name="overview_calculator_label">Kalkylator</string>
<string name="overview_bolusprogress_stoppressed">STOPP NEDTRYCKT</string>
<string name="overview_bolusprogress_stoppressed">Stopp nedtryckt</string>
<string name="overview_bolusprogress_stoped">Stoppad</string>
<string name="overview_bolusprogress_stop">Stopp</string>
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Kommer tillföra %.2f enheter</string>
@ -496,12 +496,13 @@
<string name="openapsama_autosens_period_summary">Antal timmar för beräkning av känslighet (Absorptionstid för KH är exkluderad).</string>
<string name="openapsama_autosens_period">Intervall för autosens [tim]</string>
<string name="openapsama_autosens_max_summary">Standardvärde: 1.2 Med standarvärdet 1.2 kan autosens justera upp dina basaler, kvoter etc med upp till 20% för att kompensera för t ex tillfällig insulinresistens.</string>
<string name="openapsama_autosens_adjusttargets_summary">Standardvärde: sant Detta för att tillåta autosens justera BG målvärden, ISF och basaler.</string>
<string name="openapsama_autosens_adjusttargets_summary">Standardvärde: sant. Detta för att tillåta autosens justera mål-BG utöver ISF och basaler.</string>
<string name="openapsama_autosens_adjusttargets">Autosens justerar även mål-BG</string>
<string name="openapsama">OpenAPS AMA</string>
<string name="openaps">OpenAPS</string>
<string name="open_settings_on_wear">Öppna inställningar på klockan</string>
<string name="ongoingnotificaction">Konstant infonotis i telefonen</string>
<string name="old_data">GAMMAL DATA</string>
<string name="ongoingnotificaction">Konstant avisering i telefonen</string>
<string name="old_data">Aktuellt BG saknas!</string>
<string name="ok">OK</string>
<string name="occlusion">Ocklusion</string>
<string name="objectives_shortname">Mål</string>
@ -525,7 +526,7 @@
<string name="objectives_1_objective">Starta med open loop</string>
<string name="objectives_1_gate">Starta med open loop och använd det några dagar. Försök att ge många föreslagna temp basaler.</string>
<string name="absorption_maxtime_summary">Tid i timmar när alla kolhydradet förväntas vara absorberade</string>
<string name="absorption_maxtime_title">Max absorptions tid för en måltid [tim]</string>
<string name="absorption_maxtime_title">Max absorptionstid för en måltid [tim]</string>
<string name="absorptionsettings_title">Absorptionsinställningar</string>
<string name="careportal_pump_label">PUMP</string>
<string name="careportal_pumpbatterychange">Byte pumpbatteri</string>
@ -540,7 +541,7 @@
<string name="lock_screen">Lås skärm</string>
<string name="lock_screen_short">Lås</string>
<string name="mmol">mmol/l</string>
<string name="minago" formatted="false">%d min sedan</string>
<string name="minago" formatted="false">%d&#160;m</string>
<string name="mgdl">mg/dl</string>
<string name="mdtp_ok">OK</string>
<string name="mdi">MDI</string>
@ -550,9 +551,9 @@
<string name="overview_newtempbasal_basaltype_label">Basaltyp</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivity_warning">Genom att slå på Autosens funktionen, kom ihåg att skriva in alla KH. Annars kommer programmet göra fel i beräkningar av känslighet (ISF)!!</string>
<string name="sensitivityaaps">Känslighetsavkänning AAPS</string>
<string name="sensitivityoref0">Känslighetsavkänning Oref0</string>
<string name="sensitivityweightedaverage">Känslighetsavkänning WeightedAverage</string>
<string name="sensitivityaaps">AAPS</string>
<string name="sensitivityoref0">Oref0</string>
<string name="sensitivityweightedaverage">WeightedAverage</string>
<string name="settingtempbasal">Ställer in temp basal</string>
<string name="simpleprofile_shortname">SP</string>
<string name="sms_actualbg">BG:</string>
@ -560,12 +561,12 @@
<string name="sms_bolus">Bolus:</string>
<string name="sms_delta">Delta:</string>
<string name="sms_iob">IOB:</string>
<string name="sms_minago" formatted="false">%d min sedan</string>
<string name="nsalarm_staledatavalue_label">Tröskelvärde för \"Gammal data\" [min]</string>
<string name="nsalarm_urgent_staledatavalue_label">Tröskelvärde för \"Väldigt gammal data\" [min]</string>
<string name="sms_minago" formatted="false">%d min</string>
<string name="nsalarm_staledatavalue_label">Första varning efter [min]</string>
<string name="nsalarm_urgent_staledatavalue_label">Akut varning efter [min]</string>
<string name="nsalarm_urgenthigh">Akut hög</string>
<string name="nsalarm_urgentlow">Akut låg</string>
<string name="nsalarm_urgentstaledata">Väldigt gammal data</string>
<string name="nsalarm_urgentstaledata">BG-data saknas (akut larm)</string>
<string name="app_name">AndroidAPS</string>
<string name="treatments_wizard_tt_label">TT</string>
<string name="overview_newtempbasal_basalpercent">Basal [%]</string>
@ -586,7 +587,7 @@
<string name="danar_model">Modell: %02X Protokoll: %02X Kod: %02X</string>
<string name="openapsama_current_basal_safety_multiplier_summary">"Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4x din nuvarande basal, oberoende av din max basalhastighet. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning. "</string>
<string name="openapsama_autosens_min_summary">Standardvärde: 0.7 Med standardvärdet 0.7 kan autosens justera ner dina basaler, kvoter etc med upp till 30% för att kompensera för t ex tillfällig hög insulinkänslighet.</string>
<string name="nsclientinternal_devicename_dialogmessage">"Det kommer att användas för att ange \"Inmatat av: \". "</string>
<string name="nsclientinternal_devicename_dialogmessage">"Det kommer att användas för att ange \"Loggat av: \". "</string>
<string name="batteryoptimalizationerror">Enheten verkar inte stöda vitlistning av appar för batteriförbrukning</string>
<string name="pleaseallowpermission">Tillåt</string>
<string name="needwhitelisting">%s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt</string>
@ -638,7 +639,7 @@
<string name="wearcontrol_title">Kontroller från klockan</string>
<string name="wearcontrol_summary">Sätt tempmål och ange behandlingar från klockan.</string>
<string name="connectiontimedout">Anslutningen tog för lång tid</string>
<string name="food">Mat</string>
<string name="food">Matdatabas</string>
<string name="shortkilojoul">kJ</string>
<string name="shortenergy">En</string>
<string name="shortprotein">Pr</string>
@ -676,7 +677,7 @@
<string name="positiveonly">Endast positiva</string>
<string name="negativeonly">Endast negativa</string>
<string name="overview_editquickwizard_usecob">Använd COB</string>
<string name="overview_editquickwizard_usetemptarget">Använd tempmål</string>
<string name="overview_editquickwizard_usetemptarget">Använd temp mål</string>
<string name="loopenabled">Loop aktiverad</string>
<string name="apsselected">APS vald</string>
<string name="nsclienthaswritepermission">NSClient har skrivrättigheter</string>
@ -813,7 +814,7 @@
<string name="g5appnotdetected">Vänligen uppdatera din G5-app till en supportad version</string>
<string name="start_activity_tt">Starta \"Träning\"</string>
<string name="start_eating_soon_tt">Starta \"Äta snart\"</string>
<string name="don_t_bolus_record_only">Ge ingen bolus, logga bara</string>
<string name="do_not_bolus_record_only">Ge ingen bolus, logga bara</string>
<string name="category">Kategori</string>
<string name="subcategory">Underkategori</string>
<string name="bolusrecordedonly">Bolusen sparas bara i loggboken</string>
@ -868,7 +869,7 @@
<string name="unsafeusage">osäker användning</string>
<string name="readstatusfailed">Statuskontroll misslyckad</string>
<string name="record_pump_site_change">Logga byte av kanyl</string>
<string name="record_insulin_cartridge_change">Logga byte a insulinreservoar</string>
<string name="record_insulin_cartridge_change">Logga byte av insulinreservoar</string>
<string name="smbalwaysdisabled">SMB Alltid På och SMB Efter Kolhydrater är inaktiverat pga att den aktiva BG-källan inte stöder avancerad filtrering</string>
<string name="smbnotallowedinopenloopmode">SMB inte tillåtet i Open Loop</string>
<string name="food_short">Mat</string>
@ -885,7 +886,7 @@
<string name="absorption_cutoff_title">Max absorptionstid för kolhydrater [tim]</string>
<string name="absorption_cutoff_summary">Efter denna tid anses alla kolhydrater vara absorberade. Om det fortfarande finns COB, kommer dessa att tas bort ur beräkningen.</string>
<string name="time">Tid</string>
<string name="overview_show_notes_field_in_dialogs_title">Visa noteringsrutan i behandlingsdialogerna</string>
<string name="overview_show_notes_field_in_dialogs_title">Visa anteckningar i behandlingsdialogerna</string>
<string name="boluserrorcode">Angivet: %.2f enheter. Levererat: %.2f enheter. Felkod: %d</string>
<string name="firstinsulinincrement">Första snabbknabben för insulin</string>
<string name="secondinsulinincrement">Andra snabbknabben för insulin</string>
@ -925,4 +926,9 @@
<string name="careportal_carbsandbolus_label">KOLHYDRATER &amp; BOLUS</string>
<string name="careportal_cgm_label">CGM &amp; LOGGNING</string>
<string name="othersettings_title">Övrigt</string>
<string name="combo_pump_state_initializing">Initierar</string>
<string name="smbmaxminutes_summary">Max antal minuter som kan bli SMB</string>
<string name="shorthour">t</string>
<string name="shortminute">m</string>
<string name="danarv2pump">DanaR v2</string>
</resources>

View file

@ -14,6 +14,7 @@
<color name="inrange">#00FF00</color>
<color name="low">#FF0000</color>
<color name="high">#FFFF00</color>
<color name="actionsConfirm">#FFFF00</color>
<color name="listdelimiter">#505050</color>
<color name="tabBgColor">#f0003f59</color>
<color name="tabBgColorSelected">#FF33B5E5</color>
@ -28,6 +29,7 @@
<color name="defaultbackground">#424242</color>
<color name="tempTargetBackground">#77dd77</color>
<color name="tempTargetConfirmation">#77dd77</color>
<color name="tempTargetDisabledBackground">#303F9F</color>

View file

@ -549,7 +549,6 @@
<string name="superbolus">Superbolus</string>
<string name="ns_logappstartedevent">Log app start to NS</string>
<string name="key_ns_logappstartedevent" translatable="false">ns_logappstartedevent</string>
<string name="key_ns_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
<string name="restartingapp">Exiting application to apply settings.</string>
<string name="danarv2pump">DanaRv2</string>
<string name="configbuilder_insulin">Insulin</string>
@ -924,7 +923,7 @@
<string name="start_activity_tt">Start Activity TT</string>
<string name="start_eating_soon_tt">Start Eating soon TT</string>
<string name="temptargetshort">TT</string>
<string name="don_t_bolus_record_only">Don\'t bolus, record only</string>
<string name="do_not_bolus_record_only">Do not bolus, record only</string>
<string name="category">Category</string>
<string name="subcategory">Subcategory</string>
<string name="bolusrecordedonly">Bolus will be recorded only</string>
@ -1051,6 +1050,7 @@
<string name="ga_lang">Irish</string>
<string name="wear_wizard_settings">Wizard Settings</string>
<string translatable="false" name="key_wearwizard_bg">wearwizard_bg</string>
<string translatable="false" name="key_wearwizard_tt">wearwizard_tt</string>
<string translatable="false" name="key_wearwizard_trend">wearwizard_trend</string>
<string translatable="false" name="key_wearwizard_cob">wearwizard_cob</string>
<string translatable="false" name="key_wearwizard_bolusiob">wearwizard_bolusiob</string>

View file

@ -128,7 +128,7 @@
<SwitchPreference
android:defaultValue="true"
android:key="@string/key_ns_localbroadcasts"
android:key="@string/key_nsclient_localbroadcasts"
android:summary="@string/ns_localbroadcasts"
android:title="@string/ns_localbroadcasts_title" />

View file

@ -25,6 +25,12 @@
android:defaultValue="true"
android:dependency="wearcontrol"/>
<CheckBoxPreference
android:key="@string/key_wearwizard_tt"
android:title="@string/treatments_wizard_tt_label"
android:defaultValue="false"
android:dependency="@string/key_wearwizard_bg"/>
<CheckBoxPreference
android:key="@string/key_wearwizard_trend"
android:title="@string/treatments_wizard_bgtrend_label"

View file

@ -156,4 +156,24 @@ public class CommandQueueTest extends CommandQueue {
public boolean isThisProfileSet(Profile profile) {
return false;
}
@Test
public void callingCancelAllBolusesClearsQueue() throws Exception {
prepareMock(0d, 0);
// add normal and SMB-bolus to queue
Assert.assertEquals(0, size());
bolus(new DetailedBolusInfo(), null);
DetailedBolusInfo smb = new DetailedBolusInfo();
smb.isSMB = true;
bolus(smb, null);
Assert.assertEquals(2, size());
// cancelling all boluses clear all boluses from the queue
cancelAllBoluses();
Assert.assertEquals(0, size());
}
}

View file

@ -9,11 +9,11 @@ import org.powermock.modules.junit4.PowerMockRunner;
* Created by mike on 26.03.2018.
*/
@RunWith(PowerMockRunner.class)
//@RunWith(PowerMockRunner.class)
public class TTest {
@Test
public void doTests() {
public void toUnits() {
Assert.assertEquals(1, T.msecs(1000).secs());
Assert.assertEquals(1, T.secs(60).mins());
Assert.assertEquals(1, T.mins(60).hours());
@ -21,4 +21,31 @@ public class TTest {
Assert.assertEquals(24, T.days(1).hours());
Assert.assertEquals(60000, T.mins(1).msecs());
}
@Test
public void now() {
Assert.assertTrue(Math.abs(T.now().msecs() - System.currentTimeMillis()) < 5000);
}
@Test
public void additions() {
long nowMsecs = System.currentTimeMillis();
T now = T.msecs(nowMsecs);
Assert.assertEquals(now.plus(T.secs(5)).msecs(), nowMsecs + 5 * 1000);
Assert.assertEquals(now.plus(T.mins(5)).msecs(), nowMsecs + 5 * 60 * 1000);
Assert.assertEquals(now.plus(T.hours(5)).msecs(), nowMsecs + 5 * 60 * 60 * 1000);
Assert.assertEquals(now.plus(T.days(5)).msecs(), nowMsecs + 5 * 24 * 60 * 60 * 1000);
}
@Test
public void subtractions() {
long nowMsecs = System.currentTimeMillis();
T now = T.msecs(nowMsecs);
Assert.assertEquals(now.minus(T.secs(5)).msecs(), nowMsecs - 5 * 1000);
Assert.assertEquals(now.minus(T.mins(5)).msecs(), nowMsecs - 5 * 60 * 1000);
Assert.assertEquals(now.minus(T.hours(5)).msecs(), nowMsecs - 5 * 60 * 60 * 1000);
Assert.assertEquals(now.minus(T.days(5)).msecs(), nowMsecs - 5 * 24 * 60 * 60 * 1000);
}
}