diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinFragment.java index 8954c81ce7..dec9239948 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinFragment.java @@ -52,7 +52,7 @@ public class InsulinFragment extends Fragment { private void updateGUI() { insulinName.setText(ConfigBuilderPlugin.getPlugin().getActiveInsulin().getFriendlyName()); insulinComment.setText(ConfigBuilderPlugin.getPlugin().getActiveInsulin().getComment()); - insulinDia.setText(MainApp.gs(R.string.dia) + " " + ConfigBuilderPlugin.getPlugin().getActiveInsulin().getDia() + "h"); + insulinDia.setText(MainApp.gs(R.string.dia) + ": " + ConfigBuilderPlugin.getPlugin().getActiveInsulin().getDia() + "h"); insulinGraph.show(ConfigBuilderPlugin.getPlugin().getActiveInsulin()); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt index 7e1e971a24..1507595c49 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt @@ -60,6 +60,30 @@ class LocalProfileFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) build() + // activate DIA tab + processVisibilityOnClick(dia_tab) + localprofile_dia_placeholder.visibility = View.VISIBLE + // setup listeners + dia_tab.setOnClickListener { + processVisibilityOnClick(it) + localprofile_dia_placeholder.visibility = View.VISIBLE + } + ic_tab.setOnClickListener { + processVisibilityOnClick(it) + localprofile_ic.visibility = View.VISIBLE + } + isf_tab.setOnClickListener { + processVisibilityOnClick(it) + localprofile_isf.visibility = View.VISIBLE + } + basal_tab.setOnClickListener { + processVisibilityOnClick(it) + localprofile_basal.visibility = View.VISIBLE + } + target_tab.setOnClickListener { + processVisibilityOnClick(it) + localprofile_target.visibility = View.VISIBLE + } } fun build() { @@ -68,14 +92,14 @@ class LocalProfileFragment : Fragment() { localprofile_name.setText(LocalProfilePlugin.currentProfile().name) localprofile_dia.setParams(LocalProfilePlugin.currentProfile().dia, HardLimits.MINDIA, HardLimits.MAXDIA, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch) - TimeListEdit(context, view, R.id.localprofile_ic, MainApp.gs(R.string.nsprofileview_ic_label) + ":", LocalProfilePlugin.currentProfile().ic, null, HardLimits.MINIC, HardLimits.MAXIC, 0.1, DecimalFormat("0.0"), save) + TimeListEdit(context, view, R.id.localprofile_ic, MainApp.gs(R.string.nsprofileview_ic_label), LocalProfilePlugin.currentProfile().ic, null, HardLimits.MINIC, HardLimits.MAXIC, 0.1, DecimalFormat("0.0"), save) basalView = TimeListEdit(context, view, R.id.localprofile_basal, MainApp.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel(), LocalProfilePlugin.currentProfile().basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save) if (units == Constants.MGDL) { - TimeListEdit(context, view, R.id.localprofile_isf, MainApp.gs(R.string.nsprofileview_isf_label) + ":", LocalProfilePlugin.currentProfile().isf, null, HardLimits.MINISF, HardLimits.MAXISF, 1.0, DecimalFormat("0"), save) - TimeListEdit(context, view, R.id.localprofile_target, MainApp.gs(R.string.nsprofileview_target_label) + ":", LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), 1.0, DecimalFormat("0"), save) + TimeListEdit(context, view, R.id.localprofile_isf, MainApp.gs(R.string.nsprofileview_isf_label), LocalProfilePlugin.currentProfile().isf, null, HardLimits.MINISF, HardLimits.MAXISF, 1.0, DecimalFormat("0"), save) + TimeListEdit(context, view, R.id.localprofile_target, MainApp.gs(R.string.nsprofileview_target_label), LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), 1.0, DecimalFormat("0"), save) } else { - TimeListEdit(context, view, R.id.localprofile_isf, MainApp.gs(R.string.nsprofileview_isf_label) + ":", LocalProfilePlugin.currentProfile().isf, null, Profile.fromMgdlToUnits(HardLimits.MINISF, Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.MAXISF, Constants.MMOL), 0.1, DecimalFormat("0.0"), save) - TimeListEdit(context, view, R.id.localprofile_target, MainApp.gs(R.string.nsprofileview_target_label) + ":", LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), Constants.MMOL), 0.1, DecimalFormat("0.0"), save) + TimeListEdit(context, view, R.id.localprofile_isf, MainApp.gs(R.string.nsprofileview_isf_label), LocalProfilePlugin.currentProfile().isf, null, Profile.fromMgdlToUnits(HardLimits.MINISF, Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.MAXISF, Constants.MMOL), 0.1, DecimalFormat("0.0"), save) + TimeListEdit(context, view, R.id.localprofile_target, MainApp.gs(R.string.nsprofileview_target_label), LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), Constants.MMOL), 0.1, DecimalFormat("0.0"), save) } // Spinner @@ -183,11 +207,11 @@ class LocalProfileFragment : Fragment() { } fun updateGUI() { - if (invalidprofile == null) return + if (localprofile_profileswitch == null) return val isValid = LocalProfilePlugin.isValidEditState() val isEdited = LocalProfilePlugin.isEdited if (isValid) { - invalidprofile.visibility = View.GONE //show invalid profile + this.view?.setBackgroundColor(MainApp.gc(R.color.ok_background)) if (isEdited) { //edited profile -> save first @@ -198,7 +222,7 @@ class LocalProfileFragment : Fragment() { localprofile_save.visibility = View.GONE } } else { - invalidprofile.visibility = View.VISIBLE + this.view?.setBackgroundColor(MainApp.gc(R.color.error_background)) localprofile_profileswitch.visibility = View.GONE localprofile_save.visibility = View.GONE //don't save an invalid profile } @@ -210,4 +234,19 @@ class LocalProfileFragment : Fragment() { localprofile_reset.visibility = View.GONE } } + + private fun processVisibilityOnClick(selected: View) { + dia_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground)) + ic_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground)) + isf_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground)) + basal_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground)) + target_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground)) + selected.setBackgroundColor(MainApp.gc(R.color.tabBgColorSelected)) + localprofile_dia_placeholder.visibility = View.GONE + localprofile_ic.visibility = View.GONE + localprofile_isf.visibility = View.GONE + localprofile_basal.visibility = View.GONE + localprofile_target.visibility = View.GONE + } + } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java b/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java index e2a7489fc2..f47122e0c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java @@ -94,9 +94,13 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, this.initialize(context); } + protected void inflate(Context context) { + LayoutInflater.from(context).inflate(R.layout.number_picker_layout, this, true); + } + private void initialize(Context context) { // set layout view - LayoutInflater.from(context).inflate(R.layout.number_picker_layout, this, true); + inflate(context); // init ui components minusButton = findViewById(R.id.decrement); diff --git a/app/src/main/java/info/nightscout/androidaps/utils/NumberPickerVertical.java b/app/src/main/java/info/nightscout/androidaps/utils/NumberPickerVertical.java new file mode 100644 index 0000000000..3265280c48 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/utils/NumberPickerVertical.java @@ -0,0 +1,46 @@ +package info.nightscout.androidaps.utils; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; + +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 NumberPickerVertical extends NumberPicker { + private static Logger log = LoggerFactory.getLogger(NumberPickerVertical.class); + + public NumberPickerVertical(Context context) { + super(context); + } + + public NumberPickerVertical(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void inflate(Context context) { + LayoutInflater.from(context).inflate(R.layout.number_picker_layout_vertical, this, true); + } + } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java index be8b89dff4..d9ed263c98 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java @@ -84,11 +84,11 @@ public class TimeListEdit { textlabel = new TextView(context); textlabel.setText(label); - textlabel.setGravity(Gravity.START); + textlabel.setGravity(Gravity.CENTER); LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); - llp.setMargins(10, 0, 0, 0); // llp.setMargins(left, top, right, bottom); + llp.setMargins(0, 5, 0, 5); textlabel.setLayoutParams(llp); - textlabel.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.linearBlockBackground)); + //textlabel.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.linearBlockBackground)); TextViewCompat.setTextAppearance(textlabel, android.R.style.TextAppearance_Medium); layout.addView(textlabel); @@ -119,7 +119,8 @@ public class TimeListEdit { private void inflateRow(final int position) { LayoutInflater inflater = LayoutInflater.from(context); - View childView = intervals[position] = inflater.inflate(R.layout.timelistedit_element, layout, false); + int resource = data2 == null ? R.layout.timelistedit_element : R.layout.timelistedit_element_vertical; + View childView = intervals[position] = inflater.inflate(resource, layout, false); spinners[position] = new SpinnerHelper(childView.findViewById(R.id.timelistedit_time)); numberPickers1[position] = childView.findViewById(R.id.timelistedit_edit1); numberPickers2[position] = childView.findViewById(R.id.timelistedit_edit2); diff --git a/app/src/main/res/layout/localprofile_fragment.xml b/app/src/main/res/layout/localprofile_fragment.xml index 3f962b7966..de9809bf35 100644 --- a/app/src/main/res/layout/localprofile_fragment.xml +++ b/app/src/main/res/layout/localprofile_fragment.xml @@ -9,16 +9,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - + + + + + + + + + + + + + @@ -135,15 +188,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:text="@string/dia" android:textAppearance="?android:attr/textAppearanceMedium" /> - - + android:textAppearance="?android:attr/textAppearanceSmall" /> diff --git a/app/src/main/res/layout/number_picker_layout_vertical.xml b/app/src/main/res/layout/number_picker_layout_vertical.xml new file mode 100644 index 0000000000..291e5ac198 --- /dev/null +++ b/app/src/main/res/layout/number_picker_layout_vertical.xml @@ -0,0 +1,39 @@ + + + +