Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
d927b83281
|
@ -44,7 +44,7 @@ def generateGitBuild = { ->
|
|||
stringBuilder.append('NoGitSystemAvailable')
|
||||
}
|
||||
stringBuilder.append('-')
|
||||
stringBuilder.append((new Date()).format('yyyy.MM.dd'))
|
||||
stringBuilder.append((new Date()).format('yyyy.MM.dd-HH:mm'))
|
||||
stringBuilder.append('"')
|
||||
return stringBuilder.toString()
|
||||
}
|
||||
|
|
|
@ -168,8 +168,9 @@
|
|||
android:value="59d462666c664c57b29e1d79ea123e01f8057cfa" />
|
||||
|
||||
<activity
|
||||
android:name=".startupwizard.SetupWizardActivity"
|
||||
android:name=".setupwizard.SetupWizardActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:theme="@style/AppTheme.SetupWizard"
|
||||
android:label="@string/title_activity_setup_wizard"></activity>
|
||||
</application>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
|||
import info.nightscout.androidaps.plugins.Food.FoodPlugin;
|
||||
import info.nightscout.androidaps.plugins.Overview.events.EventSetWakeLock;
|
||||
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.startupwizard.SetupWizardActivity;
|
||||
import info.nightscout.androidaps.setupwizard.SetupWizardActivity;
|
||||
import info.nightscout.androidaps.tabs.SlidingTabLayout;
|
||||
import info.nightscout.androidaps.tabs.TabPageAdapter;
|
||||
import info.nightscout.utils.ImportExportPrefs;
|
||||
|
@ -90,6 +90,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
|||
}
|
||||
askForBatteryOptimizationPermission();
|
||||
doMigrations();
|
||||
|
||||
if (!SP.getBoolean(R.string.key_setupwizard_processed, false)) {
|
||||
Intent intent = new Intent(this, SetupWizardActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
if (Config.logFunctionCalls)
|
||||
log.debug("onCreate");
|
||||
|
||||
|
|
|
@ -179,10 +179,10 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
|||
}
|
||||
|
||||
if (pumpSiteChangeCheckbox.isChecked())
|
||||
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
|
||||
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.actionsConfirm) + "'>" + MainApp.gs(R.string.record_pump_site_change) + "</font>");
|
||||
|
||||
if (insulinCartridgeChangeCheckbox.isChecked())
|
||||
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.high) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
|
||||
confirmMessage.add("" + "<font color='" + MainApp.gc(R.color.actionsConfirm) + "'>" + MainApp.gs(R.string.record_insulin_cartridge_change) + "</font>");
|
||||
|
||||
final String notes = notesEdit.getText().toString();
|
||||
if (!notes.isEmpty()) {
|
||||
|
|
|
@ -67,24 +67,20 @@ public class ObjectivesFragment extends SubscriberFragment {
|
|||
holder.startButton.setTag(o);
|
||||
holder.verifyButton.setTag(o);
|
||||
|
||||
holder.startButton.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
ObjectivesPlugin.Objective o = (ObjectivesPlugin.Objective) v.getTag();
|
||||
o.started = new Date();
|
||||
holder.startButton.setOnClickListener(v -> {
|
||||
ObjectivesPlugin.Objective o1 = (ObjectivesPlugin.Objective) v.getTag();
|
||||
o1.started = new Date();
|
||||
updateGUI();
|
||||
ObjectivesPlugin.saveProgress();
|
||||
});
|
||||
holder.verifyButton.setOnClickListener(v -> {
|
||||
ObjectivesPlugin.Objective o12 = (ObjectivesPlugin.Objective) v.getTag();
|
||||
if (ObjectivesPlugin.getPlugin().requirementsMet(o12.num).done || enableFake.isChecked()) {
|
||||
o12.accomplished = new Date();
|
||||
updateGUI();
|
||||
ObjectivesPlugin.saveProgress();
|
||||
}
|
||||
});
|
||||
holder.verifyButton.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
ObjectivesPlugin.Objective o = (ObjectivesPlugin.Objective) v.getTag();
|
||||
if (ObjectivesPlugin.getPlugin().requirementsMet(o.num).done || enableFake.isChecked()) {
|
||||
o.accomplished = new Date();
|
||||
updateGUI();
|
||||
ObjectivesPlugin.saveProgress();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
long prevObjectiveAccomplishedTime = position > 0 ?
|
||||
objectives.get(position - 1).accomplished.getTime() : -1;
|
||||
|
|
|
@ -22,6 +22,7 @@ import info.nightscout.androidaps.interfaces.PluginDescription;
|
|||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.ConstraintsObjectives.events.EventObjectivesSaved;
|
||||
import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyPlugin;
|
||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientPlugin;
|
||||
|
@ -87,7 +88,7 @@ public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface
|
|||
this.started = started;
|
||||
}
|
||||
|
||||
boolean isStarted() {
|
||||
public boolean isStarted() {
|
||||
return started.getTime() > 0;
|
||||
}
|
||||
|
||||
|
@ -233,6 +234,7 @@ public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface
|
|||
editor.apply();
|
||||
if (Config.logPrefsChange)
|
||||
log.debug("Objectives stored");
|
||||
MainApp.bus().post(new EventObjectivesSaved());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.ConstraintsObjectives.events;
|
||||
|
||||
import info.nightscout.androidaps.events.Event;
|
||||
|
||||
public class EventObjectivesSaved extends Event {
|
||||
}
|
|
@ -112,7 +112,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
stopPressed = true;
|
||||
stopPressedView.setVisibility(View.VISIBLE);
|
||||
stopButton.setVisibility(View.INVISIBLE);
|
||||
ConfigBuilderPlugin.getActivePump().stopBolusDelivering();
|
||||
ConfigBuilderPlugin.getCommandQueue().cancelAllBoluses();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -303,21 +303,21 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
|
|||
if (currentProfile.getUnits().equals(Constants.MMOL)) {
|
||||
unitLabel = "mmol/l";
|
||||
}
|
||||
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(activityTT) + " " + unitLabel + " (" + activityTTDuration + " min)</font>");
|
||||
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(activityTT) + " " + unitLabel + " (" + activityTTDuration + " min)</font>");
|
||||
}
|
||||
if (startEatingSoonTTCheckbox.isChecked()) {
|
||||
if (currentProfile.getUnits().equals(Constants.MMOL)) {
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
|
||||
} else
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
|
||||
} else {
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
|
||||
}
|
||||
}
|
||||
if (startHypoTTCheckbox.isChecked()) {
|
||||
if (currentProfile.getUnits().equals(Constants.MMOL)) {
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(hypoTT) + " mmol/l (" + hypoTTDuration + " min)</font>");
|
||||
} else
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(hypoTT) + " mg/dl (" + hypoTTDuration + " min)</font>");
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(hypoTT) + " mmol/l (" + hypoTTDuration + " min)</font>");
|
||||
} else {
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(hypoTT) + " mg/dl (" + hypoTTDuration + " min)</font>");
|
||||
}
|
||||
}
|
||||
|
||||
int timeOffset = editTime.getValue().intValue();
|
||||
|
|
|
@ -217,9 +217,9 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener
|
|||
|
||||
if (startEatingSoonTTCheckbox.isChecked()) {
|
||||
if (currentProfile.getUnits().equals(Constants.MMOL)) {
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to1Decimal(eatingSoonTT) + " mmol/l (" + eatingSoonTTDuration + " min)</font>");
|
||||
} else
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.high) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
|
||||
actions.add(MainApp.gs(R.string.temptargetshort) + ": " + "<font color='" + MainApp.gc(R.color.tempTargetConfirmation) + "'>" + DecimalFormatter.to0Decimal(eatingSoonTT) + " mg/dl (" + eatingSoonTTDuration + " min)</font>");
|
||||
}
|
||||
|
||||
int timeOffset = editTime.getValue().intValue();
|
||||
|
|
|
@ -59,6 +59,8 @@ public class Notification {
|
|||
public static final int ZERO_VALUE_IN_PROFILE = 31;
|
||||
public static final int PROFILE_SWITCH_MISSING = 32;
|
||||
public static final int NOT_ENG_MODE_OR_RELEASE = 33;
|
||||
public static final int WRONG_PUMP_PASSWORD = 34;
|
||||
|
||||
|
||||
public int id;
|
||||
public Date date;
|
||||
|
|
|
@ -56,6 +56,7 @@ import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.Bolus;
|
|||
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.PumpHistory;
|
||||
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.PumpHistoryRequest;
|
||||
import info.nightscout.androidaps.plugins.PumpCombo.ruffyscripter.history.Tdd;
|
||||
import info.nightscout.androidaps.plugins.Treatments.Treatment;
|
||||
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.androidaps.queue.CommandQueue;
|
||||
|
@ -421,9 +422,6 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
|
|||
return pump.basalProfile.hourlyRates[currentHour];
|
||||
}
|
||||
|
||||
private static BolusProgressReporter nullBolusProgressReporter = (state, percent, delivered) -> {
|
||||
};
|
||||
|
||||
private static BolusProgressReporter bolusProgressReporter = (state, percent, delivered) -> {
|
||||
EventOverviewBolusProgress event = EventOverviewBolusProgress.getInstance();
|
||||
switch (state) {
|
||||
|
@ -549,12 +547,14 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
|
|||
return new PumpEnactResult().success(true).enacted(false);
|
||||
}
|
||||
|
||||
BolusProgressReporter progressReporter = detailedBolusInfo.isSMB ? nullBolusProgressReporter : bolusProgressReporter;
|
||||
Treatment treatment = new Treatment();
|
||||
treatment.isSMB = detailedBolusInfo.isSMB;
|
||||
EventOverviewBolusProgress.getInstance().t = treatment;
|
||||
|
||||
// start bolus delivery
|
||||
scripterIsBolusing = true;
|
||||
runCommand(null, 0,
|
||||
() -> ruffyScripter.deliverBolus(detailedBolusInfo.insulin, progressReporter));
|
||||
() -> ruffyScripter.deliverBolus(detailedBolusInfo.insulin, bolusProgressReporter));
|
||||
scripterIsBolusing = false;
|
||||
|
||||
// Note that the result of the issued bolus command is not checked. If there was
|
||||
|
|
|
@ -65,6 +65,11 @@ public abstract class AbstractDanaRExecutionService extends Service {
|
|||
|
||||
protected final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
|
||||
|
||||
protected long lastWrongPumpPassword = 0;
|
||||
|
||||
protected long lastApproachingDailyLimit = 0;
|
||||
|
||||
|
||||
public abstract boolean updateBasalsInPump(final Profile profile);
|
||||
|
||||
public abstract void connect();
|
||||
|
|
|
@ -97,7 +97,11 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
|||
|
||||
public void connect() {
|
||||
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
|
||||
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
|
||||
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
|
||||
notification.soundId = R.raw.error;
|
||||
lastWrongPumpPassword = System.currentTimeMillis();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -192,9 +196,12 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
|||
NSUpload.uploadDeviceStatus();
|
||||
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
|
||||
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
lastApproachingDailyLimit = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
|
|
|
@ -105,7 +105,11 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
|
|||
|
||||
public void connect() {
|
||||
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
|
||||
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
|
||||
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
|
||||
notification.soundId = R.raw.error;
|
||||
lastWrongPumpPassword = System.currentTimeMillis();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -197,9 +201,12 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
|
|||
NSUpload.uploadDeviceStatus();
|
||||
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
|
||||
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
lastApproachingDailyLimit = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
|
|
|
@ -62,13 +62,15 @@ public class BLEScanActivity extends AppCompatActivity {
|
|||
super.onResume();
|
||||
|
||||
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
|
||||
|
||||
if (mBluetoothLeScanner == null) {
|
||||
mBluetoothAdapter.enable();
|
||||
if (mBluetoothAdapter != null) {
|
||||
mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
|
||||
|
||||
if (mBluetoothLeScanner == null) {
|
||||
mBluetoothAdapter.enable();
|
||||
mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
|
||||
}
|
||||
startScan();
|
||||
}
|
||||
startScan();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -79,11 +81,13 @@ public class BLEScanActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
private void startScan() {
|
||||
mBluetoothLeScanner.startScan(mBleScanCallback);
|
||||
if (mBluetoothLeScanner != null)
|
||||
mBluetoothLeScanner.startScan(mBleScanCallback);
|
||||
}
|
||||
|
||||
private void stopScan() {
|
||||
mBluetoothLeScanner.stopScan(mBleScanCallback);
|
||||
if (mBluetoothLeScanner != null)
|
||||
mBluetoothLeScanner.stopScan(mBleScanCallback);
|
||||
}
|
||||
|
||||
private void addBleDevice(BluetoothDevice device) {
|
||||
|
|
|
@ -87,6 +87,7 @@ public class DanaRSService extends Service {
|
|||
private Treatment bolusingTreatment = null;
|
||||
|
||||
private long lastHistoryFetched = 0;
|
||||
private long lastApproachingDailyLimit = 0;
|
||||
|
||||
public DanaRSService() {
|
||||
try {
|
||||
|
@ -165,9 +166,12 @@ public class DanaRSService extends Service {
|
|||
NSUpload.uploadDeviceStatus();
|
||||
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
|
||||
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
|
||||
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
|
||||
lastApproachingDailyLimit = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
|
|
|
@ -120,7 +120,11 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
|
||||
public void connect() {
|
||||
if (mDanaRPump.password != -1 && mDanaRPump.password != SP.getInt(R.string.key_danar_password, -1)) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.wrongpumppassword), R.raw.error);
|
||||
if(System.currentTimeMillis() > lastWrongPumpPassword + 30 * 1000) {
|
||||
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
|
||||
notification.soundId = R.raw.error;
|
||||
lastWrongPumpPassword = System.currentTimeMillis();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -218,9 +222,12 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
NSUpload.uploadDeviceStatus();
|
||||
if (mDanaRPump.dailyTotalUnits > mDanaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
|
||||
log.debug("Approaching daily limit: " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits);
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
if(System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
|
||||
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
|
||||
MainApp.bus().post(new EventNewNotification(reportFail));
|
||||
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + mDanaRPump.dailyTotalUnits + "/" + mDanaRPump.maxDailyTotalUnits + "U");
|
||||
lastApproachingDailyLimit = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
|
|
|
@ -196,6 +196,7 @@ public class ActionStringHandler {
|
|||
}
|
||||
|
||||
boolean useBG = SP.getBoolean(R.string.key_wearwizard_bg, true);
|
||||
boolean useTT = SP.getBoolean(R.string.key_wearwizard_tt, false);
|
||||
boolean useBolusIOB = SP.getBoolean(R.string.key_wearwizard_bolusiob, true);
|
||||
boolean useBasalIOB = SP.getBoolean(R.string.key_wearwizard_basaliob, true);
|
||||
boolean useCOB = SP.getBoolean(R.string.key_wearwizard_cob, true);
|
||||
|
@ -223,7 +224,9 @@ public class ActionStringHandler {
|
|||
DecimalFormat format = new DecimalFormat("0.00");
|
||||
DecimalFormat formatInt = new DecimalFormat("0");
|
||||
BolusWizard bolusWizard = new BolusWizard();
|
||||
bolusWizard.doCalc(profile, null, carbsAfterConstraints, useCOB?cobInfo.displayCob:0d, useBG ? bgReading.valueToUnits(profile.getUnits()) : 0d, 0d, percentage, useBolusIOB, useBasalIOB, false, useTrend);
|
||||
bolusWizard.doCalc(profile, useTT ? TreatmentsPlugin.getPlugin().getTempTargetFromHistory() : null,
|
||||
carbsAfterConstraints, useCOB?cobInfo.displayCob:0d, useBG ? bgReading.valueToUnits(profile.getUnits()) : 0d,
|
||||
0d, percentage, useBolusIOB, useBasalIOB, false, useTrend);
|
||||
|
||||
Double insulinAfterConstraints = MainApp.getConstraintChecker().applyBolusConstraints(new Constraint<>(bolusWizard.calculatedTotalInsulin)).value();
|
||||
if (insulinAfterConstraints - bolusWizard.calculatedTotalInsulin != 0) {
|
||||
|
|
|
@ -213,6 +213,12 @@ public class CommandQueue {
|
|||
return true;
|
||||
}
|
||||
|
||||
public synchronized void cancelAllBoluses() {
|
||||
removeAll(Command.CommandType.BOLUS);
|
||||
removeAll(Command.CommandType.SMB_BOLUS);
|
||||
ConfigBuilderPlugin.getActivePump().stopBolusDelivering();
|
||||
}
|
||||
|
||||
// returns true if command is queued
|
||||
public boolean tempBasalAbsolute(double absoluteRate, int durationInMinutes, boolean enforceNew, Profile profile, Callback callback) {
|
||||
if (!enforceNew && isRunning(Command.CommandType.TEMPBASAL)) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
@ -23,17 +23,29 @@ import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialo
|
|||
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesFragment;
|
||||
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin;
|
||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientPlugin;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientStatus;
|
||||
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfileFragment;
|
||||
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.ProfileNS.NSProfileFragment;
|
||||
import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfileFragment;
|
||||
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfilePlugin;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWLabel;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWBreak;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWButton;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWFragment;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWHtmlLink;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWInfotext;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWPlugin;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWRadioButton;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWEditString;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWEditUrl;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWLabel;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.utils.ImportExportPrefs;
|
||||
import info.nightscout.utils.LocaleHelper;
|
||||
import info.nightscout.utils.PasswordProtection;
|
||||
import info.nightscout.utils.SP;
|
||||
|
@ -66,7 +78,14 @@ public class SWDefinition {
|
|||
// List all the screens here
|
||||
add(new SWScreen(R.string.nav_setupwizard)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.welcometosetupwizard) )
|
||||
.label(R.string.welcometosetupwizard))
|
||||
.add(new SWButton()
|
||||
.text(R.string.nav_import)
|
||||
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity()))
|
||||
.visibility(ImportExportPrefs.file::exists))
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.backupismissing)
|
||||
.visibility(() -> !ImportExportPrefs.file.exists()))
|
||||
)
|
||||
.add(new SWScreen(R.string.language)
|
||||
.skippable(false)
|
||||
|
@ -82,14 +101,9 @@ public class SWDefinition {
|
|||
)
|
||||
.add(new SWScreen(R.string.nsclientinternal_title)
|
||||
.skippable(true)
|
||||
.add(new SWUrl()
|
||||
.preferenceId(R.string.key_nsclientinternal_url)
|
||||
.label(R.string.nsclientinternal_url_title)
|
||||
.comment(R.string.nsclientinternal_url_dialogmessage))
|
||||
.add(new SWString()
|
||||
.preferenceId(R.string.key_nsclientinternal_api_secret)
|
||||
.label(R.string.nsclientinternal_secret_dialogtitle)
|
||||
.comment(R.string.nsclientinternal_secret_dialogmessage))
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.nsclientinfotext))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.enable_nsclient)
|
||||
.action(() -> {
|
||||
|
@ -101,10 +115,35 @@ public class SWDefinition {
|
|||
MainApp.bus().post(new EventSWUpdate(true));
|
||||
})
|
||||
.visibility(() -> !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL)))
|
||||
.add(new SWEditUrl()
|
||||
.preferenceId(R.string.key_nsclientinternal_url)
|
||||
.label(R.string.nsclientinternal_url_title)
|
||||
.comment(R.string.nsclientinternal_url_dialogmessage))
|
||||
.add(new SWEditString()
|
||||
.validator(text -> text.length() >= 12)
|
||||
.preferenceId(R.string.key_nsclientinternal_api_secret)
|
||||
.label(R.string.nsclientinternal_secret_dialogtitle)
|
||||
.comment(R.string.nsclientinternal_secret_dialogmessage))
|
||||
.add(new SWBreak())
|
||||
.add(new SWEventListener(this)
|
||||
.label(R.string.status)
|
||||
.initialStatus(NSClientPlugin.getPlugin().status)
|
||||
.listener(new Object() {
|
||||
@Subscribe
|
||||
public void onEventNSClientStatus(EventNSClientStatus event) {
|
||||
MainApp.bus().post(new EventSWLabel(event.status));
|
||||
}
|
||||
})
|
||||
)
|
||||
.add(new SWBreak())
|
||||
.validator(() -> NSClientPlugin.getPlugin().nsClientService != null && NSClientPlugin.getPlugin().nsClientService.isConnected && NSClientPlugin.getPlugin().nsClientService.hasWriteAuth)
|
||||
.visibility(() -> !(NSClientPlugin.getPlugin().nsClientService != null && NSClientPlugin.getPlugin().nsClientService.isConnected && NSClientPlugin.getPlugin().nsClientService.hasWriteAuth))
|
||||
)
|
||||
.add(new SWScreen(R.string.patientage)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.patientage_summary))
|
||||
.add(new SWBreak())
|
||||
.add(new SWRadioButton()
|
||||
.option(R.array.ageArray, R.array.ageValues)
|
||||
.preferenceId(R.string.key_age)
|
||||
|
@ -115,11 +154,15 @@ public class SWDefinition {
|
|||
.add(new SWScreen(R.string.configbuilder_insulin)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.fastactinginsulincomment)+" = "+MainApp.gs(R.string.rapid_acting_oref)))
|
||||
.label(MainApp.gs(R.string.fastactinginsulincomment) + " = " + MainApp.gs(R.string.rapid_acting_oref)))
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.ultrafastactinginsulincomment)+" = "+MainApp.gs(R.string.ultrarapid_oref)))
|
||||
.label(MainApp.gs(R.string.ultrafastactinginsulincomment) + " = " + MainApp.gs(R.string.ultrarapid_oref)))
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.free_peak_oref_description)+" = "+MainApp.gs(R.string.free_peak_oref)))
|
||||
.label(MainApp.gs(R.string.free_peak_oref_description) + " = " + MainApp.gs(R.string.free_peak_oref)))
|
||||
.add(new SWBreak())
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.diawarning))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.INSULIN)
|
||||
.label(R.string.configbuilder_insulin))
|
||||
|
@ -132,10 +175,25 @@ public class SWDefinition {
|
|||
.add(new SWPlugin()
|
||||
.option(PluginType.BGSOURCE)
|
||||
.label(R.string.configbuilder_bgsource))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.bgsourcesetup)
|
||||
.action(() -> {
|
||||
final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveBgSource();
|
||||
PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(activity, PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
activity.startActivity(i);
|
||||
}, null);
|
||||
})
|
||||
.visibility(() -> MainApp.getConfigBuilder().getActiveBgSource()!= null && ((PluginBase) MainApp.getConfigBuilder().getActiveBgSource()).getPreferencesId() > 0))
|
||||
.validator(() -> MainApp.getConfigBuilder().getActiveBgSource() != null)
|
||||
)
|
||||
.add(new SWScreen(R.string.configbuilder_profile)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_profile_description))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.PROFILE)
|
||||
.label(R.string.configbuilder_profile))
|
||||
|
@ -212,15 +270,33 @@ public class SWDefinition {
|
|||
)
|
||||
.add(new SWScreen(R.string.configbuilder_aps)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_aps_description))
|
||||
.add(new SWBreak())
|
||||
.add(new SWHtmlLink()
|
||||
.label("https://openaps.readthedocs.io/en/latest/"))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.APS)
|
||||
.label(R.string.configbuilder_aps))
|
||||
.add(new SWButton()
|
||||
.text(R.string.apssetup)
|
||||
.action(() -> {
|
||||
final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveAPS();
|
||||
PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(activity, PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
activity.startActivity(i);
|
||||
}, null);
|
||||
})
|
||||
.visibility(() -> MainApp.getConfigBuilder().getActiveAPS() != null && ((PluginBase) MainApp.getConfigBuilder().getActiveAPS()).getPreferencesId() > 0))
|
||||
.validator(() -> MainApp.getConfigBuilder().getActiveAPS() != null)
|
||||
)
|
||||
.add(new SWScreen(R.string.configbuilder_loop)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_loop_description))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.enableloop)
|
||||
.action(() -> {
|
||||
|
@ -230,16 +306,41 @@ public class SWDefinition {
|
|||
ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
MainApp.bus().post(new EventSWUpdate(true));
|
||||
}))
|
||||
})
|
||||
.visibility(() -> !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)))
|
||||
.validator(() -> LoopPlugin.getPlugin().isEnabled(PluginType.LOOP))
|
||||
.visibility(() -> !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP))
|
||||
)
|
||||
.add(new SWScreen(R.string.configbuilder_sensitivity)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_sensitivity_description))
|
||||
.add(new SWHtmlLink()
|
||||
.label(R.string.setupwizard_sensitivity_url))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.SENSITIVITY)
|
||||
.label(R.string.configbuilder_sensitivity))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.sensitivitysetup)
|
||||
.action(() -> {
|
||||
final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveSensitivity();
|
||||
PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(activity, PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
activity.startActivity(i);
|
||||
}, null);
|
||||
})
|
||||
.visibility(() -> MainApp.getConfigBuilder().getActiveSensitivity() != null && ((PluginBase) MainApp.getConfigBuilder().getActiveSensitivity()).getPreferencesId() > 0))
|
||||
.validator(() -> MainApp.getConfigBuilder().getActiveSensitivity() != null)
|
||||
)
|
||||
.add(new SWScreen(R.string.objectives)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_objectives_description))
|
||||
.add(new SWButton()
|
||||
.text(R.string.objectives_button_start)
|
||||
.text(R.string.enableobjectives)
|
||||
.action(() -> {
|
||||
ObjectivesPlugin.getPlugin().setPluginEnabled(PluginType.CONSTRAINTS, true);
|
||||
ObjectivesPlugin.getPlugin().setFragmentVisible(PluginType.CONSTRAINTS, true);
|
||||
|
@ -247,10 +348,21 @@ public class SWDefinition {
|
|||
ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
MainApp.bus().post(new EventSWUpdate(true));
|
||||
}))
|
||||
})
|
||||
.visibility(() -> !ObjectivesPlugin.getPlugin().isFragmentVisible()))
|
||||
.validator(() -> ObjectivesPlugin.getPlugin().isEnabled(PluginType.CONSTRAINTS))
|
||||
.visibility(() -> !ObjectivesPlugin.getPlugin().isFragmentVisible())
|
||||
)
|
||||
.add(new SWScreen(R.string.objectives)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.startobjective))
|
||||
.add(new SWBreak())
|
||||
.add(new SWFragment(this)
|
||||
.add(new ObjectivesFragment()))
|
||||
.validator(() -> ObjectivesPlugin.getPlugin().objectives.get(0).isStarted())
|
||||
.visibility(() -> !ObjectivesPlugin.getPlugin().objectives.get(0).isStarted())
|
||||
)
|
||||
;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
@ -11,12 +11,15 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWLabel;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWItem;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWLabel;
|
||||
|
||||
|
||||
public class SWEventListener extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWEventListener.class);
|
||||
|
||||
private int textLabel = 0;
|
||||
private String status = "";
|
||||
TextView textView;
|
||||
Object listener;
|
||||
SWDefinition definition;
|
||||
|
@ -27,6 +30,16 @@ public class SWEventListener extends SWItem {
|
|||
MainApp.bus().register(this);
|
||||
}
|
||||
|
||||
public SWEventListener label(int newLabel) {
|
||||
this.textLabel = newLabel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWEventListener initialStatus(String status) {
|
||||
this.status = status;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWEventListener listener(Object listener) {
|
||||
this.listener = listener;
|
||||
return this;
|
||||
|
@ -38,17 +51,21 @@ public class SWEventListener extends SWItem {
|
|||
|
||||
textView = new TextView(context);
|
||||
textView.setId(view.generateViewId());
|
||||
textView.setText((textLabel != 0 ? MainApp.gs(textLabel) : "") + " " + status);
|
||||
layout.addView(textView);
|
||||
if (listener != null)
|
||||
MainApp.bus().register(listener);
|
||||
try {
|
||||
MainApp.bus().register(listener);
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEventSWLabel(final EventSWLabel l) {
|
||||
status = l.label;
|
||||
if (definition != null && definition.getActivity() != null)
|
||||
definition.getActivity().runOnUiThread(() -> {
|
||||
if (textView != null)
|
||||
textView.setText(l.label);
|
||||
textView.setText((textLabel != 0 ? MainApp.gs(textLabel) : "") + " " + status);
|
||||
});
|
||||
}
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWItem;
|
||||
|
||||
public class SWScreen {
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
public interface SWTextValidator {
|
||||
boolean isValid(String text);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
public interface SWValidator {
|
||||
boolean isValid();
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
@ -18,11 +18,15 @@ import info.nightscout.androidaps.MainActivity;
|
|||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventProfileStoreChanged;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||
import info.nightscout.androidaps.plugins.ConstraintsObjectives.events.EventObjectivesSaved;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientStatus;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.androidaps.setupwizard.elements.SWItem;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.utils.LocaleHelper;
|
||||
import info.nightscout.utils.OKDialog;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public class SetupWizardActivity extends AppCompatActivity {
|
||||
//logging
|
||||
|
@ -57,6 +61,11 @@ public class SetupWizardActivity extends AppCompatActivity {
|
|||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (currentWizardPage == 0) OKDialog.showConfirmation(this, MainApp.gs(R.string.exitwizard), this::finish);
|
||||
else showPreviousPage(null);
|
||||
}
|
||||
|
||||
public void exitPressed(View view) {
|
||||
OKDialog.showConfirmation(this, MainApp.gs(R.string.exitwizard), this::finish);
|
||||
}
|
||||
|
||||
|
@ -95,6 +104,16 @@ public class SetupWizardActivity extends AppCompatActivity {
|
|||
updateButtons();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEventProfileSwitchChange(EventProfileSwitchChange ignored) {
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEventObjectivesSaved(EventObjectivesSaved ignored) {
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
private void generateLayout() {
|
||||
SWScreen currentScreen = screens.get(currentWizardPage);
|
||||
LinearLayout layout = SWItem.generateLayout(this.findViewById(R.id.sw_content_fields));
|
||||
|
@ -143,6 +162,7 @@ public class SetupWizardActivity extends AppCompatActivity {
|
|||
|
||||
// Go back to overview
|
||||
public void finishSetupWizard(View view) {
|
||||
SP.putBoolean(R.string.key_setupwizard_processed, true);
|
||||
Intent intent = new Intent(this, MainActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
startActivity(intent);
|
||||
|
@ -167,4 +187,4 @@ public class SetupWizardActivity extends AppCompatActivity {
|
|||
}
|
||||
return currentWizardPage;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWValidator;
|
||||
|
||||
|
||||
public class SWBreak extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWBreak.class);
|
||||
|
||||
private TextView l;
|
||||
private SWValidator visibilityValidator;
|
||||
|
||||
public SWBreak() {
|
||||
super(Type.TEXT);
|
||||
}
|
||||
|
||||
public SWBreak visibility(SWValidator visibilityValidator) {
|
||||
this.visibilityValidator = visibilityValidator;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateDialog(View view, LinearLayout layout) {
|
||||
Context context = view.getContext();
|
||||
|
||||
l = new TextView(context);
|
||||
l.setId(View.generateViewId());
|
||||
l.setText("\n");
|
||||
layout.addView(l);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processVisibility() {
|
||||
if (visibilityValidator != null && !visibilityValidator.isValid())
|
||||
l.setVisibility(View.GONE);
|
||||
else
|
||||
l.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
@ -8,14 +8,16 @@ import android.widget.LinearLayout;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWValidator;
|
||||
|
||||
public class SWButton extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWButton.class);
|
||||
|
||||
Runnable buttonRunnable;
|
||||
int buttonText;
|
||||
SWValidator buttonValidator;
|
||||
private Runnable buttonRunnable;
|
||||
private int buttonText;
|
||||
private SWValidator buttonValidator;
|
||||
|
||||
Button button;
|
||||
private Button button;
|
||||
|
||||
public SWButton() {
|
||||
super(Type.BUTTON);
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
@ -14,7 +14,6 @@ import java.util.ArrayList;
|
|||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
/**
|
|
@ -1,6 +1,7 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
|
@ -12,11 +13,16 @@ import android.widget.TextView;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWTextValidator;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public class SWString extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWString.class);
|
||||
|
||||
public SWString() {
|
||||
public class SWEditString extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWEditString.class);
|
||||
|
||||
private SWTextValidator validator = null;
|
||||
|
||||
public SWEditString() {
|
||||
super(Type.STRING);
|
||||
}
|
||||
|
||||
|
@ -27,17 +33,20 @@ public class SWString extends SWItem {
|
|||
TextView l = new TextView(context);
|
||||
l.setId(view.generateViewId());
|
||||
l.setText(label);
|
||||
l.setTypeface(l.getTypeface(), Typeface.BOLD);
|
||||
layout.addView(l);
|
||||
|
||||
TextView c = new TextView(context);
|
||||
c.setId(view.generateViewId());
|
||||
c.setText(label);
|
||||
c.setText(comment);
|
||||
c.setTypeface(c.getTypeface(), Typeface.ITALIC);
|
||||
layout.addView(c);
|
||||
|
||||
EditText editText = new EditText(context);
|
||||
editText.setId(view.generateViewId());
|
||||
editText.setInputType(InputType.TYPE_CLASS_TEXT);
|
||||
editText.setMaxLines(1);
|
||||
editText.setText(SP.getString(preferenceId, ""));
|
||||
layout.addView(editText);
|
||||
super.generateDialog(view, layout);
|
||||
|
||||
|
@ -48,7 +57,8 @@ public class SWString extends SWItem {
|
|||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
save(s.toString());
|
||||
if (validator != null && validator.isValid(s.toString()))
|
||||
save(s.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -57,4 +67,13 @@ public class SWString extends SWItem {
|
|||
});
|
||||
}
|
||||
|
||||
public SWEditString preferenceId(int preferenceId) {
|
||||
this.preferenceId = preferenceId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWEditString validator(SWTextValidator validator) {
|
||||
this.validator = validator;
|
||||
return this;
|
||||
}
|
||||
}
|
|
@ -1,9 +1,11 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Patterns;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
|
@ -12,10 +14,15 @@ import android.widget.TextView;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class SWUrl extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWUrl.class);
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWLabel;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public SWUrl() {
|
||||
public class SWEditUrl extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWEditUrl.class);
|
||||
|
||||
public SWEditUrl() {
|
||||
super(Type.URL);
|
||||
}
|
||||
|
||||
|
@ -26,17 +33,20 @@ public class SWUrl extends SWItem {
|
|||
TextView l = new TextView(context);
|
||||
l.setId(View.generateViewId());
|
||||
l.setText(label);
|
||||
l.setTypeface(l.getTypeface(), Typeface.BOLD);
|
||||
layout.addView(l);
|
||||
|
||||
TextView c = new TextView(context);
|
||||
c.setId(View.generateViewId());
|
||||
c.setText(comment);
|
||||
c.setTypeface(c.getTypeface(), Typeface.ITALIC);
|
||||
layout.addView(c);
|
||||
|
||||
EditText editText = new EditText(context);
|
||||
editText.setId(View.generateViewId());
|
||||
editText.setInputType(InputType.TYPE_CLASS_TEXT);
|
||||
editText.setMaxLines(1);
|
||||
editText.setText(SP.getString(preferenceId, ""));
|
||||
layout.addView(editText);
|
||||
super.generateDialog(view, layout);
|
||||
|
||||
|
@ -47,7 +57,10 @@ public class SWUrl extends SWItem {
|
|||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
save(s.toString());
|
||||
if (Patterns.WEB_URL.matcher(s).matches())
|
||||
save(s.toString());
|
||||
else
|
||||
MainApp.bus().post(new EventSWLabel(MainApp.gs(R.string.error_url_not_valid)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -55,4 +68,10 @@ public class SWUrl extends SWItem {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
public SWEditUrl preferenceId(int preferenceId) {
|
||||
this.preferenceId = preferenceId;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.View;
|
||||
|
@ -7,6 +7,8 @@ import android.widget.LinearLayout;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWDefinition;
|
||||
|
||||
|
||||
public class SWFragment extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWFragment.class);
|
|
@ -0,0 +1,63 @@
|
|||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.util.Linkify;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWValidator;
|
||||
|
||||
|
||||
public class SWHtmlLink extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWHtmlLink.class);
|
||||
private String textLabel = null;
|
||||
|
||||
private TextView l;
|
||||
private SWValidator visibilityValidator;
|
||||
|
||||
public SWHtmlLink() {
|
||||
super(Type.HTMLLINK);
|
||||
}
|
||||
|
||||
public SWHtmlLink label(int label) {
|
||||
this.label = label;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWHtmlLink label(String newLabel){
|
||||
this.textLabel = newLabel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWHtmlLink visibility(SWValidator visibilityValidator) {
|
||||
this.visibilityValidator = visibilityValidator;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateDialog(View view, LinearLayout layout) {
|
||||
Context context = view.getContext();
|
||||
|
||||
l = new TextView(context);
|
||||
l.setId(View.generateViewId());
|
||||
l.setAutoLinkMask(Linkify.ALL);
|
||||
if(textLabel != null)
|
||||
l.setText(textLabel);
|
||||
else
|
||||
l.setText(label);
|
||||
layout.addView(l);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processVisibility() {
|
||||
if (visibilityValidator != null && !visibilityValidator.isValid())
|
||||
l.setVisibility(View.GONE);
|
||||
else
|
||||
l.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
|
@ -1,37 +1,48 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.setupwizard.SWValidator;
|
||||
|
||||
|
||||
public class SWInfotext extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWInfotext.class);
|
||||
private String textLabel = null;
|
||||
|
||||
private TextView l;
|
||||
private SWValidator visibilityValidator;
|
||||
|
||||
public SWInfotext() {
|
||||
super(Type.TEXT);
|
||||
}
|
||||
|
||||
public SWInfotext label(int label) {
|
||||
this.label = label;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWInfotext label(String newLabel){
|
||||
this.textLabel = newLabel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWInfotext visibility(SWValidator visibilityValidator) {
|
||||
this.visibilityValidator = visibilityValidator;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateDialog(View view, LinearLayout layout) {
|
||||
Context context = view.getContext();
|
||||
|
||||
TextView l = new TextView(context);
|
||||
l.setId(view.generateViewId());
|
||||
l = new TextView(context);
|
||||
l.setId(View.generateViewId());
|
||||
if(textLabel != null)
|
||||
l.setText(textLabel);
|
||||
else
|
||||
|
@ -40,4 +51,11 @@ public class SWInfotext extends SWItem {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processVisibility() {
|
||||
if (visibilityValidator != null && !visibilityValidator.isValid())
|
||||
l.setVisibility(View.GONE);
|
||||
else
|
||||
l.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
|
@ -8,15 +8,17 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public class SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWItem.class);
|
||||
|
||||
enum Type {
|
||||
public enum Type {
|
||||
NONE,
|
||||
TEXT,
|
||||
HTMLLINK,
|
||||
BREAK,
|
||||
LISTENER,
|
||||
URL,
|
||||
STRING,
|
||||
|
@ -64,12 +66,7 @@ public class SWItem {
|
|||
return this;
|
||||
}
|
||||
|
||||
SWItem preferenceId(int preferenceId) {
|
||||
this.preferenceId = preferenceId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void save(String value) {
|
||||
public void save(String value) {
|
||||
SP.putString(preferenceId, value);
|
||||
MainApp.bus().post(new EventPreferenceChange(preferenceId));
|
||||
MainApp.bus().post(new EventSWUpdate());
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
@ -17,7 +17,7 @@ import info.nightscout.androidaps.interfaces.PluginBase;
|
|||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.startupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
|
||||
|
||||
public class SWPlugin extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWPlugin.class);
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard;
|
||||
package info.nightscout.androidaps.setupwizard.elements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
@ -64,4 +64,10 @@ public class SWRadioButton extends SWItem {
|
|||
layout.addView(radioGroup);
|
||||
super.generateDialog(view, layout);
|
||||
}
|
||||
|
||||
public SWRadioButton preferenceId(int preferenceId) {
|
||||
this.preferenceId = preferenceId;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard.events;
|
||||
package info.nightscout.androidaps.setupwizard.events;
|
||||
|
||||
import info.nightscout.androidaps.events.Event;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.startupwizard.events;
|
||||
package info.nightscout.androidaps.setupwizard.events;
|
||||
|
||||
import info.nightscout.androidaps.events.Event;
|
||||
|
|
@ -33,7 +33,7 @@ import info.nightscout.androidaps.events.EventAppExit;
|
|||
public class ImportExportPrefs {
|
||||
private static Logger log = LoggerFactory.getLogger(ImportExportPrefs.class);
|
||||
static File path = new File(Environment.getExternalStorageDirectory().toString());
|
||||
static final File file = new File(path, MainApp.gs(R.string.app_name) + "Preferences");
|
||||
static public final File file = new File(path, MainApp.gs(R.string.app_name) + "Preferences");
|
||||
|
||||
private static final int REQUEST_EXTERNAL_STORAGE = 1;
|
||||
private static String[] PERMISSIONS_STORAGE = {
|
||||
|
|
|
@ -7,6 +7,12 @@ package info.nightscout.utils;
|
|||
public class T {
|
||||
private long time; // in msec
|
||||
|
||||
public static T now() {
|
||||
T t = new T();
|
||||
t.time = System.currentTimeMillis();
|
||||
return t;
|
||||
}
|
||||
|
||||
public static T msecs(long msec) {
|
||||
T t = new T();
|
||||
t.time = msec;
|
||||
|
@ -56,4 +62,12 @@ public class T {
|
|||
public long days() {
|
||||
return time / 24 / 60 / 60 / 1000L;
|
||||
}
|
||||
|
||||
public T plus(T plus) {
|
||||
return T.msecs(time + plus.time);
|
||||
}
|
||||
|
||||
public T minus(T minus) {
|
||||
return T.msecs(time - minus.time);
|
||||
}
|
||||
}
|
||||
|
|
BIN
app/src/main/res/drawable-hdpi/ic_exit_to_app.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_exit_to_app.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 602 B |
BIN
app/src/main/res/drawable-mdpi/ic_exit_to_app.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_exit_to_app.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 295 B |
BIN
app/src/main/res/drawable-xhdpi/ic_exit_to_app.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_exit_to_app.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 499 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_exit_to_app.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_exit_to_app.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 965 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_exit_to_app.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_exit_to_app.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -11,27 +11,24 @@
|
|||
android:padding="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_cp_pump_canula" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="@string/primefill"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="@color/colorInsulinButton" />
|
||||
|
||||
|
|
|
@ -1,29 +1,44 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".startupwizard.SetupWizardActivity">
|
||||
tools:context=".setupwizard.SetupWizardActivity">
|
||||
|
||||
<ImageButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@android:color/transparent"
|
||||
android:onClick="exitPressed"
|
||||
app:srcCompat="@drawable/ic_exit_to_app" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sw_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:keepScreenOn="true"
|
||||
android:textColor="#33b5e5"
|
||||
android:textSize="20dp"
|
||||
android:textStyle="bold" />
|
||||
android:textAlignment="center"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="32sp"
|
||||
tools:text="Title" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/sw_content_fields"
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
<LinearLayout
|
||||
android:id="@+id/sw_content_fields"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp" />
|
||||
</ScrollView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/sw_content_controls"
|
||||
|
@ -31,42 +46,41 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:background="@color/black_overlay"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/previous_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:onClick="showPreviousPage"
|
||||
android:text="@string/setupwizard_previous" />
|
||||
android:text="@string/setupwizard_previous"
|
||||
android:textColor="#FFFFFF" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/skip_button"
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:onClick="showNextPage"
|
||||
android:text="@string/setupwizard_skip"
|
||||
android:visibility="invisible" />
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/next_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:onClick="showNextPage"
|
||||
android:text="@string/setupwizard_next"
|
||||
android:visibility="gone" />
|
||||
android:textColor="#FFFFFF" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/finish_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:onClick="finishSetupWizard"
|
||||
android:text="@string/setupwizard_finish"
|
||||
android:visibility="gone" />
|
||||
android:textColor="#FFFFFF" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp">
|
||||
|
||||
|
@ -20,10 +20,16 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="10dp"
|
||||
android:text="@string/overview_calibration_bg_label"
|
||||
android:text="@string/overview_calibration"
|
||||
android:textColor="@color/colorCalibrationButton"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_calibration" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/overview_calibration_units"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
@ -20,28 +20,25 @@
|
|||
android:padding="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/icon_cp_bolus_carbs" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="@string/carbs"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="@color/colorCarbsButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -17,26 +17,23 @@
|
|||
android:padding="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/icon_bolus" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingTop="10dp"
|
||||
android:textAlignment="center"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="@color/colorInsulinButton" />
|
||||
|
@ -59,7 +56,7 @@
|
|||
android:id="@+id/newinsulin_record_only"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/don_t_bolus_record_only" />
|
||||
android:text="@string/do_not_bolus_record_only" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -124,6 +121,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginRight="5dp"
|
||||
android:text="@string/insulin_unit_shortname" />
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
android:id="@+id/newtreatment_record_only"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/don_t_bolus_record_only" />
|
||||
android:text="@string/do_not_bolus_record_only" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
@ -810,7 +810,7 @@
|
|||
<string name="data_choices">Избор на данни</string>
|
||||
<string name="allow_automated_crash_reporting">Позволява автоматично изпращане на данни за грешки и статистически данни до разработчиците чрез fabric.io service.</string>
|
||||
<string name="g5appnotdetected">Моля обновете G5 приложението до поддържана версия.</string>
|
||||
<string name="don_t_bolus_record_only">Не доставяй болус, само запис</string>
|
||||
<string name="do_not_bolus_record_only">Не доставяй болус, само запис</string>
|
||||
<string name="category">Категория</string>
|
||||
<string name="subcategory">Подкатегория</string>
|
||||
<string name="bolusrecordedonly">Болусът ще бъде само записан</string>
|
||||
|
|
|
@ -545,7 +545,7 @@
|
|||
<string name="overview_extendedbolus_cancel_button">Zrušit prodloužený bolus</string>
|
||||
<string name="overview_newtempbasal_basalabsolute">Hodnota bazálu [U/h]</string>
|
||||
<string name="overview_newtempbasal_basaltype_label">Typ bazálu</string>
|
||||
<string name="profileswitch">PřepnutíProfilu</string>
|
||||
<string name="profileswitch">Přepnutí profilu</string>
|
||||
<string name="pump">Pumpa</string>
|
||||
<string name="xdripstatus">Statusový řádek xDripu (hodinky)</string>
|
||||
<string name="xdripstatus_settings">Status z xDripu (hodinky)</string>
|
||||
|
@ -810,7 +810,7 @@
|
|||
<string name="start_eating_soon_tt">Spustit Dočasný cíl Blížící se jídlo</string>
|
||||
<string name="temptargetshort">DoCíl</string>
|
||||
<string name="insight_min">min</string>
|
||||
<string name="don_t_bolus_record_only">Nepouštět bolus, jen zaznamenat</string>
|
||||
<string name="do_not_bolus_record_only">Nepouštět bolus, jen zaznamenat</string>
|
||||
<string name="subcategory">Podkategorie</string>
|
||||
<string name="category">Kategorie</string>
|
||||
<string name="bolusrecordedonly">Bolus bude pouze zaznamenán</string>
|
||||
|
|
|
@ -241,7 +241,7 @@
|
|||
<string name="overview_editquickwizardlistactivity_add">Hinzufügen</string>
|
||||
<string name="overview_quickwizard_item_edit_button">Bearbeiten</string>
|
||||
<string name="danar_history_basalhours">Basal-Stunden</string>
|
||||
<string name="danar_history_connectingfor">Verbindungsaufbau %d s</string>
|
||||
<string name="danar_history_connectingfor">Verbindungsaufbau %1$d s</string>
|
||||
<string name="overview_editquickwizard_valid">Gültigkeit:</string>
|
||||
<string name="overview_editquickwizard_carbs">Kohlenhydrate:</string>
|
||||
<string name="quickwizardsettings">QuickWizard-Einstellungen</string>
|
||||
|
@ -255,7 +255,7 @@
|
|||
<string name="othersettings_title">Andere</string>
|
||||
<string name="occlusion">Verstopfung</string>
|
||||
<string name="overview_bolusprogress_delivered">Abgegeben</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Es werden %.2f IE abgegeben</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver">Es werden %1$.2f IE abgegeben</string>
|
||||
<string name="primefill">Vorfüllen/Füllen</string>
|
||||
<string name="uploading">Hochladen</string>
|
||||
<string name="es_lang">Spanish</string>
|
||||
|
@ -404,9 +404,9 @@
|
|||
<string name="iob">IOB</string>
|
||||
<string name="localprofile">Lokales Profil</string>
|
||||
<string name="lock_screen">Sperrbildschirm</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%d Min.)</string>
|
||||
<string name="loopsuperbolusfor">Superbolus (%1$d Min.)</string>
|
||||
<string name="loopsuspended">Loop pausiert</string>
|
||||
<string name="loopsuspendedfor">Pausiert (%d Min.)</string>
|
||||
<string name="loopsuspendedfor">Pausiert (%1$d Min.)</string>
|
||||
<string name="mdtp_cancel">Abbrechen</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mgdl">mg/dl</string>
|
||||
|
@ -444,7 +444,7 @@
|
|||
<string name="openaps_short">OAPS</string>
|
||||
<string name="openapsama">OpenAPS AMA</string>
|
||||
<string name="openapsma_scriptdebugdata_label">Skript Debug</string>
|
||||
<string name="valueoutofrange">Wert %s ist außerhalb des festen Limits</string>
|
||||
<string name="valueoutofrange">Wert %1$s ist außerhalb des festen Limits</string>
|
||||
<string name="overview_calibration">Kalibrierung</string>
|
||||
<string name="overview_calibration_bg_label">Kalibrierung</string>
|
||||
<string name="overview_editquickwizard_buttontext">Button-Text:</string>
|
||||
|
@ -469,7 +469,7 @@
|
|||
<string name="restartingapp">App wird beendet, um neue Einstellungen zu laden.</string>
|
||||
<string name="resume">Fortsetzen</string>
|
||||
<string name="ru_lang">Russisch</string>
|
||||
<string name="send_calibration">Kalibrierung %.1f an xDrip+ senden?</string>
|
||||
<string name="send_calibration">Kalibrierung %1$.1f an xDrip+ senden?</string>
|
||||
<string name="settings_password">Passwort für die Einstellungen</string>
|
||||
<string name="settingtempbasal">TBR wird gesetzt</string>
|
||||
<string name="short_tabtitles">Kurze Tab-Überschriften</string>
|
||||
|
@ -490,11 +490,11 @@
|
|||
<string name="updatingbasalrates">Basalraten werden aktualisiert</string>
|
||||
<string name="careportal_sensorage_label">Sensoralter</string>
|
||||
<string name="danar_switchtouhmode">Wechsle Modus von IE/d zu IE/h in der Pumpe</string>
|
||||
<string name="danar_totaluploaded">Insgesamt %d Einträge erfolgreich hochgeladen</string>
|
||||
<string name="danar_totaluploaded">Insgesamt %1$d Einträge erfolgreich hochgeladen</string>
|
||||
<string name="danarprofile_dia_summary">Dauer der Insulinwirkung</string>
|
||||
<string name="insulin_shortname">INS</string>
|
||||
<string name="lock_screen_short">Sperr</string>
|
||||
<string name="needwhitelisting">%s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können</string>
|
||||
<string name="needwhitelisting">%1$s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können</string>
|
||||
<string name="nsalarm_staledata">Veraltete Daten</string>
|
||||
<string name="nsalarm_staledatavalue_label">Veraltete Daten seit [Min.]</string>
|
||||
<string name="openapsma_autosensdata_label">Autosens-Daten</string>
|
||||
|
@ -508,7 +508,7 @@
|
|||
<string name="sensitivityoref0">Sensitivität Oref0</string>
|
||||
<string name="sensitivityweightedaverage">Durchschnittliche Sensitivität</string>
|
||||
<string name="settingextendedbolus">Verlängerter Bolus wird gesetzt</string>
|
||||
<string name="sms_minago">vor %d Min.</string>
|
||||
<string name="sms_minago">vor %1$d Min.</string>
|
||||
<string formatted="false" name="smscommunicator_basalstopreplywithcode">Um die TBR abzubrechen, antworte mit dem Code %s</string>
|
||||
<string formatted="false" name="smscommunicator_bolusdelivered">Bolus %.2f IE erfolgreich abgegeben</string>
|
||||
<string name="smscommunicator_calibrationfailed">xDrip+ hat die Kalbrierung nicht erhalten</string>
|
||||
|
@ -628,7 +628,7 @@
|
|||
<string name="gettingbolusstatus">Status des Bolus wird ermittelt</string>
|
||||
<string name="pairing">PAIRING</string>
|
||||
<string name="startingbolus">Bolus-Abgabe gestartet</string>
|
||||
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %d Sek. verbleiben.</string>
|
||||
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %1$d Sek. verbleiben.</string>
|
||||
<string name="executingrightnow">Befehl wird zurzeit ausgeführt.</string>
|
||||
<string name="missed_bg_readings">BZ-Werte fehlen</string>
|
||||
<string name="btwatchdog_summary">Deaktiviert Bluetooth kurzzeitig, falls keine Verbindung zur Pumpe besteht. Dies kann für Smartphones mit Verbindungsproblemen nützlich sein.</string>
|
||||
|
@ -659,16 +659,16 @@
|
|||
<string name="btwatchdog_title">BT Watchdog</string>
|
||||
<string name="DexcomG5">DexcomG5 App (patched)</string>
|
||||
<string name="combo_pump_activity_label">Aktivität</string>
|
||||
<string name="combo_tbr_remaining">%d%% (%d Min. verbleibend)</string>
|
||||
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %d Min.</string>
|
||||
<string name="combo_tbr_remaining">%1$d%% (%2$d Min. verbleibend)</string>
|
||||
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %1$d Min.</string>
|
||||
<string name="combo_pump_state_label">Status</string>
|
||||
<string name="combo_pump_state_suspended_by_user">Gestoppt (Benutzer)</string>
|
||||
<string name="combo_pump_state_suspended_due_to_error">Gestoppt (Fehler)</string>
|
||||
<string name="combo_pump_state_running">In Betrieb</string>
|
||||
<string name="combo_programming_bolus">Bolusabgabe wird vorbereitet</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">TBR wird abgebrochen</string>
|
||||
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%d%% / %d Min.)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%.1f IE) wird abgegeben</string>
|
||||
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%1$d%% / %2$d Min.)</string>
|
||||
<string name="combo_pump_action_bolusing">Bolus (%1$.1f IE) wird abgegeben</string>
|
||||
<string name="alert_dialog_storage_permission_text">Bitte starte dein Telefon neu oder starte AndroidAPS in den System-Einstellungen neu. Andernfalls wird AndroidAPS nicht protokolliert (wichtig zum Nachverfolgen und Verifizieren, dass der Algorithmus korrekt funktioniert)</string>
|
||||
<string name="pump_tempbasal_label">TBR</string>
|
||||
<string name="bolus_frequency_exceeded">Ein gleich großer Bolus wurde in den letzten zwei Minuten angefordert. Dies ist nicht zulässig, um ungewollte Doppelboli zu verhindern und vor eventuellen Bugs zu schützen.</string>
|
||||
|
@ -677,7 +677,7 @@
|
|||
<string name="combo_error_bolus_recovery_progress">Verbindung wird wieder hergestellt</string>
|
||||
<string name="combo_error_bolus_verification_failed">Der abgegebene Bolus konnte nicht bestätigt werden. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde und erstelle einen Eintrag im Careportal falls nötig.</string>
|
||||
<string name="combo_error_no_bolus_delivered">Die Bolusabgabe ist fehlgeschlagen: Es wurde scheinbar kein Bolus abgegeben. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde. Um doppelte Boli durch Programmfehler zu vermeiden, werden Boli nicht automatisch wiederholt.</string>
|
||||
<string name="combo_error_partial_bolus_delivered">Wegen eines Fehlers wurden nur %.2f IE von den angeforderten %.2f IE abgegeben. Bitte prüfe den abgegebenen Bolus auf der Pumpe.</string>
|
||||
<string name="combo_error_partial_bolus_delivered">Wegen eines Fehlers wurden nur %1$.2f IE von den angeforderten %2$.2f IE abgegeben. Bitte prüfe den abgegebenen Bolus auf der Pumpe.</string>
|
||||
<string name="combo_pump_action_refreshing">Status wird aktualisiert</string>
|
||||
<string name="combo_pump_state_initializing">Die Pumpe wird initialisiert</string>
|
||||
<string name="combo_pump_connected_now">Jetzt</string>
|
||||
|
@ -689,7 +689,7 @@
|
|||
<string name="combo_pump_unsupported_operation">Diese Aktion wird von der Pumpe nicht unterstützt</string>
|
||||
<string name="combo_pump_battery_low_warrning">Die Batterie in der Pumpe ist fast leer</string>
|
||||
<string name="combo_pump_cartridge_low_warrning">Das Reservoir in der Pumpe ist fast leer</string>
|
||||
<string name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%d: %s</string>
|
||||
<string formatted="false" name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%d: %s</string>
|
||||
<string name="combo_force_disabled_notification">Unsichere Verwendung: In der Pumpe ist nicht das erste Basalratenprofil gewählt. Der Loop wird deaktiviert bis dies korrigiert ist.</string>
|
||||
<string name="combo_low_suspend_forced_notification">Unsichere Verwendung: Ein erweiterter oder Multiwave-Bolus ist aktiv. Der Loop wird für die nächsten 6 Stunden kein zusätzliches Insulin abgeben.</string>
|
||||
<string name="combo_notification_check_time_date">Bitte aktualisiere die Uhrzeit der Pumpe</string>
|
||||
|
@ -713,7 +713,7 @@
|
|||
<string name="openapsama_min_5m_carbimpact_summary">Standardwert: 3.0\nDies ist eine Einstellung für die Standard-Kohlenhydrat-Absorptionswirkung pro 5 Minuten. Der Standardwert ist 3mg/dl/5min. Dies wirkt sich darauf aus, wie schnell der COB-Wert fällt und wieviel KH-Absorption bei der Berechnung des vorhergesagten BZ angenommen wird, wenn der BZ stärker als erwartet fällt oder nicht so stark wie erwartet steigt.</string>
|
||||
<string name="openapsama_link_to_preferncejson_doc_txt">Achtung! Normalerweise musst Du diese Werte nicht ändern. Bitte KLICKE HIER und LESE den Text. Verändere Werte erst, wenn Du den Inhalt des Textes verstanden hast.</string>
|
||||
<string name="combo_actvity_reading_basal_profile">Basalratenprofil wird gelesen</string>
|
||||
<string name="pump_basebasalrate">%.2f IE/h</string>
|
||||
<string formatted="false" name="pump_basebasalrate">%.2f IE/h</string>
|
||||
<string name="combo_error_no_connection_no_bolus_delivered">Keine Verbindung zur Pumpe: Es wurde kein Bolus abgegeben.</string>
|
||||
<string name="extendedbolusdeliveryerror">Fehler bei der Abgabe eines verlängerten Bolus</string>
|
||||
<string name="combo_bolus_rejected_due_to_pump_history_change">Nach der Berechnung des Bolus hat sich die Pumpenhistorie geändert. Daher wurde kein Bolus abgegeben. Bitte prüfe, ob überhaupt noch ein Bolus benötigt wird. Wenn die gleiche Bolusmenge erforderlich ist, warte zwei Minuten ab, denn es werden aus Sicherheitsgründen keine gleich großen Boli abgegeben, wenn sie innerhalb von zwei Minuten angefordert wurden (unabhängig davon, ob sie verabreicht wurden oder nicht).</string>
|
||||
|
@ -726,9 +726,9 @@
|
|||
<string name="mute">Alarm stoppen</string>
|
||||
<string name="bolusstopped">Bolus gestoppt</string>
|
||||
<string name="bolusstopping">Bolus wird gestoppt</string>
|
||||
<string name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %s</string>
|
||||
<string name="zerovalueinprofile">Ungültiges Profil: %s</string>
|
||||
<string name="hoursago">vor %.1f h</string>
|
||||
<string formatted="false" name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %s</string>
|
||||
<string formatted="false" name="zerovalueinprofile">Ungültiges Profil: %s</string>
|
||||
<string formatted="false" name="hoursago">vor %.1f h</string>
|
||||
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Es wurde keine hohe TBR gesetzt, da nach der Berechnung Boluseinträge in der Pumpenhistorik gefunden wurden.</string>
|
||||
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
|
||||
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
|
||||
|
@ -737,4 +737,66 @@
|
|||
<string name="pump_stopped">Pumpe gestoppt</string>
|
||||
<string name="pump_started">Pumpe gestartet</string>
|
||||
<string name="pump_paused">Pumpe pausiert</string>
|
||||
<string name="with">mit</string>
|
||||
<string name="ns_wifi_ssids">Wlan SSID</string>
|
||||
<string name="week">Woche</string>
|
||||
<string formatted="false" name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%d Sek.)</string>
|
||||
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
|
||||
<string name="ns_wifionly">Benutze nur WLAN Verbindung</string>
|
||||
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von Temporären Basal für Schnellere Aktion</string>
|
||||
<string name="unsafeusage">Unsichere Benutzung</string>
|
||||
<string name="time">Zeit</string>
|
||||
<string name="thirdcarbsincrement">Dritte KH Inkrement</string>
|
||||
<string name="thirdinsulinincrement">Dritte Insulin Inkrement</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp. Basal der Pumpe</string>
|
||||
<string name="subcategory">Unterkategorie</string>
|
||||
<string name="insight_stay_always_connected">Bleibe immer verbunden</string>
|
||||
<string name="start_hypo_tt">Starte Hypo TT</string>
|
||||
<string name="start_eating_soon_tt">Starte Essen TT</string>
|
||||
<string name="start_activity_tt">Starte Aktivität TT</string>
|
||||
<string name="overview_show_sensitivity">Sensitivität</string>
|
||||
<string name="show_calibration_button_summary">Sendet eine Kalibierung an xDrip+ oder öffnet den G5 Kalibrierungs-Dialog</string>
|
||||
<string name="secondinsulinincrement">Zweites Insulin Inkrement</string>
|
||||
<string name="secondcarbsincrement">Zweites KH Inkrement</string>
|
||||
<string name="second">Sekunde</string>
|
||||
<string name="closed_loop_disabled_on_dev_branch">Entwickler-Version. Closed Loop ist nicht verfügbar.</string>
|
||||
<string name="record_pump_site_change">Erfasse Katheter-Wechsel</string>
|
||||
<string name="record_insulin_cartridge_change">Erfasse Resoirvoir-Wechsel</string>
|
||||
<string name="insight_needs">benötigt</string>
|
||||
<string name="overview_show_deviations">Abweichungen</string>
|
||||
<string name="day">Tag</string>
|
||||
<string name="ns_wifi_allowedssids">Erlaubte SSIDs (Semikolon getrennt)</string>
|
||||
<string name="ns_allowroaming">Erlaube Verbindung bei Roaming</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosense passt Zielwerte an</string>
|
||||
<string name="resistantadult">Insulin Resistenter Erwachsener</string>
|
||||
<string name="enableuam">Aktiviere UAM</string>
|
||||
<string name="enablesmb">Aktiviere SMB</string>
|
||||
<string name="enableuam_summary">Erkennung von Unangekündigten Mahlzeiten</string>
|
||||
<string name="hypo_duration">Hypo Dauer</string>
|
||||
<string name="hypo_target">Hypo Zielwert</string>
|
||||
<string name="hasbgdata">BZ verfügbar von gewählter Quelle</string>
|
||||
<string name="changed">Geändert</string>
|
||||
<string name="pump_stopped_uppercase">PUMPE GESTOPPT</string>
|
||||
<string name="insight_active_tbr">Aktive TBR</string>
|
||||
<string name="statistics">Statistiken</string>
|
||||
<string name="enablesmbalways">Aktiviere SMB immer</string>
|
||||
<string name="enablesmbaftercarbs">Aktiviere SMB nach Mahlzeiten</string>
|
||||
<string name="enablesmbwithcob">Aktiviere SMB bei COB</string>
|
||||
<string name="enablesmbwithtemptarget">Aktiviere SMB mit Temporären Zielwerten</string>
|
||||
<string name="wear_predictions_title">Vorhersagen</string>
|
||||
<string name="data_choices">Daten Auswahl</string>
|
||||
<string name="smbdisabledinpreferences">SMB in Einstellungen deaktiviert</string>
|
||||
<string name="food_short">Mahlzeiten</string>
|
||||
<string name="hardlimit">Hartes Limit</string>
|
||||
<string name="readstatusfailed">Lesen des Status fehlgeschlagen</string>
|
||||
<string name="loopdisconnectedfor">Getrennt (%1$d m)</string>
|
||||
<string name="automatic_careportal_events">Automatische Careportal Ereignisse</string>
|
||||
<string name="firstinsulinincrement">Erstes Insulin Inkrement</string>
|
||||
<string name="firstcarbsincrement">Erstes KH Inkrement</string>
|
||||
<string name="ns_chargingonly">Nur wenn geladen wird</string>
|
||||
<string name="connectionsettings_title">Verbindungs-Einstellungen</string>
|
||||
<string formatted="false" name="objectivenotstarted">Zielsetzung %d nicht gestartet</string>
|
||||
<string formatted="false" name="objectivenotfinished">Zielsetzung %d nicht abgeschlossen</string>
|
||||
<string name="do_not_bolus_record_only">Bolus nur erfassen</string>
|
||||
<string name="bolusrecordedonly">Bolus wird nur erfasst</string>
|
||||
</resources>
|
||||
|
|
|
@ -744,7 +744,7 @@
|
|||
<string name="bolusrecordedonly">El Bolo solo será anotado</string>
|
||||
<string name="category">Categoría</string>
|
||||
<string name="subcategory">Subcategoría</string>
|
||||
<string name="don_t_bolus_record_only">No administrar Bolo, solo anotar</string>
|
||||
<string name="do_not_bolus_record_only">No administrar Bolo, solo anotar</string>
|
||||
<string name="insight_min">min</string>
|
||||
<string name="temptargetshort">TT</string>
|
||||
<string name="start_activity_tt">Inicio TT Actividad</string>
|
||||
|
|
|
@ -557,7 +557,7 @@
|
|||
<string name="careportal_sensorage_label">Czas sensora</string>
|
||||
<string name="careportal_canulaage_label">Czas wkłucia</string>
|
||||
<string name="careportal_insulinage_label">Czas insuliny</string>
|
||||
<string name="hours">godziny</string>
|
||||
<string name="hours">godzin</string>
|
||||
<string name="overview_newtempbasal_basaltype_label">Typ bazy</string>
|
||||
<string name="invalidprofile">Nieważny profil !!!</string>
|
||||
<string name="profileswitch">ZmieńProfil</string>
|
||||
|
@ -835,7 +835,7 @@
|
|||
<string name="start_activity_tt">Rozpocznij TT Ćwiczenia</string>
|
||||
<string name="start_eating_soon_tt">Rozpocznij TT WkrótcePosiłek</string>
|
||||
<string name="temptargetshort">TT</string>
|
||||
<string name="don_t_bolus_record_only">Nie podawaj bolusa, tylko zapisz rekord</string>
|
||||
<string name="do_not_bolus_record_only">Nie podawaj bolusa, tylko zapisz rekord</string>
|
||||
<string name="category">Kategoria</string>
|
||||
<string name="subcategory">Podkategoria</string>
|
||||
<string name="bolusrecordedonly">Bolus zostanie tylko zapisany w rekordach</string>
|
||||
|
@ -934,4 +934,4 @@
|
|||
<string name="wear_wizard_settings_summary">Obliczenia uwzględnione w wynikach kreatora:</string>
|
||||
<string name="wear_display_settings">Ustawienia wyświetlania</string>
|
||||
<string name="wear_general_settings">Ustawienia ogólne</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -53,19 +53,19 @@
|
|||
<string name="careportal_newnstreatment_carbs_label">KH</string>
|
||||
<string name="careportal_newnstreatment_carbtime_label">KH-tid</string>
|
||||
<string name="careportal_newnstreatment_duration_label">Duration</string>
|
||||
<string name="careportal_newnstreatment_enteredby_title">Infört av</string>
|
||||
<string name="careportal_newnstreatment_enteredby_title">Loggat av</string>
|
||||
<string name="careportal_newnstreatment_eventtime_label">Tid</string>
|
||||
<string name="careportal_newnstreatment_eventtype">Händelsetyp</string>
|
||||
<string name="careportal_newnstreatment_insulin_label">Insulin</string>
|
||||
<string name="careportal_newnstreatment_meter">Mätare</string>
|
||||
<string name="careportal_newnstreatment_notes_label">Notering</string>
|
||||
<string name="careportal_newnstreatment_notes_label">Anteckning</string>
|
||||
<string name="careportal_newnstreatment_other">Annat</string>
|
||||
<string name="careportal_newnstreatment_percent_label">Procent</string>
|
||||
<string name="careportal_newnstreatment_profile_label">Profil</string>
|
||||
<string name="careportal_newnstreatment_sensor">Sensor</string>
|
||||
<string name="careportal_newnstreatment_split_label">Delad</string>
|
||||
<string name="careportal_note">Notering</string>
|
||||
<string name="careportal_openapsoffline">Offline</string>
|
||||
<string name="careportal_note">Anteckning</string>
|
||||
<string name="careportal_openapsoffline">OpenAPS Offline</string>
|
||||
<string name="careportal_pbage_label">Pumpbatteri ålder</string>
|
||||
<string name="careportal_profileswitch">Byt profil</string>
|
||||
<string name="careportal_pumpsitechange">Byte pumpkanyl</string>
|
||||
|
@ -89,7 +89,7 @@
|
|||
<string name="configbuilder_aps">APS</string>
|
||||
<string name="configbuilder_bgsource">BG-källa</string>
|
||||
<string name="configbuilder_constraints">Begränsningar</string>
|
||||
<string name="configbuilder_general">Generell</string>
|
||||
<string name="configbuilder_general">Generella inställningar</string>
|
||||
<string name="configbuilder_insulin">Insulin</string>
|
||||
<string name="configbuilder_loop">Loop</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscoutversion:</string>
|
||||
|
@ -229,7 +229,7 @@
|
|||
<string name="nav_export">Exportera inställningar</string>
|
||||
<string name="nav_import">Importera inställningar</string>
|
||||
<string name="nav_preferences">Inställningar</string>
|
||||
<string name="nav_refreshtreatments">Uppdatera behandlingar från NS</string>
|
||||
<string name="nav_refreshtreatments">Uppdatera från Nightscout</string>
|
||||
<string name="nav_resetdb">Återställ databaserna</string>
|
||||
<string name="nav_show_logcat">Visa logg</string>
|
||||
<string name="nav_test_alert">Testa alarm</string>
|
||||
|
@ -243,10 +243,10 @@
|
|||
<string name="nosuccess">misslyckat - kontrollera telefonen</string>
|
||||
<string name="notavailable">Ej tillgängligt</string>
|
||||
<string name="nowritepermission">NS Client har inga skrivrättigheter. Fel API secret?</string>
|
||||
<string name="ns_alarmoptions">Alarm inställningar</string>
|
||||
<string name="ns_alarmoptions">Larminställningar</string>
|
||||
<string name="ns_localbroadcasts">Slå på sändning av data till alla appar i telefonen (ex xDrip).</string>
|
||||
<string name="ns_localbroadcasts_title">Aktivera lokala broadcasts</string>
|
||||
<string name="ns_logappstartedevent">Markera app start till Nightscout</string>
|
||||
<string name="ns_logappstartedevent">Markera appstart till Nightscout</string>
|
||||
<string name="ns_noupload">Ingen uppladdning till Nightscout</string>
|
||||
<string name="ns_noupload_summary">Ingen data sänds till Nightscout. AAPS ansluter till Nightscout men inga ändringar görs i Nightscout.</string>
|
||||
<string name="ns_sync_use_absolute_title">Använd alltid absoluta värden i basal</string>
|
||||
|
@ -254,19 +254,19 @@
|
|||
<string name="ns_upload_only_summary">Endast uppladdning till Nightscout. Kommer inte få BG-data om inte lokal källa som xDrip används. Kommer heller inte att kunna hämta basalprofiler från Nightscout.</string>
|
||||
<string name="nsalarm_high">Hög</string>
|
||||
<string name="nsalarm_low">Låg</string>
|
||||
<string name="nsalarm_staledata">Gammal data</string>
|
||||
<string name="nsalarm_staledata">BG-data saknas</string>
|
||||
<string name="nsclient">NSClient</string>
|
||||
<string name="nsclientinternal_devicename_dialogtitle">Ange enhetens namn</string>
|
||||
<string name="nsclientinternal_devicename_title">Enhetens namn</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Ange NS API secret (min 12 tecken)</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">NS API secret</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Ange Nightscout API secret (min 12 tecken)</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">Nightscout API secret</string>
|
||||
<string name="nsclientnotinstalled">NSClient är inte installerad. Data förlorad!</string>
|
||||
<string name="nsclientinternal_url_title">Nightscout URL</string>
|
||||
<string name="nsclientinternal_url_dialogmessage">Ange Nightscout URL</string>
|
||||
<string name="nsclientinternal_url">URL:</string>
|
||||
<string name="nsclientinternal_title">NSClient</string>
|
||||
<string name="nsclientinternal_shortname">NSCI</string>
|
||||
<string name="nsclientinternal_secret_title">NS API secret</string>
|
||||
<string name="nsclientinternal_secret_title">Nightscout API secret</string>
|
||||
<string name="nsprofileview_activeprofile_label">Aktiv profil</string>
|
||||
<string name="nsprofileview_basal_label">Basal</string>
|
||||
<string name="nsprofileview_dia_label">DIA</string>
|
||||
|
@ -318,7 +318,7 @@
|
|||
<string name="unsupportedclientver">Osupportad version av NSClient</string>
|
||||
<string name="unlock_settings">Lås upp inställningar</string>
|
||||
<string name="units">Enheter:</string>
|
||||
<string name="treatmentssafety_title">Säkerhet vid behandling</string>
|
||||
<string name="treatmentssafety_title">Säkerhetsbegränsingar</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max tillåtna KH [g]</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max tillåten bolus [E]</string>
|
||||
<string name="treatments_wizard_unit_label">E</string>
|
||||
|
@ -333,21 +333,21 @@
|
|||
<string name="treatments_shortname">Beh</string>
|
||||
<string name="treatments_newtreatment_insulinamount_label">Insulin</string>
|
||||
<string name="treatments_newtreatment_carbsamount_label">KH</string>
|
||||
<string name="treatments_iobtotal_label_string">Total IOB:</string>
|
||||
<string name="treatments_iobactivitytotal_label_string">Totalt aktiverat IOB:</string>
|
||||
<string name="treatments_iobtotal_label_string">Total IOB (bolus):</string>
|
||||
<string name="treatments_iobactivitytotal_label_string">Total aktivitet (5m):</string>
|
||||
<string name="treatments_iob_label_string">IOB:</string>
|
||||
<string name="treatments_insulin_label_string">Insulin:</string>
|
||||
<string name="treatments_carbs_label_string">KH:</string>
|
||||
<string name="treatments_activity_string">Redan aktiverat:</string>
|
||||
<string name="treatments_activity_string">5m:</string>
|
||||
<string name="treatments">Behandlingar</string>
|
||||
<string name="treatmentdeliveryerror">Fel vid bolusleverans</string>
|
||||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="temptarget">Temp mål</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="tempbasals_realduration_label_string">Dur:</string>
|
||||
<string name="tempbasals_netratio_label_string">Kvot:</string>
|
||||
<string name="tempbasals_netratio_label_string">Tot:</string>
|
||||
<string name="tempbasals_netinsulin_label_string">Ins:</string>
|
||||
<string name="tempbasals_iobtotal_label_string">Total IOB:</string>
|
||||
<string name="tempbasals_iobtotal_label_string">Total IOB (basal):</string>
|
||||
<string name="tempbasals_iob_label_string">IOB:</string>
|
||||
<string name="tempbasaldeliveryerror">Fel vid justering av tempbasal</string>
|
||||
<string name="tempbasal">Temp basal</string>
|
||||
|
@ -409,19 +409,19 @@
|
|||
<string name="resume">Återuppta</string>
|
||||
<string name="result">Resultat</string>
|
||||
<string name="restartingapp">Avslutar appen för att inställningarna ska läsas in.</string>
|
||||
<string name="restart">Omstart</string>
|
||||
<string name="restart">Starta om</string>
|
||||
<string name="reset_db_confirm">Vill du verkligen återställa databaserna?</string>
|
||||
<string name="resend_all_data">Uppdatera klockans data</string>
|
||||
<string name="removerecord">Ta bort sparad data:</string>
|
||||
<string name="reloadprofile">Ladda om profil</string>
|
||||
<string name="refresheventsfromnightscout">Uppdatera händelser från Nightscout</string>
|
||||
<string name="refresheventsfromnightscout">Uppdatera från Nightscout</string>
|
||||
<string name="reason">Orsak</string>
|
||||
<string name="ratio_short">RAT</string>
|
||||
<string name="rate">Hastighet</string>
|
||||
<string name="quickwizardsettings">Kalkylatorinställningar</string>
|
||||
<string name="quickwizard">Kalkylator</string>
|
||||
<string name="queue">Kö:</string>
|
||||
<string name="pumpsuspendedclicktorefresh">Pump pausad. Klicka för ladda om status.</string>
|
||||
<string name="pumpsuspendedclicktorefresh">Pump pausad. Klicka för att ladda om status.</string>
|
||||
<string name="pumpsuspended">Pump pausad</string>
|
||||
<string name="pumpshutdown">Pump avstängd</string>
|
||||
<string name="pumperror">Pumpfel</string>
|
||||
|
@ -457,7 +457,7 @@
|
|||
<string name="overview_calibration_bg_label">Kalibrering</string>
|
||||
<string name="overview_calibration">Kalibrering</string>
|
||||
<string name="overview_calculator_label">Kalkylator</string>
|
||||
<string name="overview_bolusprogress_stoppressed">STOPP NEDTRYCKT</string>
|
||||
<string name="overview_bolusprogress_stoppressed">Stopp nedtryckt</string>
|
||||
<string name="overview_bolusprogress_stoped">Stoppad</string>
|
||||
<string name="overview_bolusprogress_stop">Stopp</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Kommer tillföra %.2f enheter</string>
|
||||
|
@ -496,12 +496,13 @@
|
|||
<string name="openapsama_autosens_period_summary">Antal timmar för beräkning av känslighet (Absorptionstid för KH är exkluderad).</string>
|
||||
<string name="openapsama_autosens_period">Intervall för autosens [tim]</string>
|
||||
<string name="openapsama_autosens_max_summary">Standardvärde: 1.2 Med standarvärdet 1.2 kan autosens justera upp dina basaler, kvoter etc med upp till 20% för att kompensera för t ex tillfällig insulinresistens.</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standardvärde: sant Detta för att tillåta autosens justera BG målvärden, ISF och basaler.</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standardvärde: sant. Detta för att tillåta autosens justera mål-BG utöver ISF och basaler.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens justerar även mål-BG</string>
|
||||
<string name="openapsama">OpenAPS AMA</string>
|
||||
<string name="openaps">OpenAPS</string>
|
||||
<string name="open_settings_on_wear">Öppna inställningar på klockan</string>
|
||||
<string name="ongoingnotificaction">Konstant infonotis i telefonen</string>
|
||||
<string name="old_data">GAMMAL DATA</string>
|
||||
<string name="ongoingnotificaction">Konstant avisering i telefonen</string>
|
||||
<string name="old_data">Aktuellt BG saknas!</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="occlusion">Ocklusion</string>
|
||||
<string name="objectives_shortname">Mål</string>
|
||||
|
@ -525,7 +526,7 @@
|
|||
<string name="objectives_1_objective">Starta med open loop</string>
|
||||
<string name="objectives_1_gate">Starta med open loop och använd det några dagar. Försök att ge många föreslagna temp basaler.</string>
|
||||
<string name="absorption_maxtime_summary">Tid i timmar när alla kolhydradet förväntas vara absorberade</string>
|
||||
<string name="absorption_maxtime_title">Max absorptions tid för en måltid [tim]</string>
|
||||
<string name="absorption_maxtime_title">Max absorptionstid för en måltid [tim]</string>
|
||||
<string name="absorptionsettings_title">Absorptionsinställningar</string>
|
||||
<string name="careportal_pump_label">PUMP</string>
|
||||
<string name="careportal_pumpbatterychange">Byte pumpbatteri</string>
|
||||
|
@ -540,7 +541,7 @@
|
|||
<string name="lock_screen">Lås skärm</string>
|
||||
<string name="lock_screen_short">Lås</string>
|
||||
<string name="mmol">mmol/l</string>
|
||||
<string name="minago" formatted="false">%d min sedan</string>
|
||||
<string name="minago" formatted="false">%d m</string>
|
||||
<string name="mgdl">mg/dl</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdi">MDI</string>
|
||||
|
@ -550,9 +551,9 @@
|
|||
<string name="overview_newtempbasal_basaltype_label">Basaltyp</string>
|
||||
<string name="sensitivity_shortname">SENS</string>
|
||||
<string name="sensitivity_warning">Genom att slå på Autosens funktionen, kom ihåg att skriva in alla KH. Annars kommer programmet göra fel i beräkningar av känslighet (ISF)!!</string>
|
||||
<string name="sensitivityaaps">Känslighetsavkänning AAPS</string>
|
||||
<string name="sensitivityoref0">Känslighetsavkänning Oref0</string>
|
||||
<string name="sensitivityweightedaverage">Känslighetsavkänning WeightedAverage</string>
|
||||
<string name="sensitivityaaps">AAPS</string>
|
||||
<string name="sensitivityoref0">Oref0</string>
|
||||
<string name="sensitivityweightedaverage">WeightedAverage</string>
|
||||
<string name="settingtempbasal">Ställer in temp basal</string>
|
||||
<string name="simpleprofile_shortname">SP</string>
|
||||
<string name="sms_actualbg">BG:</string>
|
||||
|
@ -560,12 +561,12 @@
|
|||
<string name="sms_bolus">Bolus:</string>
|
||||
<string name="sms_delta">Delta:</string>
|
||||
<string name="sms_iob">IOB:</string>
|
||||
<string name="sms_minago" formatted="false">%d min sedan</string>
|
||||
<string name="nsalarm_staledatavalue_label">Tröskelvärde för \"Gammal data\" [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Tröskelvärde för \"Väldigt gammal data\" [min]</string>
|
||||
<string name="sms_minago" formatted="false">%d min</string>
|
||||
<string name="nsalarm_staledatavalue_label">Första varning efter [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Akut varning efter [min]</string>
|
||||
<string name="nsalarm_urgenthigh">Akut hög</string>
|
||||
<string name="nsalarm_urgentlow">Akut låg</string>
|
||||
<string name="nsalarm_urgentstaledata">Väldigt gammal data</string>
|
||||
<string name="nsalarm_urgentstaledata">BG-data saknas (akut larm)</string>
|
||||
<string name="app_name">AndroidAPS</string>
|
||||
<string name="treatments_wizard_tt_label">TT</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Basal [%]</string>
|
||||
|
@ -586,7 +587,7 @@
|
|||
<string name="danar_model">Modell: %02X Protokoll: %02X Kod: %02X</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier_summary">"Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4x din nuvarande basal, oberoende av din max basalhastighet. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning. "</string>
|
||||
<string name="openapsama_autosens_min_summary">Standardvärde: 0.7 Med standardvärdet 0.7 kan autosens justera ner dina basaler, kvoter etc med upp till 30% för att kompensera för t ex tillfällig hög insulinkänslighet.</string>
|
||||
<string name="nsclientinternal_devicename_dialogmessage">"Det kommer att användas för att ange \"Inmatat av: \". "</string>
|
||||
<string name="nsclientinternal_devicename_dialogmessage">"Det kommer att användas för att ange \"Loggat av: \". "</string>
|
||||
<string name="batteryoptimalizationerror">Enheten verkar inte stöda vitlistning av appar för batteriförbrukning</string>
|
||||
<string name="pleaseallowpermission">Tillåt</string>
|
||||
<string name="needwhitelisting">%s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt</string>
|
||||
|
@ -638,7 +639,7 @@
|
|||
<string name="wearcontrol_title">Kontroller från klockan</string>
|
||||
<string name="wearcontrol_summary">Sätt tempmål och ange behandlingar från klockan.</string>
|
||||
<string name="connectiontimedout">Anslutningen tog för lång tid</string>
|
||||
<string name="food">Mat</string>
|
||||
<string name="food">Matdatabas</string>
|
||||
<string name="shortkilojoul">kJ</string>
|
||||
<string name="shortenergy">En</string>
|
||||
<string name="shortprotein">Pr</string>
|
||||
|
@ -676,7 +677,7 @@
|
|||
<string name="positiveonly">Endast positiva</string>
|
||||
<string name="negativeonly">Endast negativa</string>
|
||||
<string name="overview_editquickwizard_usecob">Använd COB</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Använd tempmål</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Använd temp mål</string>
|
||||
<string name="loopenabled">Loop aktiverad</string>
|
||||
<string name="apsselected">APS vald</string>
|
||||
<string name="nsclienthaswritepermission">NSClient har skrivrättigheter</string>
|
||||
|
@ -813,7 +814,7 @@
|
|||
<string name="g5appnotdetected">Vänligen uppdatera din G5-app till en supportad version</string>
|
||||
<string name="start_activity_tt">Starta \"Träning\"</string>
|
||||
<string name="start_eating_soon_tt">Starta \"Äta snart\"</string>
|
||||
<string name="don_t_bolus_record_only">Ge ingen bolus, logga bara</string>
|
||||
<string name="do_not_bolus_record_only">Ge ingen bolus, logga bara</string>
|
||||
<string name="category">Kategori</string>
|
||||
<string name="subcategory">Underkategori</string>
|
||||
<string name="bolusrecordedonly">Bolusen sparas bara i loggboken</string>
|
||||
|
@ -868,7 +869,7 @@
|
|||
<string name="unsafeusage">osäker användning</string>
|
||||
<string name="readstatusfailed">Statuskontroll misslyckad</string>
|
||||
<string name="record_pump_site_change">Logga byte av kanyl</string>
|
||||
<string name="record_insulin_cartridge_change">Logga byte a insulinreservoar</string>
|
||||
<string name="record_insulin_cartridge_change">Logga byte av insulinreservoar</string>
|
||||
<string name="smbalwaysdisabled">SMB Alltid På och SMB Efter Kolhydrater är inaktiverat pga att den aktiva BG-källan inte stöder avancerad filtrering</string>
|
||||
<string name="smbnotallowedinopenloopmode">SMB inte tillåtet i Open Loop</string>
|
||||
<string name="food_short">Mat</string>
|
||||
|
@ -885,7 +886,7 @@
|
|||
<string name="absorption_cutoff_title">Max absorptionstid för kolhydrater [tim]</string>
|
||||
<string name="absorption_cutoff_summary">Efter denna tid anses alla kolhydrater vara absorberade. Om det fortfarande finns COB, kommer dessa att tas bort ur beräkningen.</string>
|
||||
<string name="time">Tid</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Visa noteringsrutan i behandlingsdialogerna</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Visa anteckningar i behandlingsdialogerna</string>
|
||||
<string name="boluserrorcode">Angivet: %.2f enheter. Levererat: %.2f enheter. Felkod: %d</string>
|
||||
<string name="firstinsulinincrement">Första snabbknabben för insulin</string>
|
||||
<string name="secondinsulinincrement">Andra snabbknabben för insulin</string>
|
||||
|
@ -925,4 +926,9 @@
|
|||
<string name="careportal_carbsandbolus_label">KOLHYDRATER & BOLUS</string>
|
||||
<string name="careportal_cgm_label">CGM & LOGGNING</string>
|
||||
<string name="othersettings_title">Övrigt</string>
|
||||
<string name="combo_pump_state_initializing">Initierar</string>
|
||||
<string name="smbmaxminutes_summary">Max antal minuter som kan bli SMB</string>
|
||||
<string name="shorthour">t</string>
|
||||
<string name="shortminute">m</string>
|
||||
<string name="danarv2pump">DanaR v2</string>
|
||||
</resources>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<color name="inrange">#00FF00</color>
|
||||
<color name="low">#FF0000</color>
|
||||
<color name="high">#FFFF00</color>
|
||||
<color name="actionsConfirm">#FFFF00</color>
|
||||
<color name="listdelimiter">#505050</color>
|
||||
<color name="tabBgColor">#f0003f59</color>
|
||||
<color name="tabBgColorSelected">#FF33B5E5</color>
|
||||
|
@ -28,6 +29,7 @@
|
|||
<color name="defaultbackground">#424242</color>
|
||||
|
||||
<color name="tempTargetBackground">#77dd77</color>
|
||||
<color name="tempTargetConfirmation">#77dd77</color>
|
||||
<color name="tempTargetDisabledBackground">#303F9F</color>
|
||||
|
||||
|
||||
|
@ -72,4 +74,10 @@
|
|||
<color name="deviationred">#72FF0000</color>
|
||||
<color name="deviationblack">#72000000</color>
|
||||
|
||||
|
||||
<color name="swColorPrimary">#303030</color>
|
||||
<color name="swColorPrimaryDark">#303030</color>
|
||||
<color name="swColorAccent">#FFEB3B</color>
|
||||
<color name="swColorBackground">#303030</color>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -549,7 +549,6 @@
|
|||
<string name="superbolus">Superbolus</string>
|
||||
<string name="ns_logappstartedevent">Log app start to NS</string>
|
||||
<string name="key_ns_logappstartedevent" translatable="false">ns_logappstartedevent</string>
|
||||
<string name="key_ns_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
|
||||
<string name="restartingapp">Exiting application to apply settings.</string>
|
||||
<string name="danarv2pump">DanaRv2</string>
|
||||
<string name="configbuilder_insulin">Insulin</string>
|
||||
|
@ -924,7 +923,7 @@
|
|||
<string name="start_activity_tt">Start Activity TT</string>
|
||||
<string name="start_eating_soon_tt">Start Eating soon TT</string>
|
||||
<string name="temptargetshort">TT</string>
|
||||
<string name="don_t_bolus_record_only">Don\'t bolus, record only</string>
|
||||
<string name="do_not_bolus_record_only">Do not bolus, record only</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="subcategory">Subcategory</string>
|
||||
<string name="bolusrecordedonly">Bolus will be recorded only</string>
|
||||
|
@ -1051,6 +1050,7 @@
|
|||
<string name="ga_lang">Irish</string>
|
||||
<string name="wear_wizard_settings">Wizard Settings</string>
|
||||
<string translatable="false" name="key_wearwizard_bg">wearwizard_bg</string>
|
||||
<string translatable="false" name="key_wearwizard_tt">wearwizard_tt</string>
|
||||
<string translatable="false" name="key_wearwizard_trend">wearwizard_trend</string>
|
||||
<string translatable="false" name="key_wearwizard_cob">wearwizard_cob</string>
|
||||
<string translatable="false" name="key_wearwizard_bolusiob">wearwizard_bolusiob</string>
|
||||
|
@ -1059,13 +1059,25 @@
|
|||
<string name="wear_display_settings">Display Settings</string>
|
||||
<string name="wear_general_settings">General Settings</string>
|
||||
<string name="enable_nsclient">Enable NSClient</string>
|
||||
<string name="welcometosetupwizard">Welcome to setup wizard. It will guide you through the setup process</string>
|
||||
<string name="welcometosetupwizard">Welcome to setup wizard. It will guide you through the setup process\n</string>
|
||||
<string name="pumpsetup">Pump setup</string>
|
||||
<string name="readstatus">Read status</string>
|
||||
<string name="adjustprofileinns">Changes must be done in NS</string>
|
||||
<string name="exitwizard">Exit setup wizard?</string>
|
||||
<string name="setupwizard_bgsource_description">Where should blood glucose(BG) data be comming from ?</string>
|
||||
<string name="exitwizard">Skip setup wizard</string>
|
||||
<string name="setupwizard_bgsource_description">Where should blood glucose(BG) data be comming from ?\n</string>
|
||||
<string name="setupwizard_loop_description">Press the button below to enable AndroidAPS to suggest/make basal changes</string>
|
||||
<string name="setupwizard_objectives_description">Press the button below to enable Objectives. Look in the Objectives tab, after you finish this wizard, to make AndroidAPS completely functional.</string>
|
||||
|
||||
<string name="setupwizard_objectives_description">Press the button below to enable Objectives. Look in the Objectives tab, after you finish this wizard, to make AndroidAPS completely functional.\n</string>
|
||||
<string name="enableobjectives">Enable Objectives</string>
|
||||
<string name="apssetup">Configure APS plugin</string>
|
||||
<string name="backupismissing">Exported configuration is missing thus import configuration is not possible.\n</string>
|
||||
<string name="key_setupwizard_processed" translatable="false">startupwizard_processed</string>
|
||||
<string name="sensitivitysetup">Configure Sensitivity plugin</string>
|
||||
<string name="setupwizard_sensitivity_description">Sensitivity plugin is used for sensitivity detection and COB calculation. For more info visit:</string>
|
||||
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
|
||||
<string name="nsclientinfotext">NSClient handles connection to Nightscout. You can skip this part now but you will not be able to pass objectives until you setup it.</string>
|
||||
<string name="diawarning">Please remember: new insulin profiles require DIA at least 5h. DIA 5-6h on new profile is equal to DIA 3h on old insulin profiles.</string>
|
||||
<string name="bgsourcesetup">Configure BG source</string>
|
||||
<string name="setupwizard_profile_description">Please select source of profile. If patient is a child you should use NS profile. If there is nobody following you on Nightscout you will probably prefer Local profile. Please remember that you are only selecting the profile source. To use it you must activate it by executing \"Profile switch\"</string>
|
||||
<string name="setupwizard_aps_description">Select one from availables algorithms. They are sorted from oldest to newest. Newer algorithm is usualy more powerfull and more aggresive. Thus if you are new looper you may probably start with AMA and not with latest one. Do not forget to read the OpenAPS documentation and configure it before use.</string>
|
||||
<string name="startobjective">Start your first objective</string>
|
||||
</resources>
|
||||
|
|
|
@ -24,5 +24,12 @@
|
|||
<item name="android:textSize">10sp</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.SetupWizard" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="colorPrimary">@color/swColorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/swColorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/swColorAccent</item>
|
||||
<item name="android:windowBackground">@color/swColorBackground</item>
|
||||
</style>
|
||||
|
||||
<!-- Preferences -->
|
||||
</resources>
|
||||
|
|
|
@ -128,7 +128,7 @@
|
|||
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/key_ns_localbroadcasts"
|
||||
android:key="@string/key_nsclient_localbroadcasts"
|
||||
android:summary="@string/ns_localbroadcasts"
|
||||
android:title="@string/ns_localbroadcasts_title" />
|
||||
|
||||
|
|
|
@ -25,6 +25,12 @@
|
|||
android:defaultValue="true"
|
||||
android:dependency="wearcontrol"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/key_wearwizard_tt"
|
||||
android:title="@string/treatments_wizard_tt_label"
|
||||
android:defaultValue="false"
|
||||
android:dependency="@string/key_wearwizard_bg"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/key_wearwizard_trend"
|
||||
android:title="@string/treatments_wizard_bgtrend_label"
|
||||
|
|
|
@ -156,4 +156,24 @@ public class CommandQueueTest extends CommandQueue {
|
|||
public boolean isThisProfileSet(Profile profile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void callingCancelAllBolusesClearsQueue() throws Exception {
|
||||
prepareMock(0d, 0);
|
||||
|
||||
// add normal and SMB-bolus to queue
|
||||
Assert.assertEquals(0, size());
|
||||
|
||||
bolus(new DetailedBolusInfo(), null);
|
||||
|
||||
DetailedBolusInfo smb = new DetailedBolusInfo();
|
||||
smb.isSMB = true;
|
||||
bolus(smb, null);
|
||||
|
||||
Assert.assertEquals(2, size());
|
||||
|
||||
// cancelling all boluses clear all boluses from the queue
|
||||
cancelAllBoluses();
|
||||
Assert.assertEquals(0, size());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,11 +9,11 @@ import org.powermock.modules.junit4.PowerMockRunner;
|
|||
* Created by mike on 26.03.2018.
|
||||
*/
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
//@RunWith(PowerMockRunner.class)
|
||||
public class TTest {
|
||||
|
||||
@Test
|
||||
public void doTests() {
|
||||
public void toUnits() {
|
||||
Assert.assertEquals(1, T.msecs(1000).secs());
|
||||
Assert.assertEquals(1, T.secs(60).mins());
|
||||
Assert.assertEquals(1, T.mins(60).hours());
|
||||
|
@ -21,4 +21,31 @@ public class TTest {
|
|||
Assert.assertEquals(24, T.days(1).hours());
|
||||
Assert.assertEquals(60000, T.mins(1).msecs());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void now() {
|
||||
Assert.assertTrue(Math.abs(T.now().msecs() - System.currentTimeMillis()) < 5000);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void additions() {
|
||||
long nowMsecs = System.currentTimeMillis();
|
||||
T now = T.msecs(nowMsecs);
|
||||
|
||||
Assert.assertEquals(now.plus(T.secs(5)).msecs(), nowMsecs + 5 * 1000);
|
||||
Assert.assertEquals(now.plus(T.mins(5)).msecs(), nowMsecs + 5 * 60 * 1000);
|
||||
Assert.assertEquals(now.plus(T.hours(5)).msecs(), nowMsecs + 5 * 60 * 60 * 1000);
|
||||
Assert.assertEquals(now.plus(T.days(5)).msecs(), nowMsecs + 5 * 24 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subtractions() {
|
||||
long nowMsecs = System.currentTimeMillis();
|
||||
T now = T.msecs(nowMsecs);
|
||||
|
||||
Assert.assertEquals(now.minus(T.secs(5)).msecs(), nowMsecs - 5 * 1000);
|
||||
Assert.assertEquals(now.minus(T.mins(5)).msecs(), nowMsecs - 5 * 60 * 1000);
|
||||
Assert.assertEquals(now.minus(T.hours(5)).msecs(), nowMsecs - 5 * 60 * 60 * 1000);
|
||||
Assert.assertEquals(now.minus(T.days(5)).msecs(), nowMsecs - 5 * 24 * 60 * 60 * 1000);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue