Implemented rudimentary batteries listing.
This commit is contained in:
@@ -40,7 +40,7 @@ class AddBatteryFragment : Fragment() {
|
|||||||
|
|
||||||
val model = ViewModelProvider(this)[AddBatteryViewModel::class.java]
|
val model = ViewModelProvider(this)[AddBatteryViewModel::class.java]
|
||||||
|
|
||||||
var batteries = emptyList<Battery>()
|
var batteries by mutableStateOf(emptyList<Battery>())
|
||||||
|
|
||||||
model.batteries.observe(viewLifecycleOwner) {
|
model.batteries.observe(viewLifecycleOwner) {
|
||||||
batteries = it
|
batteries = it
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class AddChargeFragment : Fragment() {
|
|||||||
): View {
|
): View {
|
||||||
|
|
||||||
model = ViewModelProvider(this)[AddChargeViewModel::class.java]
|
model = ViewModelProvider(this)[AddChargeViewModel::class.java]
|
||||||
var batteries = emptyList<Battery>()
|
var batteries by mutableStateOf(emptyList<Battery>())
|
||||||
|
|
||||||
model.batteries.observe(this.viewLifecycleOwner){
|
model.batteries.observe(this.viewLifecycleOwner){
|
||||||
batteries = it
|
batteries = it
|
||||||
|
|||||||
@@ -4,29 +4,80 @@ 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.TextView
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.LazyListState
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.material.*
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.setValue
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
|
import com.sockenklaus.batterytracker.R
|
||||||
|
import com.sockenklaus.batterytracker.room.entities.Battery
|
||||||
|
import com.sockenklaus.batterytracker.ui.composables.MyOutlinedTextFieldWithSuffix
|
||||||
import com.sockenklaus.batterytracker.ui.theme.BatteryTrackerTheme
|
import com.sockenklaus.batterytracker.ui.theme.BatteryTrackerTheme
|
||||||
|
|
||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterialApi::class)
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
|
|
||||||
val model = ViewModelProvider(this)[HomeViewModel::class.java]
|
|
||||||
|
|
||||||
return ComposeView(requireContext()).apply {
|
return ComposeView(requireContext()).apply {
|
||||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
BatteryTrackerTheme() {
|
BatteryTrackerTheme() {
|
||||||
|
val model: HomeViewModel = viewModel()
|
||||||
|
var batteries by remember { mutableStateOf(emptyList<Battery>()) }
|
||||||
|
var filterText by remember { mutableStateOf("")}
|
||||||
|
|
||||||
|
model.batteries.observe(viewLifecycleOwner) {
|
||||||
|
batteries = it
|
||||||
|
}
|
||||||
|
|
||||||
|
val filteredList = batteries.filter { it.name.contains(filterText, ignoreCase = true) }
|
||||||
|
val modHorizontalPadding = Modifier.padding(horizontal = 16.dp)
|
||||||
|
|
||||||
|
Column {
|
||||||
|
MyOutlinedTextFieldWithSuffix(
|
||||||
|
value = filterText,
|
||||||
|
onValueChange = { filterText = it },
|
||||||
|
labelId = R.string.hint_filter_batteries,
|
||||||
|
modifier = Modifier.padding(
|
||||||
|
start = 16.dp,
|
||||||
|
end = 16.dp,
|
||||||
|
top = 16.dp
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
LazyColumn(
|
||||||
|
state = LazyListState()
|
||||||
|
) {
|
||||||
|
items(filteredList){ battery ->
|
||||||
|
ListItem(
|
||||||
|
text = { Text(battery.name) },
|
||||||
|
secondaryText = {
|
||||||
|
if(battery.declaredCapacity != null){
|
||||||
|
Text("Capacity: ${battery.declaredCapacity} Ah")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Divider(modHorizontalPadding)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
package com.sockenklaus.batterytracker.ui.fragments.home
|
package com.sockenklaus.batterytracker.ui.fragments.home
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.LiveData
|
import com.sockenklaus.batterytracker.room.BatteryTrackerDB
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
|
|
||||||
class HomeViewModel(application: Application) : AndroidViewModel(application) {
|
class HomeViewModel(application: Application) : AndroidViewModel(application) {
|
||||||
|
|
||||||
private val _text = MutableLiveData<String>().apply {
|
private val db = BatteryTrackerDB.getInstance(application)
|
||||||
value = "This is home Fragment"
|
val batteries = db.batteryDao().getBatteries().asLiveData()
|
||||||
}
|
|
||||||
val text: LiveData<String> = _text
|
|
||||||
}
|
}
|
||||||
@@ -30,4 +30,5 @@
|
|||||||
<string name="helper_required">* Required</string>
|
<string name="helper_required">* Required</string>
|
||||||
<string name="helper_battery_not_unique">Battery-Name not unique!</string>
|
<string name="helper_battery_not_unique">Battery-Name not unique!</string>
|
||||||
<string name="helper_battery_not_found">Battery not found</string>
|
<string name="helper_battery_not_found">Battery not found</string>
|
||||||
|
<string name="hint_filter_batteries">Filter Batteries…</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user