fix merge conflict

This commit is contained in:
Milos Kozak 2016-11-11 13:09:11 +01:00
commit a341fa4343
9 changed files with 260 additions and 8 deletions

View file

@ -10,6 +10,7 @@ import android.view.ViewGroup;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
import info.nightscout.androidaps.plugins.Actions.dialogs.NewExtendedBolusDialog; import info.nightscout.androidaps.plugins.Actions.dialogs.NewExtendedBolusDialog;
@ -37,6 +38,7 @@ public class ActionsFragment extends Fragment implements FragmentBase, View.OnCl
view.findViewById(R.id.actions_profileswitch).setOnClickListener(this); view.findViewById(R.id.actions_profileswitch).setOnClickListener(this);
view.findViewById(R.id.actions_extendedbolus).setOnClickListener(this); view.findViewById(R.id.actions_extendedbolus).setOnClickListener(this);
view.findViewById(R.id.actions_settempbasal).setOnClickListener(this); view.findViewById(R.id.actions_settempbasal).setOnClickListener(this);
view.findViewById(R.id.actions_fill).setOnClickListener(this);
return view; return view;
} }
@ -60,6 +62,10 @@ public class ActionsFragment extends Fragment implements FragmentBase, View.OnCl
NewTempBasalDialog newTempDialog = new NewTempBasalDialog(); NewTempBasalDialog newTempDialog = new NewTempBasalDialog();
newTempDialog.show(manager, "NewTempDialog"); newTempDialog.show(manager, "NewTempDialog");
break; break;
case R.id.actions_fill:
FillDialog fillDialog = new FillDialog();
fillDialog.show(manager, "FillDialog");
break;
} }
} }
} }

View file

@ -0,0 +1,125 @@
package info.nightscout.androidaps.plugins.Actions.dialogs;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
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.TextView;
import java.text.DecimalFormat;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.utils.PlusMinusEditText;
import info.nightscout.utils.SafeParse;
public class FillDialog extends DialogFragment implements OnClickListener {
Button deliverButton;
TextView insulin;
PlusMinusEditText editInsulin;
Handler mHandler;
public static HandlerThread mHandlerThread;
public FillDialog() {
mHandlerThread = new HandlerThread(FillDialog.class.getSimpleName());
mHandlerThread.start();
this.mHandler = new Handler(mHandlerThread.getLooper());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.actions_fill_dialog, null, false);
deliverButton = (Button) view.findViewById(R.id.treatments_newtreatment_deliverbutton);
deliverButton.setOnClickListener(this);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
insulin = (TextView) view.findViewById(R.id.treatments_newtreatment_insulinamount);
Double maxInsulin = MainApp.getConfigBuilder().applyBolusConstraints(Constants.bolusOnlyForCheckLimit);
editInsulin = new PlusMinusEditText(view, R.id.treatments_newtreatment_insulinamount, R.id.treatments_newtreatment_insulinamount_plus, R.id.treatments_newtreatment_insulinamount_minus, 0d, 0d, maxInsulin, 0.05d, new DecimalFormat("0.00"), false);
return view;
}
@Override
public void onResume() {
super.onResume();
if (getDialog() != null)
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.treatments_newtreatment_deliverbutton:
try {
Double insulin = SafeParse.stringToDouble(this.insulin.getText().toString());
String confirmMessage = getString(R.string.fillwarning) + "\n";
Double insulinAfterConstraints = MainApp.getConfigBuilder().applyBolusConstraints(insulin);
confirmMessage += getString(R.string.bolus) + ": " + insulinAfterConstraints + "U";
if (insulinAfterConstraints - insulin != 0)
confirmMessage += "\n" + getString(R.string.constraintapllied);
final Double finalInsulinAfterConstraints = insulinAfterConstraints;
final Context context = getContext();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(this.getContext().getString(R.string.confirmation));
builder.setMessage(confirmMessage);
builder.setPositiveButton(getString(R.string.primefill), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
if (finalInsulinAfterConstraints > 0) {
final ConfigBuilderPlugin pump = MainApp.getConfigBuilder();
mHandler.post(new Runnable() {
@Override
public void run() {
PumpEnactResult result = pump.deliverTreatment(finalInsulinAfterConstraints, 0, context, false);
if (!result.success) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror));
builder.setMessage(result.comment);
builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), null);
builder.show();
}
}
});
}
}
});
builder.setNegativeButton(getString(R.string.cancel), null);
builder.show();
dismiss();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
}

View file

@ -395,6 +395,10 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
@Override @Override
public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) {
return deliverTreatment(insulin, carbs, context, true);
}
public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context, boolean createTreatment) {
mWakeLock.acquire(); mWakeLock.acquire();
insulin = applyBolusConstraints(insulin); insulin = applyBolusConstraints(insulin);
carbs = applyCarbsConstraints(carbs); carbs = applyCarbsConstraints(carbs);
@ -421,7 +425,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
if (Config.logCongigBuilderActions) if (Config.logCongigBuilderActions)
log.debug("deliverTreatment insulin: " + insulin + " carbs: " + carbs + " success: " + result.success + " enacted: " + result.enacted + " bolusDelivered: " + result.bolusDelivered); log.debug("deliverTreatment insulin: " + insulin + " carbs: " + carbs + " success: " + result.success + " enacted: " + result.enacted + " bolusDelivered: " + result.bolusDelivered);
if (result.success) { if (result.success && createTreatment) {
Treatment t = new Treatment(); Treatment t = new Treatment();
t.insulin = result.bolusDelivered; t.insulin = result.bolusDelivered;
t.carbs = (double) result.carbsDelivered; t.carbs = (double) result.carbsDelivered;
@ -440,6 +444,8 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
return result; return result;
} }
@Override @Override
public void stopBolusDelivering() { public void stopBolusDelivering() {
activePump.stopBolusDelivering(); activePump.stopBolusDelivering();

View file

@ -22,6 +22,8 @@ public class DanaRPump {
public static final int UNITS_MGDL = 0; public static final int UNITS_MGDL = 0;
public static final int UNITS_MMOL = 1; public static final int UNITS_MMOL = 1;
public static final String PROFILE_PREFIX = "DanaR-";
public Date lastConnection = new Date(0); public Date lastConnection = new Date(0);
public Date lastSettingsRead = new Date(0); public Date lastSettingsRead = new Date(0);
@ -106,7 +108,7 @@ public class DanaRPump {
double car = SafeParse.stringToDouble(SP.getString("danarprofile_car", "20")); double car = SafeParse.stringToDouble(SP.getString("danarprofile_car", "20"));
try { try {
json.put("defaultProfile", "" + (activeProfile + 1)); json.put("defaultProfile", PROFILE_PREFIX + (activeProfile + 1));
json.put("store", store); json.put("store", store);
profile.put("dia", dia); profile.put("dia", dia);
@ -139,20 +141,20 @@ public class DanaRPump {
} else { } else {
time = df.format(h) + ":00"; time = df.format(h) + ":00";
} }
basals.put(new JSONObject().put("time", time).put("timeAsSeconds", h * basalIncrement).put("value", pumpProfiles[activeProfile][h])); basals.put(new JSONObject().put("time", time).put("timeAsSeconds", h * basalIncrement).put("value", pumpProfiles[activeProfile][h]));
} }
profile.put("basal", basals); profile.put("basal", basals);
profile.put("target_low", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget))); profile.put("target_low", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget)));
profile.put("target_high", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget))); profile.put("target_high", new JSONArray().put(new JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", currentTarget)));
profile.put("units", units == UNITS_MGDL ? Constants.MGDL : Constants.MMOL); profile.put("units", units == UNITS_MGDL ? Constants.MGDL : Constants.MMOL);
store.put("" + (activeProfile + 1), profile); store.put(PROFILE_PREFIX + (activeProfile + 1), profile);
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
return new NSProfile(json, "" + (activeProfile + 1)); return new NSProfile(json, PROFILE_PREFIX + (activeProfile + 1));
} }
} }

View file

@ -50,12 +50,15 @@ import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.db.TempBasal;
import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBG;
import info.nightscout.androidaps.events.EventNewBasalProfile;
import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.events.EventRefreshGui;
import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
import info.nightscout.androidaps.plugins.Loop.events.EventNewOpenLoopNotification; import info.nightscout.androidaps.plugins.Loop.events.EventNewOpenLoopNotification;
@ -69,6 +72,7 @@ import info.nightscout.utils.BolusWizard;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.Round; import info.nightscout.utils.Round;
import info.nightscout.utils.ToastUtils;
public class OverviewFragment extends Fragment { public class OverviewFragment extends Fragment {
@ -370,6 +374,9 @@ public class OverviewFragment extends Fragment {
updateGUIIfVisible(); updateGUIIfVisible();
} }
@Subscribe
public void onStatusEvent(final EventNewBasalProfile ev) { updateGUIIfVisible(); }
private void hideTempRecommendation() { private void hideTempRecommendation() {
Activity activity = getActivity(); Activity activity = getActivity();
if (activity != null) if (activity != null)
@ -480,6 +487,19 @@ public class OverviewFragment extends Fragment {
} }
baseBasalView.setText(DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h"); baseBasalView.setText(DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h");
activeProfileView.setText(profile.getActiveProfile()); activeProfileView.setText(profile.getActiveProfile());
activeProfileView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
NewNSTreatmentDialog newDialog = new NewNSTreatmentDialog();
final OptionsToShow profileswitch = new OptionsToShow(R.id.careportal_profileswitch, R.string.careportal_profileswitch, true, false, false, false, false, false, false, true, false);
profileswitch.executeProfileSwitch = true;
newDialog.setOptions(profileswitch);
newDialog.show(getFragmentManager(), "NewNSTreatmentDialog");
return true;
}
});
activeProfileView.setLongClickable(true);
if (profile == null) { if (profile == null) {
// disable all treatment buttons because we are not able to check constraints without profile // disable all treatment buttons because we are not able to check constraints without profile

View file

@ -217,7 +217,7 @@ public class SimpleProfilePlugin implements PluginBase, ProfileInterface {
JSONObject profile = new JSONObject(); JSONObject profile = new JSONObject();
try { try {
json.put("defaultProfile", "Profile"); json.put("defaultProfile", "SimpleProfile");
json.put("store", store); json.put("store", store);
profile.put("dia", dia); profile.put("dia", dia);
profile.put("carbratio", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", ic))); profile.put("carbratio", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", ic)));
@ -227,11 +227,11 @@ public class SimpleProfilePlugin implements PluginBase, ProfileInterface {
profile.put("target_low", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", targetLow))); profile.put("target_low", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", targetLow)));
profile.put("target_high", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", targetHigh))); profile.put("target_high", new JSONArray().put(new JSONObject().put("timeAsSeconds", 0).put("value", targetHigh)));
profile.put("units", mgdl ? Constants.MGDL : Constants.MMOL); profile.put("units", mgdl ? Constants.MGDL : Constants.MMOL);
store.put("Profile", profile); store.put("SimpleProfile", profile);
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
convertedProfile = new NSProfile(json, null); convertedProfile = new NSProfile(json, "SimpleProfile");
} }
@Override @Override

View file

@ -0,0 +1,77 @@
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="10dp"
android:text="@string/treatments_newtreatment_insulinamount_label"
android:textAppearance="?android:attr/textAppearanceLarge" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<ImageView
android:id="@+id/treatments_newtreatment_insulinamount_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/circle"
android:backgroundTint="#ffffff"
android:src="@drawable/ic_action_minus"
android:tint="#ffffff" />
<EditText
android:id="@+id/treatments_newtreatment_insulinamount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:inputType="numberDecimal"
android:minWidth="200dp"
android:padding="10dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal" />
<ImageView
android:id="@+id/treatments_newtreatment_insulinamount_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/circle"
android:backgroundTint="#ffffff"
android:src="@drawable/ic_action_add"
android:tint="#ffffff" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal"
android:padding="10dp">
<Button
android:id="@+id/treatments_newtreatment_deliverbutton"
style="?android:attr/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="10dp"
android:text="@string/primefill"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>

View file

@ -48,6 +48,19 @@
android:text="@string/overview_extendedbolus_button" android:text="@string/overview_extendedbolus_button"
android:textColor="@color/colorSetExtendedButton" /> android:textColor="@color/colorSetExtendedButton" />
<Button
android:id="@+id/actions_fill"
style="?android:attr/buttonStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="3dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="3dp"
android:layout_weight="0.5"
android:text="@string/primefill"
android:textColor="@color/colorTreatmentButton" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>

View file

@ -340,4 +340,7 @@
<string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string> <string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string>
<string name="ns_upload_only_enabled">Please deactivate "NS upload only" to use this feature.</string> <string name="ns_upload_only_enabled">Please deactivate "NS upload only" to use this feature.</string>
<string name="pumpNotInitialized">Pump not initialized!</string> <string name="pumpNotInitialized">Pump not initialized!</string>
<string name="primefill">Prime/Fill</string>
<string name="fillwarning">Please make sure the amount matches the specification of your infusion set!</string>
>>>>>>> ad475ace90c312fb3e535740456d8305f597f889
</resources> </resources>