Note & Exercise to actions

This commit is contained in:
Milos Kozak 2020-01-13 19:38:10 +01:00
parent ae87a6ae0c
commit 23de3b0a3b
5 changed files with 101 additions and 8 deletions

View file

@ -6,6 +6,7 @@ import android.text.TextWatcher
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Button
import androidx.annotation.StringRes import androidx.annotation.StringRes
import com.google.common.base.Joiner import com.google.common.base.Joiner
import info.nightscout.androidaps.Constants import info.nightscout.androidaps.Constants
@ -25,7 +26,6 @@ import info.nightscout.androidaps.utils.Translator
import kotlinx.android.synthetic.main.dialog_care.* import kotlinx.android.synthetic.main.dialog_care.*
import kotlinx.android.synthetic.main.notes.* import kotlinx.android.synthetic.main.notes.*
import kotlinx.android.synthetic.main.okcancel.* import kotlinx.android.synthetic.main.okcancel.*
import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
import java.text.DecimalFormat import java.text.DecimalFormat
import java.util.* import java.util.*
@ -35,7 +35,9 @@ class CareDialog : DialogFragmentWithDate() {
enum class EventType { enum class EventType {
BGCHECK, BGCHECK,
SENSOR_INSERT, SENSOR_INSERT,
BATTERY_CHANGE BATTERY_CHANGE,
NOTE,
EXERCISE
} }
private var options: EventType = EventType.BGCHECK private var options: EventType = EventType.BGCHECK
@ -51,6 +53,7 @@ class CareDialog : DialogFragmentWithDate() {
override fun onSaveInstanceState(savedInstanceState: Bundle) { override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState) super.onSaveInstanceState(savedInstanceState)
savedInstanceState.putDouble("actions_care_bg", actions_care_bg.value) savedInstanceState.putDouble("actions_care_bg", actions_care_bg.value)
savedInstanceState.putDouble("actions_care_duration", actions_care_duration.value)
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -66,21 +69,31 @@ class CareDialog : DialogFragmentWithDate() {
EventType.BGCHECK -> R.drawable.icon_cp_bgcheck EventType.BGCHECK -> R.drawable.icon_cp_bgcheck
EventType.SENSOR_INSERT -> R.drawable.icon_cp_cgm_insert EventType.SENSOR_INSERT -> R.drawable.icon_cp_cgm_insert
EventType.BATTERY_CHANGE -> R.drawable.icon_cp_pump_battery EventType.BATTERY_CHANGE -> R.drawable.icon_cp_pump_battery
EventType.NOTE -> R.drawable.icon_cp_note
EventType.EXERCISE -> R.drawable.icon_cp_exercise
}) })
actions_care_title.text = MainApp.gs(when (options) { actions_care_title.text = MainApp.gs(when (options) {
EventType.BGCHECK -> R.string.careportal_bgcheck EventType.BGCHECK -> R.string.careportal_bgcheck
EventType.SENSOR_INSERT -> R.string.careportal_cgmsensorinsert EventType.SENSOR_INSERT -> R.string.careportal_cgmsensorinsert
EventType.BATTERY_CHANGE -> R.string.careportal_pumpbatterychange EventType.BATTERY_CHANGE -> R.string.careportal_pumpbatterychange
EventType.NOTE -> R.string.careportal_note
EventType.EXERCISE -> R.string.careportal_exercise
}) })
when (options) { when (options) {
EventType.BGCHECK -> {
action_care_duration_layout.visibility = View.GONE
}
EventType.SENSOR_INSERT, EventType.SENSOR_INSERT,
EventType.BATTERY_CHANGE -> { EventType.BATTERY_CHANGE -> {
action_care_bg_layout.visibility = View.GONE action_care_bg_layout.visibility = View.GONE
actions_care_bgsource.visibility = View.GONE actions_care_bgsource.visibility = View.GONE
action_care_duration_layout.visibility = View.GONE
} }
EventType.NOTE,
else -> { EventType.EXERCISE -> {
action_care_bg_layout.visibility = View.GONE
actions_care_bgsource.visibility = View.GONE
} }
} }
@ -103,6 +116,10 @@ class CareDialog : DialogFragmentWithDate() {
actions_care_bg.setParams(savedInstanceState?.getDouble("actions_care_bg") actions_care_bg.setParams(savedInstanceState?.getDouble("actions_care_bg")
?: bg, 36.0, 500.0, 1.0, DecimalFormat("0"), false, ok, bgTextWatcher) ?: bg, 36.0, 500.0, 1.0, DecimalFormat("0"), false, ok, bgTextWatcher)
} }
actions_care_duration.setParams(savedInstanceState?.getDouble("actions_care_duration")
?: 0.0, 0.0, Constants.MAX_PROFILE_SWITCH_DURATION, 10.0, DecimalFormat("0"), false, ok)
if (options == EventType.NOTE)
notes_layout?.visibility = View.VISIBLE // independent to preferences
} }
override fun submit(): Boolean { override fun submit(): Boolean {
@ -123,6 +140,10 @@ class CareDialog : DialogFragmentWithDate() {
json.put("glucose", actions_care_bg.value) json.put("glucose", actions_care_bg.value)
json.put("glucoseType", type) json.put("glucoseType", type)
} }
if (options == EventType.NOTE || options == EventType.EXERCISE) {
actions.add(MainApp.gs(R.string.careportal_newnstreatment_duration_label) + ": " + MainApp.gs(R.string.format_mins, actions_care_duration.value.toInt()))
json.put("duration", actions_care_duration.value.toInt())
}
val notes = notes.text.toString() val notes = notes.text.toString()
if (notes.isNotEmpty()) { if (notes.isNotEmpty()) {
actions.add(MainApp.gs(R.string.careportal_newnstreatment_notes_label) + ": " + notes) actions.add(MainApp.gs(R.string.careportal_newnstreatment_notes_label) + ": " + notes)
@ -139,6 +160,8 @@ class CareDialog : DialogFragmentWithDate() {
EventType.BGCHECK -> CareportalEvent.BGCHECK EventType.BGCHECK -> CareportalEvent.BGCHECK
EventType.SENSOR_INSERT -> CareportalEvent.SENSORCHANGE EventType.SENSOR_INSERT -> CareportalEvent.SENSORCHANGE
EventType.BATTERY_CHANGE -> CareportalEvent.PUMPBATTERYCHANGE EventType.BATTERY_CHANGE -> CareportalEvent.PUMPBATTERYCHANGE
EventType.NOTE -> CareportalEvent.NOTE
EventType.EXERCISE -> CareportalEvent.EXERCISE
}) })
json.put("units", ProfileFunctions.getSystemUnits()) json.put("units", ProfileFunctions.getSystemUnits())
if (enteredBy.isNotEmpty()) if (enteredBy.isNotEmpty())
@ -153,6 +176,8 @@ class CareDialog : DialogFragmentWithDate() {
EventType.BGCHECK -> CareportalEvent.BGCHECK EventType.BGCHECK -> CareportalEvent.BGCHECK
EventType.SENSOR_INSERT -> CareportalEvent.SENSORCHANGE EventType.SENSOR_INSERT -> CareportalEvent.SENSORCHANGE
EventType.BATTERY_CHANGE -> CareportalEvent.PUMPBATTERYCHANGE EventType.BATTERY_CHANGE -> CareportalEvent.PUMPBATTERYCHANGE
EventType.NOTE -> CareportalEvent.NOTE
EventType.EXERCISE -> CareportalEvent.EXERCISE
} }
careportalEvent.json = json.toString() careportalEvent.json = json.toString()
MainApp.getDbHelper().createOrUpdate(careportalEvent) MainApp.getDbHelper().createOrUpdate(careportalEvent)

View file

@ -111,6 +111,12 @@ class ActionsFragment : Fragment() {
actions_pumpbatterychange.setOnClickListener { actions_pumpbatterychange.setOnClickListener {
fragmentManager?.let { CareDialog().setOptions(CareDialog.EventType.BATTERY_CHANGE, R.string.careportal_pumpbatterychange).show(it, "Actions") } fragmentManager?.let { CareDialog().setOptions(CareDialog.EventType.BATTERY_CHANGE, R.string.careportal_pumpbatterychange).show(it, "Actions") }
} }
actions_note.setOnClickListener {
fragmentManager?.let { CareDialog().setOptions(CareDialog.EventType.NOTE, R.string.careportal_note).show(it, "Actions") }
}
actions_exercise.setOnClickListener {
fragmentManager?.let { CareDialog().setOptions(CareDialog.EventType.EXERCISE, R.string.careportal_exercise).show(it, "Actions") }
}
SP.putBoolean(R.string.key_objectiveuseactions, true) SP.putBoolean(R.string.key_objectiveuseactions, true)
} }

View file

@ -190,6 +190,34 @@
app:layout_gravity="fill" app:layout_gravity="fill"
app:layout_row="3" /> app:layout_row="3" />
<info.nightscout.androidaps.utils.SingleClickButton
android:id="@+id/actions_note"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/icon_cp_note"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_note"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="4" />
<info.nightscout.androidaps.utils.SingleClickButton
android:id="@+id/actions_exercise"
style="@style/ButtonSmallFontStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:drawableTop="@drawable/icon_cp_exercise"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/careportal_exercise"
app:layout_column="1"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_row="4" />
</androidx.gridlayout.widget.GridLayout> </androidx.gridlayout.widget.GridLayout>
<include <include

View file

@ -22,7 +22,7 @@
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:layout_width="40dp" android:layout_width="30dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:src="@drawable/icon_cp_age_sensor" android:src="@drawable/icon_cp_age_sensor"
android:gravity="center_vertical" android:gravity="center_vertical"
@ -41,7 +41,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<ImageView <ImageView
android:layout_width="40dp" android:layout_width="30dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="0" android:layout_weight="0"
android:src="@drawable/icon_cp_age_insulin" android:src="@drawable/icon_cp_age_insulin"
@ -61,7 +61,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<ImageView <ImageView
android:layout_width="40dp" android:layout_width="30dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="0" android:layout_weight="0"
android:src="@drawable/icon_cp_age_canula" android:src="@drawable/icon_cp_age_canula"
@ -81,7 +81,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<ImageView <ImageView
android:layout_width="40dp" android:layout_width="30dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="0" android:layout_weight="0"
android:src="@drawable/icon_cp_age_battery" android:src="@drawable/icon_cp_age_battery"

View file

@ -113,6 +113,40 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/action_care_duration_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:width="120dp"
android:padding="10dp"
android:text="@string/careportal_newnstreatment_duration_label"
android:textAppearance="@android:style/TextAppearance.Material.Small"
android:textStyle="bold" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/actions_care_duration"
android:layout_width="130dp"
android:layout_height="40dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="start"
android:minWidth="45dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:text="@string/unit_minute_short"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<include layout="@layout/notes" /> <include layout="@layout/notes" />
<include layout="@layout/datetime" /> <include layout="@layout/datetime" />