BGSourceFragment -> jetpack
This commit is contained in:
parent
4476d0e0db
commit
fab3c870d7
3 changed files with 49 additions and 54 deletions
|
@ -5,14 +5,14 @@ import android.os.Bundle
|
||||||
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.ImageView
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dagger.android.support.DaggerFragment
|
import dagger.android.support.DaggerFragment
|
||||||
import info.nightscout.androidaps.MainApp
|
import info.nightscout.androidaps.MainApp
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.R
|
||||||
|
import info.nightscout.androidaps.databinding.BgsourceFragmentBinding
|
||||||
|
import info.nightscout.androidaps.databinding.BgsourceItemBinding
|
||||||
import info.nightscout.androidaps.db.BgReading
|
import info.nightscout.androidaps.db.BgReading
|
||||||
import info.nightscout.androidaps.events.EventNewBG
|
import info.nightscout.androidaps.events.EventNewBG
|
||||||
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
|
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
|
||||||
|
@ -31,7 +31,6 @@ import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import kotlinx.android.synthetic.main.bgsource_fragment.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class BGSourceFragment : DaggerFragment() {
|
class BGSourceFragment : DaggerFragment() {
|
||||||
|
@ -44,25 +43,24 @@ class BGSourceFragment : DaggerFragment() {
|
||||||
@Inject lateinit var databaseHelper: DatabaseHelperInterface
|
@Inject lateinit var databaseHelper: DatabaseHelperInterface
|
||||||
|
|
||||||
private val disposable = CompositeDisposable()
|
private val disposable = CompositeDisposable()
|
||||||
private val MILLS_TO_THE_PAST = T.hours(12).msecs()
|
private val millsToThePast = T.hours(12).msecs()
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
private var _binding: BgsourceFragmentBinding? = null
|
||||||
savedInstanceState: Bundle?): View? {
|
|
||||||
return inflater.inflate(R.layout.bgsource_fragment, container, false)
|
// This property is only valid between onCreateView and
|
||||||
}
|
// onDestroyView.
|
||||||
|
private val binding get() = _binding!!
|
||||||
|
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
|
||||||
|
BgsourceFragmentBinding.inflate(inflater, container, false).also { _binding = it }.root
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
bgsource_recyclerview.setHasFixedSize(true)
|
binding.recyclerview.setHasFixedSize(true)
|
||||||
bgsource_recyclerview.layoutManager = LinearLayoutManager(view.context)
|
binding.recyclerview.layoutManager = LinearLayoutManager(view.context)
|
||||||
val now = System.currentTimeMillis()
|
val now = System.currentTimeMillis()
|
||||||
bgsource_recyclerview.adapter = RecyclerViewAdapter(getBgData(now))
|
binding.recyclerview.adapter = RecyclerViewAdapter(getBgData(now))
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
bgsource_recyclerview?.adapter = null // avoid leaks
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
|
@ -87,17 +85,25 @@ class BGSourceFragment : DaggerFragment() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
|
binding.recyclerview.adapter = null // avoid leaks
|
||||||
|
}
|
||||||
|
|
||||||
private fun updateGUI() {
|
private fun updateGUI() {
|
||||||
|
if (_binding == null) return
|
||||||
val now = System.currentTimeMillis()
|
val now = System.currentTimeMillis()
|
||||||
(bgsource_recyclerview?.adapter as? RecyclerViewAdapter)?.setData(getBgData(now))
|
(binding.recyclerview.adapter as? RecyclerViewAdapter)?.setData(getBgData(now))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getBgData(now: Long) = MainApp.getDbHelper()
|
private fun getBgData(now: Long) = MainApp.getDbHelper()
|
||||||
.getAllBgreadingsDataFromTime(now - MILLS_TO_THE_PAST, false)
|
.getAllBgreadingsDataFromTime(now - millsToThePast, false)
|
||||||
|
|
||||||
inner class RecyclerViewAdapter internal constructor(bgReadings: List<BgReading>) : RecyclerView.Adapter<BgReadingsViewHolder>() {
|
inner class RecyclerViewAdapter internal constructor(bgReadings: List<BgReading>) : RecyclerView.Adapter<BgReadingsViewHolder>() {
|
||||||
|
|
||||||
private var callbackHelper = ListUpdateCallbackHelper(this) { bgsource_recyclerview?.smoothScrollToPosition(0) }
|
private var callbackHelper = ListUpdateCallbackHelper(this) { binding.recyclerview.smoothScrollToPosition(0) }
|
||||||
|
|
||||||
private val currentData: MutableList<BgReading> = mutableListOf<BgReading>().also { it.addAll(bgReadings) }
|
private val currentData: MutableList<BgReading> = mutableListOf<BgReading>().also { it.addAll(bgReadings) }
|
||||||
|
|
||||||
|
@ -130,30 +136,25 @@ class BGSourceFragment : DaggerFragment() {
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: BgReadingsViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: BgReadingsViewHolder, position: Int) {
|
||||||
val bgReading = currentData[position]
|
val bgReading = currentData[position]
|
||||||
holder.ns.visibility = (NSUpload.isIdValid(bgReading._id)).toVisibility()
|
holder.binding.ns.visibility = (NSUpload.isIdValid(bgReading._id)).toVisibility()
|
||||||
holder.invalid.visibility = bgReading.isValid.not().toVisibility()
|
holder.binding.invalid.visibility = bgReading.isValid.not().toVisibility()
|
||||||
holder.date.text = dateUtil.dateAndTimeString(bgReading.date)
|
holder.binding.date.text = dateUtil.dateAndTimeString(bgReading.date)
|
||||||
holder.value.text = bgReading.valueToUnitsToString(profileFunction.getUnits())
|
holder.binding.value.text = bgReading.valueToUnitsToString(profileFunction.getUnits())
|
||||||
holder.direction.setImageResource(bgReading.directionToIcon(databaseHelper))
|
holder.binding.direction.setImageResource(bgReading.directionToIcon(databaseHelper))
|
||||||
holder.remove.tag = bgReading
|
holder.binding.remove.tag = bgReading
|
||||||
holder.remove.visibility = bgReading.isValid.toVisibility()
|
holder.binding.remove.visibility = bgReading.isValid.toVisibility()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount(): Int {
|
override fun getItemCount(): Int {
|
||||||
return currentData.size
|
return currentData.size
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class BgReadingsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
inner class BgReadingsViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
|
|
||||||
var date: TextView = itemView.findViewById(R.id.bgsource_date)
|
val binding = BgsourceItemBinding.bind(view)
|
||||||
var value: TextView = itemView.findViewById(R.id.bgsource_value)
|
|
||||||
var direction: ImageView = itemView.findViewById(R.id.bgsource_direction)
|
|
||||||
var invalid: TextView = itemView.findViewById(R.id.invalid_sign)
|
|
||||||
var ns: TextView = itemView.findViewById(R.id.ns_sign)
|
|
||||||
var remove: TextView = itemView.findViewById(R.id.bgsource_remove)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
remove.setOnClickListener { v: View ->
|
binding.remove.setOnClickListener { v: View ->
|
||||||
val bgReading = v.tag as BgReading
|
val bgReading = v.tag as BgReading
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
val text = dateUtil.dateAndTimeString(bgReading.date) + "\n" + bgReading.valueToUnitsToString(profileFunction.getUnits())
|
val text = dateUtil.dateAndTimeString(bgReading.date) + "\n" + bgReading.valueToUnitsToString(profileFunction.getUnits())
|
||||||
|
@ -163,7 +164,7 @@ class BGSourceFragment : DaggerFragment() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
remove.paintFlags = remove.paintFlags or Paint.UNDERLINE_TEXT_FLAG
|
binding.remove.paintFlags = binding.remove.paintFlags or Paint.UNDERLINE_TEXT_FLAG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,16 @@
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
android:paddingTop="2dp"
|
android:paddingTop="2dp"
|
||||||
tools:context="info.nightscout.androidaps.plugins.source.BGSourceFragment">
|
tools:context="info.nightscout.androidaps.plugins.source.BGSourceFragment">
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recyclerview"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
</androidx.recyclerview.widget.RecyclerView>
|
||||||
android:id="@+id/bgsource_recyclerview"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bgsource_date"
|
android:id="@+id/date"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="16:55"
|
android:text="16:55"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bgsource_value"
|
android:id="@+id/value"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
|
@ -36,14 +36,14 @@
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/bgsource_direction"
|
android:id="@+id/direction"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
card_view:srcCompat="@drawable/ic_flat" />
|
card_view:srcCompat="@drawable/ic_flat" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/ns_sign"
|
android:id="@+id/ns"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
android:textColor="@color/colorSetTempButton" />
|
android:textColor="@color/colorSetTempButton" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/invalid_sign"
|
android:id="@+id/invalid"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
android:textColor="@android:color/holo_red_light" />
|
android:textColor="@android:color/holo_red_light" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/bgsource_remove"
|
android:id="@+id/remove"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingEnd="5dp"
|
android:paddingEnd="5dp"
|
||||||
|
|
Loading…
Reference in a new issue