commit
a7da0bb67a
26 changed files with 1334 additions and 31 deletions
|
@ -158,6 +158,14 @@ android {
|
|||
buildConfigField "boolean", "PUMPCONTROL", "false"
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests.returnDefaultValues = true
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
|
|
@ -130,6 +130,8 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre
|
|||
addPreferencesFromResource(id);
|
||||
addPreferencesFromResource(R.xml.pref_advanced);
|
||||
} else {
|
||||
addPreferencesFromResource(R.xml.pref_overview);
|
||||
|
||||
if (!Config.NSCLIENT && !Config.G5UPLOADER) {
|
||||
addPreferencesFromResource(R.xml.pref_password);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,329 @@
|
|||
package info.nightscout.androidaps.plugins.Overview.Dialogs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.HandlerThread;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.format.DateFormat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
|
||||
import com.wdullaer.materialdatetimepicker.time.RadialPickerLayout;
|
||||
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.db.CareportalEvent;
|
||||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.db.TempTarget;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.Loop.APSResult;
|
||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.OpenAPSSMB.DetermineBasalResultSMB;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
import info.nightscout.utils.NumberPicker;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.SafeParse;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
public class NewCarbsDialog extends DialogFragment implements OnClickListener, DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
|
||||
private static Logger log = LoggerFactory.getLogger(NewCarbsDialog.class);
|
||||
|
||||
private EditText foodText;
|
||||
private NumberPicker editCarbs;
|
||||
|
||||
private TextView dateButton;
|
||||
private TextView timeButton;
|
||||
|
||||
private Date initialEventTime;
|
||||
private Date eventTime;
|
||||
|
||||
private Button fav1Button;
|
||||
private Button fav2Button;
|
||||
private Button fav3Button;
|
||||
|
||||
private static final double FAV1_DEFAULT = 5;
|
||||
private static final double FAV2_DEFAULT = 10;
|
||||
private static final double FAV3_DEFAULT = 20;
|
||||
|
||||
private CheckBox suspendLoopCheckbox;
|
||||
private CheckBox startActivityTTCheckbox;
|
||||
|
||||
private Integer maxCarbs;
|
||||
|
||||
//one shot guards
|
||||
private boolean accepted;
|
||||
private boolean okClicked;
|
||||
|
||||
public NewCarbsDialog() {
|
||||
HandlerThread mHandlerThread = new HandlerThread(NewCarbsDialog.class.getSimpleName());
|
||||
mHandlerThread.start();
|
||||
}
|
||||
|
||||
final private TextWatcher textWatcher = new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
validateInputs();
|
||||
}
|
||||
};
|
||||
|
||||
private void validateInputs() {
|
||||
Integer carbs = SafeParse.stringToInt(editCarbs.getText());
|
||||
if (carbs > maxCarbs) {
|
||||
editCarbs.setValue(0d);
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), getString(R.string.carbsconstraintapplied));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.overview_newcarbs_dialog, container, false);
|
||||
|
||||
view.findViewById(R.id.ok).setOnClickListener(this);
|
||||
view.findViewById(R.id.cancel).setOnClickListener(this);
|
||||
|
||||
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
||||
|
||||
maxCarbs = MainApp.getConfigBuilder().applyCarbsConstraints(Constants.carbsOnlyForCheckLimit);
|
||||
|
||||
foodText = view.findViewById(R.id.newcarb_food);
|
||||
|
||||
editCarbs = view.findViewById(R.id.newcarb_carbsamount);
|
||||
|
||||
editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, textWatcher);
|
||||
|
||||
startActivityTTCheckbox = view.findViewById(R.id.newcarbs_activity_tt);
|
||||
|
||||
dateButton = view.findViewById(R.id.newcarbs_eventdate);
|
||||
timeButton = view.findViewById(R.id.newcarb_eventtime);
|
||||
|
||||
initialEventTime = new Date();
|
||||
eventTime = new Date(initialEventTime.getTime());
|
||||
dateButton.setText(DateUtil.dateString(eventTime));
|
||||
timeButton.setText(DateUtil.timeString(eventTime));
|
||||
dateButton.setOnClickListener(this);
|
||||
timeButton.setOnClickListener(this);
|
||||
|
||||
// TODO prefilling carbs, maybe
|
||||
// TODO maybe update suggested carbs to target TT when checked
|
||||
// APSResult lastAPSResult = ConfigBuilderPlugin.getActiveAPS().getLastAPSResult();
|
||||
// if (lastAPSResult != null && lastAPSResult instanceof DetermineBasalResultSMB && ((DetermineBasalResultSMB) lastAPSResult).carbsReq > 0) {
|
||||
// editCarbs.setValue(((DetermineBasalResultSMB) lastAPSResult).carbsReq);
|
||||
// }
|
||||
|
||||
fav1Button = view.findViewById(R.id.newcarbs_plus1);
|
||||
fav1Button.setOnClickListener(this);
|
||||
fav1Button.setText("+" + SP.getString(MainApp.gs(R.string.key_carbs_button_increment_1), String.valueOf(FAV1_DEFAULT)));
|
||||
fav2Button = view.findViewById(R.id.newcarbs_plus2);
|
||||
fav2Button.setOnClickListener(this);
|
||||
fav2Button.setText("+" + SP.getString(MainApp.gs(R.string.key_carbs_button_increment_2), String.valueOf(FAV2_DEFAULT)));
|
||||
fav3Button = view.findViewById(R.id.newcarbs_plus3);
|
||||
fav3Button.setOnClickListener(this);
|
||||
fav3Button.setText("+" + SP.getString(MainApp.gs(R.string.key_carbs_button_increment_3), String.valueOf(FAV3_DEFAULT)));
|
||||
|
||||
suspendLoopCheckbox = view.findViewById(R.id.newcarbs_suspend_loop);
|
||||
|
||||
setCancelable(true);
|
||||
getDialog().setCanceledOnTouchOutside(false);
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onClick(View view) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(eventTime);
|
||||
switch (view.getId()) {
|
||||
case R.id.ok:
|
||||
submit();
|
||||
break;
|
||||
case R.id.cancel:
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.newcarbs_eventdate:
|
||||
DatePickerDialog dpd = DatePickerDialog.newInstance(
|
||||
this,
|
||||
calendar.get(Calendar.YEAR),
|
||||
calendar.get(Calendar.MONTH),
|
||||
calendar.get(Calendar.DAY_OF_MONTH)
|
||||
);
|
||||
dpd.setThemeDark(true);
|
||||
dpd.dismissOnPause(true);
|
||||
dpd.show(getActivity().getFragmentManager(), "Datepickerdialog");
|
||||
break;
|
||||
case R.id.newcarb_eventtime:
|
||||
TimePickerDialog tpd = TimePickerDialog.newInstance(
|
||||
this,
|
||||
calendar.get(Calendar.HOUR_OF_DAY),
|
||||
calendar.get(Calendar.MINUTE),
|
||||
DateFormat.is24HourFormat(getActivity())
|
||||
);
|
||||
tpd.setThemeDark(true);
|
||||
tpd.dismissOnPause(true);
|
||||
tpd.show(getActivity().getFragmentManager(), "Timepickerdialog");
|
||||
break;
|
||||
case R.id.newcarbs_plus1:
|
||||
editCarbs.setValue(editCarbs.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_carbs_button_increment_1), FAV1_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
case R.id.newcarbs_plus2:
|
||||
editCarbs.setValue(editCarbs.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_carbs_button_increment_2), FAV2_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
case R.id.newcarbs_plus3:
|
||||
editCarbs.setValue(editCarbs.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_carbs_button_increment_3), FAV3_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void submit() {
|
||||
if (okClicked) {
|
||||
log.debug("guarding: ok already clicked");
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
okClicked = true;
|
||||
try {
|
||||
final String food = StringUtils.trimToNull(foodText.getText().toString());
|
||||
final Integer carbs = SafeParse.stringToInt(editCarbs.getText());
|
||||
Integer carbsAfterConstraints = MainApp.getConfigBuilder().applyCarbsConstraints(carbs);
|
||||
|
||||
String confirmMessage = "";
|
||||
if (carbs > 0)
|
||||
confirmMessage += getString(R.string.carbs) + ": " + "<font color='" + MainApp.sResources.getColor(R.color.colorCarbsButton) + "'>" + carbsAfterConstraints + "g" + "</font>";
|
||||
if (!carbsAfterConstraints.equals(carbs))
|
||||
confirmMessage += "<br/><font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + getString(R.string.carbsconstraintapplied) + "</font>";
|
||||
if (suspendLoopCheckbox.isChecked()) {
|
||||
confirmMessage += "<br/>" + "Loop: " + "<font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + "Suspend for 30 min</font>";
|
||||
}
|
||||
|
||||
double prefTTDuration = SP.getDouble(R.string.key_activity_duration, 90d);
|
||||
double ttDuration = prefTTDuration > 0 ? prefTTDuration : 90d;
|
||||
double prefTT = SP.getDouble(R.string.key_activity_target, 140d);
|
||||
double tt = prefTT > 0 ? prefTT : 140d;
|
||||
if (startActivityTTCheckbox.isChecked()) {
|
||||
confirmMessage += "<br/>" + "TT: " + "<font color='" + MainApp.sResources.getColor(R.color.high) + "'>" + ((int) tt) + "mg/dl for " + ((int) ttDuration) + " min </font>";
|
||||
}
|
||||
|
||||
if (StringUtils.isNoneEmpty(food)) {
|
||||
confirmMessage += "<br/>" + "Food: " + food;
|
||||
}
|
||||
|
||||
if (!initialEventTime.equals(eventTime)) {
|
||||
confirmMessage += "<br/> Time: " + DateUtil.dateAndTimeString(eventTime);
|
||||
}
|
||||
|
||||
final int finalCarbsAfterConstraints = carbsAfterConstraints;
|
||||
|
||||
final Context context = getContext();
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
|
||||
builder.setTitle(this.getContext().getString(R.string.confirmation));
|
||||
if (confirmMessage.startsWith("<br/>"))
|
||||
confirmMessage = confirmMessage.substring("<br/>".length());
|
||||
builder.setMessage(Html.fromHtml(confirmMessage));
|
||||
builder.setPositiveButton(getString(R.string.ok), (dialog, id) -> {
|
||||
synchronized (builder) {
|
||||
if (accepted) {
|
||||
log.debug("guarding: already accepted");
|
||||
return;
|
||||
}
|
||||
accepted = true;
|
||||
|
||||
if (suspendLoopCheckbox.isChecked()) {
|
||||
final LoopPlugin activeloop = ConfigBuilderPlugin.getActiveLoop();
|
||||
activeloop.suspendTo(System.currentTimeMillis() + 30L * 60 * 1000);
|
||||
ConfigBuilderPlugin.getCommandQueue().cancelTempBasal(true, new Callback() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (startActivityTTCheckbox.isChecked()) {
|
||||
TempTarget tempTarget = new TempTarget();
|
||||
tempTarget.date = System.currentTimeMillis();
|
||||
tempTarget.durationInMinutes = (int) ttDuration;
|
||||
tempTarget.reason = "Activity";
|
||||
tempTarget.source = Source.USER;
|
||||
tempTarget.low = (int) tt;
|
||||
tempTarget.high = (int) tt;
|
||||
MainApp.getDbHelper().createOrUpdate(tempTarget);
|
||||
}
|
||||
|
||||
if (finalCarbsAfterConstraints > 0 || food != null) {
|
||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||
detailedBolusInfo.date = eventTime.getTime();
|
||||
detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION;
|
||||
detailedBolusInfo.carbs = finalCarbsAfterConstraints;
|
||||
// detailedBolusInfo.food = food;
|
||||
detailedBolusInfo.context = context;
|
||||
detailedBolusInfo.source = Source.USER;
|
||||
MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo);
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(getString(R.string.cancel), null);
|
||||
builder.show();
|
||||
dismiss();
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
|
||||
eventTime.setYear(year - 1900);
|
||||
eventTime.setMonth(monthOfYear);
|
||||
eventTime.setDate(dayOfMonth);
|
||||
dateButton.setText(DateUtil.dateString(eventTime));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
|
||||
eventTime.setHours(hourOfDay);
|
||||
eventTime.setMinutes(minute);
|
||||
eventTime.setSeconds(second);
|
||||
timeButton.setText(DateUtil.timeString(eventTime));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,342 @@
|
|||
package info.nightscout.androidaps.plugins.Overview.Dialogs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.HandlerThread;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.format.DateFormat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.crashlytics.android.answers.Answers;
|
||||
import com.crashlytics.android.answers.CustomEvent;
|
||||
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
|
||||
import com.wdullaer.materialdatetimepicker.time.RadialPickerLayout;
|
||||
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.db.CareportalEvent;
|
||||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.db.TempTarget;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.Loop.APSResult;
|
||||
import info.nightscout.androidaps.plugins.OpenAPSSMB.DetermineBasalResultSMB;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
import info.nightscout.utils.NumberPicker;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.SafeParse;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
public class NewInsulinDialog extends DialogFragment implements OnClickListener, DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
|
||||
private static Logger log = LoggerFactory.getLogger(NewInsulinDialog.class);
|
||||
|
||||
private NumberPicker editInsulin;
|
||||
|
||||
private TextView dateButton;
|
||||
private TextView timeButton;
|
||||
|
||||
private Date initialEventTime;
|
||||
private Date eventTime;
|
||||
|
||||
private Button plus1Button;
|
||||
private Button plus2Button;
|
||||
private Button plus3Button;
|
||||
|
||||
public static final double PLUS1_DEFAULT = 0.5d;
|
||||
public static final double PLUS2_DEFAULT = 1d;
|
||||
public static final double PLUS3_DEFAULT = 2d;
|
||||
|
||||
private CheckBox startESMCheckbox;
|
||||
private CheckBox recordOnlyCheckbox;
|
||||
|
||||
private Double maxInsulin;
|
||||
|
||||
//one shot guards
|
||||
private boolean accepted;
|
||||
private boolean okClicked;
|
||||
|
||||
public NewInsulinDialog() {
|
||||
HandlerThread mHandlerThread = new HandlerThread(NewInsulinDialog.class.getSimpleName());
|
||||
mHandlerThread.start();
|
||||
}
|
||||
|
||||
final private TextWatcher textWatcher = new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
validateInputs();
|
||||
}
|
||||
};
|
||||
|
||||
private void validateInputs() {
|
||||
Double insulin = SafeParse.stringToDouble(editInsulin.getText());
|
||||
if (insulin > maxInsulin) {
|
||||
editInsulin.setValue(0d);
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), getString(R.string.bolusconstraintapplied));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.overview_newinsulin_dialog, container, false);
|
||||
|
||||
view.findViewById(R.id.ok).setOnClickListener(this);
|
||||
view.findViewById(R.id.cancel).setOnClickListener(this);
|
||||
|
||||
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
||||
|
||||
maxInsulin = MainApp.getConfigBuilder().applyBolusConstraints(Constants.bolusOnlyForCheckLimit);
|
||||
|
||||
editInsulin = (NumberPicker) view.findViewById(R.id.treatments_newinsulin_amount);
|
||||
|
||||
editInsulin.setParams(0d, 0d, maxInsulin, ConfigBuilderPlugin.getActivePump().getPumpDescription().bolusStep, new DecimalFormat("0.0"), false, textWatcher);
|
||||
|
||||
dateButton = (TextView) view.findViewById(R.id.newinsulin_eventdate);
|
||||
timeButton = (TextView) view.findViewById(R.id.newinsulin_eventtime);
|
||||
|
||||
initialEventTime = new Date();
|
||||
eventTime = new Date(initialEventTime.getTime());
|
||||
dateButton.setText(DateUtil.dateString(eventTime));
|
||||
timeButton.setText(DateUtil.timeString(eventTime));
|
||||
dateButton.setOnClickListener(this);
|
||||
timeButton.setOnClickListener(this);
|
||||
|
||||
/*
|
||||
// This makes it to easy to just bolus insulinReq, which is almost always too much
|
||||
APSResult lastAPSResult = ConfigBuilderPlugin.getActiveAPS().getLastAPSResult();
|
||||
if (lastAPSResult != null && lastAPSResult instanceof DetermineBasalResultSMB && ((DetermineBasalResultSMB) lastAPSResult).insulinReq > 0) {
|
||||
editInsulin.setValue(((DetermineBasalResultSMB )lastAPSResult).insulinReq);
|
||||
}
|
||||
*/
|
||||
|
||||
plus1Button = (Button) view.findViewById(R.id.newinsulin_plus05);
|
||||
plus1Button.setOnClickListener(this);
|
||||
plus1Button.setText("+" + SP.getString(MainApp.gs(R.string.key_insulin_button_increment_1), String.valueOf(PLUS1_DEFAULT)));
|
||||
plus2Button = (Button) view.findViewById(R.id.newinsulin_plus10);
|
||||
plus2Button.setOnClickListener(this);
|
||||
plus2Button.setText("+" + SP.getString(MainApp.gs(R.string.key_insulin_button_increment_2), String.valueOf(PLUS2_DEFAULT)));
|
||||
plus3Button = (Button) view.findViewById(R.id.newinsulin_plus20);
|
||||
plus3Button.setOnClickListener(this);
|
||||
plus3Button.setText("+" + SP.getString(MainApp.gs(R.string.key_insulin_button_increment_3), String.valueOf(PLUS3_DEFAULT)));
|
||||
|
||||
startESMCheckbox = (CheckBox) view.findViewById(R.id.newinsulin_start_eating_soon_tt);
|
||||
recordOnlyCheckbox = (CheckBox) view.findViewById(R.id.newinsulin_record_only);
|
||||
recordOnlyCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
if (dateButton != null) dateButton.setEnabled(isChecked);
|
||||
if (timeButton != null) timeButton.setEnabled(isChecked);
|
||||
});
|
||||
|
||||
setCancelable(true);
|
||||
getDialog().setCanceledOnTouchOutside(false);
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onClick(View view) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(eventTime);
|
||||
switch (view.getId()) {
|
||||
case R.id.ok:
|
||||
submit();
|
||||
break;
|
||||
case R.id.cancel:
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.newinsulin_eventdate:
|
||||
DatePickerDialog dpd = DatePickerDialog.newInstance(
|
||||
this,
|
||||
calendar.get(Calendar.YEAR),
|
||||
calendar.get(Calendar.MONTH),
|
||||
calendar.get(Calendar.DAY_OF_MONTH)
|
||||
);
|
||||
dpd.setThemeDark(true);
|
||||
dpd.dismissOnPause(true);
|
||||
dpd.show(getActivity().getFragmentManager(), "Datepickerdialog");
|
||||
break;
|
||||
case R.id.newinsulin_eventtime:
|
||||
TimePickerDialog tpd = TimePickerDialog.newInstance(
|
||||
this,
|
||||
calendar.get(Calendar.HOUR_OF_DAY),
|
||||
calendar.get(Calendar.MINUTE),
|
||||
DateFormat.is24HourFormat(getActivity())
|
||||
);
|
||||
tpd.setThemeDark(true);
|
||||
tpd.dismissOnPause(true);
|
||||
tpd.show(getActivity().getFragmentManager(), "Timepickerdialog");
|
||||
break;
|
||||
case R.id.newinsulin_start_eating_soon_tt:
|
||||
final Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||
double tt = SP.getDouble(R.string.key_eatingsoon_target, 0d);
|
||||
double ttBgAdd = (tt - profile.getTargetLow()) / profile.getIsf();
|
||||
editInsulin.setValue(editInsulin.getValue() + (startESMCheckbox.isChecked() ? ttBgAdd : -ttBgAdd));
|
||||
break;
|
||||
case R.id.newinsulin_plus05:
|
||||
editInsulin.setValue(editInsulin.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_insulin_button_increment_1), PLUS1_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
case R.id.newinsulin_plus10:
|
||||
editInsulin.setValue(editInsulin.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_insulin_button_increment_2), PLUS2_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
case R.id.newinsulin_plus20:
|
||||
editInsulin.setValue(editInsulin.getValue()
|
||||
+ SP.getDouble(MainApp.gs(R.string.key_insulin_button_increment_3), PLUS3_DEFAULT));
|
||||
validateInputs();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void submit() {
|
||||
if (okClicked){
|
||||
log.debug("guarding: ok already clicked");
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
okClicked = true;
|
||||
try {
|
||||
Double insulin = SafeParse.stringToDouble(editInsulin.getText());
|
||||
Double insulinAfterConstraints = MainApp.getConfigBuilder().applyBolusConstraints(insulin);
|
||||
|
||||
String confirmMessage = "";
|
||||
if (insulin > 0) {
|
||||
confirmMessage += getString(R.string.bolus) + ": " + "<font color='" + MainApp.sResources.getColor(R.color.colorCarbsButton) + "'>" + insulinAfterConstraints + "U" + "</font>";
|
||||
if (recordOnlyCheckbox.isChecked()) {
|
||||
confirmMessage += "<br/><font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + "Bolus will be recorded only</font>";
|
||||
}
|
||||
}
|
||||
|
||||
if (!insulinAfterConstraints.equals(insulin))
|
||||
confirmMessage += "<br/><font color='" + MainApp.sResources.getColor(R.color.low) + "'>" + getString(R.string.bolusconstraintapplied) + "</font>";
|
||||
double prefTTDuration = SP.getDouble(R.string.key_eatingsoon_duration, 45d);
|
||||
double ttDuration = prefTTDuration > 0 ? prefTTDuration : 45d;
|
||||
double prefTT = SP.getDouble(R.string.key_eatingsoon_target, 80d);
|
||||
double tt = prefTT > 0 ? prefTT : 80d;
|
||||
if (startESMCheckbox.isChecked()) {
|
||||
confirmMessage += "<br/>" + "TT: " + "<font color='" + MainApp.sResources.getColor(R.color.high) + "'>" + ((int) tt) + "mg/dl for " + ((int) ttDuration) + " min </font>";
|
||||
}
|
||||
|
||||
if (!initialEventTime.equals(eventTime)) {
|
||||
confirmMessage += "<br/>Time: " + DateUtil.dateAndTimeString(eventTime);
|
||||
}
|
||||
|
||||
final double finalInsulinAfterConstraints = insulinAfterConstraints;
|
||||
|
||||
final Context context = getContext();
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
|
||||
builder.setTitle(this.getContext().getString(R.string.confirmation));
|
||||
if (confirmMessage.startsWith("<br/>"))
|
||||
confirmMessage = confirmMessage.substring("<br/>".length());
|
||||
builder.setMessage(Html.fromHtml(confirmMessage));
|
||||
builder.setPositiveButton(getString(R.string.ok), (dialog, id) -> {
|
||||
synchronized (builder) {
|
||||
if (accepted) {
|
||||
log.debug("guarding: already accepted");
|
||||
return;
|
||||
}
|
||||
accepted = true;
|
||||
|
||||
if (startESMCheckbox.isChecked()) {
|
||||
TempTarget tempTarget = new TempTarget();
|
||||
tempTarget.date = System.currentTimeMillis();
|
||||
tempTarget.durationInMinutes = (int) ttDuration;
|
||||
tempTarget.reason = "Eating soon";
|
||||
tempTarget.source = Source.USER;
|
||||
tempTarget.low = (int) tt;
|
||||
tempTarget.high = (int) tt;
|
||||
MainApp.getDbHelper().createOrUpdate(tempTarget);
|
||||
}
|
||||
|
||||
if (finalInsulinAfterConstraints <= 0.01) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (recordOnlyCheckbox.isChecked()) {
|
||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||
detailedBolusInfo.source = Source.USER;
|
||||
detailedBolusInfo.date = eventTime.getTime();
|
||||
detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS;
|
||||
detailedBolusInfo.insulin = finalInsulinAfterConstraints;
|
||||
MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo);
|
||||
} else {
|
||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||
detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS;
|
||||
detailedBolusInfo.insulin = finalInsulinAfterConstraints;
|
||||
detailedBolusInfo.context = context;
|
||||
detailedBolusInfo.source = Source.USER;
|
||||
ConfigBuilderPlugin.getCommandQueue().bolus(detailedBolusInfo, new Callback() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.boluserror);
|
||||
i.putExtra("status", result.comment);
|
||||
i.putExtra("title", MainApp.sResources.getString(R.string.treatmentdeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
Answers.getInstance().logCustom(new CustomEvent("Bolus"));
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(getString(R.string.cancel), null);
|
||||
builder.show();
|
||||
dismiss();
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
|
||||
eventTime.setYear(year - 1900);
|
||||
eventTime.setMonth(monthOfYear);
|
||||
eventTime.setDate(dayOfMonth);
|
||||
dateButton.setText(DateUtil.dateString(eventTime));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
|
||||
eventTime.setHours(hourOfDay);
|
||||
eventTime.setMinutes(minute);
|
||||
eventTime.setSeconds(second);
|
||||
timeButton.setText(DateUtil.timeString(eventTime));
|
||||
}
|
||||
}
|
|
@ -3,9 +3,11 @@ package info.nightscout.androidaps.plugins.Overview;
|
|||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.os.Bundle;
|
||||
|
@ -94,6 +96,8 @@ import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastA
|
|||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSDeviceStatus;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.CalibrationDialog;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.ErrorHelperActivity;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.NewCarbsDialog;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.NewInsulinDialog;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.NewTreatmentDialog;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.WizardDialog;
|
||||
import info.nightscout.androidaps.plugins.Overview.activities.QuickWizardListActivity;
|
||||
|
@ -116,6 +120,8 @@ import info.nightscout.utils.SP;
|
|||
import info.nightscout.utils.SingleClickButton;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class OverviewFragment extends Fragment implements View.OnClickListener, CompoundButton.OnCheckedChangeListener, View.OnLongClickListener {
|
||||
private static Logger log = LoggerFactory.getLogger(OverviewFragment.class);
|
||||
|
||||
|
@ -163,10 +169,14 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
LinearLayoutManager llm;
|
||||
|
||||
LinearLayout acceptTempLayout;
|
||||
SingleClickButton acceptTempButton;
|
||||
|
||||
SingleClickButton treatmentButton;
|
||||
SingleClickButton wizardButton;
|
||||
SingleClickButton calibrationButton;
|
||||
SingleClickButton acceptTempButton;
|
||||
SingleClickButton insulinButton;
|
||||
SingleClickButton carbsButton;
|
||||
SingleClickButton cgmButton;
|
||||
SingleClickButton quickWizardButton;
|
||||
|
||||
CheckBox lockScreen;
|
||||
|
@ -253,19 +263,28 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
bgGraph = (GraphView) view.findViewById(R.id.overview_bggraph);
|
||||
iobGraph = (GraphView) view.findViewById(R.id.overview_iobgraph);
|
||||
|
||||
treatmentButton = (SingleClickButton) view.findViewById(R.id.overview_treatmentbutton);
|
||||
treatmentButton = requireNonNull(view.findViewById(R.id.overview_treatmentbutton));
|
||||
treatmentButton.setOnClickListener(this);
|
||||
wizardButton = (SingleClickButton) view.findViewById(R.id.overview_wizardbutton);
|
||||
wizardButton = requireNonNull(view.findViewById(R.id.overview_wizardbutton));
|
||||
wizardButton.setOnClickListener(this);
|
||||
insulinButton = (SingleClickButton) view.findViewById(R.id.overview_insulinbutton);
|
||||
if (insulinButton != null)
|
||||
insulinButton.setOnClickListener(this);
|
||||
carbsButton = (SingleClickButton) view.findViewById(R.id.overview_carbsbutton);
|
||||
if (carbsButton != null)
|
||||
carbsButton.setOnClickListener(this);
|
||||
acceptTempButton = (SingleClickButton) view.findViewById(R.id.overview_accepttempbutton);
|
||||
if (acceptTempButton != null)
|
||||
acceptTempButton.setOnClickListener(this);
|
||||
quickWizardButton = (SingleClickButton) view.findViewById(R.id.overview_quickwizardbutton);
|
||||
quickWizardButton = requireNonNull(view.findViewById(R.id.overview_quickwizardbutton));
|
||||
quickWizardButton.setOnClickListener(this);
|
||||
quickWizardButton.setOnLongClickListener(this);
|
||||
calibrationButton = (SingleClickButton) view.findViewById(R.id.overview_calibrationbutton);
|
||||
if (calibrationButton != null)
|
||||
calibrationButton.setOnClickListener(this);
|
||||
cgmButton = (SingleClickButton) view.findViewById(R.id.overview_cgmbutton);
|
||||
if (cgmButton != null)
|
||||
cgmButton.setOnClickListener(this);
|
||||
|
||||
acceptTempLayout = (LinearLayout) view.findViewById(R.id.overview_accepttemplayout);
|
||||
|
||||
|
@ -628,10 +647,19 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
CalibrationDialog calibrationDialog = new CalibrationDialog();
|
||||
calibrationDialog.show(manager, "CalibrationDialog");
|
||||
break;
|
||||
case R.id.overview_cgmbutton:
|
||||
openXdrip();
|
||||
break;
|
||||
case R.id.overview_treatmentbutton:
|
||||
NewTreatmentDialog treatmentDialogFragment = new NewTreatmentDialog();
|
||||
treatmentDialogFragment.show(manager, "TreatmentDialog");
|
||||
break;
|
||||
case R.id.overview_insulinbutton:
|
||||
new NewInsulinDialog().show(manager, "InsulinDialog");
|
||||
break;
|
||||
case R.id.overview_carbsbutton:
|
||||
new NewCarbsDialog().show(manager, "CarbsDialog");
|
||||
break;
|
||||
case R.id.overview_pumpstatus:
|
||||
if (ConfigBuilderPlugin.getActivePump().isSuspended() || !ConfigBuilderPlugin.getActivePump().isInitialized())
|
||||
ConfigBuilderPlugin.getCommandQueue().readStatus("RefreshClicked", null);
|
||||
|
@ -658,6 +686,25 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
|
||||
}
|
||||
|
||||
public boolean openXdrip() {
|
||||
PackageManager packageManager = getContext().getPackageManager();
|
||||
try {
|
||||
Intent intent = packageManager.getLaunchIntentForPackage("com.eveningoutpost.dexdrip");
|
||||
if (intent == null) {
|
||||
throw new ActivityNotFoundException();
|
||||
}
|
||||
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
getContext().startActivity(intent);
|
||||
return true;
|
||||
} catch (ActivityNotFoundException e) {
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setMessage(R.string.erro_starting_xdrip)
|
||||
.setPositiveButton("OK", null)
|
||||
.show();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
switch (v.getId()) {
|
||||
|
@ -1106,14 +1153,23 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
|
||||
// **** Calibration button ****
|
||||
// **** Calibration & CGM buttons ****
|
||||
boolean xDripIsBgSource = MainApp.getSpecificPlugin(SourceXdripPlugin.class) != null && MainApp.getSpecificPlugin(SourceXdripPlugin.class).isEnabled(PluginBase.BGSOURCE);
|
||||
boolean bgAvailable = DatabaseHelper.actualBg() != null;
|
||||
if (calibrationButton != null) {
|
||||
if (MainApp.getSpecificPlugin(SourceXdripPlugin.class) != null && MainApp.getSpecificPlugin(SourceXdripPlugin.class).isEnabled(PluginBase.BGSOURCE) && profile != null && DatabaseHelper.actualBg() != null) {
|
||||
if (xDripIsBgSource && bgAvailable && SP.getBoolean(R.string.key_show_calibration_button, true)) {
|
||||
calibrationButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
calibrationButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
if (cgmButton != null) {
|
||||
if (xDripIsBgSource && bgAvailable && SP.getBoolean(R.string.key_show_cgm_button, false)) {
|
||||
cgmButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
cgmButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
final TemporaryBasal activeTemp = MainApp.getConfigBuilder().getTempBasalFromHistory(System.currentTimeMillis());
|
||||
String basalText = "";
|
||||
|
@ -1210,15 +1266,40 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
} else
|
||||
quickWizardButton.setVisibility(View.GONE);
|
||||
|
||||
// Bolus and calc button
|
||||
if (pump.isInitialized() && !pump.isSuspended()) {
|
||||
wizardButton.setVisibility(View.VISIBLE);
|
||||
treatmentButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
wizardButton.setVisibility(View.GONE);
|
||||
treatmentButton.setVisibility(View.GONE);
|
||||
// **** Various treatment buttons ****
|
||||
if (carbsButton != null) {
|
||||
if (SP.getBoolean(R.string.key_show_carbs_button, false)
|
||||
&& !ConfigBuilderPlugin.getActivePump().getPumpDescription().storesCarbInfo ||
|
||||
(pump.isInitialized() && !pump.isSuspended())) {
|
||||
carbsButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
carbsButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
if (pump.isInitialized() && !pump.isSuspended()) {
|
||||
if (treatmentButton != null){
|
||||
if (SP.getBoolean(R.string.key_show_treatment_button, false)) {
|
||||
treatmentButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
treatmentButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
if (wizardButton != null) {
|
||||
if (SP.getBoolean(R.string.key_show_wizard_button, false)) {
|
||||
wizardButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
wizardButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
if (insulinButton != null) {
|
||||
if (SP.getBoolean(R.string.key_show_insulin_button, false)) {
|
||||
insulinButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
insulinButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// **** BG value ****
|
||||
if (lastBG == null) { //left this here as it seems you want to exit at this point if it is null...
|
||||
|
|
|
@ -404,7 +404,7 @@
|
|||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_bolus_label"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
@ -424,6 +424,36 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_insulinbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textColor="@color/colorInsulinButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_carbsbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_cp_bolus_carbs"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_carbs_label"
|
||||
android:textColor="@color/colorCarbsButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_calibrationbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
@ -439,6 +469,20 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_cgmbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_calibration"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_cgm"
|
||||
android:textColor="@color/colorCalibrationButton"
|
||||
android:textSize="10sp"/>
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_quickwizardbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
|
|
@ -609,7 +609,7 @@
|
|||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_bolus_label"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
|
@ -643,6 +643,36 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_insulinbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textColor="@color/colorInsulinButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_carbsbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_cp_bolus_carbs"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_carbs_label"
|
||||
android:textColor="@color/colorCarbsButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -707,7 +707,7 @@
|
|||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_bolus_label"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
|
@ -726,6 +726,35 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_insulinbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textColor="@color/colorInsulinButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_carbsbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_cp_bolus_carbs"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_carbs_label"
|
||||
android:textColor="@color/colorCarbsButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_calibrationbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
@ -741,6 +770,20 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_cgmbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_calibration"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_cgm"
|
||||
android:textColor="@color/colorCalibrationButton"
|
||||
android:textSize="10sp"/>
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_quickwizardbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
|
|
@ -118,7 +118,6 @@
|
|||
android:gravity="top"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/overview_timeago"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -393,7 +392,7 @@
|
|||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_bolus_label"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textColor="@color/colorTreatmentButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
|
@ -412,6 +411,35 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_insulinbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_bolus"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textColor="@color/colorInsulinButton"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_carbsbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_cp_bolus_carbs"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_carbs_label"
|
||||
android:textColor="@color/colorCarbsButton"
|
||||
android:textSize="10sp" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_calibrationbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
@ -427,6 +455,20 @@
|
|||
android:textSize="10sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_cgmbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="-4dp"
|
||||
android:layout_weight="0.5"
|
||||
android:drawableTop="@drawable/icon_calibration"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:text="@string/overview_cgm"
|
||||
android:textColor="@color/colorCalibrationButton"
|
||||
android:textSize="10sp"/>
|
||||
|
||||
<info.nightscout.utils.SingleClickButton
|
||||
android:id="@+id/overview_quickwizardbutton"
|
||||
style="?android:attr/buttonStyle"
|
||||
|
|
125
app/src/main/res/layout/overview_newcarbs_dialog.xml
Normal file
125
app/src/main/res/layout/overview_newcarbs_dialog.xml
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<FrameLayout 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"
|
||||
tools:context="info.nightscout.androidaps.plugins.Overview.Dialogs.NewCarbsDialog">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusableInTouchMode="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="@string/carbs"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="@color/colorCarbsButton" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_cp_bolus_carbs" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/newcarbs_activity_tt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="Start activity TT"/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/newcarbs_suspend_loop"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:text="Suspend loop for 30 min"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:layout_gravity="center_horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/newcarbs_eventdate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="5dp"
|
||||
android:text="2017/05/05" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/newcarb_eventtime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="5dp"
|
||||
android:text="08:20pm" />
|
||||
</LinearLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/newcarb_food"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:width="180dp"
|
||||
android:inputType="text|textCapWords"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<info.nightscout.utils.NumberPicker
|
||||
android:id="@+id/newcarb_carbsamount"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:layout_marginTop="10dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginBottom="5dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/newcarbs_plus1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+5" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/newcarbs_plus2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+10" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/newcarbs_plus3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+20" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/mdtp_done_button" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</FrameLayout>
|
118
app/src/main/res/layout/overview_newinsulin_dialog.xml
Normal file
118
app/src/main/res/layout/overview_newinsulin_dialog.xml
Normal file
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<FrameLayout 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"
|
||||
tools:context="info.nightscout.androidaps.plugins.Overview.Dialogs.NewInsulinDialog">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusableInTouchMode="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="@string/overview_insulin_label"
|
||||
android:textColor="@color/colorInsulinButton"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_bolus" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/newinsulin_start_eating_soon_tt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="Start eating soon TT" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/newinsulin_record_only"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="Don't bolus, record only" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:layout_gravity="center_horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/newinsulin_eventdate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:enabled="false"
|
||||
android:padding="5dp"
|
||||
android:text="2017/05/05" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/newinsulin_eventtime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:enabled="false"
|
||||
android:padding="5dp"
|
||||
android:text="08:20pm" />
|
||||
</LinearLayout>
|
||||
|
||||
<info.nightscout.utils.NumberPicker
|
||||
android:id="@+id/treatments_newinsulin_amount"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:layout_marginTop="10dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/newinsulin_plus05"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+0.5" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/newinsulin_plus10"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+1.0" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/newinsulin_plus20"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:text="+2.0" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/mdtp_done_button" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</FrameLayout>
|
|
@ -22,7 +22,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="@string/bolus"
|
||||
android:text="@string/overview_treatment_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">Стойност на базал [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = текущ)</string>
|
||||
<string name="setbasalquestion">Приложи нов временен базал:</string>
|
||||
<string name="overview_bolus_label">Болус</string>
|
||||
<string name="overview_treatment_label">Болус</string>
|
||||
<string name="overview_calculator_label">Калкулатор</string>
|
||||
<string name="constraintapllied">Приложено ограничение!</string>
|
||||
<string name="confirmation">Потвърждение</string>
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
<string name="overview_calculator_label">Kalkulačka</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Hodnota bazálu [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = současný)</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="profileviewer">NS profil</string>
|
||||
<string name="objectives_pumpstatusavailableinns">Stav pumpy dostupný v NS</string>
|
||||
<string name="rate">Hodnota</string>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<string name="openapsma_inputparameters_label">Eingabeparameter</string>
|
||||
<string name="openapsma_iobdata_label">IOB-Daten</string>
|
||||
<string name="openloop">Open Loop</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Rechner</string>
|
||||
<string name="overview_tempbasal_button">TBR</string>
|
||||
<string name="rate">Rate</string>
|
||||
|
|
|
@ -113,7 +113,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">Αξία Βασικού[%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = τρέχον)</string>
|
||||
<string name="setbasalquestion">Αποδοχή νέου Προσ.Ρυθμ:</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Υπολογιστής</string>
|
||||
<string name="constraintapllied">Εφαρμοσμένοι Περιορισμοί!</string>
|
||||
<string name="confirmation">Αποδοχή</string>
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">Valor basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = actual)</string>
|
||||
<string name="setbasalquestion">Aceptar nueva basal temporal:</string>
|
||||
<string name="overview_bolus_label">Bolo</string>
|
||||
<string name="overview_treatment_label">Bolo</string>
|
||||
<string name="overview_calculator_label">Calculadora</string>
|
||||
<string name="constraintapllied">Restricción aplicada!</string>
|
||||
<string name="confirmation">Confirmación</string>
|
||||
|
|
|
@ -108,7 +108,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">Valeur Basal [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = current)</string>
|
||||
<string name="setbasalquestion">Acceptez nouveau basal temp</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_calculator_label">Calculateur de Bolus</string>
|
||||
<string name="constraintapllied">Restriction appliquée!</string>
|
||||
<string name="confirmation">Confirmation</string>
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
<string name="openapsma_run">Avvia ora</string>
|
||||
<string name="openloop">Apertura Loop</string>
|
||||
<string name="othersettings_title">Altro</string>
|
||||
<string name="overview_bolus_label">Boli</string>
|
||||
<string name="overview_treatment_label">Boli</string>
|
||||
<string name="overview_bolusprogress_stop">Stop</string>
|
||||
<string name="overview_calculator_label">Calcolatore</string>
|
||||
<string name="overview_calibration">Calibrazione</string>
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">기초주입 값 [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = 현재)</string>
|
||||
<string name="setbasalquestion">새 임시기초주입 적용:</string>
|
||||
<string name="overview_bolus_label">식사주입</string>
|
||||
<string name="overview_treatment_label">식사주입</string>
|
||||
<string name="overview_calculator_label">계산기</string>
|
||||
<string name="constraintapllied">제한!</string>
|
||||
<string name="confirmation">확인</string>
|
||||
|
|
|
@ -409,7 +409,7 @@
|
|||
<string name="othersettings_title">Andere</string>
|
||||
<string name="openapsma_nopump">Geen pomp beschikbaar</string>
|
||||
<string name="overview">Overzicht</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview_bolusprogress_delivered">Toegediend</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Er worden %.2fE toegediend</string>
|
||||
<string name="overview_bolusprogress_stop">Stop</string>
|
||||
|
|
|
@ -366,7 +366,7 @@
|
|||
<string name="openloop_newsuggestion">есть новое предложение</string>
|
||||
<string name="othersettings_title">другое</string>
|
||||
<string name="overview">начало</string>
|
||||
<string name="overview_bolus_label">болюс</string>
|
||||
<string name="overview_treatment_label">болюс</string>
|
||||
<string name="overview_bolusprogress_delivered">доставлено</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver" formatted="false">будет доставлено %.2fU е инс</string>
|
||||
<string name="overview_bolusprogress_stop">стоп</string>
|
||||
|
|
|
@ -470,7 +470,7 @@
|
|||
<string name="overview_bolusprogress_stop">Stopp</string>
|
||||
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Kommer tillföra %.2fU</string>
|
||||
<string name="overview_bolusprogress_delivered">Tillförd</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Bolus</string>
|
||||
<string name="overview">Översikt</string>
|
||||
<string name="othersettings_title">Andra</string>
|
||||
<string name="openloop_newsuggestion">Ny behandlingsrekommendation tillgänglig</string>
|
||||
|
|
|
@ -41,6 +41,8 @@
|
|||
|
||||
<color name="colorAcceptTempButton">#f4d700</color>
|
||||
<color name="colorTreatmentButton">#67dfe8</color>
|
||||
<color name="colorInsulinButton">#67dfe8</color>
|
||||
<color name="colorCarbsButton">#ffae01</color>
|
||||
<color name="colorCalibrationButton">#e93057</color>
|
||||
<color name="colorCalculatorButton">#67e86a</color>
|
||||
<color name="colorQuickWizardButton">#ffae01</color>
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
<string name="overview_newtempbasal_basalpercent">Basal value [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = current)</string>
|
||||
<string name="setbasalquestion">Accept new temp basal:</string>
|
||||
<string name="overview_bolus_label">Bolus</string>
|
||||
<string name="overview_treatment_label">Treatment</string>
|
||||
<string name="overview_calculator_label">Calculator</string>
|
||||
<string name="constraintapllied">Constraint applied!</string>
|
||||
<string name="confirmation">Confirmation</string>
|
||||
|
@ -936,6 +936,27 @@
|
|||
<string name="enablesmbwithhightemptarget_summary">Enable SMB when there is high temp target active (exercise)</string>
|
||||
<string name="let_temp_basal_run">Let current temp basal run</string>
|
||||
<string name="mute">Mute</string>
|
||||
<string name="overview_insulin_label">Insulin</string>
|
||||
<string name="overview_carbs_label">Carbs</string>
|
||||
<string name="overview_buttons_selection">Buttons</string>
|
||||
<string name="key_show_calibration_button">show_calibration_button</string>
|
||||
<string name="key_show_cgm_button">show_cgm_button</string>
|
||||
<string name="key_show_carbs_button">show_carbs_button</string>
|
||||
<string name="key_show_wizard_button">show_wizard_button</string>
|
||||
<string name="key_show_insulin_button">show_insulin_button</string>
|
||||
<string name="key_show_treatment_button">show_treatment_button</string>
|
||||
<string name="show_calibration_button_summary">Sends a calibration to xDrip+</string>
|
||||
<string name="show_cgm_button_summary">Opens xDrip+, back buttons returns to AAPS</string>
|
||||
<string name="key_insulin_button_increment_1">insulin_button_increment_1</string>
|
||||
<string name="key_insulin_button_increment_2">insulin_button_increment_2</string>
|
||||
<string name="key_insulin_button_increment_3">insulin_button_increment_3</string>
|
||||
<string name="key_carbs_button_increment_1">carbs_button_increment_1</string>
|
||||
<string name="key_carbs_button_increment_2">carbs_button_increment_2</string>
|
||||
<string name="key_carbs_button_increment_3">carbs_button_increment_3</string>
|
||||
<string name="carb_increment_button_message">Number of carbs to add when button is pressed</string>
|
||||
<string name="insulin_increment_button_message">Amount of insulin to add when button is pressed</string>
|
||||
<string name="erro_starting_xdrip">Could not launch xDrip. Make sure only it is installed.</string>
|
||||
<string name="overview_cgm">CGM</string>
|
||||
<string name="nav_historybrowser">History browser</string>
|
||||
<string name="wear_notifysmb_title">Notify on SMB</string>
|
||||
<string name="wear_notifysmb_summary">Show SMB on the watch like a standard bolus.</string>
|
||||
|
|
116
app/src/main/res/xml/pref_overview.xml
Normal file
116
app/src/main/res/xml/pref_overview.xml
Normal file
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:validate="http://schemas.android.com/apk/res-auto">
|
||||
<PreferenceCategory android:title="@string/overview">
|
||||
<PreferenceScreen android:title="@string/overview_buttons_selection">
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/key_show_treatment_button"
|
||||
android:title="Treatments" />
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/key_show_wizard_button"
|
||||
android:title="@string/overview_calculator_label"/>
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_show_insulin_button"
|
||||
android:title="Insulin" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_insulin_button"
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="0.1"
|
||||
validate:floatmaxNumber="5.0"
|
||||
android:defaultValue="0.5"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="First insulin increment"
|
||||
android:dialogMessage="@string/insulin_increment_button_message"
|
||||
android:key="@string/key_insulin_button_increment_1" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_insulin_button"
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="0.1"
|
||||
validate:floatmaxNumber="5.0"
|
||||
android:defaultValue="1.0"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="Second insulin increment"
|
||||
android:dialogMessage="@string/insulin_increment_button_message"
|
||||
android:key="@string/key_insulin_button_increment_2" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_insulin_button"
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="0.1"
|
||||
validate:floatmaxNumber="5.0"
|
||||
android:defaultValue="2.0"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="Third insulin increment"
|
||||
android:dialogMessage="@string/insulin_increment_button_message"
|
||||
android:key="@string/key_insulin_button_increment_3"/>
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_show_carbs_button"
|
||||
android:title="Carbs" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_carbs_button"
|
||||
validate:testType="numeric"
|
||||
validate:minNumber="1"
|
||||
validate:maxNumber="50"
|
||||
android:defaultValue="5"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="First carbs increment"
|
||||
android:dialogMessage="@string/carb_increment_button_message"
|
||||
android:key="@string/key_carbs_button_increment_1" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_carbs_button"
|
||||
validate:testType="numeric"
|
||||
validate:minNumber="1"
|
||||
validate:maxNumber="50"
|
||||
android:defaultValue="10"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="Second carbs increment"
|
||||
android:dialogMessage="@string/carb_increment_button_message"
|
||||
android:key="@string/key_carbs_button_increment_2" />
|
||||
<com.andreabaccega.widget.ValidatingEditTextPreference
|
||||
android:dependency="@string/key_show_carbs_button"
|
||||
validate:testType="numeric"
|
||||
validate:minNumber="1"
|
||||
validate:maxNumber="50"
|
||||
android:defaultValue="20"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="20"
|
||||
android:title="Third carbs increment"
|
||||
android:dialogMessage="@string/carb_increment_button_message"
|
||||
android:key="@string/key_carbs_button_increment_3" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_show_cgm_button"
|
||||
android:title="CGM"
|
||||
android:summary="@string/show_cgm_button_summary"/>
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/key_show_calibration_button"
|
||||
android:title="@string/overview_calibration"
|
||||
android:summary="@string/show_calibration_button_summary"/>
|
||||
|
||||
</PreferenceScreen>
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
Loading…
Reference in a new issue