remove CPP profile
This commit is contained in:
parent
943205c782
commit
fa2e46fbe5
20 changed files with 23 additions and 1463 deletions
|
@ -47,7 +47,6 @@ import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAPlugin;
|
|||
import info.nightscout.androidaps.plugins.OpenAPSSMB.OpenAPSSMBPlugin;
|
||||
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
||||
import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin;
|
||||
import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment;
|
||||
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin;
|
||||
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfilePlugin;
|
||||
|
@ -141,8 +140,6 @@ public class MainApp extends Application {
|
|||
pluginsList.add(NSProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(SimpleProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(LocalProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES)
|
||||
pluginsList.add(CircadianPercentageProfileFragment.getPlugin());
|
||||
pluginsList.add(TreatmentsPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(SafetyPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(ObjectivesPlugin.getPlugin());
|
||||
|
|
|
@ -1,546 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.ProfileCircadianPercentage;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.andreabaccega.widget.FormEditText;
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.events.EventProfileSwitchChange;
|
||||
import info.nightscout.androidaps.plugins.Careportal.CareportalFragment;
|
||||
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
|
||||
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
|
||||
import info.nightscout.androidaps.plugins.Common.SubscriberFragment;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.utils.DecimalFormatter;
|
||||
import info.nightscout.utils.SafeParse;
|
||||
|
||||
public class CircadianPercentageProfileFragment extends SubscriberFragment {
|
||||
private static Logger log = LoggerFactory.getLogger(CircadianPercentageProfileFragment.class);
|
||||
|
||||
private static CircadianPercentageProfilePlugin circadianPercentageProfilePlugin = new CircadianPercentageProfilePlugin();
|
||||
private Object snackbarCaller;
|
||||
|
||||
public static CircadianPercentageProfilePlugin getPlugin() {
|
||||
return circadianPercentageProfilePlugin;
|
||||
}
|
||||
|
||||
FormEditText diaView;
|
||||
RadioButton mgdlView;
|
||||
RadioButton mmolView;
|
||||
FormEditText targetlowView;
|
||||
FormEditText targethighView;
|
||||
FormEditText percentageView;
|
||||
FormEditText timeshiftView;
|
||||
TextView profileView;
|
||||
TextView baseprofileIC;
|
||||
TextView baseprofileBasal;
|
||||
LinearLayout baseprofileBasalLayout;
|
||||
TextView baseprofileISF;
|
||||
Button profileswitchButton;
|
||||
ImageView percentageIcon;
|
||||
ImageView timeIcon;
|
||||
ImageView basaleditIcon;
|
||||
ImageView iceditIcon;
|
||||
ImageView isfeditIcon;
|
||||
BasalEditDialog basalEditDialog;
|
||||
FrameLayout fl;
|
||||
Snackbar mSnackBar;
|
||||
|
||||
static Boolean percentageViewHint = true;
|
||||
static Boolean timeshiftViewHint = true;
|
||||
|
||||
TextWatcher textWatch = 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) {
|
||||
|
||||
if (percentageView.testValidity()) {
|
||||
if (SafeParse.stringToInt(percentageView.getText().toString()) == 0) {
|
||||
circadianPercentageProfilePlugin.percentage = 100;
|
||||
} else {
|
||||
circadianPercentageProfilePlugin.percentage = SafeParse.stringToInt(percentageView.getText().toString());
|
||||
}
|
||||
updateProfileInfo();
|
||||
}
|
||||
if (timeshiftView.testValidity()) {
|
||||
circadianPercentageProfilePlugin.timeshift = SafeParse.stringToInt(timeshiftView.getText().toString());
|
||||
updateProfileInfo();
|
||||
}
|
||||
if (diaView.testValidity()) {
|
||||
circadianPercentageProfilePlugin.dia = SafeParse.stringToDouble(diaView.getText().toString());
|
||||
updateProfileInfo();
|
||||
}
|
||||
if (targethighView.testValidity()) {
|
||||
circadianPercentageProfilePlugin.targetLow = SafeParse.stringToDouble(targetlowView.getText().toString());
|
||||
updateProfileInfo();
|
||||
}
|
||||
if (targetlowView.testValidity()) {
|
||||
circadianPercentageProfilePlugin.targetHigh = SafeParse.stringToDouble(targethighView.getText().toString());
|
||||
updateProfileInfo();
|
||||
}
|
||||
circadianPercentageProfilePlugin.storeSettings();
|
||||
updateProfileInfo();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
showDeprecatedDialog();
|
||||
|
||||
View layout = inflater.inflate(R.layout.circadianpercentageprofile_fragment, container, false);
|
||||
fl = (FrameLayout) layout.findViewById(R.id.circadianpercentageprofile_framelayout);
|
||||
fl.requestFocusFromTouch();
|
||||
diaView = (FormEditText) layout.findViewById(R.id.circadianpercentageprofile_dia);
|
||||
mgdlView = (RadioButton) layout.findViewById(R.id.circadianpercentageprofile_mgdl);
|
||||
mmolView = (RadioButton) layout.findViewById(R.id.circadianpercentageprofile_mmol);
|
||||
targetlowView = (FormEditText) layout.findViewById(R.id.circadianpercentageprofile_targetlow);
|
||||
targethighView = (FormEditText) layout.findViewById(R.id.circadianpercentageprofile_targethigh);
|
||||
percentageView = (FormEditText) layout.findViewById(R.id.circadianpercentageprofile_percentage);
|
||||
timeshiftView = (FormEditText) layout.findViewById(R.id.circadianpercentageprofile_timeshift);
|
||||
profileView = (TextView) layout.findViewById(R.id.circadianpercentageprofile_profileview);
|
||||
baseprofileBasal = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal);
|
||||
baseprofileBasalLayout = (LinearLayout) layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal_layout);
|
||||
baseprofileIC = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofileic);
|
||||
baseprofileISF = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofileisf);
|
||||
percentageIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_percentageicon);
|
||||
timeIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_timeicon);
|
||||
profileswitchButton = (Button) layout.findViewById(R.id.circadianpercentageprofile_profileswitch);
|
||||
|
||||
basaleditIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_basaledit);
|
||||
iceditIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_icedit);
|
||||
isfeditIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_isfedit);
|
||||
|
||||
if (!ConfigBuilderPlugin.getActivePump().getPumpDescription().isTempBasalCapable) {
|
||||
layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal_layout).setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
mgdlView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
circadianPercentageProfilePlugin.mgdl = mgdlView.isChecked();
|
||||
circadianPercentageProfilePlugin.mmol = !circadianPercentageProfilePlugin.mgdl;
|
||||
mmolView.setChecked(circadianPercentageProfilePlugin.mmol);
|
||||
circadianPercentageProfilePlugin.storeSettings();
|
||||
updateProfileInfo();
|
||||
}
|
||||
});
|
||||
mmolView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
circadianPercentageProfilePlugin.mmol = mmolView.isChecked();
|
||||
circadianPercentageProfilePlugin.mgdl = !circadianPercentageProfilePlugin.mmol;
|
||||
mgdlView.setChecked(circadianPercentageProfilePlugin.mgdl);
|
||||
circadianPercentageProfilePlugin.storeSettings();
|
||||
updateProfileInfo();
|
||||
}
|
||||
});
|
||||
|
||||
profileswitchButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
NewNSTreatmentDialog newDialog = new NewNSTreatmentDialog();
|
||||
final OptionsToShow profileswitch = CareportalFragment.PROFILESWITCHDIRECT;
|
||||
profileswitch.executeProfileSwitch = true;
|
||||
newDialog.setOptions(profileswitch, R.string.careportal_profileswitch);
|
||||
newDialog.show(getFragmentManager(), "NewNSTreatmentDialog");
|
||||
}
|
||||
});
|
||||
|
||||
timeIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
timeshiftView.requestFocusFromTouch();
|
||||
timeshiftView.setSelection(timeshiftView.getText().length());
|
||||
((InputMethodManager) getContext()
|
||||
.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(timeshiftView, InputMethodManager.SHOW_IMPLICIT);
|
||||
}
|
||||
});
|
||||
|
||||
percentageIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
percentageView.requestFocusFromTouch();
|
||||
percentageView.setSelection(percentageView.getText().length());
|
||||
((InputMethodManager) getContext()
|
||||
.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(percentageView, InputMethodManager.SHOW_IMPLICIT);
|
||||
}
|
||||
});
|
||||
|
||||
basaleditIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
basalEditDialog = new BasalEditDialog();
|
||||
basalEditDialog.setup(getPlugin().basebasal, getString(R.string.edit_base_basal), CircadianPercentageProfileFragment.this);
|
||||
basalEditDialog.show(getFragmentManager(), getString(R.string.edit_base_basal));
|
||||
}
|
||||
});
|
||||
|
||||
isfeditIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
basalEditDialog = new BasalEditDialog();
|
||||
basalEditDialog.setup(getPlugin().baseisf, getString(R.string.edit_base_isf), CircadianPercentageProfileFragment.this);
|
||||
basalEditDialog.show(getFragmentManager(), getString(R.string.edit_base_isf));
|
||||
}
|
||||
});
|
||||
|
||||
iceditIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
basalEditDialog = new BasalEditDialog();
|
||||
basalEditDialog.setup(getPlugin().baseic, getString(R.string.edit_base_ic), CircadianPercentageProfileFragment.this);
|
||||
basalEditDialog.show(getFragmentManager(), getString(R.string.edit_base_ic));
|
||||
}
|
||||
});
|
||||
|
||||
/*timeshiftView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onFocusChange(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
if(mSnackBar!=null && snackbarCaller == timeshiftView){
|
||||
mSnackBar.dismiss();
|
||||
}
|
||||
timeshiftView.clearFocus();
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
else {
|
||||
if (timeshiftViewHint) {
|
||||
customSnackbar(view, getString(R.string.timeshift_hint), timeshiftView);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
percentageView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onFocusChange(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
if(mSnackBar!=null && snackbarCaller == percentageView){
|
||||
mSnackBar.dismiss();
|
||||
}
|
||||
percentageView.clearFocus();
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
else {
|
||||
if (percentageViewHint) {
|
||||
customSnackbar(view, getString(R.string.percentagefactor_hint), percentageView);
|
||||
}
|
||||
}
|
||||
}
|
||||
});*/
|
||||
|
||||
diaView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onFocusChange(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
diaView.clearFocus();
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
targethighView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onFocusChange(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
targethighView.clearFocus();
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
targetlowView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onFocusChange(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
targetlowView.clearFocus();
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
diaView.addTextChangedListener(textWatch);
|
||||
targetlowView.addTextChangedListener(textWatch);
|
||||
targethighView.addTextChangedListener(textWatch);
|
||||
percentageView.addTextChangedListener(textWatch);
|
||||
timeshiftView.addTextChangedListener(textWatch);
|
||||
|
||||
updateGUI();
|
||||
|
||||
onStatusEvent(new EventInitializationChanged());
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
private void showDeprecatedDialog() {
|
||||
AlertDialog.Builder adb = new AlertDialog.Builder(getContext());
|
||||
adb.setTitle("DEPRECATED! Please migrate!");
|
||||
adb.setMessage("CircadianPercentageProfile has been deprecated. " +
|
||||
"It is recommended to migrate to LocalProfile.\n\n" +
|
||||
"Good news: You won't lose any functionality! Percentage and Timeshift have been ported to the ProfileSwitch :) \n\n " +
|
||||
"How to migrate:\n" +
|
||||
"1) Press MIGRATE, the system will automatically fill the LocalProfile for you.\n" +
|
||||
"2) Switch to LocalProfile in the ConfigBuilder\n" +
|
||||
"3) CHECK that all settings are correct in the LocalProfile!!!");
|
||||
adb.setIcon(android.R.drawable.ic_dialog_alert);
|
||||
adb.setPositiveButton("MIGRATE", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
CircadianPercentageProfilePlugin.migrateToLP();
|
||||
}
|
||||
});
|
||||
adb.setNegativeButton("Cancel", null);
|
||||
adb.show();
|
||||
}
|
||||
|
||||
public void updateGUI() {
|
||||
updateProfileInfo();
|
||||
|
||||
diaView.removeTextChangedListener(textWatch);
|
||||
targetlowView.removeTextChangedListener(textWatch);
|
||||
targethighView.removeTextChangedListener(textWatch);
|
||||
percentageView.removeTextChangedListener(textWatch);
|
||||
timeshiftView.removeTextChangedListener(textWatch);
|
||||
|
||||
mgdlView.setChecked(circadianPercentageProfilePlugin.mgdl);
|
||||
mmolView.setChecked(circadianPercentageProfilePlugin.mmol);
|
||||
diaView.setText(circadianPercentageProfilePlugin.dia.toString());
|
||||
targetlowView.setText(circadianPercentageProfilePlugin.targetLow.toString());
|
||||
targethighView.setText(circadianPercentageProfilePlugin.targetHigh.toString());
|
||||
percentageView.setText("" + circadianPercentageProfilePlugin.percentage);
|
||||
timeshiftView.setText("" + circadianPercentageProfilePlugin.timeshift);
|
||||
|
||||
|
||||
diaView.addTextChangedListener(textWatch);
|
||||
targetlowView.addTextChangedListener(textWatch);
|
||||
targethighView.addTextChangedListener(textWatch);
|
||||
percentageView.addTextChangedListener(textWatch);
|
||||
timeshiftView.addTextChangedListener(textWatch);
|
||||
|
||||
}
|
||||
|
||||
private void customSnackbar(View view, final String Msg, Object snackbarCaller) {
|
||||
if (mSnackBar != null) mSnackBar.dismiss();
|
||||
|
||||
this.snackbarCaller = snackbarCaller;
|
||||
if (timeshiftViewHint || percentageViewHint) {
|
||||
//noinspection WrongConstant
|
||||
mSnackBar = Snackbar.make(view, Msg, 7000)
|
||||
.setActionTextColor(ContextCompat.getColor(MainApp.instance(), R.color.notificationInfo))
|
||||
.setAction(getString(R.string.dont_show_again), new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (Msg.equals(getString(R.string.percentagefactor_hint))) {
|
||||
percentageViewHint = false;
|
||||
} else if (Msg.equals(getString(R.string.timeshift_hint))) {
|
||||
timeshiftViewHint = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
view = mSnackBar.getView();
|
||||
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
|
||||
params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
|
||||
view.setLayoutParams(params);
|
||||
view.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.cardview_dark_background));
|
||||
TextView mainTextView = (TextView) (view).findViewById(android.support.design.R.id.snackbar_text);
|
||||
mainTextView.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.mdtp_white));
|
||||
mSnackBar.show();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateProfileInfo() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<h3>");
|
||||
sb.append(getString(R.string.nsprofileview_activeprofile_label));
|
||||
sb.append("</h3>");
|
||||
sb.append("<h4>");
|
||||
sb.append(getString(R.string.nsprofileview_basal_label));
|
||||
sb.append(" ( ∑");
|
||||
sb.append(DecimalFormatter.to2Decimal(circadianPercentageProfilePlugin.percentageBasalSum()));
|
||||
sb.append("U )");
|
||||
sb.append("</h4> " + circadianPercentageProfilePlugin.basalString());
|
||||
sb.append("<h4>");
|
||||
sb.append(getString(R.string.nsprofileview_ic_label));
|
||||
sb.append("</h4> " + circadianPercentageProfilePlugin.icString());
|
||||
sb.append("<h4>");
|
||||
sb.append(getString(R.string.nsprofileview_isf_label));
|
||||
sb.append("</h4> " + circadianPercentageProfilePlugin.isfString());
|
||||
profileView.setText(Html.fromHtml(sb.toString()));
|
||||
|
||||
baseprofileBasal.setText(Html.fromHtml("<h3>" + getString(R.string.base_profile_label) + " ( ∑" + DecimalFormatter.to2Decimal(circadianPercentageProfilePlugin.baseBasalSum()) + "U )</h3>" +
|
||||
"<h4>" + getString(R.string.nsprofileview_basal_label) + "</h4>" + circadianPercentageProfilePlugin.baseBasalString()));
|
||||
baseprofileIC.setText(Html.fromHtml("<h4>" + getString(R.string.nsprofileview_ic_label) + "</h4>" + circadianPercentageProfilePlugin.baseIcString()));
|
||||
baseprofileISF.setText(Html.fromHtml("<h4>" + getString(R.string.nsprofileview_isf_label) + "</h4>" + circadianPercentageProfilePlugin.baseIsfString()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (basalEditDialog != null && basalEditDialog.isVisible()) {
|
||||
basalEditDialog.dismiss();
|
||||
}
|
||||
basalEditDialog = null;
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
|
||||
public static class BasalEditDialog extends DialogFragment {
|
||||
|
||||
private double[] values;
|
||||
private String title;
|
||||
private CircadianPercentageProfileFragment fragment;
|
||||
|
||||
public void setup(double[] values, String title, CircadianPercentageProfileFragment fragment) {
|
||||
this.values = values;
|
||||
this.title = title;
|
||||
this.fragment = fragment;
|
||||
}
|
||||
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
getDialog().setTitle(title);
|
||||
View view = inflater.inflate(R.layout.circadianpercentageprofile_editbasal_dialog, container, false);
|
||||
LinearLayout list = (LinearLayout) view.findViewById(R.id.circadianpp_editbasal_listlayout);
|
||||
final EditText[] editTexts = new EditText[24];
|
||||
for (int i = 0; i < 24; i++) {
|
||||
View childview = inflater.inflate(R.layout.circadianpercentageprofile_listelement, container, false);
|
||||
((TextView) childview.findViewById(R.id.basal_time_elem)).setText((i < 10 ? "0" : "") + i + ":00: ");
|
||||
|
||||
ImageView copyprevbutton = (ImageView) childview.findViewById(R.id.basal_copyprev_elem);
|
||||
|
||||
if (i == 0) {
|
||||
copyprevbutton.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
final int j = i; //needs to be final to be passed to inner class.
|
||||
copyprevbutton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
editTexts[j].setText(editTexts[j - 1].getText());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
editTexts[i] = ((EditText) childview.findViewById(R.id.basal_edittext_elem));
|
||||
editTexts[i].setText(DecimalFormatter.to2Decimal(values[i]));
|
||||
list.addView(childview);
|
||||
}
|
||||
getDialog().setCancelable(true);
|
||||
|
||||
view.findViewById(R.id.ok_button).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (editTexts[i].getText().length() != 0) {
|
||||
values[i] = SafeParse.stringToDouble(editTexts[i].getText().toString());
|
||||
}
|
||||
}
|
||||
fragment.updateProfileInfo();
|
||||
getPlugin().storeSettings();
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
view.findViewById(R.id.cancel_action).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
if (basalEditDialog != null && basalEditDialog.isVisible()) {
|
||||
basalEditDialog.dismiss();
|
||||
}
|
||||
basalEditDialog = null;
|
||||
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
onStatusEvent(new EventInitializationChanged());
|
||||
fl.requestFocusFromTouch();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventInitializationChanged e) {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null)
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!ConfigBuilderPlugin.getActivePump().isInitialized() || ConfigBuilderPlugin.getActivePump().isSuspended()) {
|
||||
profileswitchButton.setVisibility(View.GONE);
|
||||
} else {
|
||||
profileswitchButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventProfileSwitchChange e) {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null)
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateGUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -1,455 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.ProfileCircadianPercentage;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.interfaces.ProfileInterface;
|
||||
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
|
||||
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfilePlugin;
|
||||
import info.nightscout.utils.DecimalFormatter;
|
||||
import info.nightscout.utils.NSUpload;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.SafeParse;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
/**
|
||||
* Created by Adrian on 12.11.2016.
|
||||
* Based on SimpleProfile created by mike on 05.08.2016.
|
||||
*/
|
||||
public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInterface {
|
||||
public static final String SETTINGS_PREFIX = "CircadianPercentageProfile";
|
||||
private static Logger log = LoggerFactory.getLogger(CircadianPercentageProfilePlugin.class);
|
||||
|
||||
private boolean fragmentEnabled = false;
|
||||
private boolean fragmentVisible = false;
|
||||
|
||||
private static ProfileStore convertedProfile = null;
|
||||
private static String convertedProfileName = null;
|
||||
|
||||
boolean mgdl;
|
||||
boolean mmol;
|
||||
Double dia;
|
||||
Double targetLow;
|
||||
Double targetHigh;
|
||||
public int percentage;
|
||||
public int timeshift;
|
||||
double[] basebasal = new double[]{1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d, 1d};
|
||||
double[] baseisf = new double[]{35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d, 35d};
|
||||
double[] baseic = new double[]{4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d, 4d};
|
||||
|
||||
public CircadianPercentageProfilePlugin() {
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFragmentClass() {
|
||||
return CircadianPercentageProfileFragment.class.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return PluginBase.PROFILE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return MainApp.instance().getString(R.string.circadian_percentage_profile);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNameShort() {
|
||||
String name = MainApp.sResources.getString(R.string.circadian_percentage_profile_shortname);
|
||||
if (!name.trim().isEmpty()) {
|
||||
//only if translation exists
|
||||
return name;
|
||||
}
|
||||
// use long name as fallback
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(int type) {
|
||||
return type == PROFILE && fragmentEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisibleInTabs(int type) {
|
||||
return type == PROFILE && fragmentVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeHidden(int type) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFragment() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInList(int type) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFragmentEnabled(int type, boolean fragmentEnabled) {
|
||||
if (type == PROFILE) this.fragmentEnabled = fragmentEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFragmentVisible(int type, boolean fragmentVisible) {
|
||||
if (type == PROFILE) this.fragmentVisible = fragmentVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPreferencesId() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
void storeSettings() {
|
||||
if (Config.logPrefsChange)
|
||||
log.debug("Storing settings");
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putBoolean(SETTINGS_PREFIX + "mmol", mmol);
|
||||
editor.putBoolean(SETTINGS_PREFIX + "mgdl", mgdl);
|
||||
editor.putString(SETTINGS_PREFIX + "dia", dia.toString());
|
||||
editor.putString(SETTINGS_PREFIX + "targetlow", targetLow.toString());
|
||||
editor.putString(SETTINGS_PREFIX + "targethigh", targetHigh.toString());
|
||||
editor.putString(SETTINGS_PREFIX + "timeshift", timeshift + "");
|
||||
editor.putString(SETTINGS_PREFIX + "percentage", percentage + "");
|
||||
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
editor.putString(SETTINGS_PREFIX + "basebasal" + i, DecimalFormatter.to2Decimal(basebasal[i]));
|
||||
editor.putString(SETTINGS_PREFIX + "baseisf" + i, DecimalFormatter.to2Decimal(baseisf[i]));
|
||||
editor.putString(SETTINGS_PREFIX + "baseic" + i, DecimalFormatter.to2Decimal(baseic[i]));
|
||||
}
|
||||
editor.commit();
|
||||
createConvertedProfile();
|
||||
}
|
||||
|
||||
void loadSettings() {
|
||||
if (Config.logPrefsChange)
|
||||
log.debug("Loading stored settings");
|
||||
|
||||
mgdl = SP.getBoolean(SETTINGS_PREFIX + "mgdl", true);
|
||||
mmol = SP.getBoolean(SETTINGS_PREFIX + "mmol", false);
|
||||
dia = SP.getDouble(SETTINGS_PREFIX + "dia", Constants.defaultDIA);
|
||||
targetLow = SP.getDouble(SETTINGS_PREFIX + "targetlow", 80d);
|
||||
targetHigh = SP.getDouble(SETTINGS_PREFIX + "targethigh", 120d);
|
||||
percentage = SP.getInt(SETTINGS_PREFIX + "percentage", 100);
|
||||
timeshift = SP.getInt(SETTINGS_PREFIX + "timeshift", 0);
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
basebasal[i] = SP.getDouble(SETTINGS_PREFIX + "basebasal" + i, basebasal[i]);
|
||||
baseic[i] = SP.getDouble(SETTINGS_PREFIX + "baseic" + i, baseic[i]);
|
||||
baseisf[i] = SP.getDouble(SETTINGS_PREFIX + "baseisf" + i, baseisf[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public String externallySetParameters(int timeshift, int percentage) {
|
||||
|
||||
String msg = "";
|
||||
|
||||
if (!fragmentEnabled) {
|
||||
msg += "NO CPP!" + "\n";
|
||||
}
|
||||
|
||||
//check for validity
|
||||
if (percentage < Constants.CPP_MIN_PERCENTAGE || percentage > Constants.CPP_MAX_PERCENTAGE) {
|
||||
msg += String.format(MainApp.sResources.getString(R.string.valueoutofrange), "Profile-Percentage") + "\n";
|
||||
}
|
||||
if (timeshift < 0 || timeshift > 23) {
|
||||
msg += String.format(MainApp.sResources.getString(R.string.valueoutofrange), "Profile-Timeshift") + "\n";
|
||||
}
|
||||
final Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||
|
||||
if (profile == null || profile.getBasal() == null) {
|
||||
msg += MainApp.sResources.getString(R.string.cpp_notloadedplugins) + "\n";
|
||||
}
|
||||
if (!"".equals(msg)) {
|
||||
msg += MainApp.sResources.getString(R.string.cpp_valuesnotstored);
|
||||
return msg;
|
||||
}
|
||||
|
||||
//store profile
|
||||
this.timeshift = timeshift;
|
||||
this.percentage = percentage;
|
||||
storeSettings();
|
||||
|
||||
|
||||
//send profile to pumpe
|
||||
new NewNSTreatmentDialog(); //init
|
||||
NewNSTreatmentDialog.doProfileSwitch(this.getProfile(), this.getProfileName(), 0, percentage, timeshift);
|
||||
|
||||
//return formatted string
|
||||
/*msg += "%: " + this.percentage + " h: +" + this.timeshift;
|
||||
msg += "\n";
|
||||
msg += "\nBasal:\n" + basalString() + "\n";
|
||||
msg += "\nISF:\n" + isfString() + "\n";
|
||||
msg += "\nIC:\n" + isfString() + "\n";*/
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
public static void migrateToLP() {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putBoolean("LocalProfile" + "mmol", SP.getBoolean(SETTINGS_PREFIX + "mmol", false));
|
||||
editor.putBoolean("LocalProfile" + "mgdl", SP.getBoolean(SETTINGS_PREFIX + "mgdl", true));
|
||||
editor.putString("LocalProfile" + "dia", "" + SP.getDouble(SETTINGS_PREFIX + "dia", Constants.defaultDIA));
|
||||
editor.putString("LocalProfile" + "ic", getLPic());
|
||||
editor.putString("LocalProfile" + "isf", getLPisf());
|
||||
editor.putString("LocalProfile" + "basal", getLPbasal());
|
||||
try {
|
||||
JSONArray targetLow = new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", SP.getDouble(SETTINGS_PREFIX + "targetlow", 120d)));
|
||||
JSONArray targetHigh = new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", SP.getDouble(SETTINGS_PREFIX + "targethigh", 120d)));
|
||||
editor.putString("LocalProfile" + "targetlow", targetLow.toString());
|
||||
editor.putString("LocalProfile" + "targethigh", targetHigh.toString());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
editor.commit();
|
||||
LocalProfilePlugin lp = MainApp.getSpecificPlugin(LocalProfilePlugin.class);
|
||||
lp.loadSettings();
|
||||
|
||||
/* TODO: remove Settings and switch to LP later on
|
||||
* For now only nag the user every time (s)he opens the CPP fragment and offer to migrate.
|
||||
* Keep settings for now in order to allow the user to check that the migration went well.
|
||||
*/
|
||||
//removeSettings();
|
||||
|
||||
}
|
||||
|
||||
public static String getLPisf() {
|
||||
return getLPConversion("baseisf", 35d);
|
||||
}
|
||||
|
||||
public static String getLPic() {
|
||||
return getLPConversion("baseic", 4);
|
||||
}
|
||||
|
||||
public static String getLPbasal() {
|
||||
return getLPConversion("basebasal", 1);
|
||||
}
|
||||
|
||||
public static String getLPConversion(String type, double defaultValue) {
|
||||
try {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
double last = -1d;
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
double value = SP.getDouble(SETTINGS_PREFIX + type + i, defaultValue);
|
||||
String time;
|
||||
DecimalFormat df = new DecimalFormat("00");
|
||||
time = df.format(i) + ":00";
|
||||
if (last != value) {
|
||||
jsonArray.put(new JSONObject().put("time", time).put("timeAsSeconds", i * 60 * 60).put("value", value));
|
||||
}
|
||||
last = value;
|
||||
}
|
||||
return jsonArray.toString();
|
||||
} catch (JSONException e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
return LocalProfilePlugin.DEFAULTARRAY;
|
||||
}
|
||||
|
||||
static void removeSettings() {
|
||||
if (Config.logPrefsChange)
|
||||
log.debug("Removing settings");
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.remove(SETTINGS_PREFIX + "mmol");
|
||||
editor.remove(SETTINGS_PREFIX + "mgdl");
|
||||
editor.remove(SETTINGS_PREFIX + "dia");
|
||||
editor.remove(SETTINGS_PREFIX + "targetlow");
|
||||
editor.remove(SETTINGS_PREFIX + "targethigh");
|
||||
editor.remove(SETTINGS_PREFIX + "timeshift");
|
||||
editor.remove(SETTINGS_PREFIX + "percentage");
|
||||
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
editor.remove(SETTINGS_PREFIX + "basebasal");
|
||||
editor.remove(SETTINGS_PREFIX + "baseisf" + i);
|
||||
editor.remove(SETTINGS_PREFIX + "baseic" + i);
|
||||
}
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
private void createConvertedProfile() {
|
||||
JSONObject json = new JSONObject();
|
||||
JSONObject store = new JSONObject();
|
||||
JSONObject profile = new JSONObject();
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(DecimalFormatter.to2Decimal(sum(basebasal)));
|
||||
stringBuilder.append("U@");
|
||||
stringBuilder.append(percentage);
|
||||
stringBuilder.append("%>");
|
||||
stringBuilder.append(timeshift);
|
||||
stringBuilder.append("h");
|
||||
String profileName = stringBuilder.toString();
|
||||
|
||||
try {
|
||||
json.put("defaultProfile", profileName);
|
||||
json.put("store", store);
|
||||
profile.put("dia", dia);
|
||||
|
||||
int offset = -(timeshift % 24) + 24;
|
||||
|
||||
JSONArray icArray = new JSONArray();
|
||||
JSONArray isfArray = new JSONArray();
|
||||
JSONArray basalArray = new JSONArray();
|
||||
for (int i = 0; i < 24; i++) {
|
||||
String time;
|
||||
DecimalFormat df = new DecimalFormat("00");
|
||||
time = df.format(i) + ":00";
|
||||
icArray.put(new JSONObject().put("time", time).put("timeAsSeconds", i * 60 * 60).put("value", baseic[(offset + i) % 24] * 100d / percentage));
|
||||
isfArray.put(new JSONObject().put("time", time).put("timeAsSeconds", i * 60 * 60).put("value", baseisf[(offset + i) % 24] * 100d / percentage));
|
||||
basalArray.put(new JSONObject().put("time", time).put("timeAsSeconds", i * 60 * 60).put("value", basebasal[(offset + i) % 24] * percentage / 100d));
|
||||
}
|
||||
profile.put("carbratio", icArray);
|
||||
profile.put("sens", isfArray);
|
||||
profile.put("basal", basalArray);
|
||||
|
||||
|
||||
profile.put("target_low", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", targetLow)));
|
||||
profile.put("target_high", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", targetHigh)));
|
||||
profile.put("units", mgdl ? Constants.MGDL : Constants.MMOL);
|
||||
store.put(profileName, profile);
|
||||
} catch (JSONException e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
convertedProfile = new ProfileStore(json);
|
||||
convertedProfileName = profileName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfileStore getProfile() {
|
||||
if (convertedProfile == null)
|
||||
createConvertedProfile();
|
||||
|
||||
performLimitCheck();
|
||||
return convertedProfile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnits() {
|
||||
return mgdl ? Constants.MGDL : Constants.MMOL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProfileName() {
|
||||
if (convertedProfile == null)
|
||||
createConvertedProfile();
|
||||
|
||||
performLimitCheck();
|
||||
return convertedProfileName;
|
||||
}
|
||||
|
||||
private void performLimitCheck() {
|
||||
if (percentage < Constants.CPP_MIN_PERCENTAGE || percentage > Constants.CPP_MAX_PERCENTAGE) {
|
||||
String msg = String.format(MainApp.sResources.getString(R.string.valueoutofrange), "Profile-Percentage");
|
||||
log.error(msg);
|
||||
NSUpload.uploadError(msg);
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), msg, R.raw.error);
|
||||
percentage = Math.max(percentage, Constants.CPP_MIN_PERCENTAGE);
|
||||
percentage = Math.min(percentage, Constants.CPP_MAX_PERCENTAGE);
|
||||
}
|
||||
}
|
||||
|
||||
String basalString() {
|
||||
return profileString(basebasal, timeshift, percentage, true);
|
||||
}
|
||||
|
||||
String icString() {
|
||||
return profileString(baseic, timeshift, percentage, false);
|
||||
}
|
||||
|
||||
String isfString() {
|
||||
return profileString(baseisf, timeshift, percentage, false);
|
||||
}
|
||||
|
||||
String baseIcString() {
|
||||
return profileString(baseic, 0, 100, false);
|
||||
}
|
||||
|
||||
String baseIsfString() {
|
||||
return profileString(baseisf, 0, 100, false);
|
||||
}
|
||||
|
||||
String baseBasalString() {
|
||||
return profileString(basebasal, 0, 100, true);
|
||||
}
|
||||
|
||||
public double baseBasalSum() {
|
||||
return sum(basebasal);
|
||||
}
|
||||
|
||||
public double percentageBasalSum() {
|
||||
double result = 0;
|
||||
for (int i = 0; i < basebasal.length; i++) {
|
||||
result += SafeParse.stringToDouble(DecimalFormatter.to2Decimal(basebasal[i] * percentage / 100d));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static double sum(double values[]) {
|
||||
double result = 0;
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
result += values[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private static String profileString(double[] values, int timeshift, int percentage, boolean inc) {
|
||||
timeshift = -(timeshift % 24) + 24;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<b>");
|
||||
sb.append(0);
|
||||
sb.append("h: ");
|
||||
sb.append("</b>");
|
||||
sb.append(DecimalFormatter.to2Decimal(values[(timeshift + 0) % 24] * (inc ? percentage / 100d : 100d / percentage)));
|
||||
double prevVal = values[(timeshift + 0) % 24];
|
||||
for (int i = 1; i < 24; i++) {
|
||||
if (prevVal != values[(timeshift + i) % 24]) {
|
||||
sb.append(", ");
|
||||
sb.append("<b>");
|
||||
sb.append(i);
|
||||
sb.append("h: ");
|
||||
sb.append("</b>");
|
||||
sb.append(DecimalFormatter.to2Decimal(values[(timeshift + i) % 24] * (inc ? percentage / 100d : 100d / percentage)));
|
||||
prevVal = values[(timeshift + i) % 24];
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public int getPercentage() {
|
||||
return percentage;
|
||||
}
|
||||
|
||||
public int getTimeshift() {
|
||||
return timeshift;
|
||||
}
|
||||
}
|
|
@ -586,10 +586,10 @@ public class ActionStringHandler {
|
|||
final Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||
|
||||
if (profile == null || profile.getBasal() == null) {
|
||||
msg += MainApp.sResources.getString(R.string.cpp_notloadedplugins) + "\n";
|
||||
msg += MainApp.sResources.getString(R.string.notloadedplugins) + "\n";
|
||||
}
|
||||
if (!"".equals(msg)) {
|
||||
msg += MainApp.sResources.getString(R.string.cpp_valuesnotstored);
|
||||
msg += MainApp.sResources.getString(R.string.valuesnotstored);
|
||||
String rTitle = "STATUS";
|
||||
String rAction = "statusmessage";
|
||||
WearPlugin.getPlugin().requestActionConfirmation(rTitle, msg, rAction);
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:focusableInTouchMode="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<LinearLayout
|
||||
android:id="@+id/circadianpp_editbasal_listlayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Insert elements programmatically -->
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
<View
|
||||
android:id="@+id/fill_preset_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@android:color/darker_gray"/>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel_action"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.3"
|
||||
android:padding="10dp"
|
||||
android:text="@string/cancel"
|
||||
android:textSize="20sp" />
|
||||
<Button
|
||||
android:id="@+id/ok_button"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.3"
|
||||
android:padding="10dp"
|
||||
android:text="@string/ok"
|
||||
android:textSize="20sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -1,307 +0,0 @@
|
|||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:validate="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:id="@+id/circadianpercentageprofile_framelayout"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
tools:context=".plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment">
|
||||
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/circadianpercentageprofile_profileview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="6dp"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:padding="6dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="horizontal"
|
||||
android:padding="5dp"
|
||||
android:backgroundTint="@color/mdtp_transparent_black"
|
||||
android:background="@drawable/pillborder"
|
||||
android:backgroundTintMode="src_over">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/circadianpercentageprofile_percentageicon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/ic_percentage"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||
|
||||
<com.andreabaccega.widget.FormEditText
|
||||
validate:testType="numericRange"
|
||||
validate:minNumber="50"
|
||||
validate:maxNumber="200"
|
||||
android:digits="0123456789.,"
|
||||
android:id="@+id/circadianpercentageprofile_percentage"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="number"
|
||||
android:selectAllOnFocus="true"
|
||||
android:textAlignment="center" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="horizontal"
|
||||
android:padding="5dp"
|
||||
android:backgroundTint="@color/mdtp_transparent_black"
|
||||
android:background="@drawable/pillborder"
|
||||
android:backgroundTintMode="src_over">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/circadianpercentageprofile_timeicon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/ic_time"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||
|
||||
<com.andreabaccega.widget.FormEditText
|
||||
validate:testType="numericRange"
|
||||
validate:minNumber="0"
|
||||
validate:maxNumber="24"
|
||||
android:digits="0123456789.,"
|
||||
android:id="@+id/circadianpercentageprofile_timeshift"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="number"
|
||||
android:selectAllOnFocus="true"
|
||||
android:textAlignment="center" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/circadianpercentageprofile_profileswitch"
|
||||
style="?android:attr/buttonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginTop="3dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:text="@string/activate_profile"
|
||||
android:textColor="@color/colorProfileSwitchButton" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="6dp"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:orientation="vertical"
|
||||
android:padding="6dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:orientation="horizontal"
|
||||
android:id="@+id/circadianpercentageprofile_baseprofilebasal_layout"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/circadianpercentageprofile_baseprofilebasal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/circadianpercentageprofile_basaledit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="0"
|
||||
android:src="@mipmap/ic_edit"/>
|
||||
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="5dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/circadianpercentageprofile_baseprofileic"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/circadianpercentageprofile_icedit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="0"
|
||||
android:src="@mipmap/ic_edit"/>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="5dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/circadianpercentageprofile_baseprofileisf"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/circadianpercentageprofile_isfedit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="0"
|
||||
android:src="@mipmap/ic_edit"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
<TableLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="left|top"
|
||||
android:layout_marginLeft="6dp">
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/units"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/circadianpercentageprofile_mgdl"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="2"
|
||||
android:text="@string/mgdl" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/circadianpercentageprofile_mmol"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="3"
|
||||
android:text="@string/mmol" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dia"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<com.andreabaccega.widget.FormEditText
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="1.0"
|
||||
validate:floatmaxNumber="10.0"
|
||||
android:digits="0123456789.,"
|
||||
android:selectAllOnFocus="true"
|
||||
android:id="@+id/circadianpercentageprofile_dia"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="2"
|
||||
android:inputType="numberDecimal" />
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/target_range"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<com.andreabaccega.widget.FormEditText
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="4.0"
|
||||
validate:floatmaxNumber="180.0"
|
||||
android:digits="0123456789.,"
|
||||
android:selectAllOnFocus="true"
|
||||
android:id="@+id/circadianpercentageprofile_targetlow"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="2"
|
||||
android:inputType="numberDecimal" />
|
||||
|
||||
<com.andreabaccega.widget.FormEditText
|
||||
validate:testType="floatNumericRange"
|
||||
validate:floatminNumber="4.0"
|
||||
validate:floatmaxNumber="270.0"
|
||||
android:digits="0123456789.,"
|
||||
android:selectAllOnFocus="true"
|
||||
android:id="@+id/circadianpercentageprofile_targethigh"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="2"
|
||||
android:inputType="numberDecimal" />
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</FrameLayout>
|
|
@ -1,31 +0,0 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="5dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/basal_time_elem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/basal_edittext_elem"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:inputType="numberDecimal"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/basal_copyprev_elem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:src="@mipmap/ic_copyprev"/>
|
||||
</LinearLayout>
|
|
@ -357,7 +357,6 @@
|
|||
<string name="edit_base_isf">Редактирай Инс. чувствителност</string>
|
||||
<string name="edit_base_ic">Редактирай Инс./ВХ</string>
|
||||
<string name="base_profile_label">Базов профил:</string>
|
||||
<string name="circadian_percentage_profile">Процентен профил</string>
|
||||
<string name="prefs_range_title">Диапазон за визуализация</string>
|
||||
<string name="prefs_range_summary">Стойност на линиите за ниска и висока КЗ (mmol/l) за телефона и часовника</string>
|
||||
<string name="low_mark">Ниска КЗ под</string>
|
||||
|
@ -420,7 +419,6 @@
|
|||
<string name="temptargetrange_shortname">Вцел</string>
|
||||
<string name="localprofile_shortname">ЛПр</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">ППр</string>
|
||||
<string name="tempbasals_shortname">ВБ</string>
|
||||
<string name="overview_shortname">ОСН</string>
|
||||
<string name="virtualpump_shortname">ВП</string>
|
||||
|
@ -612,9 +610,8 @@
|
|||
<string name="sensitivityweightedaverage">чрез Среднопретеглената стойност</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Откажи</string>
|
||||
<string name="cpp_sync_setting_missing">трябва да е активно за да изпрати стойностите към помпата!</string>
|
||||
<string name="cpp_notloadedplugins">Не всички профили са заредени!</string>
|
||||
<string name="cpp_valuesnotstored">Стойностите не са запазени!</string>
|
||||
<string name="notloadedplugins">Не всички профили са заредени!</string>
|
||||
<string name="valuesnotstored">Стойностите не са запазени!</string>
|
||||
<string name="clearlog">Изчисти лога</string>
|
||||
<string name="nosuccess">неуспешно - моля проверете телефона</string>
|
||||
<string name="notavailable">Недостъпно</string>
|
||||
|
|
|
@ -313,7 +313,6 @@
|
|||
<string name="button1">Tlačítko 1</string>
|
||||
<string name="button2">Tlačítko 2</string>
|
||||
<string name="button3">Tlačítko 3</string>
|
||||
<string name="circadian_percentage_profile">Cirkadiánní procentuální profil</string>
|
||||
<string name="dia">DIA:</string>
|
||||
<string name="disabledloop">Smyčka zakázána</string>
|
||||
<string name="edit_base_basal">Editovat základní bazál:</string>
|
||||
|
@ -395,7 +394,6 @@
|
|||
<string name="localprofile_shortname">MPRF</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="configbuilder_shortname">KONF</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="careportal_shortname">PÉČE</string>
|
||||
<string name="advancedsettings_title">Rozšířené nastavení</string>
|
||||
<string name="always_use_shortavg">Vždy používat krátkodobý průměrný rozdíl glykémií místo rozdílu posledních 2 hodnot</string>
|
||||
|
@ -550,9 +548,8 @@
|
|||
<string name="careportal_sensorage_label_short">SEN</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="configbuilder_sensitivity">Detekce citlivosti</string>
|
||||
<string name="cpp_notloadedplugins">Všechny profily nenačteny</string>
|
||||
<string name="cpp_sync_setting_missing">musí být aktivované, aby šly poslat hodnoty do pumpy!</string>
|
||||
<string name="cpp_valuesnotstored">Hodnoty nejsou uloženy!</string>
|
||||
<string name="notloadedplugins">Všechny profily nenačteny</string>
|
||||
<string name="valuesnotstored">Hodnoty nejsou uloženy!</string>
|
||||
<string name="danarv2pump">DanaRv2</string>
|
||||
<string name="dev">ODCH</string>
|
||||
<string name="device">Zařízení</string>
|
||||
|
|
|
@ -311,7 +311,6 @@
|
|||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="configbuilder_shortname">CONF</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="careportal_shortname">CP</string>
|
||||
<string name="error_only_numeric_digits_allowed">Bitte verwende nur Ziffern.</string>
|
||||
<string name="error_field_must_not_be_empty">Pflichtfeld</string>
|
||||
|
@ -394,9 +393,8 @@
|
|||
<string name="careportal_pumpbatterychange">Pumpenbatterie-Wechsel</string>
|
||||
<string name="careportal_sensorage_label_short">SAGE</string>
|
||||
<string name="configbuilder_insulin">Insulin</string>
|
||||
<string name="cpp_notloadedplugins">Es sind nicht alle Profile geladen!</string>
|
||||
<string name="cpp_sync_setting_missing">muss aktiviert werden, um Werte an die Pumpe zu senden!</string>
|
||||
<string name="cpp_valuesnotstored">Werte nicht gespeichert!</string>
|
||||
<string name="notloadedplugins">Es sind nicht alle Profile geladen!</string>
|
||||
<string name="valuesnotstored">Werte nicht gespeichert!</string>
|
||||
<string name="danar_enableextendedbolus">Aktiviere verlängerten Bolus in der Pumpe</string>
|
||||
<string name="danar_stats">DanaR Stats</string>
|
||||
<string name="danar_stats_amount_days"># Tage</string>
|
||||
|
@ -620,7 +618,6 @@
|
|||
<string name="careportal_newnstreatment_percentage_label">Prozentsatz</string>
|
||||
<string name="careportal_newnstreatment_timeshift_label">Zeitverschiebung</string>
|
||||
<string name="careportal_pbage_label_short">BAT</string>
|
||||
<string name="circadian_percentage_profile">CircadianPercentage-Profil</string>
|
||||
<string name="connectiontimedout">Zeitüberschreitung der Verbindung</string>
|
||||
<string name="danar_history_prime">Füllen</string>
|
||||
<string name="danar_debolus">DE-Bolus</string>
|
||||
|
|
|
@ -354,7 +354,6 @@
|
|||
<string name="edit_base_isf">Ρύθμιση Βασικού-ISF:</string>
|
||||
<string name="edit_base_ic">Ρύθμιση Βασικού-IC:</string>
|
||||
<string name="base_profile_label">Βασικό Προφίλ:</string>
|
||||
<string name="circadian_percentage_profile">Ποσοστό προφίλ κυκλώματος</string>
|
||||
<string name="prefs_range_title">Εύρος εμφάνισης</string>
|
||||
<string name="prefs_range_summary">Υψηλό και Χαμηλό σημείο για την γραφική στην Επισκόπηση και Smartwatch</string>
|
||||
<string name="low_mark">ΧΑΜΗΛΟ σημείο</string>
|
||||
|
@ -417,7 +416,6 @@
|
|||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="overview_shortname">HOME</string>
|
||||
<string name="virtualpump_shortname">VPUMP</string>
|
||||
|
@ -611,9 +609,8 @@
|
|||
<string name="sensitivityweightedaverage">Σταθμισμένος μέσος όρος ευαισθησίας</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Ακύρωση</string>
|
||||
<string name="cpp_sync_setting_missing">Χρειάζεται να ενεργοποιηθεί για να στείλει τιμές στην αντλία!</string>
|
||||
<string name="cpp_notloadedplugins">Δεν έχουν φορτωθεί όλα τα προφίλ</string>
|
||||
<string name="cpp_valuesnotstored">Οι τιμές δεν αποθηκεύτηκαν!</string>
|
||||
<string name="notloadedplugins">Δεν έχουν φορτωθεί όλα τα προφίλ</string>
|
||||
<string name="valuesnotstored">Οι τιμές δεν αποθηκεύτηκαν!</string>
|
||||
<string name="wear_overviewnotifications">Επισκόπηση ειδοποιήσεων</string>
|
||||
<string name="wear_overviewnotifications_summary">Αποστολή ειδοποιήσεων ως ειδήσεων για τα ρολόγια</string>
|
||||
<string name="ns_localbroadcasts">Ενεργοποιήστε την αποστολή σε άλλες εφαρμογές (όπως xDrip)</string>
|
||||
|
|
|
@ -333,7 +333,6 @@
|
|||
<string name="localprofile_shortname">"PerfLoc"</string>
|
||||
<string name="danarpump_shortname">"Dana"</string>
|
||||
<string name="configbuilder_shortname">"Conf"</string>
|
||||
<string name="circadian_percentage_profile_shortname">"CPP"</string>
|
||||
<string name="careportal_shortname">"CP"</string>
|
||||
<string name="activity">Actividad</string>
|
||||
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importantes para trazar y verificar que el algoritmo funcione correctamente)</string>
|
||||
|
@ -404,7 +403,6 @@
|
|||
<string name="edit_base_basal">Editar Base-Basal:</string>
|
||||
<string name="edit_base_isf">Edidat Base-ISF:</string>
|
||||
<string name="edit_base_ic">Editar Base-IC:</string>
|
||||
<string name="circadian_percentage_profile">CircadianPercentageProfile</string>
|
||||
<string name="wear">Reloj</string>
|
||||
<string name="open_settings_on_wear">Abrir ajustes en reloj</string>
|
||||
<string name="batterydischarged">Batería de la bomba descargada</string>
|
||||
|
@ -625,9 +623,8 @@
|
|||
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Cancelar</string>
|
||||
<string name="cpp_sync_setting_missing">necesita ser activado para mandar valores a la bomba!</string>
|
||||
<string name="cpp_notloadedplugins">Faltan perfiles!</string>
|
||||
<string name="cpp_valuesnotstored">Valores no guardados!</string>
|
||||
<string name="notloadedplugins">Faltan perfiles!</string>
|
||||
<string name="valuesnotstored">Valores no guardados!</string>
|
||||
<string name="wear_overviewnotifications">Resumen avisos</string>
|
||||
<string name="wear_overviewnotifications_summary">Mandar resumen de avisos como avisos de confirmacion por reloj.</string>
|
||||
<string name="combopump" translatable="false">Accu-Chek Combo</string>
|
||||
|
|
|
@ -353,7 +353,6 @@
|
|||
<string name="edit_base_isf">"Éditer Facteur SI de Base: "</string>
|
||||
<string name="edit_base_ic">"Éditer I:G de Base: "</string>
|
||||
<string name="base_profile_label">Profil de Base:</string>
|
||||
<string name="circadian_percentage_profile">Profil en Pourcentage Circadien</string>
|
||||
<string name="prefs_range_title">Écart de visualisation</string>
|
||||
<string name="prefs_range_summary">Les repères hauts et bas sur les graphiques pour l’apercu et la montre</string>
|
||||
<string name="low_mark">Repère BAS</string>
|
||||
|
@ -416,7 +415,6 @@
|
|||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="overview_shortname">HOME</string>
|
||||
<string name="virtualpump_shortname">POMPEV</string>
|
||||
|
@ -608,9 +606,8 @@
|
|||
<string name="sensitivityweightedaverage">Sensibilité avec moyenne pondérée</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Annuler</string>
|
||||
<string name="cpp_sync_setting_missing">Besoin d’être activé(e) pour que les valeurs soient envoyées à la pompe!</string>
|
||||
<string name="cpp_notloadedplugins">Pas tous les profils sont téléchargés!</string>
|
||||
<string name="cpp_valuesnotstored">Valeurs non enregistrées!</string>
|
||||
<string name="notloadedplugins">Pas tous les profils sont téléchargés!</string>
|
||||
<string name="valuesnotstored">Valeurs non enregistrées!</string>
|
||||
<string name="wear_overviewnotifications">Notifications d\'aperçu</string>
|
||||
<string name="wear_overviewnotifications_summary">Transférez les notifications d’aperçu comme des messages de confirmation sur la montre.</string>
|
||||
<string name="ns_localbroadcasts">Activer les transmissions de données sur d\'autres app. (ex. Xdrip)</string>
|
||||
|
|
|
@ -66,8 +66,6 @@
|
|||
<string name="careportal_temporarytargetcancel">Cancellare Target Temporanea</string>
|
||||
<string name="changeyourinput">Cambia il tuo imput</string>
|
||||
<string name="child">Ragazzi</string>
|
||||
<string name="circadian_percentage_profile">Percentuale del profilo circadiano</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="closedloop">Chiusura Loop</string>
|
||||
<string name="comment">Commenti</string>
|
||||
<string name="configbuilder">Configurazione Strutturale</string>
|
||||
|
|
|
@ -359,7 +359,6 @@
|
|||
<string name="edit_base_isf">Edit Base-ISF:</string>
|
||||
<string name="edit_base_ic">Edit Base-IC:</string>
|
||||
<string name="base_profile_label">Base Profile:</string>
|
||||
<string name="circadian_percentage_profile">CircadianPercentageProfile</string>
|
||||
<string name="prefs_range_title">차트 표시 범위</string>
|
||||
<string name="prefs_range_summary">개요/스마트워치 차트 표시용 고/저혈당 선</string>
|
||||
<string name="low_mark">저혈당 선</string>
|
||||
|
@ -422,7 +421,6 @@
|
|||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="overview_shortname">HOME</string>
|
||||
<string name="virtualpump_shortname">VPUMP</string>
|
||||
|
@ -623,9 +621,8 @@
|
|||
<string name="sensitivityweightedaverage">민감도 가중평균</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Cancel</string>
|
||||
<string name="cpp_sync_setting_missing">needs to be activated to send values to the pump!</string>
|
||||
<string name="cpp_notloadedplugins">Not all profiles loaded!</string>
|
||||
<string name="cpp_valuesnotstored">Values not stored!</string>
|
||||
<string name="notloadedplugins">Not all profiles loaded!</string>
|
||||
<string name="valuesnotstored">Values not stored!</string>
|
||||
<string name="wear_overviewnotifications">개요 알림</string>
|
||||
<string name="wear_overviewnotifications_summary">개요 알림을 웨어확인메세지로 전달합니다.</string>
|
||||
<string name="ns_localbroadcasts">(xDrip 같은) 다른 앱으로의 브로드캐스트를 활성화합니다.</string>
|
||||
|
|
|
@ -159,9 +159,8 @@
|
|||
<string name="copied_to_clipboard">Gekopieerd naar klembord</string>
|
||||
<string name="copy_to_clipboard">Kopieren naar klembord</string>
|
||||
<string name="correctionbous">Correctie</string>
|
||||
<string name="cpp_notloadedplugins">Niet alle profielen zijn geladen!</string>
|
||||
<string name="cpp_sync_setting_missing">Moet geactiveerd worden om waardes naat de pomp te verzenden!</string>
|
||||
<string name="cpp_valuesnotstored">Waarden niet opgeslagen!</string>
|
||||
<string name="notloadedplugins">Niet alle profielen zijn geladen!</string>
|
||||
<string name="valuesnotstored">Waarden niet opgeslagen!</string>
|
||||
<string name="cs_lang">Čeština</string>
|
||||
<string name="danar_alarm">Alarm</string>
|
||||
<string name="danar_basalhour">Basaal uur</string>
|
||||
|
@ -308,7 +307,6 @@
|
|||
<string name="danar_invalidinput">Verkeerde ingave</string>
|
||||
<string name="danar_iob_label">Pomp IOB</string>
|
||||
<string name="basal_rate">Basaal:</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="danar_history_dailyinsulin">Dagtotaal insuline</string>
|
||||
<string name="danar_stats_date">Datum</string>
|
||||
<string name="danar_stats_tbb">Totaal basaal</string>
|
||||
|
@ -521,7 +519,6 @@
|
|||
<string name="basal_step">Basaal stap</string>
|
||||
<string name="bolusconstraintapplied">Bolus limiet ingesteld</string>
|
||||
<string name="carbsconstraintapplied">KH limiet ingesteld</string>
|
||||
<string name="circadian_percentage_profile">CircadianPercentageProfiel</string>
|
||||
<string name="danar_sbolus">S Bolus</string>
|
||||
<string name="danar_stats">DanaR Statistiek</string>
|
||||
<string name="danar_stats_cumulative_tdd">Cumulative TDD</string>
|
||||
|
|
|
@ -379,7 +379,6 @@
|
|||
<string name="edit_base_isf">Editează ISF normal:</string>
|
||||
<string name="edit_base_ic">Editează IC normal:</string>
|
||||
<string name="base_profile_label">Profilul de bază:</string>
|
||||
<string name="circadian_percentage_profile">ProfilulProcentuluiCircadian</string>
|
||||
<string name="androidaps_tempbasalendnote">Sfârșit bazală temporară</string>
|
||||
<string name="androidaps_tempbasalstartnote">Început bazală temporară</string>
|
||||
<string name="prefs_range_title">Intervalul pentru vizualizare</string>
|
||||
|
@ -446,7 +445,6 @@
|
|||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="overview_shortname">ACASĂ</string>
|
||||
<string name="virtualpump_shortname">POMPĂV</string>
|
||||
|
|
|
@ -79,8 +79,6 @@
|
|||
<string name="careportal_temporarytargetcancel">отмена времнной цели</string>
|
||||
<string name="changeyourinput">измените введенные данные</string>
|
||||
<string name="child">ребенок</string>
|
||||
<string name="circadian_percentage_profile">суточный процентный профиль</string>
|
||||
<string name="circadian_percentage_profile_shortname">СПП</string>
|
||||
<string name="clear_queue">очистка очереди</string>
|
||||
<string name="clearlog">очистка лога</string>
|
||||
<string name="closedloop">замкнутый цикл</string>
|
||||
|
@ -581,9 +579,8 @@
|
|||
<string name="careportal_sensorage_label">сенсор пропаботал</string>
|
||||
<string name="careportal_sensorage_label_short">ВОЗРСенс</string>
|
||||
<string name="configbuilder_sensitivity">определение чувствительности</string>
|
||||
<string name="cpp_notloadedplugins">не все профили загружены!</string>
|
||||
<string name="cpp_sync_setting_missing">требует активации для отправки данных на помпу!</string>
|
||||
<string name="cpp_valuesnotstored">Данные не сохранены!</string>
|
||||
<string name="notloadedplugins">не все профили загружены!</string>
|
||||
<string name="valuesnotstored">Данные не сохранены!</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Просмотреть расширенный болюс %</string>
|
||||
<string name="danarv2pump">DanaRv2</string>
|
||||
<string name="date">дата</string>
|
||||
|
|
|
@ -80,8 +80,6 @@
|
|||
<string name="careportal_temporarytargetcancel">Temp Mål BG Slut</string>
|
||||
<string name="changeyourinput">Ändra inmatning</string>
|
||||
<string name="child">Barn</string>
|
||||
<string name="circadian_percentage_profile">Cirkadisk Profil Procent</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="clear_queue">Ta bort kö</string>
|
||||
<string name="clearlog">Rensa inmatningar</string>
|
||||
<string name="closedloop">Closed Loop</string>
|
||||
|
@ -546,8 +544,7 @@
|
|||
<string name="careportal_pumpbatterychange">Batteribyte Pump</string>
|
||||
<string name="careportal_sensorage_label">Sensor ålder</string>
|
||||
<string name="careportal_sensorage_label_short">SAGE</string>
|
||||
<string name="cpp_sync_setting_missing">Måste vara aktiverad för att kunna skicka värden till pumpen</string>
|
||||
<string name="cpp_valuesnotstored">Värden sparas inte</string>
|
||||
<string name="valuesnotstored">Värden sparas inte</string>
|
||||
<string name="danar_stats_warning_Message">Möjligen felvärde om man använder bolus för att priming/fyllning!</string>
|
||||
<string name="edit_base_ic">Ändra Base-IC:</string>
|
||||
<string name="edit_base_isf">Ändra Base-ISF:</string>
|
||||
|
|
|
@ -371,7 +371,6 @@
|
|||
<string name="edit_base_isf">Edit Base-ISF:</string>
|
||||
<string name="edit_base_ic">Edit Base-IC:</string>
|
||||
<string name="base_profile_label">Base Profile:</string>
|
||||
<string name="circadian_percentage_profile">CircadianPercentageProfile</string>
|
||||
<string name="prefs_range_title">Range for Visualization</string>
|
||||
<string name="prefs_range_summary">High and low mark for the charts in Overview and Smartwatch</string>
|
||||
<string name="low_mark">LOW mark</string>
|
||||
|
@ -434,7 +433,6 @@
|
|||
<string name="temptargetrange_shortname">TT</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="tempbasals_shortname">TB</string>
|
||||
<string name="overview_shortname">HOME</string>
|
||||
<string name="virtualpump_shortname">VPUMP</string>
|
||||
|
@ -679,9 +677,8 @@
|
|||
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Cancel</string>
|
||||
<string name="cpp_sync_setting_missing">needs to be activated to send values to the pump!</string>
|
||||
<string name="cpp_notloadedplugins">Not all profiles loaded!</string>
|
||||
<string name="cpp_valuesnotstored">Values not stored!</string>
|
||||
<string name="notloadedplugins">Not all profiles loaded!</string>
|
||||
<string name="valuesnotstored">Values not stored!</string>
|
||||
<string name="wear_overviewnotifications">Overview Notifications</string>
|
||||
<string name="wear_overviewnotifications_summary">Pass the Overview Notifications through as wear confirmation messages.</string>
|
||||
<string name="combopump" translatable="false">Accu-Chek Combo</string>
|
||||
|
|
Loading…
Reference in a new issue