Merge branch 'dev' into riley_link_medtronic

This commit is contained in:
Andy Rozman 2018-05-07 12:11:38 +01:00
commit 41205d4ba7
34 changed files with 1038 additions and 409 deletions

View file

@ -271,4 +271,4 @@ task full_clean(type: Delete) {
}
clean.dependsOn full_clean
preBuild.dependsOn copyLibs
preBuild.dependsOn copyLibs

View file

@ -80,9 +80,9 @@ public class HistoryBrowseActivity extends AppCompatActivity {
ButterKnife.bind(this);
bgGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
bgGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
bgGraph.getGridLabelRenderer().reloadStyles();
iobGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
iobGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
iobGraph.getGridLabelRenderer().reloadStyles();
iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
bgGraph.getGridLabelRenderer().setLabelVerticalWidth(50);

View file

@ -180,6 +180,10 @@ public class Profile {
}
public synchronized boolean isValid(String from) {
return isValid(from, true);
}
public synchronized boolean isValid(String from, boolean notify) {
if (!isValid)
return false;
if (!isValidated) {
@ -207,7 +211,7 @@ public class Profile {
if (pump != null && !pump.getPumpDescription().is30minBasalRatesCapable) {
for (int index = 0; index < basal_v.size(); index++) {
long secondsFromMidnight = basal_v.keyAt(index);
if (secondsFromMidnight % 3600 != 0) {
if (notify && secondsFromMidnight % 3600 != 0) {
Notification notification = new Notification(Notification.BASAL_PROFILE_NOT_ALIGNED_TO_HOURS, String.format(MainApp.gs(R.string.basalprofilenotaligned), from), Notification.NORMAL);
MainApp.bus().post(new EventNewNotification(notification));
}
@ -220,7 +224,8 @@ public class Profile {
for (int i = 0; i < basal_v.size(); i++) {
if (basal_v.valueAt(i) < description.basalMinimumRate) {
basal_v.setValueAt(i, description.basalMinimumRate);
sendBelowMinimumNotification(from);
if (notify)
sendBelowMinimumNotification(from);
}
}
} else {

View file

@ -211,27 +211,27 @@ public class BgReading implements DataPointWithLabelInterface {
if (highLine < 1) {
highLine = Profile.fromMgdlToUnits(OverviewPlugin.bgTargetHigh, units);
}
int color = MainApp.sResources.getColor(R.color.inrange);
int color = MainApp.gc(R.color.inrange);
if (isPrediction())
return getPredectionColor();
else if (valueToUnits(units) < lowLine)
color = MainApp.sResources.getColor(R.color.low);
color = MainApp.gc(R.color.low);
else if (valueToUnits(units) > highLine)
color = MainApp.sResources.getColor(R.color.high);
color = MainApp.gc(R.color.high);
return color;
}
public int getPredectionColor() {
if (isIOBPrediction)
return MainApp.sResources.getColor(R.color.iob);
return MainApp.gc(R.color.iob);
if (isCOBPrediction)
return MainApp.sResources.getColor(R.color.cob);
return MainApp.gc(R.color.cob);
if (isaCOBPrediction)
return 0x80FFFFFF & MainApp.sResources.getColor(R.color.cob);
return 0x80FFFFFF & MainApp.gc(R.color.cob);
if (isUAMPrediction)
return MainApp.sResources.getColor(R.color.uam);
return MainApp.gc(R.color.uam);
if (isZTPrediction)
return MainApp.sResources.getColor(R.color.zt);
return MainApp.gc(R.color.zt);
return R.color.mdtp_white;
}

View file

@ -251,7 +251,7 @@ public class CareportalEvent implements DataPointWithLabelInterface {
@Override
public int getColor() {
if (eventType.equals(ANNOUNCEMENT))
return MainApp.sResources.getColor(R.color.notificationAnnouncement);
return MainApp.gc(R.color.notificationAnnouncement);
if (eventType.equals(MBG))
return Color.RED;
if (eventType.equals(BGCHECK))

View file

@ -175,14 +175,14 @@ public class FillDialog extends DialogFragment implements OnClickListener {
confirmMessage.add("");
confirmMessage.add(MainApp.gs(R.string.bolus) + ": " + "<font color='" + MainApp.gc(R.color.colorCarbsButton) + "'>" + insulinAfterConstraints + "U" + "</font>");
if (!insulinAfterConstraints.equals(insulin))
confirmMessage.add("<font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + MainApp.gs(R.string.bolusconstraintapplied) + "</font>");
confirmMessage.add("<font color='" + MainApp.gc(R.color.low) + "'>" + MainApp.gs(R.string.bolusconstraintapplied) + "</font>");
}
if (pumpSiteChangeCheckbox.isChecked())
confirmMessage.add("" + "<font color='" + MainApp.sResources.getColor(R.color.high) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
if (insulinCartridgeChangeCheckbox.isChecked())
confirmMessage.add("" + "<font color='" + MainApp.sResources.getColor(R.color.high) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
final String notes = notesEdit.getText().toString();
if (!notes.isEmpty()) {

View file

@ -269,9 +269,9 @@ public class CareportalFragment extends SubscriberFragment implements View.OnCli
public static int determineTextColor(CareportalEvent careportalEvent, double warnThreshold, double urgentThreshold) {
if (careportalEvent.isOlderThan(urgentThreshold)) {
return MainApp.sResources.getColor(R.color.low);
return MainApp.gc(R.color.low);
} else if (careportalEvent.isOlderThan(warnThreshold)) {
return MainApp.sResources.getColor(R.color.high);
return MainApp.gc(R.color.high);
} else {
return Color.WHITE;
}

View file

@ -330,7 +330,7 @@ public class ConfigBuilderFragment extends SubscriberFragment {
}
if (plugin.isEnabled(type)) {
view.setBackgroundColor(MainApp.sResources.getColor(R.color.configBuilderSelectedBackground));
view.setBackgroundColor(MainApp.gc(R.color.configBuilderSelectedBackground));
}
return view;

View file

@ -52,7 +52,7 @@ public class InsulinFragment extends Fragment {
private void updateGUI() {
insulinName.setText(ConfigBuilderPlugin.getActiveInsulin().getFriendlyName());
insulinComment.setText(ConfigBuilderPlugin.getActiveInsulin().getComment());
insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(ConfigBuilderPlugin.getActiveInsulin().getDia()) + "h");
insulinDia.setText(MainApp.gs(R.string.dia) + " " + Double.toString(ConfigBuilderPlugin.getActiveInsulin().getDia()) + "h");
insulinGraph.show(ConfigBuilderPlugin.getActiveInsulin());
}

View file

@ -70,6 +70,9 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
@Override
public void onResume() {
super.onResume();
if(!ConfigBuilderPlugin.getCommandQueue().bolusInQueue()) {
bolusEnded = true;
}
if (bolusEnded) {
dismiss();
} else {

View file

@ -1,9 +1,7 @@
package info.nightscout.androidaps.plugins.Overview.Dialogs;
import android.content.Intent;
import android.os.Bundle;
import android.os.HandlerThread;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
@ -33,15 +31,13 @@ import java.util.List;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Treatments.CarbsGenerator;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.DefaultValueHelper;
@ -334,10 +330,10 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
actions.add(MainApp.gs(R.string.duration) + ": " + duration + MainApp.gs(R.string.shorthour));
}
if (carbs > 0) {
actions.add(MainApp.gs(R.string.carbs) + ": " + "<font color='" + MainApp.gc(R.color.colorCarbsButton) + "'>" + carbsAfterConstraints + "g" + "</font>");
actions.add(MainApp.gs(R.string.carbs) + ": " + "<font color='" + MainApp.gc(R.color.carbs) + "'>" + carbsAfterConstraints + "g" + "</font>");
}
if (!carbsAfterConstraints.equals(carbs)) {
actions.add("<font color='" + MainApp.gc(R.color.low) + "'>" + MainApp.gs(R.string.carbsconstraintapplied) + "</font>");
actions.add("<font color='" + MainApp.gc(R.color.warning) + "'>" + MainApp.gs(R.string.carbsconstraintapplied) + "</font>");
}
final String notes = notesEdit.getText().toString();
if (!notes.isEmpty()) {
@ -364,48 +360,40 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
}
accepted = true;
if (startActivityTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalActivityTTDuration)
.reason(MainApp.gs(R.string.activity))
.source(Source.USER)
.low(Profile.toMgdl(finalActivityTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalActivityTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
} else if (startEatingSoonTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalEatingSoonTTDuration)
.reason(MainApp.gs(R.string.eatingsoon))
.source(Source.USER)
.low(Profile.toMgdl(finalEatigSoonTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalEatigSoonTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
} else if (startHypoTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalHypoTTDuration)
.reason(MainApp.gs(R.string.hypo))
.source(Source.USER)
.low(Profile.toMgdl(finalHypoTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalHypoTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
}
if (startActivityTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalActivityTTDuration)
.reason(MainApp.gs(R.string.activity))
.source(Source.USER)
.low(Profile.toMgdl(finalActivityTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalActivityTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
} else if (startEatingSoonTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalEatingSoonTTDuration)
.reason(MainApp.gs(R.string.eatingsoon))
.source(Source.USER)
.low(Profile.toMgdl(finalEatigSoonTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalEatigSoonTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
} else if (startHypoTTCheckbox.isChecked()) {
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
.duration(finalHypoTTDuration)
.reason(MainApp.gs(R.string.hypo))
.source(Source.USER)
.low(Profile.toMgdl(finalHypoTT, currentProfile.getUnits()))
.high(Profile.toMgdl(finalHypoTT, currentProfile.getUnits()));
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
}
if (carbsAfterConstraints > 0) {
if (duration == 0) {
createCarb(carbsAfterConstraints, time, notes);
CarbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes);
} else {
long remainingCarbs = carbsAfterConstraints;
int ticks = (duration * 4); //duration guaranteed to be integer greater zero
for (int i = 0; i < ticks; i++){
long carbTime = time + i * 15 * 60 * 1000;
long smallCarbAmount = Math.round((1d * remainingCarbs) / (ticks-i)); //on last iteration (ticks-i) is 1 -> smallCarbAmount == remainingCarbs
remainingCarbs -= smallCarbAmount;
if (smallCarbAmount > 0)
createCarb(smallCarbAmount, carbTime, notes);
}
CarbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes);
}
}
}
@ -420,31 +408,4 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
log.error("Unhandled exception", e);
}
}
private void createCarb(long carbs, long time, @Nullable String notes) {
DetailedBolusInfo carbInfo = new DetailedBolusInfo();
carbInfo.date = time;
carbInfo.eventType = CareportalEvent.CARBCORRECTION;
carbInfo.carbs = carbs;
carbInfo.context = getContext();
carbInfo.source = Source.USER;
carbInfo.notes = notes;
if (ConfigBuilderPlugin.getActivePump().getPumpDescription().storesCarbInfo && carbInfo.date <= now()) {
ConfigBuilderPlugin.getCommandQueue().bolus(carbInfo, new Callback() {
@Override
public void run() {
if (!result.success) {
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
i.putExtra("soundid", R.raw.boluserror);
i.putExtra("status", result.comment);
i.putExtra("title", MainApp.gs(R.string.treatmentdeliveryerror));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainApp.instance().startActivity(i);
}
}
});
} else {
TreatmentsPlugin.getPlugin().addToHistoryTreatment(carbInfo);
}
}
}

View file

@ -201,14 +201,14 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener
List<String> actions = new LinkedList<>();
if (insulin > 0) {
actions.add(MainApp.gs(R.string.bolus) + ": " + "<font color='" + MainApp.gc(R.color.colorCarbsButton) + "'>" + insulinAfterConstraints + "U" + "</font>");
actions.add(MainApp.gs(R.string.bolus) + ": " + "<font color='" + MainApp.gc(R.color.bolus) + "'>" + insulinAfterConstraints + "U" + "</font>");
if (recordOnlyCheckbox.isChecked()) {
actions.add("<font color='" + MainApp.gc(R.color.low) + "'>" + MainApp.gs(R.string.bolusrecordedonly) + "</font>");
actions.add("<font color='" + MainApp.gc(R.color.warning) + "'>" + MainApp.gs(R.string.bolusrecordedonly) + "</font>");
}
}
if (!insulinAfterConstraints.equals(insulin))
actions.add("<font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + MainApp.gs(R.string.bolusconstraintapplied) + "</font>");
actions.add("<font color='" + MainApp.gc(R.color.warning) + "'>" + MainApp.gs(R.string.bolusconstraintapplied) + "</font>");
int eatingSoonTTDuration = SP.getInt(R.string.key_eatingsoon_duration, Constants.defaultEatingSoonTTDuration);
eatingSoonTTDuration = eatingSoonTTDuration > 0 ? eatingSoonTTDuration : Constants.defaultEatingSoonTTDuration;

View file

@ -304,16 +304,15 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com
final Profile profile = MainApp.getConfigBuilder().getProfile();
if (profile != null && (calculatedTotalInsulin > 0d || calculatedCarbs > 0d)) {
DecimalFormat formatNumber2decimalplaces = new DecimalFormat("0.00");
String confirmMessage = MainApp.gs(R.string.entertreatmentquestion);
Double insulinAfterConstraints = MainApp.getConstraintChecker().applyBolusConstraints(new Constraint<>(calculatedTotalInsulin)).value();
Integer carbsAfterConstraints = MainApp.getConstraintChecker().applyCarbsConstraints(new Constraint<>(calculatedCarbs)).value();
confirmMessage += "<br/>" + MainApp.gs(R.string.bolus) + ": " + "<font color='" + MainApp.sResources.getColor(R.color.bolus) + "'>" + formatNumber2decimalplaces.format(insulinAfterConstraints) + "U" + "</font>";
confirmMessage += "<br/>" + MainApp.gs(R.string.carbs) + ": " + carbsAfterConstraints + "g";
if (insulinAfterConstraints > 0)
confirmMessage += "<br/>" + MainApp.gs(R.string.bolus) + ": " + "<font color='" + MainApp.gc(R.color.bolus) + "'>" + DecimalFormatter.toPumpSupportedBolus(insulinAfterConstraints) + "U" + "</font>";
if (carbsAfterConstraints > 0)
confirmMessage += "<br/>" + MainApp.gs(R.string.carbs) + ": " + "<font color='" + MainApp.gc(R.color.carbs) + "'>" + carbsAfterConstraints + "g" + "</font>";
if (insulinAfterConstraints - calculatedTotalInsulin != 0 || !carbsAfterConstraints.equals(calculatedCarbs)) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);

View file

@ -240,7 +240,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
loopStatusLayout = (LinearLayout) view.findViewById(R.id.overview_looplayout);
pumpStatusLayout = (LinearLayout) view.findViewById(R.id.overview_pumpstatuslayout);
pumpStatusView.setBackgroundColor(MainApp.sResources.getColor(R.color.colorInitializingBorder));
pumpStatusView.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder));
iobView = (TextView) view.findViewById(R.id.overview_iob);
cobView = (TextView) view.findViewById(R.id.overview_cob);
@ -300,9 +300,9 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
else
axisWidth = 80;
bgGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
bgGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
bgGraph.getGridLabelRenderer().reloadStyles();
iobGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
iobGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
iobGraph.getGridLabelRenderer().reloadStyles();
iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
bgGraph.getGridLabelRenderer().setLabelVerticalWidth(axisWidth);
@ -1006,11 +1006,11 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
//Start with updating the BG as it is unaffected by loop.
// **** BG value ****
if (lastBG != null) {
int color = MainApp.sResources.getColor(R.color.inrange);
int color = MainApp.gc(R.color.inrange);
if (lastBG.valueToUnits(units) < lowLine)
color = MainApp.sResources.getColor(R.color.low);
color = MainApp.gc(R.color.low);
else if (lastBG.valueToUnits(units) > highLine)
color = MainApp.sResources.getColor(R.color.high);
color = MainApp.gc(R.color.high);
bgView.setText(lastBG.valueToUnitsToString(units));
arrowView.setText(lastBG.directionToSymbol());
bgView.setTextColor(color);
@ -1034,23 +1034,23 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun;
if (Config.APS && pump.getPumpDescription().isTempBasalCapable) {
apsModeView.setVisibility(View.VISIBLE);
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.loopenabled));
apsModeView.setBackgroundColor(MainApp.gc(R.color.loopenabled));
apsModeView.setTextColor(Color.BLACK);
final LoopPlugin loopPlugin = LoopPlugin.getPlugin();
if (loopPlugin.isEnabled(PluginType.LOOP) && loopPlugin.isSuperBolus()) {
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.looppumpsuspended));
apsModeView.setBackgroundColor(MainApp.gc(R.color.looppumpsuspended));
apsModeView.setText(String.format(MainApp.gs(R.string.loopsuperbolusfor), loopPlugin.minutesToEndOfSuspend()));
apsModeView.setTextColor(Color.WHITE);
} else if (loopPlugin.isEnabled(PluginType.LOOP) && loopPlugin.isDisconnected()) {
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.looppumpsuspended));
apsModeView.setBackgroundColor(MainApp.gc(R.color.looppumpsuspended));
apsModeView.setText(String.format(MainApp.gs(R.string.loopdisconnectedfor), loopPlugin.minutesToEndOfSuspend()));
apsModeView.setTextColor(Color.WHITE);
} else if (loopPlugin.isEnabled(PluginType.LOOP) && loopPlugin.isSuspended()) {
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.looppumpsuspended));
apsModeView.setBackgroundColor(MainApp.gc(R.color.looppumpsuspended));
apsModeView.setText(String.format(MainApp.gs(R.string.loopsuspendedfor), loopPlugin.minutesToEndOfSuspend()));
apsModeView.setTextColor(Color.WHITE);
} else if (pump.isSuspended()) {
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.looppumpsuspended));
apsModeView.setBackgroundColor(MainApp.gc(R.color.looppumpsuspended));
apsModeView.setText(MainApp.gs(R.string.pumpsuspended));
apsModeView.setTextColor(Color.WHITE);
} else if (loopPlugin.isEnabled(PluginType.LOOP)) {
@ -1060,7 +1060,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
apsModeView.setText(MainApp.gs(R.string.openloop));
}
} else {
apsModeView.setBackgroundColor(MainApp.sResources.getColor(R.color.loopdisabled));
apsModeView.setBackgroundColor(MainApp.gc(R.color.loopdisabled));
apsModeView.setText(MainApp.gs(R.string.disabledloop));
apsModeView.setTextColor(Color.WHITE);
}
@ -1072,12 +1072,12 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
TempTarget tempTarget = TreatmentsPlugin.getPlugin().getTempTargetFromHistory();
if (tempTarget != null) {
tempTargetView.setTextColor(Color.BLACK);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetBackground));
tempTargetView.setBackgroundColor(MainApp.gc(R.color.tempTargetBackground));
tempTargetView.setVisibility(View.VISIBLE);
tempTargetView.setText(Profile.toTargetRangeString(tempTarget.low, tempTarget.high, Constants.MGDL, units) + " " + DateUtil.untilString(tempTarget.end()));
} else {
tempTargetView.setTextColor(Color.WHITE);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetDisabledBackground));
tempTargetView.setBackgroundColor(MainApp.gc(R.color.tempTargetDisabledBackground));
tempTargetView.setText(Profile.toTargetRangeString(profile.getTargetLow(), profile.getTargetHigh(), units, units));
tempTargetView.setVisibility(View.VISIBLE);
}
@ -1148,7 +1148,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
}
}
if (activeTemp != null) {
baseBasalView.setTextColor(MainApp.sResources.getColor(R.color.basal));
baseBasalView.setTextColor(MainApp.gc(R.color.basal));
} else {
baseBasalView.setTextColor(Color.WHITE);

View file

@ -320,14 +320,13 @@ public class GraphData {
}
private double getNearestBg(long date) {
double bg = 0;
for (int r = bgReadingsArray.size() - 1; r >= 0; r--) {
BgReading reading = bgReadingsArray.get(r);
if (reading.date > date) continue;
bg = Profile.fromMgdlToUnits(reading.value, units);
break;
return Profile.fromMgdlToUnits(reading.value, units);
}
return bg;
return bgReadingsArray.size() > 0
? Profile.fromMgdlToUnits(bgReadingsArray.get(0).value, units) : 0;
}
// scale in % of vertical size (like 0.3)
@ -436,10 +435,10 @@ public class GraphData {
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getAutosensData(time);
if (autosensData != null) {
int color = Color.BLACK; // "="
if (autosensData.pastSensitivity.equals("C")) color = Color.GRAY;
if (autosensData.pastSensitivity.equals("+")) color = Color.GREEN;
if (autosensData.pastSensitivity.equals("-")) color = Color.RED;
int color = MainApp.gc(R.color.deviationblack); // "="
if (autosensData.pastSensitivity.equals("C")) color = MainApp.gc(R.color.deviationgrey);
if (autosensData.pastSensitivity.equals("+")) color = MainApp.gc(R.color.deviationgreen);
if (autosensData.pastSensitivity.equals("-")) color = MainApp.gc(R.color.deviationred);
devArray.add(new DeviationDataPoint(time, autosensData.deviation, color, devScale));
maxDevValueFound = Math.max(maxDevValueFound, Math.abs(autosensData.deviation));
}

View file

@ -177,7 +177,7 @@ public class LocalProfilePlugin extends PluginBase implements ProfileInterface {
}
public synchronized boolean isValidEditState() {
return createProfileStore().getDefaultProfile().isValid(MainApp.gs(R.string.localprofile));
return createProfileStore().getDefaultProfile().isValid(MainApp.gs(R.string.localprofile), false);
}
@NonNull

View file

@ -124,6 +124,10 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
activityView.setTextColor(Color.WHITE);
activityView.setTextSize(14);
activityView.setText(activity);
} else if (ConfigBuilderPlugin.getCommandQueue().size() > 0) {
activityView.setTextColor(Color.WHITE);
activityView.setTextSize(14);
activityView.setText("");
} else if (plugin.isInitialized()){
activityView.setTextColor(Color.WHITE);
activityView.setTextSize(20);

View file

@ -111,7 +111,7 @@ public class DanaRFragment extends SubscriberFragment {
View view = inflater.inflate(R.layout.danar_fragment, container, false);
unbinder = ButterKnife.bind(this, view);
pumpStatusView.setBackgroundColor(MainApp.sResources.getColor(R.color.colorInitializingBorder));
pumpStatusView.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder));
return view;
} catch (Exception e) {

View file

@ -0,0 +1,56 @@
package info.nightscout.androidaps.plugins.Treatments;
import android.content.Intent;
import android.support.annotation.Nullable;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Overview.Dialogs.ErrorHelperActivity;
import info.nightscout.androidaps.queue.Callback;
import static info.nightscout.utils.DateUtil.now;
public class CarbsGenerator {
public static void generateCarbs(int amount, long startTime, int duration, @Nullable String notes) {
long remainingCarbs = amount;
int ticks = (duration * 4); //duration guaranteed to be integer greater zero
for (int i = 0; i < ticks; i++){
long carbTime = startTime + i * 15 * 60 * 1000;
int smallCarbAmount = (int) Math.round((1d * remainingCarbs) / (ticks-i)); //on last iteration (ticks-i) is 1 -> smallCarbAmount == remainingCarbs
remainingCarbs -= smallCarbAmount;
if (smallCarbAmount > 0)
createCarb(smallCarbAmount, carbTime, CareportalEvent.MEALBOLUS, notes);
}
}
public static void createCarb(int carbs, long time, String eventType, @Nullable String notes) {
DetailedBolusInfo carbInfo = new DetailedBolusInfo();
carbInfo.date = time;
carbInfo.eventType = eventType;
carbInfo.carbs = carbs;
carbInfo.context = MainApp.instance();
carbInfo.source = Source.USER;
carbInfo.notes = notes;
if (ConfigBuilderPlugin.getActivePump().getPumpDescription().storesCarbInfo && carbInfo.date <= now()) {
ConfigBuilderPlugin.getCommandQueue().bolus(carbInfo, new Callback() {
@Override
public void run() {
if (!result.success) {
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
i.putExtra("soundid", R.raw.boluserror);
i.putExtra("status", result.comment);
i.putExtra("title", MainApp.gs(R.string.treatmentdeliveryerror));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainApp.instance().startActivity(i);
}
}
});
} else {
TreatmentsPlugin.getPlugin().addToHistoryTreatment(carbInfo);
}
}
}

View file

@ -186,7 +186,7 @@ public class Treatment implements DataPointWithLabelInterface {
@Override
public int getColor() {
if (isSMB)
return MainApp.sResources.getColor(R.color.tempbasal);
return MainApp.gc(R.color.tempbasal);
else if (isValid)
return Color.CYAN;
else

View file

@ -107,13 +107,13 @@ public class TreatmentsFragment extends SubscriberFragment implements View.OnCli
}
private void setBackgroundColorOnSelected(TextView selected) {
treatmentsTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
extendedBolusesTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
tempBasalsTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
tempTargetTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
profileSwitchTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
careportalTab.setBackgroundColor(MainApp.sResources.getColor(R.color.defaultbackground));
selected.setBackgroundColor(MainApp.sResources.getColor(R.color.tabBgColorSelected));
treatmentsTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
extendedBolusesTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
tempBasalsTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
tempTargetTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
profileSwitchTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
careportalTab.setBackgroundColor(MainApp.gc(R.color.defaultbackground));
selected.setBackgroundColor(MainApp.gc(R.color.tabBgColorSelected));
}
@Subscribe

View file

@ -19,6 +19,7 @@ import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.BgReading;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.ProfileSwitch;
import info.nightscout.androidaps.db.Source;
@ -31,6 +32,8 @@ import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.plugins.Loop.APSResult;
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification;
@ -40,6 +43,7 @@ import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin;
import info.nightscout.androidaps.plugins.PumpDanaRS.DanaRSPlugin;
import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin;
import info.nightscout.androidaps.plugins.PumpInsight.InsightPlugin;
import info.nightscout.androidaps.plugins.Treatments.CarbsGenerator;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.utils.BolusWizard;
@ -179,6 +183,9 @@ public class ActionStringHandler {
}
} else if ("wizard".equals(act[0])) {
sendError("Update APP on Watch!");
return;
} else if ("wizard2".equals(act[0])) {
////////////////////////////////////////////// WIZARD
Integer carbsBeforeConstraints = SafeParse.stringToInt(act[1]);
Integer carbsAfterConstraints = MainApp.getConstraintChecker().applyCarbsConstraints(new Constraint<>(carbsBeforeConstraints)).value();
@ -188,10 +195,12 @@ public class ActionStringHandler {
return;
}
boolean useBG = Boolean.parseBoolean(act[2]);
boolean useBolusIOB = Boolean.parseBoolean(act[3]);
boolean useBasalIOB = Boolean.parseBoolean(act[4]);
int percentage = Integer.parseInt(act[5]);
boolean useBG = SP.getBoolean(R.string.key_wearwizard_bg, true);
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);
boolean useTrend = SP.getBoolean(R.string.key_wearwizard_trend, false);
int percentage = Integer.parseInt(act[2]);
Profile profile = MainApp.getConfigBuilder().getProfile();
if (profile == null) {
@ -205,9 +214,16 @@ public class ActionStringHandler {
return;
}
CobInfo cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "Wizard wear");
if (useCOB && (cobInfo == null || cobInfo.displayCob == null)) {
sendError("Unknown COB! BG reading missing or recent app restart?");
return;
}
DecimalFormat format = new DecimalFormat("0.00");
DecimalFormat formatInt = new DecimalFormat("0");
BolusWizard bolusWizard = new BolusWizard();
bolusWizard.doCalc(profile, null, carbsAfterConstraints, 0d, useBG ? bgReading.valueToUnits(profile.getUnits()) : 0d, 0d, percentage, useBolusIOB, useBasalIOB, false, false);
bolusWizard.doCalc(profile, 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) {
@ -232,11 +248,15 @@ public class ActionStringHandler {
rMessage += "\n_____________";
rMessage += "\nCalc (IC:" + DecimalFormatter.to1Decimal(bolusWizard.ic) + ", " + "ISF:" + DecimalFormatter.to1Decimal(bolusWizard.sens) + "): ";
rMessage += "\nFrom Carbs: " + format.format(bolusWizard.insulinFromCarbs) + "U";
if (useCOB)
rMessage += "\nFrom" + formatInt.format(cobInfo.displayCob) + "g COB : " + format.format(bolusWizard.insulinFromCOB) + "U";
if (useBG) rMessage += "\nFrom BG: " + format.format(bolusWizard.insulinFromBG) + "U";
if (useBolusIOB)
rMessage += "\nBolus IOB: " + format.format(bolusWizard.insulingFromBolusIOB) + "U";
if (useBasalIOB)
rMessage += "\nBasal IOB: " + format.format(bolusWizard.insulingFromBasalsIOB) + "U";
if (useTrend)
rMessage += "\nFrom 15' trend: " + format.format(bolusWizard.insulinFromTrend) + "U";
if (percentage != 100) {
rMessage += "\nPercentage: " + format.format(bolusWizard.totalBeforePercentageAdjustment) + "U * " + percentage + "% -> ~" + format.format(bolusWizard.calculatedTotalInsulin) + "U";
}
@ -308,6 +328,27 @@ public class ActionStringHandler {
}
}
} else if ("ecarbs".equals(act[0])) {
////////////////////////////////////////////// ECARBS
int carbs = SafeParse.stringToInt(act[1]);
int starttime = SafeParse.stringToInt(act[2]);
int duration = SafeParse.stringToInt(act[3]);
long starttimestamp = System.currentTimeMillis() + starttime*60*1000;
Integer carbsAfterConstraints = MainApp.getConstraintChecker().applyCarbsConstraints(new Constraint<>(carbs)).value();
rMessage += MainApp.gs(R.string.carbs) + ": " + carbsAfterConstraints + "g";
rMessage += "\n" + MainApp.gs(R.string.time) + ": " + DateUtil.timeString(starttimestamp);
rMessage += "\n" + MainApp.gs(R.string.duration) + ": " + duration + "h";
if ( (carbsAfterConstraints - carbs != 0)) {
rMessage += "\n" + MainApp.gs(R.string.constraintapllied);
}
if(carbsAfterConstraints <= 0){
sendError("Carbs = 0! No action taken!");
return;
}
rAction += "ecarbs " + carbsAfterConstraints + " " + starttimestamp + " " + duration;
} else return;
@ -560,7 +601,7 @@ public class ActionStringHandler {
high *= Constants.MMOLL_TO_MGDL;
}
generateTempTarget(duration, low, high);
} else if ("wizard".equals(act[0])) {
} else if ("wizard2".equals(act[0])) {
//use last calculation as confirmed string matches
doBolus(lastBolusWizard.calculatedTotalInsulin, lastBolusWizard.carbs);
@ -573,12 +614,28 @@ public class ActionStringHandler {
int timeshift = SafeParse.stringToInt(act[1]);
int percentage = SafeParse.stringToInt(act[2]);
setCPP(timeshift, percentage);
} else if ("ecarbs".equals(act[0])) {
int carbs = SafeParse.stringToInt(act[1]);
long starttime = SafeParse.stringToLong(act[2]);
int duration = SafeParse.stringToInt(act[3]);
doECarbs(carbs, starttime, duration);
} else if ("dismissoverviewnotification".equals(act[0])) {
MainApp.bus().post(new EventDismissNotification(SafeParse.stringToInt(act[1])));
}
lastBolusWizard = null;
}
private static void doECarbs(int carbs, long time, int duration) {
if (carbs > 0) {
if (duration == 0) {
CarbsGenerator.createCarb(carbs, time, CareportalEvent.CARBCORRECTION, "watch");
} else {
CarbsGenerator.generateCarbs(carbs, time, duration, "watch eCarbs");
}
}
}
private static void setCPP(int timeshift, int percentage) {
String msg = "";

View file

@ -75,7 +75,7 @@ import info.nightscout.androidaps.queue.commands.CommandTempBasalPercent;
public class CommandQueue {
private static Logger log = LoggerFactory.getLogger(CommandQueue.class);
private LinkedList<Command> queue = new LinkedList<>();
private final LinkedList<Command> queue = new LinkedList<>();
protected Command performing;
private QueueThread thread = null;
@ -162,8 +162,18 @@ public class CommandQueue {
tempCommandQueue.readStatus(reason, callback);
}
public synchronized boolean bolusInQueue(){
if(isRunning(Command.CommandType.BOLUS)) return true;
for (int i = 0; i < queue.size(); i++) {
if (queue.get(i).commandType == Command.CommandType.BOLUS) {
return true;
}
}
return false;
}
// returns true if command is queued
public boolean bolus(DetailedBolusInfo detailedBolusInfo, Callback callback) {
public synchronized boolean bolus(DetailedBolusInfo detailedBolusInfo, Callback callback) {
Command.CommandType type = detailedBolusInfo.isSMB ? Command.CommandType.SMB_BOLUS : Command.CommandType.BOLUS;
if(type.equals(Command.CommandType.BOLUS) && detailedBolusInfo.carbs > 0 && detailedBolusInfo.insulin == 0){

View file

@ -62,7 +62,7 @@ class SlidingTabStrip extends LinearLayout {
DEFAULT_BOTTOM_BORDER_COLOR_ALPHA);
mDefaultTabColorizer = new SimpleTabColorizer();
mDefaultTabColorizer.setIndicatorColors(MainApp.sResources.getColor(R.color.tabBgColorSelected));
mDefaultTabColorizer.setIndicatorColors(MainApp.gc(R.color.tabBgColorSelected));
mBottomBorderThickness = (int) (DEFAULT_BOTTOM_BORDER_THICKNESS_DIPS * density);
mBottomBorderPaint = new Paint();

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="treatmentssafety_title">Настройки на сигурността</string>
<string name="treatmentssafety_title">Настройки на сигурността</string>
<string name="treatmentssafety_maxbolus_title">Максимален инсулин при болус [единици]</string>
<string name="treatmentssafety_maxcarbs_title">Максимални въглехидрати [гр]</string>
<string name="nav_preferences">Опции</string>
@ -10,7 +10,7 @@
<string name="nav_exit">Изход</string>
<string name="danar_useextended_title">Използвай удължен болус за над 200%</string>
<string name="danar_bt_name_title">DanaR Bluetooth устройство</string>
<string name="ns_sync_use_absolute_title">Използване на абсолютни стойности за базал</string>
<string name="ns_sync_use_absolute_title">Използване на абсолютни стойности за базал</string>
<string name="alert_dialog_storage_permission_text">Рестартирайте телефона или AndroidAPS от системните настройки или Android APS няма да записва проблемите (което е важно за работата на алгоритъма)!</string>
<string name="objectives_objective_label_string">Цел:</string>
<string name="objectives_gate_label_string">Действие:</string>
@ -35,12 +35,12 @@
<string name="tempbasals_netinsulin_label_string">Инс:</string>
<string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Общо IOB:</string>
<string name="treatments_newtreatment_carbsamount_label">Количество въглехидрати</string>
<string name="treatments_newtreatment_insulinamount_label">Количество инсулин</string>
<string name="treatments_newtreatment_carbsamount_label">Въглехидрати (гр.):</string>
<string name="treatments_newtreatment_insulinamount_label">Ед. инсулин:</string>
<string name="treatments_wizard_bg_label">КЗ</string>
<string name="treatments_wizard_carbs_label">ВХ</string>
<string name="treatments_wizard_correction_label">Корекция</string>
<string name="insulin_unit_shortname">Ед</string>
<string name="insulin_unit_shortname">Ед.</string>
<string name="treatments_wizard_bolusiob_label">IOB от болуси</string>
<string name="openapsma_run">Старт сега</string>
<string name="pump_basebasalrate_label">Базова базална стойност</string>
@ -157,7 +157,7 @@
<string name="careportal_newnstreatment_other">Друго</string>
<string name="careportal_newnstreatment_meter">Глюкомер</string>
<string name="careportal_newnstreatment_sensor">Сензор</string>
<string name="careportal_newnstreatment_carbs_label">ВХ</string>
<string name="careportal_newnstreatment_carbs_label">Въглехидрати</string>
<string name="careportal_newnstreatment_insulin_label">Инсулин</string>
<string name="careportal_newnstreatment_carbtime_label">ВХ след</string>
<string name="careportal_newnstreatment_split_label">Разделяне</string>
@ -235,7 +235,7 @@
<string name="glucosetype_finger">Пръст</string>
<string name="glucosetype_sensor">Сензор</string>
<string name="manual">Ръчно</string>
<string name="careportal_temporarytarget">Времена цел</string>
<string name="careportal_temporarytarget">Временна цел</string>
<string name="careportal_temporarytargetcancel">Откажи временна цел</string>
<string name="danarprofile">DanaR профил</string>
<string name="danarprofile_dia">DIA (Време на действие на инсулина) ч.:</string>
@ -248,7 +248,7 @@
<string name="danar_dsbolus">DS болус</string>
<string name="danar_debolus">DE болус</string>
<string name="danar_error">грешка</string>
<string name="danar_refill">пълнене</string>
<string name="danar_refill">презареждане</string>
<string name="danar_basalhour">базал по часове</string>
<string name="danar_glucose">КЗ</string>
<string name="danar_carbohydrate">въглехидрати</string>
@ -262,7 +262,7 @@
<string name="danar_history_dailyinsulin">Инсулин за деня</string>
<string name="danar_history_errors">Грешки</string>
<string name="danar_history_glucose">КЗ</string>
<string name="danar_history_refill">Пълнене</string>
<string name="danar_history_refill">Презареждане</string>
<string name="danar_history_syspend">Спиране</string>
<string name="danar_history_connectingfor" formatted="false">Свързва се с помпата за %d сек.</string>
<string name="danar_password_title">Парола за помпата</string>
@ -682,4 +682,191 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Няма достатъчно инсулин в резервоара</string>
<string name="combo_reservoir_empty">Празен</string>
<string name="combo_refresh">Обнови</string>
<string name="hoursago">един</string>
<string name="pump_basebasalrate">%.2f U/h</string>
<string name="objectives_7_objective">Добавяне на допълнителни функции за използване през деня, като SMB</string>
<string name="danar_history_prime">Пълнене</string>
<string name="apsselected">Избран APS</string>
<string name="basalprofilenotaligned" formatted="false">Няма базални стойности за някои часове: %s</string>
<string name="loop_tbrsetbypump_label">Временният базал е зададен от помпата</string>
<string name="ro_lang">Румънски</string>
<string name="fr_lang">Френски</string>
<string name="zh_lang">Китайски</string>
<string name="bolusstopped">Болусът е спрян</string>
<string name="bolusstopping">Спиране на болус</string>
<string name="hypo">Хипоглекимия</string>
<string name="openapsama_autosens_adjusttargets">Настройка на целевата КЗ чрез аутосенс</string>
<string name="resistantadult">Възрастни с голяма инсулинова резистентност</string>
<string name="openapssmb">OpenAPS SMB</string>
<string name="smb_shortname">SMB</string>
<string name="enableuam">Разреши UAM</string>
<string name="enablesmb">Разреши SMB</string>
<string name="enablesmb_summary">Използвай супер микро болуси вместо временен базал за по бързо действие</string>
<string name="enableuam_summary">Детекция на необявено хранене (UAM)</string>
<string name="hypo_duration">Продължителност на вр. цел при хипоглекимия</string>
<string name="hypo_target">Временна цел при хипоглекимия</string>
<string name="shortminute">мин.</string>
<string name="shorthour">ч.</string>
<string name="smbmaxminutes_summary">Максимални минути за ограничаване на базала от SMB</string>
<string name="combo_programming_bolus">Програмиране на помпа за болус</string>
<string name="combo_pump_state_label">Състояние</string>
<string name="combo_pump_activity_label">Активност</string>
<string name="combo_no_pump_connection" formatted="false">Няма връзка от %d мин.</string>
<string name="combo_tbr_remaining" formatted="false">%d%% (%d мин. остават)</string>
<string name="combo_pump_state_initializing">Инициализация</string>
<string name="combo_pump_state_suspended_due_to_error">Прекратен поради грешка</string>
<string name="combo_pump_state_suspended_by_user">Прекратен от потребителя</string>
<string name="combo_pump_state_running">Изпълнява</string>
<string name="combo_pump_action_cancelling_tbr">Отказва временен базал</string>
<string name="combo_pump_action_setting_tbr" formatted="false">Задава временен базал (%d%% / %d min)</string>
<string name="combo_pump_action_bolusing" formatted="false">Болус (%.1f U)</string>
<string name="combo_pump_action_refreshing">Обновява</string>
<string name="combo_pump_unsupported_operation">Исканата операция не се поддържа от помпата</string>
<string name="combo_low_suspend_forced_notification">Опасно използване: удължени или многовълнови болуси са активни. Помпата е изключена за само 6 часа. Само нормални болуси се поддържат.</string>
<string name="combo_force_disabled_notification">Опасно използване: помпата използва различни базални нива от първоначалния профил. Loop е спрян. Изберете първоначалния профил и обновете.</string>
<string name="bolus_frequency_exceeded">Болуси с едно и също количество бяха поискани в последните две минути. За да се предотврати дублиране вече доставен болус, операцията е забранена.</string>
<string name="combo_pump_connected_now">Сега</string>
<string name="combo_pump_cartridge_low_warrning">Ниско ниво на резервоар на помпа</string>
<string name="combo_pump_battery_low_warrning">Батерията на помпата е слаба</string>
<string name="combo_is_in_error_state" formatted="false">Помпата отчита грешка E%d: %s</string>
<string name="combo_notification_check_time_date">Необходимо е сверяване на часа в помпата</string>
<string name="combo_pump_tbr_cancelled_warrning">Отказването на временният базал беше потвърдено</string>
<string name="combo_error_no_connection_no_bolus_delivered">Помпата е недостъпна. Не беше доставен болус.</string>
<string name="combo_error_no_bolus_delivered">Болусът беше неуспешен. За да сте сигурни, моля, проверете помпата, за да избегнете повторение на вече доставен болус. За да се избегнат бъгове болусите не се повтарят автоматично.</string>
<string name="combo_error_partial_bolus_delivered" formatted="false">Само %.2f U от искания болус от %.2f U е доставен поради грешка. Моля, проверете помпата, за да потвърдите това и да предприемете съответните действия.</string>
<string name="insightpump_shortname">Insight</string>
<string name="insightpump">Insight помпа</string>
<string name="status_no_colon">Статус</string>
<string name="changed">Променено</string>
<string name="pump_stopped_uppercase">ПОМПАТА Е СПРЯНА</string>
<string name="status_updated">Статуса е актуализиран</string>
<string name="ago">преди</string>
<string name="with">с</string>
<string name="insight_active_tbr">Активен временен базал</string>
<string name="insight_min_left">мин. остават</string>
<string name="log_book">История</string>
<string name="insight_last_completed_action">Последно извършено действие</string>
<string name="insight_min">мин.</string>
<string name="bloodsugarmeasurementalert">Предупреждение за измерване на КЗ</string>
<string name="shortfat">Маз.</string>
<string name="shortgramm">гр.</string>
<string name="shortkilojoul">kJ</string>
<string name="shortprotein">Бел.</string>
<string name="active"><![CDATA[<Активно>]]></string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Изключва Bluetooth на телефона за една секунда, ако няма връзка с помпата. Това може да помогне на някои телефони, където Bluetooth блокира.</string>
<string name="bluetooth">Bluetooth</string>
<string name="dexcomg5_upload">G5 настройки за upload</string>
<string name="wear_wizard_settings">Настройки на съветник</string>
<string name="ns_autobackfill_title">Изтегляне КЗ от Найтскаут</string>
<string name="value_unavailable_short">---</string>
<string name="openapsama_current_basal_safety_multiplier">Макс. множител за настоящ базал</string>
<string name="openapsama_max_daily_safety_multiplier">Макс. множител за най-големия базал за денонощието</string>
<string name="openapsama_autosens_min">Мин. стойност за аутосенс</string>
<string name="openapsama_autosens_max">Макс. стойност за аутосенс</string>
<string name="ns_allowroaming">Позволи връзка в роуминг</string>
<string name="connectionsettings_title">Настройки за свързване</string>
<string name="ns_chargingonly">Само при зареждане</string>
<string name="wear_display_settings">Настройки за визуализация</string>
<string name="wear_general_settings">Основни настройки</string>
<string name="ns_wifionly">Използвай само WiFi</string>
<string name="cgm">CGM</string>
<string name="second">секунда</string>
<string name="minute">минута</string>
<string name="hour">час</string>
<string name="day">ден</string>
<string name="week">седмица</string>
<string name="insight_keepalive_format_string">%ds изтича %s</string>
<string name="statistics">Статистика</string>
<string name="connect_preemptively">Предварително свързване</string>
<string name="automatically_connect_when">Автоматично свързване при отваряне на AndroidAPS, преди връзка с помпата за намаляване на първоначалното забавяне</string>
<string name="not_recommended_due_to_battery_drain">Не се препоръчва поради голяма консумация на батерия</string>
<string name="enablesmbalways">Разреши SMB постоянно</string>
<string name="enablesmbalways_summary">"Разрешава SMB постоянно и независимо от болусите. Възможно само с източник на КЗ с добра филтрация като G5 "</string>
<string name="enablesmbaftercarbs">Разреши SMB след въглехидрати</string>
<string name="enablesmbaftercarbs_summary">"Разрешава SMB 6 часа след въглехидрати, дори при COB=0. Възможно само с източник на КЗ с добра филтрация като G5 приложение "</string>
<string name="enablesmbwithcob">Разреши SMB с COB</string>
<string name="enablesmbwithcob_summary">Разрешава SMB, когато има активни COB</string>
<string name="enablesmbwithtemptarget">Разреши SMB с временни цели</string>
<string name="enablesmbwithtemptarget_summary">Разрешава SMB, когато има активна временна цел на КЗ</string>
<string name="enablesmbwithhightemptarget">Разреши SMB с по-високи временни цели на КЗ</string>
<string name="enablesmbwithhightemptarget_summary">"Разрешава SMB когато има активна по-висока временна цел "</string>
<string name="mute">Заглушаване</string>
<string name="overview_insulin_label">Инсулин</string>
<string name="overview_carbs_label">Въглехидрати</string>
<string name="overview_buttons_selection">Бутони</string>
<string name="show_calibration_button_summary">Изпраща калибрация към xDrip+ или отваря G5 диалог за калибрация</string>
<string name="show_cgm_button_summary">Отваря xDrip+, бутонът назад връща към AAPS</string>
<string name="carb_increment_button_message">Количество въглехидрати за добавяне при натискане на бутона</string>
<string name="insulin_increment_button_message">Количество инсулин за добавяне при натискане на бутона</string>
<string name="error_starting_cgm">Не може да се използва CGM приложението. Уверете се, че е инсталирано.</string>
<string name="overview_cgm">CGM</string>
<string name="nav_historybrowser">История</string>
<string name="wear_notifysmb_title">Уведомяване при SMB</string>
<string name="wear_notifysmb_summary">Покажи SMB на часовника като стандартен болус.</string>
<string name="ns_create_announcements_from_errors_title">Създаване на известие при грешки</string>
<string name="ns_create_announcements_from_errors_summary">Създаване на Nightscout известие при грешки и локални аларми (също видими в Кеърпортал при Лечения)</string>
<string name="wear_predictions_summary">Покажи предвиждане на часовника</string>
<string name="wear_predictions_title">Предвиждане</string>
<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="category">Категория</string>
<string name="subcategory">Подкатегория</string>
<string name="bolusrecordedonly">Болусът ще бъде само записан</string>
<string name="ns_autobackfill_summary">Допълни липсващи данни за КЗ от Nightscout</string>
<string name="loop_smbsetbypump_label">SMB чрез помпата</string>
<string name="overview_show_sensitivity">Чувствителност</string>
<string name="overview_show_deviations">Отклонение</string>
<string name="overview_show_cob">Активни въглехидрати</string>
<string name="overview_show_basals">Базали</string>
<string name="no_action_selected">Няма избрано действие, нищо няма да се случи</string>
<string name="closed_loop_disabled_on_dev_branch">Използвате dev версия. Closed loop е деактивиран.</string>
<string name="not_eng_mode_or_release">Engineering mode не е активиран и не е release версия</string>
<string name="combo_actvity_reading_basal_profile">Прочита базалният профил</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">"Историята на помпата се промени след извършване на изчислението за болус. Болусът не беше доставен. Моля, преизчислете дали все още е необходим болус. Ако се изисква същото болусно количество, моля, изчакайте две минути, тъй за това време болусите с едно и също количество са блокирани от съображения за безопасност "</string>
<string name="about_link_urls">" http://www.androidaps.org facebook: http://facebook.androidaps.org"</string>
<string name="start_activity_tt">Старт на вр.цел за физ. активност</string>
<string name="start_eating_soon_tt">Старт на вр. цел за Eating soon</string>
<string name="temptargetshort">Вр.цел</string>
<string name="start_hypo_tt">Старт на вр. цел при хипо</string>
<string name="objectivenotstarted" formatted="false">ЦЕЛ %d не е стартирана</string>
<string name="objectivenotfinished" formatted="false">ЦЕЛ %d не е завършена</string>
<string name="pumpisnottempbasalcapable">Помпата не може да подава временен базал</string>
<string name="novalidbasalrate">Няма валидна базална прочетена от помпата</string>
<string name="closedmodedisabledinpreferences">Closed loop е забранен в настройките</string>
<string name="autosensdisabledinpreferences">Аутосенс е забранен в настройките</string>
<string name="smbdisabledinpreferences">SMB е забранен в настройките</string>
<string name="limitingbasalratio" formatted="false">Ограничаване на макс. базална стойност до %.2f Е/ч поради %s</string>
<string name="pumplimit">лимит на помпата</string>
<string name="itmustbepositivevalue">трябва да бъде положително число</string>
<string name="maxbasalmultiplier">множител на макс. базал</string>
<string name="maxdailybasalmultiplier">множител на макс. дневен базал</string>
<string name="smb_frequency_exceeded">Болус беше доставен през последните 3 мин, пропуска SMB</string>
<string name="basal_set_correctly">Базалът е зададен коректно</string>
<string name="limitingpercentrate">Ограничаване на максималната процентна стойност до %d%% поради %s</string>
<string name="limitingbolus" formatted="false">Ограничаване на болус до %.1f Е поради %s</string>
<string name="limitingmaxiob" formatted="false">Ограничаване на макс. IOB до %.1f Е поради %s</string>
<string name="limitingcarbs" formatted="false">Ограничаване на въглехидрати до %d гр. поради %s</string>
<string name="limitingiob" formatted="false">Ограничаване на IOB до %.1f Е поради %s</string>
<string name="maxvalueinpreferences">макс. стойност в настройките</string>
<string name="unsafeusage">опасно използване</string>
<string name="readstatusfailed">Прочитането на статуса се провали</string>
<string name="record_pump_site_change">Записано смяна на сет</string>
<string name="record_insulin_cartridge_change">Записано смяна на резервоар</string>
<string name="smbalwaysdisabled">SMB \"винаги\" и \"след въглехидрати\" е забранен, защото е активен източник на КЗ, който не поддържа необходимата филтрация</string>
<string name="smbnotallowedinopenloopmode">SMB не е позволен в режим open loop</string>
<string name="food_short">Храна</string>
<string name="waitingfortimesynchronization" formatted="false">Очаква време за синхронизация (%d sec)</string>
<string name="loopdisconnectedfor" formatted="false">Прекъснат (%d m)</string>
<string name="automatic_careportal_events">Автоматично careportal събитие</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Автоматично изпраща смяна на резервоар, сет и аларми на помпата към Nightscout</string>
<string name="openapssmb_maxiob_title">Максималният общ IOB OpenAPS не може да бъде повече от [U]</string>
<string name="pump_stopped">Помпата е спряна</string>
<string name="pump_started">Помпата е стартирана</string>
<string name="pump_paused">Помпата е на пауза</string>
<string name="absorption_cutoff_title">Макс. време за усвояване на храна (часа)</string>
<string name="absorption_cutoff_summary">Време за което всяко хранене се счита за усвоено. Оставащите въглехидрати ще бъдат изчиствани.</string>
<string name="time">Време</string>
</resources>

View file

@ -582,7 +582,7 @@
<string name="danar_setbasalstep001">Setzte Basalschritt zu 0.01 IE/h</string>
<string name="danar_stats_tbb">Tägl. Basalmenge</string>
<string name="danar_stats_tbb2">Tägl. Basalmenge * 2</string>
<string name="danar_stats_tdd">Tägl. Gesamtdosis</string>
<string name="danar_stats_tdd">TDD</string>
<string name="danars_nodeviceavailable">Gerät noch nicht gefunden</string>
<string name="danarspump">DanaRS</string>
<string name="danarspump_shortname">Dana</string>

View file

@ -5,10 +5,12 @@
<string name="nav_preferences">Preferencias</string>
<string name="nav_refreshtreatments">Refrescar tratamientos desde NS</string>
<string name="nav_resetdb">Restablecer las bases de datos</string>
<string name="reset_db_confirm">¿Realmente quiere resetear la base de datos?</string>
<string name="nav_exit">Salida</string>
<string name="danar_useextended_title">Usar bolos extendidos para&gt; 200%</string>
<string name="danar_bt_name_title">DanaR dispositivo Bluetooth</string>
<string name="ns_sync_use_absolute_title">Usar siempre valor basal absoluto</string>
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importantes para trazar y verificar que el algoritmo funcione correctamente)</string>
<string name="objectives_objective_label_string">Objetivo:</string>
<string name="objectives_gate_label_string">Meta:</string>
<string name="objectives_button_start">Inicio</string>
@ -23,6 +25,7 @@
<string name="treatments_insulin_label_string">Insulina:</string>
<string name="treatments_carbs_label_string">Carbohidratos:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Actividad:</string>
<string name="treatments_iobtotal_label_string">Total IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Actividad total IOB:</string>
@ -34,6 +37,7 @@
<string name="treatments_newtreatment_insulinamount_label">Insulina [U]</string>
<string name="treatments_newtreatment_carbsamount_label">Carbohidratos [g]</string>
<string name="treatments_wizard_bg_label">Glucosa</string>
<string name="treatments_wizard_tt_label">TT</string>
<string name="treatments_wizard_carbs_label">Hidratos Carbono</string>
<string name="treatments_wizard_correction_label">Corrección</string>
<string name="insulin_unit_shortname">U</string>
@ -62,12 +66,14 @@
<string name="reason">Razón</string>
<string name="glucose">Glucosa</string>
<string name="delta">Delta</string>
<string name="sms_delta">Delta:</string>
<string name="configbuilder">Config Builder</string>
<string name="objectives">Objetivos</string>
<string name="openapsma">OpenAPS MA</string>
<string name="overview">Sinopsis</string>
<string name="profileviewer">Perfil NS</string>
<string name="simpleprofile">Perfil simple</string>
<string name="tempbasal">Basal temporal</string>
<string name="treatments">Tratamientos</string>
<string name="virtualpump">Bomba virtual</string>
<string name="careportal">Careportal</string>
@ -79,10 +85,11 @@
<string name="days">días</string>
<string name="objectives_minimalduration">Duración mínima</string>
<string name="constraints">Restricciones</string>
<string name="loop">Lazo</string>
<string name="configbuilder_loop">Lazo</string>
<string name="loop">Loop</string>
<string name="configbuilder_loop">Loop</string>
<string name="loop_aps_label">APS</string>
<string name="loop_constraintsprocessed_label">Tras procesar limitaciones</string>
<string name="loop_tbrsetbypump_label">Basal temporal en la bomba</string>
<string name="openapsma_lastenact_label">Última aceptada</string>
<string name="ok">OK</string>
<string name="cancel">Cancelar</string>
@ -91,6 +98,7 @@
<string name="openapsma_disabled">Plugin está desactivado</string>
<string name="constraints_violation">Violación restricciones</string>
<string name="treatmentdeliveryerror">Error de administración del bolo</string>
<string name="tempbasaldeliveryerror">Basal Temporal no emitida</string>
<string name="overview_newtempbasal_basalpercent">Valor basal [%]</string>
<string name="overview_newtempbasal_percent_label">% (100% = actual)</string>
<string name="setbasalquestion">Aceptar nueva basal temporal:</string>
@ -100,22 +108,28 @@
<string name="confirmation">Confirmación</string>
<string name="entertreatmentquestion">Introduzca nuevo tratamiento:</string>
<string name="bolus">Bolo</string>
<string name="sms_bolus">Bolo:</string>
<string name="basal">Basal</string>
<string name="sms_basal">Basal:</string>
<string name="carbs">Carbohidratos</string>
<string name="changeyourinput">Cambiar datos!</string>
<string name="setextendedbolusquestion">Establecer nuevo bolo extendido:</string>
<string name="configbuilder_bgsource">Origen BG</string>
<string name="xdrip">xDrip</string>
<string name="apsmode_title">Modo APS</string>
<string name="closedloop">Lazo cerrado</string>
<string name="openloop">Lazo abierto</string>
<string name="closedloop">Loop cerrado</string>
<string name="openloop">Loop abierto</string>
<string name="disabledloop">Loop Inactivo</string>
<string name="disableloop">Desactivar loop</string>
<string name="enableloop">Activar loop</string>
<string name="openloop_newsuggestion">Nueva propuesta disponible</string>
<string name="unsupportedclientver">Versión de NSClient no soportada</string>
<string name="unsupportednsversion">Versión no acceptada de Nightscout</string>
<string name="nsclientnotinstalled">NSClient no instalado. Registro perdido!</string>
<string name="objectives_bgavailableinns">BG disponible en NS</string>
<string name="objectives_pumpstatusavailableinns">Estado de la bomba disponible en NS</string>
<string name="objectives_manualenacts">Aceptados</string>
<string name="loopdisabled">LAZO DESACTIVADO POR RESTRICCIONES</string>
<string name="loopdisabled">LOOP DESACTIVADO POR RESTRICCIONES</string>
<string name="cs_lang">Czech</string>
<string name="en_lang">English</string>
<string name="treatments_wizard_basaliob_label">Basal IOB</string>
@ -167,9 +181,11 @@
<string name="filenotfound">Archivo no encontrado</string>
<string name="nav_export">Exportar ajustes</string>
<string name="nav_import">Importar ajustes</string>
<string name="fr_lang">Frances</string>
<string name="zh_lang">Chino</string>
<string name="de_lang">German</string>
<string name="openapsma_maxbasal_summary">Max valor U / hr en Basal temporal</string>
<string name="openapsma_maxiob_summary">Máximos basales IOB para OpenAPS [U]</string>
<string name="openapsma_maxbasal_summary">Este valor es llamado max basal en el contexto OpenAPS</string>
<string name="openapsma_maxiob_summary">Este valor es llamado Max Iob en el contexto OpenAPS\nEsta es la máxima insulina en [U] APS puede entregar a la vez.</string>
<string name="bg_lang">Bulgarian</string>
<string name="dismiss">DESCARTAR</string>
<string name="language">Idioma</string>
@ -190,6 +206,7 @@
<string name="danar_iob_label">Bomba IOB</string>
<string name="danar_dailyunits">Unidades diarias</string>
<string name="pump_lastbolus_label">Último bolo:</string>
<string name="hoursago">Hace %.1fh</string>
<string name="danar_invalidinput">Datos invalidos</string>
<string name="danar_valuenotsetproperly">Valor no establecido correctamente</string>
<string name="reloadprofile">Recargar Perfil</string>
@ -204,10 +221,12 @@
<string name="waitingforpumpresult">Esperando resultado</string>
<string name="smscommunicator_allowednumbers">Números de teléfono permitidos</string>
<string name="smscommunicator_allowednumbers_summary">XXXXXXXXXX +; + YYYYYYYYYY</string>
<string formatted="false" name="smscommunicator_bolusreplywithcode">Para entregar bolo %.2fU responder con código %s</string>
<string name="smscommunicator_bolusreplywithcode" formatted="false" >Para entregar bolo %.2fU responder con código %s</string>
<string name="smscommunicator_bolusfailed">Bolo falló</string>
<string formatted="false" name="bolusdelivered">Bolo %.2fU entregado con éxito</string>
<string formatted="false" name="bolusdelivering">Entregando %.2fU</string>
<string name="bolusdelivered" formatted="false">Bolo %.2fU entregado con éxito</string>
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string>
<string name="bolusdelivering" formatted="false">Entregando %.2fU</string>
<string name="smscommunicator_remotecommandsallowed">Permitir comandos remotos vía SMS</string>
<string name="smscommunicator_remotebolusnotallowed">Bolo remoto no permitido</string>
<string name="glucosetype_finger">Dedo</string>
<string name="glucosetype_sensor">Sensor</string>
@ -217,7 +236,6 @@
<string name="danarprofile">Configuración perfil DanaR</string>
<string name="danarprofile_dia">DIA [h]</string>
<string name="failedupdatebasalprofile">No se pudo actualizar el perfil basal</string>
<string name="danar_history">Historial</string>
<string name="danar_historyreload">Recargar</string>
<string name="uploading">Subiendo</string>
<string name="danar_ebolus">E bolo</string>
@ -246,6 +264,8 @@
<string name="pumpbusy">Bomba ocupada</string>
<string name="overview_bolusprogress_delivered">Entregado</string>
<string name="overview_bolusprogress_stoped">Detenido</string>
<string name="bolusstopped">Bolo interrumpido</string>
<string name="bolusstopping">Deteniendo bolo</string>
<string name="occlusion">Oclusión</string>
<string name="overview_bolusprogress_stop">Detener</string>
<string name="overview_bolusprogress_stoppressed">Parar pulsado</string>
@ -253,23 +273,23 @@
<string name="objectives_0_objective">Configuración de visualización y monitoreo, y el análisis de los basales y ratios</string>
<string name="objectives_0_gate">Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo</string>
<string name="objectives_1_objective">Empezar con bucle abierto</string>
<string name="objectives_1_gate">Ejecutar en modo de lazo abierto durante unos días, y aceptar manualmente las basales temporales</string>
<string name="objectives_2_objective">Entender el lazo abierto, incluidas las recomendaciones de basales temporales</string>
<string name="objectives_1_gate">Ejecutar en modo de Loop abierto durante unos días, y aceptar manualmente las basales temporales</string>
<string name="objectives_2_objective">Entender el Loop abierto, incluidas las recomendaciones de basales temporales</string>
<string name="objectives_2_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
<string name="objectives_3_objective">Iniciar el bucle cerrado con suspensión con baja glucosa</string>
<string name="objectives_3_gate">Ejecutar en lazo cerrado con max IOB=0 durante unos días sin demasiados valores bajos de glucosa</string>
<string name="objectives_3_gate">Ejecutar en Loop cerrado con max IOB=0 durante unos días sin demasiados valores bajos de glucosa</string>
<string name="objectives_4_objective">Ajuste del bucle cerrado, aumento máximo IOB por encima de 0 y bajando gradualmente objetivos BG</string>
<string name="objectives_4_gate">Funcionando unos cuantos días, y al menos una noche sin alarmas bajas BG, y bajar gradualmente BG</string>
<string name="objectives_5_objective">Ajustar los basales y ratios, si es necesario, y luego activar auto-sens</string>
<string name="objectives_5_gate">1 semana lazo cerrado completado con entrada regular de carbohidratos</string>
<string name="objectives_5_gate">1 semana Loop cerrado completado con entrada regular de carbohidratos</string>
<string name="objectives_6_objective">Habilitar funciones adicionales para su uso durante el día, como asistente de comida avanzado</string>
<string name="objectives_7_objective">Habilitar funciones adicionales para uso durante el día como SMB</string>
<string name="youareonallowedlimit">Alcanzado el límite permitido</string>
<string name="noprofileselected">Sin perfil seleccionado</string>
<string name="ko_lang">Korean</string>
<string name="actions">Acciones</string>
<string name="correctionbous">Corr</string>
<string name="disabledloop">Loop Inactivo</string>
<string name="mealbolus">Bolo Comida</string>
<string name="smscommunicator_loophasbeendisabled">Loop se ha desactivado</string>
<string name="smscommunicator_loophasbeenenabled">Loop se ha activado</string>
<string name="smscommunicator_loopisdisabled">Loop inactivo</string>
<string name="smscommunicator_loopisenabled">loop activo</string>
<string name="valueoutofrange" formatted="false">Valor %s fuera de limites</string>
<string name="overview_editquickwizard_buttontext">Botón Texto:</string>
<string name="overview_editquickwizard_carbs">Carbs:</string>
@ -278,79 +298,29 @@
<string name="overview_quickwizard_item_edit_button">Editar</string>
<string name="overview_quickwizard_item_remove_button">Eliminar</string>
<string name="quickwizard">Asistente</string>
<string name="quickwizardsettings">Ajustes asistente</string>
<string name="smscommunicator_loophasbeendisabled">Loop se ha desactivado</string>
<string name="smscommunicator_loophasbeenenabled">Loop se ha activado</string>
<string name="smscommunicator_loopisdisabled">Loop inactivo</string>
<string name="smscommunicator_loopisenabled">loop activo</string>
<string name="quickwizardsettings">Asistente configuración</string>
<string name="smscommunicator_remotebasalnotallowed">No permitidos ajustes basales remotos</string>
<string name="smscommunicator_basalreplywithcode" formatted="false" >Para iniciar basal %.2fU/h responder con código %s</string>
<string name="smscommunicator_tempbasalset" formatted="false">Basal temporal %.2fU/h para %d min iniciada correctamente</string>
<string name="smscommunicator_tempbasalfailed">Fallo inicio basal temporal</string>
<string name="smscommunicator_basalstopreplywithcode" formatted="false">Para parar basal temporal responder con código %s</string>
<string name="smscommunicator_tempbasalcanceled">Basal temporal cancelada</string>
<string name="smscommunicator_tempbasalcancelfailed">Fallo cancelación basal temporal</string>
<string name="smscommunicator_tempbasalfailed">Fallo inicio basal temporal</string>
<string formatted="false" name="smscommunicator_tempbasalset">Basal temporal %.2fU/h para %d min iniciada correctamente</string>
<string name="smscommunicator_remotecommandsallowed">Permitir comandos SMS remotos</string>
<string name="smscommunicator_basalstopreplywithcode" formatted="false">Para parar basal temporal responder con código %s</string>
<string name="smscommunicator_unknowncommand">Comando desconocido o respuesta incorrecta</string>
<string name="mealbolus">Bolo Comida</string>
<string name="correctionbous">Corr</string>
<string name="ko_lang">Korean</string>
<string name="actions">Acciones</string>
<string name="androidaps_start">AndroidAPS iniciado</string>
<string name="es_lang">Español</string>
<string name="ns_upload_only">NS solo subida (sinc. inactiva)</string>
<string name="ns_upload_only_summary">NS solo subida. No efectivo con SGV salvo que este seleccionada una fuente local como xDrip. No efectivo en perfiles usando perfiles NS</string>
<string name="othersettings_title">Otros</string>
<string name="pumpNotInitialized">¡Bomba no iniciada!</string>
<string name="smscommunicator_remotebasalnotallowed">No permitidos ajustes basales remotos</string>
<string name="reset_db_confirm">¿Realmente quiere resetear la base de datos?</string>
<string name="smscommunicator_unknowncommand">Comando desconocido o respuesta incorrecta</string>
<string name="pumpNotInitializedProfileNotSet">Bomba no iniciada, ¡perfil no ajustado!</string>
<string name="fillwarning">¡Por favor asegurar que la cantidad coincide con la especificación del set de infusión!</string>
<string formatted="false" name="smscommunicator_basalreplywithcode">Para iniciar basal %.2fU/h responder con código %s</string>
<string name="actions_shortname">"ACC"</string>
<string name="wear_shortname">"REL"</string>
<string name="virtualpump_shortname">"BombaV"</string>
<string name="treatments_shortname">"Trat"</string>
<string name="smscommunicator_shortname">"SMS"</string>
<string name="simpleprofile_shortname">"PerfSipmple"</string>
<string name="profileviewer_shortname">"Perf"</string>
<string name="overview_shortname">"General"</string>
<string name="objectives_shortname">"Obj"</string>
<string name="oaps_shortname">"Oaps"</string>
<string name="loop_shortname">"Lazo"</string>
<string name="localprofile_shortname">"PerfLoc"</string>
<string name="danarpump_shortname">"Dana"</string>
<string name="configbuilder_shortname">"Conf"</string>
<string name="careportal_shortname">"CP"</string>
<string name="activity">Actividad</string>
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importantes para trazar y verificar que el algoritmo funcione correctamente)</string>
<string name="array_of_elements">Matriz de %d elementos. Valor actual:</string>
<string name="basal_rate">Ratio Basal:</string>
<string name="basalvaluebelowminimum">Valor basal menor del mínimo. Perfil no fijado.</string>
<string name="othersettings_title">Otros</string>
<string name="button1">Botón 1</string>
<string name="button2">Botón 2</string>
<string name="button3">Botón 3</string>
<string name="danar_disableeasymode">Inhabilitar EasyUI modo en bomba</string>
<string name="danar_enableextendedbolus">Habilitar bolos extendidos en bomba</string>
<string name="danar_switchtouhmode">Cambio de modo de U/d a U/h en bomba</string>
<string name="eatingsoon">Comida temprano</string>
<string name="high_mark">Marca ALTA</string>
<string name="initializing">Iniciando . . .</string>
<string name="localprofile">Perfil Local</string>
<string name="long_avgdelta">Media Larga Delta</string>
<string name="low_mark">Marca BAJO</string>
<string name="lowbattery">Batería Baja</string>
<string name="minago" formatted="false">%dmin antes</string>
<string name="openapsama_useautosens">Usar característica AMA autosens</string>
<string name="openapsma_autosensdata_label">Datos Autosens</string>
<string name="prefs_range_summary">Marcas Alta y Baja para graficos en Sinopsis y Smartwatch</string>
<string name="prefs_range_title">Rango de visualización</string>
<string name="profile_set_ok">Perfil basal actualizado en bomba</string>
<string name="profile_set_failed">Error en ajuste de perfil basal</string>
<string name="pumpNotInitializedProfileNotSet">Bomba no iniciada, ¡perfil no ajustado!</string>
<string name="pumperror">Error en bomba</string>
<string name="pumpshutdown">Apagando Bomba</string>
<string name="removerecord">Eliminar registro:</string>
<string name="resend_all_data">Enviar todos los datos</string>
<string name="short_avgdelta">Media corta delta</string>
<string name="sms_bolus">Bolo:</string>
<string name="sms_lastbg">Último BG:</string>
<string name="sms_minago" formatted="false">%dmin antes</string>
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string>
<string name="target_range">Rango Objetivo:</string>
<string name="units">Unidades:</string>
<string name="error_only_numeric_digits_allowed">Sólo se permiten caracteres numéricos</string>
<string name="error_only_numeric_digits_range_allowed" formatted="false">Sólo se permiten dígitos en el rango %1$s - %2$s</string>
@ -364,10 +334,9 @@
<string name="sv_lang">Sueco</string>
<string name="openapsma_maxbasal_title">Max U/h para el perfil base</string>
<string name="openapsma_maxiob_title">"Max IOB basal OpenAPs puede emitir "</string>
<string name="smscommunicator_calibrationreplywithcode" formatted="false">Para enviar calibracion %.2f responder con código %s</string>
<string name="smscommunicator_calibratiónreplywithcode" formatted="false">Para enviar calibracion %.2f responder con código %s</string>
<string name="bolusrequested" formatted="false">Entregaré %.2fU</string>
<string name="danarprofile_dia_summary">Duración de acitividad de insulina</string>
<string name="objectives_7_objective">habilitar funciones adicionales para uso durante el día como SMB</string>
<string name="valuelimitedto" formatted="false">%.2f limitado a %.2f</string>
<string name="smscommunicator_remotecommandnotallowed">no permitido el mando remoto</string>
<string name="smscommunicator_suspendreplywithcode" formatted="false">Para cancelar loop por %d minutos responde con código %s</string>
@ -376,22 +345,51 @@
<string name="mgdl">mg/dl</string>
<string name="mmol">mmol/l</string>
<string name="dia">DIA:</string>
<string name="target_range">Rango Objetivo:</string>
<string name="prefs_range_title">Rango de visualización</string>
<string name="prefs_range_summary">Marcas Alta y Baja para graficos en Sinopsis y Smartwatch</string>
<string name="low_mark">Marca BAJO</string>
<string name="high_mark">Marca ALTA</string>
<string name="wear">Reloj</string>
<string name="resend_all_data">Enviar todos los datos</string>
<string name="open_settings_on_wear">Abrir ajustes en reloj</string>
<string name="pumperror">Error en bomba</string>
<string name="lowbattery">Batería Baja</string>
<string name="pumpshutdown">Apagando Bomba</string>
<string name="batterydischarged">Batería de la bomba descargada</string>
<string name="danarkoreanpump">DanaR Korean</string>
<string name="basal_rate">Ratio Basal:</string>
<string name="profile_set_failed">Error al activar perfil basal</string>
<string name="profile_set_ok">Perfil basal actualizado en bomba</string>
<string name="danar_disableeasymode">Inhabilitar EasyUI modo en bomba</string>
<string name="danar_enableextendedbolus">Habilitar bolos extendidos en bomba</string>
<string name="danar_switchtouhmode">Cambio de modo de U/d a U/h en bomba</string>
<string name="basalvaluebelowminimum">Valor Basal por debajo del mínimo. Perfil NO aplicado!</string>
<string name="sms_actualbg">BG:</string>
<string name="sms_lastbg">Último BG:</string>
<string name="mdi">MDI</string>
<string name="MM640g">MM640g</string>
<string name="ongoingnotificaction">Avisos permanentes</string>
<string name="old_data">DATOS CADUCADOS</string>
<string name="minago" formatted="false">%dmin antes</string>
<string name="sms_minago" formatted="false">%dmin antes</string>
<string name="localprofile">Perfil Local</string>
<string name="openapsama">OpenAPS AMA</string>
<string name="short_avgdelta">Delta media corta</string>
<string name="long_avgdelta">Delta media larga</string>
<string name="array_of_elements">Matriz de %d elementos. Valor actual:</string>
<string name="openapsma_autosensdata_label">Datos Autosens</string>
<string name="openapsma_scriptdebugdata_label">Script debug</string>
<string name="openapsama_useautosens">Usar característica AMA autosens</string>
<string name="refresheventsfromnightscout">Renovar datos desde NS</string>
<string name="eatingsoon">ComidendoPronto</string>
<string name="hypo">Hipo</string>
<string name="activity">Actividad</string>
<string name="removerecord">Eliminar registro:</string>
<string name="danar_stats">DanaR Stats</string>
<string name="danar_stats_cumulative_tdd">Dosis diaria cumulativa</string>
<string name="danar_stats_expweight">"Dosis diaria ampliada exponencialmente "</string>
<string name="danar_stats_basalrate">Base</string>
<string name="danar_stats_cumulative_tdd">TDD acumulativa</string>
<string name="danar_stats_expweight">"TDD ampliada exponencialmente "</string>
<string name="danar_stats_basalrate">Basal</string>
<string name="danar_stats_bolus">Bolo</string>
<string name="danar_stats_tdd">Dosis diaria</string>
<string name="danar_stats_date">Fecha</string>
@ -402,6 +400,22 @@
<string name="danar_stats_olddata_Message">Datos caducados pro favor pincha RELOAD</string>
<string name="danar_stats_tbb">Basal total</string>
<string name="danar_stats_tbb2">Basal diaria *2</string>
<string name="initializing">Inicializando</string>
<string name="actions_shortname">"ACC"</string>
<string name="configbuilder_shortname">"CONF"</string>
<string name="loop_shortname">"LOOP"</string>
<string name="simpleprofile_shortname">"PERFSIM"</string>
<string name="oaps_shortname">OAPS</string>
<string name="localprofile_shortname">"PERFLOC"</string>
<string name="danarpump_shortname">"DANA"</string>
<string name="overview_shortname">"GENERAL"</string>
<string name="virtualpump_shortname">"BOMBAV"</string>
<string name="profileviewer_shortname">"PERF"</string>
<string name="treatments_shortname">"TRAT"</string>
<string name="careportal_shortname">"CP"</string>
<string name="objectives_shortname">"OBJ"</string>
<string name="wear_shortname">RELOJ</string>
<string name="smscommunicator_shortname">"SMS"</string>
<string name="short_tabtitles">Tab titulo corto</string>
<string name="always_use_shortavg">Usa siempre delta media corto en vez de delta simple</string>
<string name="always_use_shortavg_summary">Recomendado si los datos de origen no filtrados como xDrip son inestables.</string>
@ -412,21 +426,21 @@
<string name="openapsama_current_basal_safety_multiplier_summary">"Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de \"3x max diario, 4x actual\". Esto significa, que tu base no puede ser mas alta que el numero que multiplica tu base. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la base sin entender el algoritmo del sistema. El ajuste por defecto es x4. La mayoría de las personas nunca tendra que cambiar estos ajustes, si no debe modificar otros ajustes en la terapia. "</string>
<string name="openapsama_autosens_max_summary">"Ajuste por defecto: 1.2\nEsto es un multilicador para autosens (y pronto autotune) para poner un 20% limite máximo a la cota de autosens ratio, la que determina cuantos ajustes autosens puede hacer a la base, a cuanto puede ajustar ISF y a cuanto puede bajar el objective de glucosa. "</string>
<string name="openapsama_autosens_min_summary">Ajuste pro defecto: 0.7\nEl otro lade de limitaciones de seguridad de autosens, limitando a cuanto puede bajar la base y a cuanto puede subir ISF y BG objectivos.</string>
<string name="openapsama_autosens_adjusttargets_summary">Ajuste pro defcto: true\nEsto se usa para permitir autosens a ajustar objectivos BG en addicion a ISF y bases.</string>
<string name="openapsama_bolussnooze_dia_divisor_summary">Ajuste pro defecto: 2 \nDormir bolo es iniciado después de proveder un bolo para comida, así el loop no interactuará con low temps cuando acabas de comer. El ajuste pro defecto es 2; quiere decir con el DIA de 3 h el bolo será dormido por fases por 1.5 h (3DIA/2).</string>
<string name="openapsama_min_5m_carbimpact_summary">"Ajustes pro defecto: 3.0\nEsto es un ajuste pro defecto para la absorcion de carbohidratos pro 5 minutos. Por defecto se espera 3mg/dl/5min. Esto afecta la velocidad de reduccion de COB y cuanta absorcion se usa para calcular el BG futuro previsto, si la glucosa diminua mas de lo previsto o aumenta mas de lo previsto. "</string>
<string name="openapsama_link_to_preferncejson_doc_txt">"Atención!\nNormalment no tienes que editar los valores a continuacion. Por favor PINCHA AQUI y LEE el texto y PROCURA ENTENDER antes de cambiar alguno de los valores. "</string>
<string name="openapsama_autosens_adjusttargets_summary">Ajuste por defecto: true\nEsto se usa para permitir autosens a ajustar objectivos BG ademas de ISF y bases.</string>
<string name="openapsama_bolussnooze_dia_divisor_summary">Ajuste por defecto: 2 \nDormir bolo es iniciado después de proveder un bolo para comida, así el loop no interactuará con low temps cuando acabas de comer. El ajuste pro defecto es 2; quiere decir con el DIA de 3 h el bolo será dormido por fases por 1.5 h (3DIA/2).</string>
<string name="openapsama_min_5m_carbimpact_summary">"Ajustes pro defecto: 3.0\nEsto es un ajuste pro defecto para la absorción de carbohidratos pro 5 minutos. Por defecto se espera 3mg/dl/5min. Esto afecta la velocidad de reducción de COB y cuanta absorción se usa para calcular el BG futuro previsto, si la glucosa diminua mas de lo previsto o aumenta mas de lo previsto. "</string>
<string name="openapsama_link_to_preferncejson_doc_txt">"Atención!\nNormalment no tienes que editar los valores a continuación. Por favor PINCHA AQUI y LEE el texto y PROCURA ENTENDER antes de cambiar alguno de los valores. "</string>
<string name="smscommunicator_invalidphonennumber">numero de telefonp incorrecto</string>
<string name="copy_to_clipboard">Copiar al Clipboard</string>
<string name="copied_to_clipboard">Copiado al clipboard</string>
<string name="nav_show_logcat">mostrar log</string>
<string name="overview_calibration">Calibracion</string>
<string name="overview_calibration_bg_label">Calibracion</string>
<string name="send_calibration" formatted="false">Mandar calibracion %.1f a xDrip?</string>
<string name="overview_calibration">Calibración</string>
<string name="overview_calibration_bg_label">Calibración</string>
<string name="send_calibration" formatted="false">Mandar calibración %.1f a xDrip?</string>
<string name="xdripnotinstalled">xDrip+ no instalado</string>
<string name="calibrationsent">Calibracion mandada a xDrip</string>
<string name="smscommunicator_remotecalibrationnotallowed">Calibracion remota no admitida</string>
<string name="smscommunicator_calibrationsent">Mandar calibracion tiene que ser activada en xDrip.</string>
<string name="calibrationsent">Calibración mandada a xDrip</string>
<string name="smscommunicator_remotecalibrationnotallowed">Calibración remota no admitida</string>
<string name="smscommunicator_calibrationsent">Mandar calibración tiene que ser activada en xDrip.</string>
<string name="smscommunicator_calibrationfailed">xDrip no recibe calibraciones</string>
<string name="pumpsuspended">bomba parada</string>
<string name="gettingpumpstatus">recibir estado de bomba</string>
@ -473,9 +487,9 @@
<string name="adult">Adulto</string>
<string name="patientage_summary">Por favor elige edad del paciente para emplear limites de seguridad</string>
<string name="Glimp">Glimp</string>
<string name="batteryoptimalizationerror">Aparato parece no soportar optimizacion de bateria whitelisting!</string>
<string name="pleaseallowpermission">Por favor permita Permission</string>
<string name="needwhitelisting" formatted="false">%s necesita optimizacion de bateria whitelisting para funcionar bien</string>
<string name="batteryoptimalizationerror">Aparato parece no soportar optimización de bateria whitelisting!</string>
<string name="pleaseallowpermission">Por favor conceda permiso</string>
<string name="needwhitelisting" formatted="false">%s necesita optimización de bateria whitelisting para funcionar bien</string>
<string name="loopsuspended">Loop desactivado</string>
<string name="loopsuspendedfor" formatted="false">desactivado (%d m)</string>
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
@ -489,14 +503,14 @@
<string name="disconnectpumpfor2h">Desconectar bomba por 2 h</string>
<string name="disconnectpumpfor3h">Desconectar bomba por 3 h</string>
<string name="resume">Reiniciar</string>
<string name="smscommunicator_wrongduration">duracion incorrecta</string>
<string name="smscommunicator_wrongduration">duración incorrecta</string>
<string name="smscommunicator_loopsuspended">Loop desactivado</string>
<string name="smscommunicator_loopresumed">Loop reiniciado</string>
<string name="treatments_wizard_bgtrend_label">Tendencia 15 min</string>
<string name="treatments_wizard_cob_label">COB</string>
<string name="superbolus">Superbolo</string>
<string name="ns_logappstartedevent">Indica app start en NS</string>
<string name="restartingapp">Aplicacion existente para aplicar ajustes.</string>
<string name="restartingapp">Saliendo de la aplicación para aplicar ajustes.</string>
<string name="danarv2pump">DanaRv2</string>
<string name="configbuilder_insulin">Insulina</string>
<string name="fastactinginsulin">Insulina acción rápida</string>
@ -505,7 +519,7 @@
<string name="insulin_shortname">INS</string>
<string name="fastactinginsulinprolonged">Insulina acción rápida prolongada</string>
<string name="enablesuperbolus">activar superbolo en wizard</string>
<string name="enablesuperbolus_summary">Activar función superbolo en wizard. No lo actives hasta que hayas aprendido lo que realmente hace. PUEDE CAUSAR SOBREDOSIS DE INSULINA usandolo sin precaucion!</string>
<string name="enablesuperbolus_summary">Activar función superbolo en wizard. No lo actives hasta que hayas aprendido lo que realmente hace. PUEDE CAUSAR SOBREDOSIS DE INSULINA usandolo sin precaución!</string>
<string name="iob">IOB</string>
<string name="cob">COB</string>
<string name="virtualpump_firmware_label">Firmware</string>
@ -517,7 +531,7 @@
<string name="xdripstatus_shortname">xds</string>
<string name="wear_showbgi_title">Mostrar BGI</string>
<string name="wear_showbgi_summary">agregar BGI a status line</string>
<string name="ns_noupload">datos no mandados a NS</string>
<string name="ns_noupload">Datos no mandados a NS</string>
<string name="ns_noupload_summary">Todos los datos mandados a NS son borrados. AAPS esta conectado a NS pero no hay cambios en NS</string>
<string name="basal_step">Nivel base</string>
<string name="bolus_step">Nivel bolo</string>
@ -543,16 +557,16 @@
<string name="nsalarm_staledatavalue_label">Stale data threshold [min]</string>
<string name="nsalarm_urgent_staledatavalue_label">Urgent stale data threshold [min]</string>
<string name="openapsama_autosens_period">Interval para autosens [h]</string>
<string name="openapsama_autosens_period_summary">Horas en el pasado para detectar sensividad (tiempo de absorcion de carbohidratos no incluidos)</string>
<string name="openapsama_autosens_period_summary">Horas en el pasado para detectar sensibilidad (tiempo de absorción de carbohidratos no incluidos)</string>
<string name="pump">Bomba</string>
<string name="openaps">OpenAPS</string>
<string name="uploader">Uploader</string>
<string name="configbuilder_sensitivity">Deteccion sensividad</string>
<string name="configbuilder_sensitivity">Detección sensibilidad</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref0">Sensitivity Oref0</string>
<string name="sensitivityaaps">Sensitivity AAPS</string>
<string name="absorptionsettings_title">Ajustes absorcion</string>
<string name="absorption_maxtime_title">Tiempo max absorcion comida [h]</string>
<string name="sensitivityoref0">Sensibilidad Oref0</string>
<string name="sensitivityaaps">Sensibilidad AAPS</string>
<string name="absorptionsettings_title">Ajustes absorción</string>
<string name="absorption_maxtime_title">Tiempo max absorción comida [h]</string>
<string name="absorption_maxtime_summary">Tiempo esperado en el que todos los carbohidratos son absorbados</string>
<string name="danar_visualizeextendedaspercentage_title" formatted="false">mostrar bolo prolongado en %</string>
<string name="careportal_sensorage_label_short">SAGE</string>
@ -563,9 +577,9 @@
<string name="uploader_short">UPLD</string>
<string name="basal_short">BAS</string>
<string name="virtualpump_extendedbolus_label_short">EXT</string>
<string name="lock_screen">Pantalla proteccion</string>
<string name="lock_screen_short">Cierre</string>
<string name="sensitivity_warning">Al activar autosens recuerda editar todos carbohidratos comidos. Si no, sensividad será calculada incorrectamente !!!</string>
<string name="lock_screen">Bloqueo de pantalla</string>
<string name="lock_screen_short">Bloqueo</string>
<string name="sensitivity_warning">Al activar autosens recuerda editar todos carbohidratos comidos. Si no, sensibilidad será calculada incorrectamente !!!</string>
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
<string name="mdtp_ok">OK</string>
<string name="mdtp_cancel">Cancelar</string>
@ -578,7 +592,7 @@
<string name="careportal_cgm_label">CGM Y OPENAPS</string>
<string name="careportal_pump_label">BOMBA</string>
<string name="overview_newtempbasal_basalabsolute">Valor base [U/h]</string>
<string name="careportal_newnstreatment_duration_min_label">Duracion [min]</string>
<string name="careportal_newnstreatment_duration_min_label">Duración [min]</string>
<string name="insulin_oref_peak">IOB Curve Peak Time</string>
<string name="insulin_peak_time">Peak Time [min]</string>
<string name="free_peak_oref">Free-Peak Oref</string>
@ -589,8 +603,8 @@
<string name="date">Fecha</string>
<string name="invalid">INVALIDO</string>
<string name="waitingforpairing">Esperando para conectar con bomba</string>
<string name="pairingok">Coneccion OK</string>
<string name="pairingtimedout">Coneccion fuera de tiempo</string>
<string name="pairingok">conexión OK</string>
<string name="pairingtimedout">conexión fuera de tiempo</string>
<string name="pairing">CONECTANDO</string>
<string name="danars_nodeviceavailable">aparato no encontrado</string>
<string name="emptyreservoir">Deposito vacio</string>
@ -606,11 +620,11 @@
<string name="careportal_newnstreatment_percentage_label">Porcientos</string>
<string name="careportal_newnstreatment_timeshift_label">Cambio de tiepmo</string>
<string name="default_temptargets">Ojbectivo temporal por defecto</string>
<string name="eatingsoon_duration">duracion comiendopronto</string>
<string name="eatingsoon_duration">duración comiendopronto</string>
<string name="eatingsoon_target">objectivo comiendopronto</string>
<string name="activity_duration">duracion actividad</string>
<string name="activity_duration">duración actividad</string>
<string name="activity_target">objectivo actividad</string>
<string name="danar_history_prime">Prime</string>
<string name="danar_history_prime">Cebado</string>
<string name="gettingextendedbolusstatus">recibiendo estado de bolo prolongado</string>
<string name="gettingbolusstatus">recibiendo estado bolo</string>
<string name="gettingtempbasalstatus">recibiendo estado bolo temporal</string>
@ -619,7 +633,7 @@
<string name="reuse">usar otra vez</string>
<string name="wearcontrol_title">Control desde reloj</string>
<string name="wearcontrol_summary">editar y emitir abjectivos temp. y tratamientos por reloj</string>
<string name="connectiontimedout">Fuera tiempo coneccion</string>
<string name="connectiontimedout">Fuera tiempo conexión</string>
<string name="food">comida</string>
<string name="shortgramm">g</string>
<string name="none"><![CDATA[<none>]]></string>
@ -630,7 +644,7 @@
<string name="active"><![CDATA[<Active>]]></string>
<string name="waitingforestimatedbolusend" formatted="false">Esperando terminar bolo. Faltan %d seg.</string>
<string name="processinghistory">Processando</string>
<string name="startingbolus">"Iniciando emision bolo "</string>
<string name="startingbolus">"Iniciando emisión bolo "</string>
<string name="executingrightnow">Orden se esta efectuando en este momento</string>
<string name="pumpdrivercorrected">control de la bomba corigido</string>
<string name="pump_unreachable">bomba no alcanzable</string>
@ -643,7 +657,7 @@
<string name="info">INFO</string>
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Apaga el bluetooth del móvil por un segundo si no hay coneccion con la bomba. Esto ayuda con algunos moviles con problemas de establecer coneccion bluetooth estable.</string>
<string name="btwatchdog_summary">Apaga el bluetooth del móvil por un segundo si no hay conexión con la bomba. Esto ayuda con algunos moviles con problemas de establecer conexión bluetooth estable.</string>
<string name="DexcomG5">DexcomG5 App (patched)</string>
<string name="dexcomg5_nsupload_title">Envias datos BG a NS</string>
<string name="dexcomg5_upload">G5 upload ajustes</string>
@ -654,20 +668,20 @@
<string name="dexcomg5_xdripupload_summary">En xDrip elige 640g/Eversense date source</string>
<string name="nsclientbg">NSClient BG</string>
<string name="minimalbasalvaluereplaced">Valor base remplazado por valor mínimo</string>
<string name="overview_editquickwizard_usebg">Calculacion BG</string>
<string name="overview_editquickwizard_usebolusiob">Calculacion bolo IOB</string>
<string name="overview_editquickwizard_usebasaliob">Calculacion base IOB</string>
<string name="overview_editquickwizard_usetrend">Calculacion tendencia</string>
<string name="overview_editquickwizard_usesuperbolus">Calculacion superbolo</string>
<string name="overview_editquickwizard_usebg">Cálculo BG</string>
<string name="overview_editquickwizard_usebolusiob">Cálculo bolo IOB</string>
<string name="overview_editquickwizard_usebasaliob">Cálculo basal IOB</string>
<string name="overview_editquickwizard_usetrend">Cálculo tendencia</string>
<string name="overview_editquickwizard_usesuperbolus">Cálculo superbolo</string>
<string name="yes">Si</string>
<string name="no">No</string>
<string name="positiveonly">Solo positivo</string>
<string name="negativeonly">Solo negativo</string>
<string name="overview_editquickwizard_usecob">Calculacion COB</string>
<string name="overview_editquickwizard_usetemptarget">Calculacion objectivo temporal</string>
<string name="overview_editquickwizard_usecob">Cálculo COB</string>
<string name="overview_editquickwizard_usetemptarget">Cálculo objectivo temporal</string>
<string name="loopenabled">Loop activado</string>
<string name="apsselected">APS seleccionado</string>
<string name="nsclienthaswritepermission">NSClient tiene permission de escribir</string>
<string name="nsclienthaswritepermission">NSClient tiene permiso para escribir</string>
<string name="closedmodeenabled">Modo cerrado activado</string>
<string name="maxiobset">Máximo IOB puesto correctamente</string>
<string name="hasbgdata">BG adquirible del origen seleccionado</string>
@ -677,7 +691,7 @@
<string name="combo_refresh">Actualizar</string>
<string name="combo_pump_state_label">Estado</string>
<string name="combo_pump_activity_label">Actividad</string>
<string name="combo_no_pump_connection" formatted="false">Ninguna coneccnion por %d min</string>
<string name="combo_no_pump_connection" formatted="false">Ninguna conexión por %d min</string>
<string name="combo_tbr_remaining" formatted="false">%d%% (%d min restan)</string>
<string name="combo_pump_state_suspended_due_to_error">Apagado por error</string>
<string name="combo_pump_state_suspended_by_user">Apagado por usario</string>
@ -687,7 +701,7 @@
<string name="combo_pump_action_bolusing" formatted="false">Emitiendo bolo (%.1f U)</string>
<string name="combo_pump_action_refreshing">Actualizando</string>
<string name="combo_pump_unsupported_operation">"Acción no disponible en la bomba "</string>
<string name="combo_low_suspend_forced_notification">Uso inseguro: bolo prolongado o multiwave activo. Modo Loop ha sido puesto a baja emision para solo 6 horas. Solo bolo normal se puede emitir en modo loop.</string>
<string name="combo_low_suspend_forced_notification">Uso inseguro: bolo prolongado o multiwave activo. Modo Loop ha sido puesto a baja emisión para solo 6 horas. Solo bolo normal se puede emitir en modo loop.</string>
<string name="combo_force_disabled_notification">"Uso inseguro: la bomba usa base diferente a la primera. El loop ha sido apagado. Elige primero perfil en la bomba y acualiza. "</string>
<string name="bolus_frequency_exceeded">Un bolo de mismo valor ha sido dado durante el pasado minuto. Para evitar bolos dobles y asegurarse contra bugs esto no es permitido.</string>
<string name="combo_pump_connected_now">Ahora</string>
@ -698,24 +712,232 @@
<string name="combo_is_in_error_state" formatted="false">La bomba muesta el error E%d: %s</string>
<string name="combo_reservoir_low">Bajo</string>
<string name="combo_reservoir_empty">Vacio</string>
<string name="danar_history">Historial</string>
<string name="combo_reservoir_normal">Normal</string>
<string name="combo_notification_check_time_date">Se necesita actualizar reloj de la bomba</string>
<string name="combo_warning">Alerta</string>
<string name="combo_pump_tbr_cancelled_warrning">TBR cancelada, advertencia acceptada</string>
<string name="combo_error_no_bolus_delivered">Emision del bolo fallada. Ningún bolo se ha emitido. Para asegurarse, por favor controle la bomba para evitar bolo doble. Para evitar bugs no se reinician bolos automaticamente.</string>
<string name="combo_error_no_bolus_delivered">Emisión del bolo fallada. Ningún bolo se ha emitido. Para asegurarse, por favor controle la bomba para evitar bolo doble. Para evitar bugs no se reinician bolos automaticamente.</string>
<string name="combo_error_partial_bolus_delivered" formatted="false">"Solo %.2f U del bolo mandado de %.2f U ha sido emitido por causa de un error. Por favorn controla la bomba para confirmar y toma acciones apropiadas. "</string>
<string name="combo_error_bolus_verification_failed">"Fallo de emitir bolo y de controlar historical de la bomba.Por favor controla manualmente y crea un record en Careportal si el bolo ha sido emitido. "</string>
<string name="combo_error_bolus_recovery_progress">Reestablecido coneccion fallada.</string>
<string name="combo_error_bolus_recovery_progress">Reestablecido conexión fallada.</string>
<string name="combo_reservoir_level_insufficient_for_bolus">"No hay suficiente insulina en el deposito para emitir bolo. "</string>
<string name="extendedbolusdeliveryerror">"Error al emitir bolo prolongado. "</string>
<string name="pump_unreachable_threshold">bomba no alcanzable treshold [min]</string>
<string name="treatments_wizard_tt_label">TT</string>
<string name="unsupportednsversion">Versión no acceptada de Nightscout</string>
<string name="enableloop">Activar loop</string>
<string name="disableloop">Desactivar loop</string>
<string name="sms_basal">Base:</string>
<string name="tempbasaldeliveryerror">Base temporal no emitida</string>
<string name="tempbasal">Base temporal</string>
<string name="sms_delta">Delta:</string>
<string name="sms_iob">IOB:</string>
<string name="pump_unreachable_threshold">Bomba no alcanzable durante [min]</string>
<string name="combo_error_multiple_boluses_with_identical_timestamp">Múltiples bolos con la misma cantidad en el mismo minuto fueron importados. Solo se puede agregar un registro a los tratamientos. Verifique la bomba y agregue manualmente un registro de bolo usando la pestaña Careportal. Asegúrese de crear un bolo con un tiempo que no use otro bolo.</string>
<string name="combo_activity_checking_for_history_changes">Comprobando cambios en el historial</string>
<string name="combo_error_failure_reading_changed_basal_rate">Tasa Basal cambiada en bomba, pero falló al leer</string>
<string name="combo_warning_pump_basal_rate_changed">La tasa Basal en la bomba ha cambiado y será actualizada pronto</string>
<string name="combo_activity_checking_pump_state">Actualizando estado bomba</string>
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Rechazando temporal alta ya que el calculo no consideró los cambios recientes en el historial de la bomba</string>
<string name="combo_error_updating_treatment_record">El bolus se administró con éxito, pero no se pudo agregar la entrada al tratamiento. Esto puede suceder si se administran dos bolos pequeños del mismo tamaño en los últimos dos minutos. Verifique el historial de la bomba y las entradas de tratamiento y use Careportal para agregar entradas faltantes. Asegúrese de no agregar ninguna entrada para el mismo minuto exacto y la misma cantidad.</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">El historial de la bomba ha cambiado después de que se realizó el cálculo del bolo. El bolo no fue entregado. Por favor, vuelva a calcular si aún se necesita un bolo. Si se requiere la misma cantidad de bolo, espere dos minutos ya que los bolos con la misma cantidad se bloquean cuando se solicita con menos de dos minutos entre ellos por seguridad (independientemente de si se administraron o no).</string>
<string name="combo_actvity_reading_basal_profile">Leyendo perfil basal</string>
<string name="start_hypo_tt">Inicio TT Hipo</string>
<string name="no_action_selected">Ninguna acción seleccionada, nada sucederá</string>
<string name="overview_show_basals">Basales</string>
<string name="overview_show_cob">Carbohidratos activos COB</string>
<string name="overview_show_iob">Insulina activa IOB</string>
<string name="overview_show_deviations">Desviaciones</string>
<string name="overview_show_sensitivity">Sensibilidad</string>
<string name="ns_autobackfill">Autorelleno de lecturas perdidas de BG</string>
<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="insight_min">min</string>
<string name="temptargetshort">TT</string>
<string name="start_activity_tt">Inicio TT Actividad</string>
<string name="start_eating_soon_tt">Inicio TT ComiendoPronto</string>
<string name="g5appnotdetected">Por favor actualiza la app G5, a una soportada</string>
<string name="allow_automated_crash_reporting">Permita que los informes automáticos de errores y los datos de uso de funciones se envíen a los desarrolladores a través del servicio fabric.io.</string>
<string name="fabric_upload">Fabric Upload</string>
<string name="data_choices">Opciones de datos</string>
<string name="wear_predictions_title">Predicciones</string>
<string name="wear_predictions_summary">Mostrar predicciones en el reloj</string>
<string name="ns_create_announcements_from_errors_summary">Crear notificaciones en Nightscout para diálogos de error y alertas locales (también visibles en Careportal en Tratamientos)</string>
<string name="ns_create_announcements_from_errors_title">"Crear notificaciones de los errores"</string>
<string name="wear_notifysmb_summary">Muestre SMB en el reloj como un bolo estándar.</string>
<string name="wear_notifysmb_title">Notificar cada SMB</string>
<string name="nav_historybrowser">Historial</string>
<string name="overview_cgm">CGM</string>
<string name="error_starting_cgm">No se pudo iniciar la aplicación CGM. Asegúrate de que está instalada.</string>
<string name="insulin_increment_button_message">Cantidad de insulina que se agrega cuando se presiona el botón</string>
<string name="carb_increment_button_message">"Cantidad de Carbohidratos que se agregan cuando se presiona el botón "</string>
<string name="show_cgm_button_summary">Abre xDrip+, los botones Atrás regresan a AAPS</string>
<string name="show_calibration_button_summary">Envía una calibración a xDrip + o abre el diálogo de calibración G5</string>
<string name="overview_buttons_selection">Botones</string>
<string name="overview_carbs_label">Carbohidratos</string>
<string name="overview_insulin_label">Insulina</string>
<string name="mute">Silenciar</string>
<string name="let_temp_basal_run">Dejar Basal Temporal correr</string>
<string name="not_recommended_due_to_battery_drain">No recomendado por agotar batería</string>
<string name="connect_preemptively">Conectar de forma preventiva</string>
<string name="automatically_connect_when">Conectar automáticamente cuando se abre AndroidAPS, antes de solicitar ningún comando de bomba, para reducir el retraso de la conexión</string>
<string name="statistics">Estadísticas</string>
<string name="insight_keep_alive_status">Estado de Mantener-Activo</string>
<string name="insight_keepalive_format_string">%ds expira en %s</string>
<string name="resistantadult">Adulto resistente a la insulina</string>
<string name="enablesmbaftercarbs_summary">Habilitar SMB durante 6 h después de Carbohidratos, incluso con 0 COB. Solo posible con fuente BG con buen filtrado de datos como G5</string>
<string name="enablesmbalways_summary">Habilitar SMB siempre de forma independiente a los Bolos. Solo posible con fuente BG con buen filtrado de datos como G5</string>
<string name="enablesmbaftercarbs">Habilitar SMB después de Carbohidratos</string>
<string name="enablesmbwithhightemptarget_summary">Habilitar SMB cuando hay un Objetivo Temporal (TT) ALTO activo (Actividad)</string>
<string name="enablesmbwithhightemptarget">Habilitar SMB con Objetivo Temporal Alto</string>
<string name="enablesmbwithtemptarget_summary">Habilitar SMB cuando hay un Objetivo Temporal (TT) activo (ComerPronto, Actividad)</string>
<string name="enablesmbwithtemptarget">Habilitar SMB con Objetivos Temporales</string>
<string name="enablesmbwithcob_summary">Habilitar SMB cuando hay Carbohidratos Activo COB.</string>
<string name="enablesmbwithcob">Habilitar SMB con COB</string>
<string name="enablesmbalways">Habilitar SMB siempre</string>
<string name="time_plural">s</string>
<string name="week">Semana</string>
<string name="day">Día</string>
<string name="hour">Hora</string>
<string name="minute">minuto</string>
<string name="second">segundo</string>
<string name="insight_incompatible">Incompatible</string>
<string name="insight_not_authorized">No autorizado</string>
<string name="insight_app_binding">Vinculación aplicación</string>
<string name="insight_code_rejected">Código rechazado</string>
<string name="insight_waiting_for_code">Esperando código de confirmación</string>
<string name="insight_unknown">Desconocido</string>
<string name="insight_incompatible_compantion_app_we_need_version">Aplicación Companion incompatible, necesitamos la versión</string>
<string name="insight_companion_app_not_installed">Companion app parece no instalada!</string>
<string name="insight_not_connected_to_companion_app">¡La aplicación Companion no parece estar instalada!</string>
<string name="insight_stay_always_connected">Permanecer siempre conectado</string>
<string name="insight_use_real_tbr_cancels">Usar cancelación Basal Temporal (TBR) real</string>
<string name="insight_actually_cancel_tbr_summary">Actualmente, cancelar una Basal Temporal TBR (crea una alarma de bomba) en su lugar establecer el 90% durante 1 minuto</string>
<string name="alert_w31">Advertencia W31: Cartucho insulina bajo</string>
<string name="alert_w32">Advertencia W32: Bateria baja</string>
<string name="alert_w33">Advertencia W33: Fecha/hora inválida</string>
<string name="alert_w34">Advertencia W34: Final de garantía</string>
<string name="alert_w36">Advertencia W36: Basal Temporal cancelada</string>
<string name="alert_w38">Warning W38: Bolo cancelado</string>
<string name="alert_w39">Warning W39: Adevertencia tiempo de prestamo</string>
<string name="loop_smbsetbypump_label">SMB administrado por bomba</string>
<string name="combo_pump_state_initializing">Inicializando</string>
<string name="smb_shortname">SMB</string>
<string name="enableuam">Activar UAM</string>
<string name="enablesmb">Activar SMB</string>
<string name="enablesmb_summary">Usar Super Micro Bolus en lugar de Basal Temporal para una acción más rápida</string>
<string name="enableuam_summary">Detección Comidas No Anunciadas UAM</string>
<string name="insightpump_shortname">Insight</string>
<string name="insightpump">Bomba Insight</string>
<string name="status_no_colon">Estado</string>
<string name="changed">Modificado</string>
<string name="pump_stopped_uppercase">BOMBA PARADA</string>
<string name="status_updated">Estado actualizado</string>
<string name="ago">hace</string>
<string name="with">con</string>
<string name="insight_active_tbr">Basal Temporal TBR Activa</string>
<string name="insight_min_left">minutos faltan</string>
<string name="log_book">Libro de registros</string>
<string name="insight_last_completed_action">Última acción completada</string>
<string name="insight_needs">necesita</string>
<string name="insight_startup_uppercase">PUESTA EN MARCHA</string>
<string name="insight_history_synced">SINCRONIZADO</string>
<string name="insight_history_busy">OCUPADO</string>
<string name="insight_history_syncing">SINCRONIZANDO</string>
<string name="insight_history_idle">DESOCUPADO</string>
<string name="combo_bolus_count">Contador Bolos</string>
<string name="combo_tbr_count">Contador TBR</string>
<string name="smbmaxminutes_summary">Minutos máximos de basal para limitar SMB a</string>
<string name="insight_remaining_over">restan sobre</string>
<string name="insight_total_with">total con</string>
<string name="combo_error_no_connection_no_bolus_delivered">Bomba inalcanzable. No se administró ningún Bolo</string>
<string name="openapsama_autosens_adjusttargets">Autosens también ajusta los objetivos</string>
<string name="hypo_duration">Duración Hipo</string>
<string name="hypo_target">Objetivo Hipo</string>
<string name="shortminute">m</string>
<string name="shorthour">h</string>
<string name="objectivenotstarted">Objetivo %d no iniciado</string>
<string name="objectivenotfinished">Objetivo %d no finalizado</string>
<string name="pumpisnottempbasalcapable">La bomba no tiene capacidad basal temporal</string>
<string name="novalidbasalrate">Tasa Basal no valida en la bomba</string>
<string name="closedmodedisabledinpreferences">Loop cerrado desabilitado en preferencias</string>
<string name="autosensdisabledinpreferences">Autosens desabilitado en preferencias</string>
<string name="smbdisabledinpreferences">SMB desabilitado en preferencias</string>
<string name="limitingbasalratio">limitando max basal rate a %.2f U/h debido a %s</string>
<string name="pumplimit">Limite de la bomba</string>
<string name="itmustbepositivevalue">Tiene que ser un valor positivo</string>
<string name="maxbasalmultiplier">Multiplicador basal máximo</string>
<string name="maxdailybasalmultiplier">Multiplicador diario basal máximo</string>
<string name="smb_frequency_exceeded">Un Bolo entregado en los últimos 3 minutos</string>
<string name="basal_set_correctly">Basal establecida correctamente</string>
<string name="limitingpercentrate">Limitando porcentaje máximo de tasa a %d%% debido a %s</string>
<string name="limitingbolus">"Limitando el bolo a %.1f U debido a %s "</string>
<string name="limitingmaxiob">Limitando max IOB to %.1f U debido a %s</string>
<string name="limitingcarbs">Limitando carbs to %d g debido a %s</string>
<string name="limitingiob">Limitando IOB to %.1f U debido a %s</string>
<string name="maxvalueinpreferences">Valor máximo en preferencias</string>
<string name="hardlimit">Limite estricto</string>
<string name="unsafeusage">uso no seguro</string>
<string name="readstatusfailed">Error al leer estado</string>
<string name="record_pump_site_change">Anotar cambio sitio bomba</string>
<string name="record_insulin_cartridge_change">Anotar cambio cartucho de insulina</string>
<string name="smbalwaysdisabled">"SMB siempre y después de que los carbohidratos deshabilitados porque la fuente activa de BG no admite el filtrado avanzado "</string>
<string name="smbnotallowedinopenloopmode">"SMB no permitido en modo de Loop abierto "</string>
<string name="food_short">Comida</string>
<string name="reset">reset</string>
<string name="waitingfortimesynchronization">Esperando para sincronización de tiempo (%d sec)</string>
<string name="loopdisconnectedfor">Desconectado (%d m)</string>
<string name="automatic_careportal_events">Eventos Careportal automáticos</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">"Subi automáticamente la insulina, la cánula y los cambios de batería y las alarmas de bombeo a Nightscout "</string>
<string name="openapssmb_maxiob_summary">Este valor se denomina IOB máx. En el contexto de OpenAPS. OpenAPS no agregará más insulina si el IOB actual es mayor que este valor.</string>
<string name="absorption_cutoff_title">Tiempo máximo de absorción de la comida [h]</string>
<string name="absorption_cutoff_summary">"Tiempo en el que cualquier comida se considera absorbida. Los carbohidratos restantes serán cortados. "</string>
<string name="time">Tiempo</string>
<string name="overview_show_notes_field_in_dialogs_title">Mostrar el campo notas en dialogos de tratamientos</string>
<string name="boluserrorcode">Solicitado: %.2fU Entregado: %.2fU Codigo de error: %d</string>
<string name="firstinsulinincrement">Primer incremento insulina</string>
<string name="secondinsulinincrement">Segundo incremento insulina</string>
<string name="thirdinsulinincrement">Tercer incremento insulina</string>
<string name="firstcarbsincrement">Primer incremento carbohidratos</string>
<string name="secondcarbsincrement">Segundo incremento carbohidratos</string>
<string name="thirdcarbsincrement">Tercer incremento carbohidratos</string>
<string name="cgm">CGM</string>
<string name="ns_wifionly">Usar solo WIFI</string>
<string name="ns_wifi_ssids">WIFI SSID</string>
<string name="connectionsettings_title">Ajustes conexión</string>
<string name="ns_wifi_allowedssids">SSID\'s permitido (separados por punto y coma)</string>
<string name="ns_allowroaming">Permitir conexión en roaming</string>
<string name="openapsama_autosens_max">"Proporción de autosens máximos "</string>
<string name="openapsama_autosens_min">"Proporción autosens mínima "</string>
<string name="openapsama_max_daily_safety_multiplier">Máximo multiplicador diario de seguridad</string>
<string name="openapsama_current_basal_safety_multiplier">"Multiplicador de seguridad basal actual "</string>
<string name="openapsama_bolussnooze_dia_divisor">DIA Divisor para suspensión de bolos</string>
<string name="openapssmb_maxiob_title">El máximo total de IOB OpenAPS no puede rebasar [U]</string>
<string name="value_unavailable_short">n/a</string>
<string name="pump_stopped">Bomba parada</string>
<string name="pump_started">Bomba iniciada</string>
<string name="pump_paused">Bomba pausada</string>
<string name="insight_upfront_with">por adelantado con</string>
<string name="pump_basebasalrate">%.2f U/h</string>
<string name="openapssmb">OpenAPS SMB</string>
<string name="about_link_urls">" http://www.androidaps.org http://www.androidaps.de (de) facebook: http://facebook.androidaps.org http://facebook.androidaps.de (de)"</string>
<string name="combo_check_date">El último bolo tiene más de 24 horas o está en el futuro. Compruebe la fecha en que la bomba está configurada correctamente.</string>
<string name="combo_suspious_bolus_time">La hora / fecha del bolo administrado en la bomba parece incorrecta; es probable que la IOB sea incorrecta. Verifique la hora / fecha de la bomba.</string>
<string name="profileswitch_ismissing">Falta Cambio de Perfil. Haga un Cambio de Perfil o presione \"Activar perfil\" en PerfilLocal.</string>
<string name="alert_e13">Error E13: error de idioma</string>
<string name="alert_e10">"Error E10: error de rebobinado "</string>
<string name="alert_e7">"Error E7: error electrónico "</string>
<string name="alert_e6">"Error E6: error mecánico "</string>
<string name="alert_m30">"Mantenimiento M30: Tipo de cartucho no configurado "</string>
<string name="alert_m29">"Mantenimiento M29: tipo de batería no configurada "</string>
<string name="alert_m28">"Mantenimiento M28: tiempo de pausa del modo de pausa "</string>
<string name="alert_m27">"Mantenimiento M27: Error en la descarga de datos "</string>
<string name="alert_m20">"Mantenimiento M20: Cartucho no insertado "</string>
<string name="alert_m21">"Mantenimiento M21: Cartucho vacío "</string>
<string name="alert_m22">"Mantenimiento M22: Batería agotada "</string>
<string name="alert_m23">"Mantenimiento M23: Apagado automático "</string>
<string name="alert_m26">"Mantenimiento M26: cambio de cartucho no completado "</string>
<string name="alert_m25">"Mantenimiento M25: tiempo de prestamo finalizado - final de la operación "</string>
<string name="alert_m24">"Mantenimiento M24: Oclusión "</string>
<string name="es_lang">Español</string>
<string name="ns_chargingonly">Solo si cargando</string>
<string name="ns_autobackfill_title">Autobackfill BG</string>
<string name="wear_wizard_settings">Asistente configuración</string>
<string name="wear_wizard_settings_summary">Calculos incluidos en el resultado del asistente</string>
<string name="wear_display_settings">Mostrar configuración</string>
<string name="wear_general_settings">Configuración general</string>
<string name="ro_lang">Rumano</string>
</resources>

View file

@ -3,8 +3,9 @@
<color name="prediction">#ff00ff</color>
<color name="basal">#00ffff</color>
<color name="iob">#1e88e5</color>
<color name="bolus">#FFFFCC03</color>
<color name="bolus">#1ea3e5</color>
<color name="cob">#FFFB8C00</color>
<color name="carbs">#FFFB8C00</color>
<color name="uam">#ffea00</color>
<color name="zt">#00ffff</color>
<color name="ratio">#FFFFFF</color>
@ -22,6 +23,7 @@
<color name="tempbasal">#C803A9F4</color>
<color name="graphgrid">#757575</color>
<color name="colorLightGray">#d8d8d8</color>
<color name="warning">#ff1a1a</color>
<color name="defaultbackground">#424242</color>
@ -64,4 +66,9 @@
<color name="notificationLow">#ff827c</color>
<color name="notificationInfo">#009705</color>
<color name="deviationgrey">#c8666666</color>
<color name="deviationgreen">#7200FF00</color>
<color name="deviationred">#72FF0000</color>
<color name="deviationblack">#72000000</color>
</resources>

View file

@ -1,4 +1,4 @@
<resources>
<resources>
<string name="treatmentssafety_title">Tratments safety</string>
<string name="treatmentssafety_maxbolus_title">Max allowed bolus [U]</string>
<string name="treatmentssafety_maxcarbs_title">Max allowed carbs [g]</string>
@ -1035,6 +1035,16 @@
<string name="openapsama_current_basal_safety_multiplier">Current basal safety multiplier</string>
<string name="value_unavailable_short">n/a</string>
<string name="ns_autobackfill_title">Autobackfill BG</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_trend">wearwizard_trend</string>
<string translatable="false" name="key_wearwizard_cob">wearwizard_cob</string>
<string translatable="false" name="key_wearwizard_bolusiob">wearwizard_bolusiob</string>
<string translatable="false" name="key_wearwizard_basaliob">wearwizard_basaliob</string>
<string name="wear_wizard_settings_summary">Calculations included in the Wizard result:</string>
<string name="wear_display_settings">Display Settings</string>
<string name="wear_general_settings">General Settings</string>
<string name="virtualpump_type">Virtual Pump Type</string>
<string name="virtualpump_definition">Pump Definition</string>
@ -1062,4 +1072,5 @@
<string name="medtronic_error_pump_frequency_invalid">Pump Frequency unsupported.</string>
<string name="medtronic_error_rileylink_address_invalid">RileyLink Address invalid.</string>
</resources>

View file

@ -13,35 +13,78 @@
android:summary="@string/wearcontrol_summary"
android:title="@string/wearcontrol_title" />
<SwitchPreference
android:defaultValue="true"
android:key="wear_detailediob"
android:summary="@string/wear_detailedIOB_summary"
android:title="@string/wear_detailedIOB_title" />
<PreferenceCategory
android:key="wearplugin"
android:title="@string/wear_wizard_settings"
android:summary="@string/wear_wizard_settings_summary"
android:dependency="wearcontrol">
<SwitchPreference
android:defaultValue="false"
android:key="wear_detailed_delta"
android:summary="@string/wear_detailed_delta_summary"
android:title="@string/wear_detailed_delta_title" />
<CheckBoxPreference
android:key="@string/key_wearwizard_bg"
android:title="@string/treatments_wizard_bg_label"
android:defaultValue="true"
android:dependency="wearcontrol"/>
<SwitchPreference
android:defaultValue="false"
android:key="wear_showbgi"
android:summary="@string/wear_showbgi_summary"
android:title="@string/wear_showbgi_title" />
<CheckBoxPreference
android:key="@string/key_wearwizard_trend"
android:title="@string/treatments_wizard_bgtrend_label"
android:defaultValue="false"
android:dependency="wearcontrol"/>
<SwitchPreference
android:defaultValue="true"
android:key="wear_notifySMB"
android:summary="@string/wear_notifysmb_summary"
android:title="@string/wear_notifysmb_title" />
<CheckBoxPreference
android:key="@string/key_wearwizard_cob"
android:title="@string/treatments_wizard_cob_label"
android:defaultValue="true"
android:dependency="wearcontrol"/>
<SwitchPreference
android:defaultValue="true"
android:key="wear_predictions"
android:summary="@string/wear_predictions_summary"
android:title="@string/wear_predictions_title" />
<CheckBoxPreference
android:key="@string/key_wearwizard_bolusiob"
android:title="@string/treatments_wizard_bolusiob_label"
android:defaultValue="true"
android:dependency="wearcontrol"/>
<CheckBoxPreference
android:key="@string/key_wearwizard_basaliob"
android:title="@string/treatments_wizard_basaliob_label"
android:defaultValue="true"
android:dependency="wearcontrol"/>
</PreferenceCategory>
<PreferenceCategory
android:key="wearplugin"
android:title="@string/wear_display_settings">
<SwitchPreference
android:defaultValue="false"
android:key="wear_detailediob"
android:summary="@string/wear_detailedIOB_summary"
android:title="@string/wear_detailedIOB_title" />
<SwitchPreference
android:defaultValue="false"
android:key="wear_detailed_delta"
android:summary="@string/wear_detailed_delta_summary"
android:title="@string/wear_detailed_delta_title" />
<SwitchPreference
android:defaultValue="false"
android:key="wear_showbgi"
android:summary="@string/wear_showbgi_summary"
android:title="@string/wear_showbgi_title" />
<SwitchPreference
android:defaultValue="true"
android:key="wear_predictions"
android:summary="@string/wear_predictions_summary"
android:title="@string/wear_predictions_title" />
</PreferenceCategory>
<PreferenceCategory
android:key="wearplugin"
android:title="@string/wear_general_settings">
<SwitchPreference
android:defaultValue="true"
android:key="wear_notifySMB"
android:summary="@string/wear_notifysmb_summary"
android:title="@string/wear_notifysmb_title" />
</PreferenceCategory>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>

View file

@ -208,6 +208,10 @@
android:name=".interaction.actions.FillActivity"
android:label="Fill">
</activity>
<activity
android:name=".interaction.actions.ECarbActivity"
android:label="Fill">
</activity>
<activity
android:name=".interaction.actions.TempTargetActivity"
android:label="TempTarget">

View file

@ -0,0 +1,134 @@
package info.nightscout.androidaps.interaction.actions;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.wearable.view.DotsPageIndicator;
import android.support.wearable.view.GridPagerAdapter;
import android.support.wearable.view.GridViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.text.DecimalFormat;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.ListenerService;
import info.nightscout.androidaps.interaction.utils.PlusMinusEditText;
import info.nightscout.androidaps.interaction.utils.SafeParse;
/**
* Created by adrian on 04/08/18.
*/
public class ECarbActivity extends ViewSelectorActivity {
PlusMinusEditText editCarbs;
PlusMinusEditText editStartTime;
PlusMinusEditText editDuration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
final Resources res = getResources();
final GridViewPager pager = (GridViewPager) findViewById(R.id.pager);
pager.setAdapter(new MyGridViewPagerAdapter());
DotsPageIndicator dotsPageIndicator = (DotsPageIndicator) findViewById(R.id.page_indicator);
dotsPageIndicator.setPager(pager);
}
@Override
protected void onPause() {
super.onPause();
finish();
}
private class MyGridViewPagerAdapter extends GridPagerAdapter {
@Override
public int getColumnCount(int arg0) {
return 4;
}
@Override
public int getRowCount() {
return 1;
}
@Override
public Object instantiateItem(ViewGroup container, int row, int col) {
if(col == 0){
final View view = getInflatedPlusMinusView(container);
double def = 0;
if (editCarbs != null){
def = SafeParse.stringToDouble(editCarbs.editText.getText().toString());
}
editCarbs = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 150d, 1d, new DecimalFormat("0"), true);
setLabelToPlusMinusView(view, "carbs");
container.addView(view);
return view;
} else if(col == 1){
final View view = getInflatedPlusMinusView(container);
double def = 0;
if (editStartTime != null){
def = SafeParse.stringToDouble(editStartTime.editText.getText().toString());
}
editStartTime = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 300d, 15d, new DecimalFormat("0"), false);
setLabelToPlusMinusView(view, "start [min]");
container.addView(view);
return view;
} else if(col == 2){
final View view = getInflatedPlusMinusView(container);
double def = 0;
if (editDuration != null){
def = SafeParse.stringToDouble(editDuration.editText.getText().toString());
}
editDuration = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 8d, 1d, new DecimalFormat("0"), false);
setLabelToPlusMinusView(view, "duration [h]");
container.addView(view);
return view;
} else {
final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_send_item, container, false);
final ImageView confirmbutton = (ImageView) view.findViewById(R.id.confirmbutton);
confirmbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check if it can happen that the fagment is never created that hold data?
// (you have to swipe past them anyways - but still)
String actionstring = "ecarbs " +SafeParse.stringToInt(editCarbs.editText.getText().toString())
+ " " + SafeParse.stringToInt(editStartTime.editText.getText().toString())
+ " " + SafeParse.stringToInt(editDuration.editText.getText().toString());
ListenerService.initiateAction(ECarbActivity.this, actionstring);
finish();
}
});
container.addView(view);
return view;
}
}
@Override
public void destroyItem(ViewGroup container, int row, int col, Object view) {
// Handle this to get the data before the view is destroyed?
// Object should still be kept by this, just setup for reinit?
container.removeView((View)view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}
}

View file

@ -32,9 +32,6 @@ public class WizardActivity extends ViewSelectorActivity {
PlusMinusEditText editCarbs;
PlusMinusEditText editPercentage;
boolean useBG;
boolean includeBolusIOB;
boolean includeBasalIOB;
boolean hasPercentage;
@ -63,7 +60,7 @@ public class WizardActivity extends ViewSelectorActivity {
private class MyGridViewPagerAdapter extends GridPagerAdapter {
@Override
public int getColumnCount(int arg0) {
return hasPercentage?6:5;
return hasPercentage?3:2;
}
@Override
@ -86,79 +83,7 @@ public class WizardActivity extends ViewSelectorActivity {
setLabelToPlusMinusView(view, "carbs");
container.addView(view);
return view;
} else if(col == 1){
final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_toggle_item, container, false);
final TextView textView = (TextView) view.findViewById(R.id.label);
textView.setText("include BG?");
final ImageView togglebutton = (ImageView) view.findViewById(R.id.togglebutton);
if(useBG){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
togglebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
useBG = !useBG;
if(useBG){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
}
});
container.addView(view);
return view;
} else if(col == 2){
final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_toggle_item, container, false);
final TextView textView = (TextView) view.findViewById(R.id.label);
textView.setText("Bolus IOB?");
final ImageView togglebutton = (ImageView) view.findViewById(R.id.togglebutton);
if(includeBolusIOB){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
togglebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
includeBolusIOB = !includeBolusIOB;
if(includeBolusIOB){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
}
});
container.addView(view);
return view;
} else if(col == 3){
final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_toggle_item, container, false);
final TextView textView = (TextView) view.findViewById(R.id.label);
textView.setText("Basal IOB?");
final ImageView togglebutton = (ImageView) view.findViewById(R.id.togglebutton);
if(includeBasalIOB){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
togglebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
includeBasalIOB = !includeBasalIOB;
if(includeBasalIOB){
togglebutton.setImageResource(R.drawable.ic_toggle_on);
} else {
togglebutton.setImageResource(R.drawable.ic_toggle_off);
}
}
});
container.addView(view);
return view;
} else if(col == 4 && hasPercentage){
} else if(col == 1 && hasPercentage){
final View view = getInflatedPlusMinusView(container);
if (editPercentage == null) {
editPercentage = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, 100d, 50d, 150d, 1d, new DecimalFormat("0"), false);
@ -184,10 +109,7 @@ public class WizardActivity extends ViewSelectorActivity {
if (editPercentage != null) percentage = SafeParse.stringToInt(editPercentage.editText.getText().toString());
String actionstring = "wizard " + SafeParse.stringToInt(editCarbs.editText.getText().toString())
+ " " + useBG
+ " " + includeBolusIOB
+ " " + includeBasalIOB
String actionstring = "wizard2 " + SafeParse.stringToInt(editCarbs.editText.getText().toString())
+ " " + percentage;
ListenerService.initiateAction(WizardActivity.this, actionstring);
finish();

View file

@ -7,10 +7,10 @@ import android.preference.PreferenceManager;
import java.util.Vector;
import info.nightscout.androidaps.BuildConfig;
import info.nightscout.androidaps.data.ListenerService;
import info.nightscout.androidaps.interaction.AAPSPreferences;
import info.nightscout.androidaps.interaction.actions.BolusActivity;
import info.nightscout.androidaps.interaction.actions.ECarbActivity;
import info.nightscout.androidaps.interaction.actions.TempTargetActivity;
import info.nightscout.androidaps.interaction.utils.MenuListActivity;
import info.nightscout.androidaps.interaction.actions.WizardActivity;
@ -46,8 +46,9 @@ public class MainMenuActivity extends MenuListActivity {
Vector<String> menuitems = new Vector<String>();
menuitems.add("TempT");
menuitems.add("Bolus");
if(showWizard) menuitems.add("Wizard");
menuitems.add("eCarb");
menuitems.add("Bolus");
menuitems.add("Settings");
menuitems.add("Status");
if (showPrimeFill) menuitems.add("Prime/Fill");
@ -86,6 +87,10 @@ public class MainMenuActivity extends MenuListActivity {
intent = new Intent(this, FillMenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
}
} else if ("eCarb".equals(action)) {
intent = new Intent(this, ECarbActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
}
}
}