fill dialog refactor & code clean
This commit is contained in:
parent
3c7abff88d
commit
91b02d4d39
|
@ -2,11 +2,9 @@ package info.nightscout.androidaps.plugins.Actions.dialogs;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.support.v4.app.DialogFragment;
|
import android.support.v4.app.DialogFragment;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -16,7 +14,6 @@ import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.crashlytics.android.answers.Answers;
|
import com.crashlytics.android.answers.Answers;
|
||||||
import com.crashlytics.android.answers.CustomEvent;
|
import com.crashlytics.android.answers.CustomEvent;
|
||||||
|
@ -32,12 +29,11 @@ import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.db.Source;
|
import info.nightscout.androidaps.db.Source;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Overview.Notification;
|
import info.nightscout.androidaps.plugins.Overview.Notification;
|
||||||
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
||||||
import info.nightscout.utils.DecimalFormatter;
|
import info.nightscout.utils.DecimalFormatter;
|
||||||
import info.nightscout.utils.PlusMinusEditText;
|
import info.nightscout.utils.NumberPicker;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
import info.nightscout.utils.SafeParse;
|
import info.nightscout.utils.SafeParse;
|
||||||
|
|
||||||
|
@ -45,13 +41,12 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
||||||
private static Logger log = LoggerFactory.getLogger(FillDialog.class);
|
private static Logger log = LoggerFactory.getLogger(FillDialog.class);
|
||||||
|
|
||||||
Button deliverButton;
|
Button deliverButton;
|
||||||
TextView insulin;
|
|
||||||
|
|
||||||
double amount1 = 0d;
|
double amount1 = 0d;
|
||||||
double amount2 = 0d;
|
double amount2 = 0d;
|
||||||
double amount3 = 0d;
|
double amount3 = 0d;
|
||||||
|
|
||||||
PlusMinusEditText editInsulin;
|
NumberPicker editInsulin;
|
||||||
|
|
||||||
Handler mHandler;
|
Handler mHandler;
|
||||||
public static HandlerThread mHandlerThread;
|
public static HandlerThread mHandlerThread;
|
||||||
|
@ -73,10 +68,10 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
||||||
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
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);
|
Double maxInsulin = MainApp.getConfigBuilder().applyBolusConstraints(Constants.bolusOnlyForCheckLimit);
|
||||||
double bolusstep = MainApp.getConfigBuilder().getPumpDescription().bolusStep;
|
double bolusstep = MainApp.getConfigBuilder().getPumpDescription().bolusStep;
|
||||||
editInsulin = new PlusMinusEditText(view, R.id.treatments_newtreatment_insulinamount, R.id.treatments_newtreatment_insulinamount_plus, R.id.treatments_newtreatment_insulinamount_minus, 0d, 0d, maxInsulin, bolusstep, new DecimalFormat("0.00"), false);
|
editInsulin = (NumberPicker) view.findViewById(R.id.treatments_newtreatment_insulinamount);
|
||||||
|
editInsulin.setParams(0d, 0d, maxInsulin, bolusstep, new DecimalFormat("0.00"), false);
|
||||||
|
|
||||||
//setup preset buttons
|
//setup preset buttons
|
||||||
Button button1 = (Button) view.findViewById(R.id.fill_preset_button1);
|
Button button1 = (Button) view.findViewById(R.id.fill_preset_button1);
|
||||||
|
@ -88,21 +83,21 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
||||||
amount2 = SP.getDouble("fill_button2", 0d);
|
amount2 = SP.getDouble("fill_button2", 0d);
|
||||||
amount3 = SP.getDouble("fill_button3", 0d);
|
amount3 = SP.getDouble("fill_button3", 0d);
|
||||||
|
|
||||||
if(amount1 >0) {
|
if (amount1 > 0) {
|
||||||
button1.setVisibility(View.VISIBLE);
|
button1.setVisibility(View.VISIBLE);
|
||||||
button1.setText(DecimalFormatter.to2Decimal(amount1) + "U");
|
button1.setText(DecimalFormatter.to2Decimal(amount1) + "U");
|
||||||
button1.setOnClickListener(this);
|
button1.setOnClickListener(this);
|
||||||
} else {
|
} else {
|
||||||
button1.setVisibility(View.GONE);
|
button1.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if(amount2 >0) {
|
if (amount2 > 0) {
|
||||||
button2.setVisibility(View.VISIBLE);
|
button2.setVisibility(View.VISIBLE);
|
||||||
button2.setText(DecimalFormatter.to2Decimal(amount2) + "U");
|
button2.setText(DecimalFormatter.to2Decimal(amount2) + "U");
|
||||||
button2.setOnClickListener(this);
|
button2.setOnClickListener(this);
|
||||||
} else {
|
} else {
|
||||||
button2.setVisibility(View.GONE);
|
button2.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if(amount3 >0) {
|
if (amount3 > 0) {
|
||||||
button3.setVisibility(View.VISIBLE);
|
button3.setVisibility(View.VISIBLE);
|
||||||
button3.setText(DecimalFormatter.to2Decimal(amount3) + "U");
|
button3.setText(DecimalFormatter.to2Decimal(amount3) + "U");
|
||||||
button3.setOnClickListener(this);
|
button3.setOnClickListener(this);
|
||||||
|
@ -110,7 +105,7 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
||||||
button3.setVisibility(View.GONE);
|
button3.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button1.getVisibility() == View.GONE && button2.getVisibility() == View.GONE && button3.getVisibility() == View.GONE ) {
|
if (button1.getVisibility() == View.GONE && button2.getVisibility() == View.GONE && button3.getVisibility() == View.GONE) {
|
||||||
divider.setVisibility(View.GONE);
|
divider.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
return view;
|
return view;
|
||||||
|
@ -127,7 +122,7 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
switch (view.getId()) {
|
switch (view.getId()) {
|
||||||
case R.id.treatments_newtreatment_deliverbutton:
|
case R.id.treatments_newtreatment_deliverbutton:
|
||||||
Double insulin = SafeParse.stringToDouble(this.insulin.getText().toString());
|
Double insulin = SafeParse.stringToDouble(editInsulin.getText().toString());
|
||||||
confirmAndDeliver(insulin);
|
confirmAndDeliver(insulin);
|
||||||
break;
|
break;
|
||||||
case R.id.fill_preset_button1:
|
case R.id.fill_preset_button1:
|
||||||
|
|
|
@ -1,210 +0,0 @@
|
||||||
package info.nightscout.utils;
|
|
||||||
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Message;
|
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
|
||||||
import info.nightscout.androidaps.R;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by mike on 28.06.2016.
|
|
||||||
*/
|
|
||||||
public class PlusMinusEditText implements View.OnKeyListener,
|
|
||||||
View.OnTouchListener, View.OnClickListener {
|
|
||||||
private static Logger log = LoggerFactory.getLogger(PlusMinusEditText.class);
|
|
||||||
|
|
||||||
Integer editTextID;
|
|
||||||
TextView editText;
|
|
||||||
ImageView minusImage;
|
|
||||||
ImageView plusImage;
|
|
||||||
|
|
||||||
Double value;
|
|
||||||
Double minValue = 0d;
|
|
||||||
Double maxValue = 1d;
|
|
||||||
Double step = 1d;
|
|
||||||
NumberFormat formater;
|
|
||||||
boolean allowZero = false;
|
|
||||||
|
|
||||||
private Handler mHandler;
|
|
||||||
private ScheduledExecutorService mUpdater;
|
|
||||||
|
|
||||||
private class UpdateCounterTask implements Runnable {
|
|
||||||
private boolean mInc;
|
|
||||||
private int repeated = 0;
|
|
||||||
private int multiplier = 1;
|
|
||||||
|
|
||||||
private final int doubleLimit = 5;
|
|
||||||
|
|
||||||
public UpdateCounterTask(boolean inc) {
|
|
||||||
mInc = inc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
Message msg = new Message();
|
|
||||||
if (repeated % doubleLimit == 0) multiplier *= 2;
|
|
||||||
repeated++;
|
|
||||||
msg.arg1 = multiplier;
|
|
||||||
msg.arg2 = repeated;
|
|
||||||
if (mInc) {
|
|
||||||
msg.what = MSG_INC;
|
|
||||||
} else {
|
|
||||||
msg.what = MSG_DEC;
|
|
||||||
}
|
|
||||||
mHandler.sendMessage(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final int MSG_INC = 0;
|
|
||||||
private static final int MSG_DEC = 1;
|
|
||||||
|
|
||||||
public PlusMinusEditText(View view, int editTextID, int plusID, int minusID, Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero) {
|
|
||||||
editText = (TextView) view.findViewById(editTextID);
|
|
||||||
minusImage = (ImageView) view.findViewById(minusID);
|
|
||||||
plusImage = (ImageView) view.findViewById(plusID);
|
|
||||||
|
|
||||||
this.value = initValue;
|
|
||||||
this.minValue = minValue;
|
|
||||||
this.maxValue = maxValue;
|
|
||||||
this.step = step;
|
|
||||||
this.formater = formater;
|
|
||||||
this.allowZero = allowZero;
|
|
||||||
|
|
||||||
mHandler = new Handler() {
|
|
||||||
@Override
|
|
||||||
public void handleMessage(Message msg) {
|
|
||||||
switch (msg.what) {
|
|
||||||
case MSG_INC:
|
|
||||||
inc(msg.arg1);
|
|
||||||
return;
|
|
||||||
case MSG_DEC:
|
|
||||||
dec(msg.arg1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
super.handleMessage(msg);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
minusImage.setOnTouchListener(this);
|
|
||||||
minusImage.setOnKeyListener(this);
|
|
||||||
minusImage.setOnClickListener(this);
|
|
||||||
plusImage.setOnTouchListener(this);
|
|
||||||
plusImage.setOnKeyListener(this);
|
|
||||||
plusImage.setOnClickListener(this);
|
|
||||||
updateEditText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(Double value) {
|
|
||||||
this.value = value;
|
|
||||||
updateEditText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getText() {
|
|
||||||
return editText.getText().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStep(Double step) {
|
|
||||||
this.step = step;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void inc(int multiplier) {
|
|
||||||
value += step * multiplier;
|
|
||||||
if (value > maxValue) {
|
|
||||||
value = maxValue;
|
|
||||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.youareonallowedlimit));
|
|
||||||
stopUpdating();
|
|
||||||
}
|
|
||||||
updateEditText();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dec( int multiplier) {
|
|
||||||
value -= step * multiplier;
|
|
||||||
if (value < minValue) {
|
|
||||||
value = minValue;
|
|
||||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.youareonallowedlimit));
|
|
||||||
stopUpdating();
|
|
||||||
}
|
|
||||||
updateEditText();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateEditText() {
|
|
||||||
if (value == 0d && !allowZero)
|
|
||||||
editText.setText("");
|
|
||||||
else
|
|
||||||
editText.setText(formater.format(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startUpdating(boolean inc) {
|
|
||||||
if (mUpdater != null) {
|
|
||||||
log.debug("Another executor is still active");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mUpdater = Executors.newSingleThreadScheduledExecutor();
|
|
||||||
mUpdater.scheduleAtFixedRate(new UpdateCounterTask(inc), 200, 200,
|
|
||||||
TimeUnit.MILLISECONDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void stopUpdating() {
|
|
||||||
if (mUpdater != null) {
|
|
||||||
mUpdater.shutdownNow();
|
|
||||||
mUpdater = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
if (mUpdater == null) {
|
|
||||||
if (v == plusImage) {
|
|
||||||
inc(1);
|
|
||||||
} else {
|
|
||||||
dec(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
|
||||||
boolean isKeyOfInterest = keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER;
|
|
||||||
boolean isReleased = event.getAction() == KeyEvent.ACTION_UP;
|
|
||||||
boolean isPressed = event.getAction() == KeyEvent.ACTION_DOWN
|
|
||||||
&& event.getAction() != KeyEvent.ACTION_MULTIPLE;
|
|
||||||
|
|
||||||
if (isKeyOfInterest && isReleased) {
|
|
||||||
stopUpdating();
|
|
||||||
} else if (isKeyOfInterest && isPressed) {
|
|
||||||
startUpdating(v == plusImage);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
|
||||||
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL;
|
|
||||||
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
|
|
||||||
|
|
||||||
if (isReleased) {
|
|
||||||
stopUpdating();
|
|
||||||
} else if (isPressed) {
|
|
||||||
startUpdating(v == plusImage);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -6,51 +6,37 @@
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="10dp">
|
android:padding="10dp">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/careportal_newnstreatment_insulin_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="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">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<TextView
|
||||||
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_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:inputType="numberDecimal"
|
android:width="120dp"
|
||||||
android:minWidth="200dp"
|
|
||||||
android:padding="10dp"
|
android:padding="10dp"
|
||||||
android:text=""
|
android:text="@string/treatments_newtreatment_insulinamount_label"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||||
android:gravity="center_horizontal" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<ImageView
|
<info.nightscout.utils.NumberPicker
|
||||||
android:id="@+id/treatments_newtreatment_insulinamount_plus"
|
android:id="@+id/treatments_newtreatment_insulinamount"
|
||||||
|
android:layout_width="130dp"
|
||||||
|
android:layout_height="40dp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="@drawable/circle"
|
android:gravity="left"
|
||||||
android:backgroundTint="#ffffff"
|
android:minWidth="45dp"
|
||||||
android:src="@drawable/ic_action_add"
|
android:paddingLeft="5dp"
|
||||||
android:tint="#ffffff" />
|
android:text="U"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
|
Loading…
Reference in a new issue