FoodFragment spinner replacement
This commit is contained in:
parent
a3ffd23e29
commit
2441ee1592
3 changed files with 60 additions and 84 deletions
|
@ -114,7 +114,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
this.arguments?.let { bundle ->
|
||||
carbsPassedIntoWizard = bundle.getInt("carbs_input").toDouble()
|
||||
carbsPassedIntoWizard = bundle.getDouble("carbs_input")
|
||||
notesPassedIntoWizard = bundle.getString("notes_input").toString()
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.general.food
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Paint
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
|
@ -24,18 +23,18 @@ import info.nightscout.androidaps.databinding.FoodFragmentBinding
|
|||
import info.nightscout.androidaps.databinding.FoodItemBinding
|
||||
import info.nightscout.androidaps.dialogs.WizardDialog
|
||||
import info.nightscout.androidaps.events.EventFoodDatabaseChanged
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.ui.UIRunnable
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import io.reactivex.rxjava3.core.Completable
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
|
@ -43,7 +42,6 @@ import io.reactivex.rxjava3.kotlin.subscribeBy
|
|||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class FoodFragment : DaggerFragment() {
|
||||
|
||||
|
@ -66,10 +64,8 @@ class FoodFragment : DaggerFragment() {
|
|||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
_binding = FoodFragmentBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
|
||||
FoodFragmentBinding.inflate(inflater, container, false).also { _binding = it }.root
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -80,8 +76,10 @@ class FoodFragment : DaggerFragment() {
|
|||
binding.refreshFromNightscout.setOnClickListener {
|
||||
context?.let { context ->
|
||||
OKDialog.showConfirmation(context, rh.gs(R.string.refresheventsfromnightscout) + " ?", {
|
||||
uel.log(Action.FOOD, Sources.Food, rh.gs(R.string.refresheventsfromnightscout),
|
||||
ValueWithUnit.SimpleString(rh.gsNotLocalised(R.string.refresheventsfromnightscout)))
|
||||
uel.log(
|
||||
Action.FOOD, Sources.Food, rh.gs(R.string.refresheventsfromnightscout),
|
||||
ValueWithUnit.SimpleString(rh.gsNotLocalised(R.string.refresheventsfromnightscout))
|
||||
)
|
||||
disposable += Completable.fromAction { repository.deleteAllFoods() }
|
||||
.subscribeOn(aapsSchedulers.io)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
|
@ -97,30 +95,12 @@ class FoodFragment : DaggerFragment() {
|
|||
|
||||
binding.clearfilter.setOnClickListener {
|
||||
binding.filter.setText("")
|
||||
binding.category.setSelection(0)
|
||||
binding.subcategory.setSelection(0)
|
||||
binding.categoryList.setText(rh.gs(R.string.none), false)
|
||||
binding.subcategoryList.setText(rh.gs(R.string.none), false)
|
||||
filterData()
|
||||
}
|
||||
binding.category.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
fillSubcategories()
|
||||
filterData()
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
fillSubcategories()
|
||||
filterData()
|
||||
}
|
||||
}
|
||||
binding.subcategory.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
filterData()
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
filterData()
|
||||
}
|
||||
}
|
||||
binding.categoryList.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ -> fillSubcategories(); filterData() }
|
||||
binding.subcategoryList.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ -> filterData() }
|
||||
binding.filter.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
|
@ -134,12 +114,11 @@ class FoodFragment : DaggerFragment() {
|
|||
@Synchronized
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
disposable.add(rxBus
|
||||
disposable += rxBus
|
||||
.toObservable(EventFoodDatabaseChanged::class.java)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.debounce(1L, TimeUnit.SECONDS)
|
||||
.subscribe({ swapAdapter() }, fabricPrivacy::logException)
|
||||
)
|
||||
swapAdapter()
|
||||
}
|
||||
|
||||
|
@ -178,13 +157,13 @@ class FoodFragment : DaggerFragment() {
|
|||
val categories = ArrayList(catSet)
|
||||
categories.add(0, rh.gs(R.string.none))
|
||||
context?.let { context ->
|
||||
val adapterCategories = ArrayAdapter(context, R.layout.spinner_centered, categories)
|
||||
binding.category.adapter = adapterCategories
|
||||
binding.categoryList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, categories))
|
||||
binding.categoryList.setText(rh.gs(R.string.none), false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun fillSubcategories() {
|
||||
val categoryFilter = binding.category.selectedItem.toString()
|
||||
val categoryFilter = binding.categoryList.text.toString()
|
||||
val subCatSet: MutableSet<CharSequence> = HashSet()
|
||||
if (categoryFilter != rh.gs(R.string.none)) {
|
||||
for (f in unfiltered) {
|
||||
|
@ -198,17 +177,15 @@ class FoodFragment : DaggerFragment() {
|
|||
val subcategories = ArrayList(subCatSet)
|
||||
subcategories.add(0, rh.gs(R.string.none))
|
||||
context?.let { context ->
|
||||
val adapterSubcategories = ArrayAdapter(context, R.layout.spinner_centered, subcategories)
|
||||
binding.subcategory.adapter = adapterSubcategories
|
||||
binding.subcategoryList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, subcategories))
|
||||
binding.subcategoryList.setText(rh.gs(R.string.none), false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun filterData() {
|
||||
val textFilter = binding.filter.text.toString()
|
||||
val categoryFilter = binding.category.selectedItem?.toString()
|
||||
?: rh.gs(R.string.none)
|
||||
val subcategoryFilter = binding.subcategory.selectedItem?.toString()
|
||||
?: rh.gs(R.string.none)
|
||||
val categoryFilter = binding.categoryList.text.toString()
|
||||
val subcategoryFilter = binding.subcategoryList.text.toString()
|
||||
val newFiltered = ArrayList<Food>()
|
||||
for (f in unfiltered) {
|
||||
if (f.category == null || f.subCategory == null) continue
|
||||
|
@ -267,18 +244,17 @@ class FoodFragment : DaggerFragment() {
|
|||
}, null)
|
||||
}
|
||||
}
|
||||
binding.icCalculator.setOnClickListener { v:View ->
|
||||
binding.icCalculator.setOnClickListener { v: View ->
|
||||
val food = v.tag as Food
|
||||
activity?.let { activity ->
|
||||
protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable {
|
||||
if (isAdded) {
|
||||
val wizardDialog = WizardDialog()
|
||||
val bundle = Bundle()
|
||||
bundle.putInt("carbs_input", food.carbs)
|
||||
if (isAdded)
|
||||
WizardDialog().also { dialog ->
|
||||
dialog.arguments = Bundle().also { bundle ->
|
||||
bundle.putDouble("carbs_input", food.carbs.toDouble())
|
||||
bundle.putString("notes_input", " ${food.name} - ${food.carbs}g")
|
||||
wizardDialog.setArguments(bundle)
|
||||
wizardDialog.show(childFragmentManager, "Food Item")
|
||||
}
|
||||
}.show(childFragmentManager, "Food Item")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,44 +49,44 @@
|
|||
app:srcCompat="@android:drawable/ic_menu_close_clear_cancel" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/category" />
|
||||
android:hint="@string/category"
|
||||
app:boxStrokeColor="@color/list_delimiter">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/category"
|
||||
android:layout_width="wrap_content"
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/categoryList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="end"
|
||||
android:minWidth="100dp" />
|
||||
android:clickable="true"
|
||||
android:enabled="false"
|
||||
tools:ignore="KeyboardInaccessibleWidget" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/subcategory" />
|
||||
android:hint="@string/subcategory"
|
||||
app:boxStrokeColor="@color/list_delimiter">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/subcategory"
|
||||
android:layout_width="wrap_content"
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/subcategoryList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="end"
|
||||
android:minWidth="100dp" />
|
||||
android:clickable="true"
|
||||
android:enabled="false"
|
||||
tools:ignore="KeyboardInaccessibleWidget" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerview"
|
||||
|
|
Loading…
Reference in a new issue