|
|
|
@ -5,6 +5,7 @@ import android.view.View
|
|
|
|
|
import android.widget.AdapterView
|
|
|
|
|
import android.widget.ArrayAdapter
|
|
|
|
|
import android.widget.Spinner
|
|
|
|
|
import android.widget.ToggleButton
|
|
|
|
|
import androidx.fragment.app.Fragment
|
|
|
|
|
import androidx.fragment.app.viewModels
|
|
|
|
|
import androidx.lifecycle.ViewModel
|
|
|
|
@ -20,6 +21,7 @@ import fr.uca.iut.clfreville2.teaiswarm.adapter.RepositoryListAdapter
|
|
|
|
|
import fr.uca.iut.clfreville2.teaiswarm.model.Repository
|
|
|
|
|
import fr.uca.iut.clfreville2.teaiswarm.model.search.SearchSettings
|
|
|
|
|
import fr.uca.iut.clfreville2.teaiswarm.model.search.SortCriteria
|
|
|
|
|
import fr.uca.iut.clfreville2.teaiswarm.model.search.SortOrder
|
|
|
|
|
import fr.uca.iut.clfreville2.teaiswarm.network.RepositoryService
|
|
|
|
|
import kotlinx.coroutines.flow.collectLatest
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
@ -33,8 +35,11 @@ class RepositoryListFragment(
|
|
|
|
|
) : Fragment(R.layout.repository_list) {
|
|
|
|
|
|
|
|
|
|
private val service = TeaIsWarm.service
|
|
|
|
|
private var search: SearchSettings by Delegates.observable(SearchSettings()) { _, _, _ ->
|
|
|
|
|
updateRepositories()
|
|
|
|
|
private var lateInit = true
|
|
|
|
|
private var search: SearchSettings by Delegates.observable(initialSearch) { _, _, _ ->
|
|
|
|
|
if (!lateInit) {
|
|
|
|
|
updateRepositories()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private lateinit var recyclerView: RecyclerView
|
|
|
|
@ -53,6 +58,22 @@ class RepositoryListFragment(
|
|
|
|
|
spinner.adapter = adapter
|
|
|
|
|
}
|
|
|
|
|
spinner.onItemSelectedListener = SortListener()
|
|
|
|
|
spinner.setSelection(search.sort.ordinal)
|
|
|
|
|
|
|
|
|
|
val toggleSort: ToggleButton = view.findViewById(R.id.desc_sort_toggle)
|
|
|
|
|
toggleSort.setOnCheckedChangeListener { _, isChecked ->
|
|
|
|
|
search =
|
|
|
|
|
search.copy(
|
|
|
|
|
order = if (isChecked) {
|
|
|
|
|
SortOrder.DESC
|
|
|
|
|
} else {
|
|
|
|
|
SortOrder.ASC
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
if (search.order == SortOrder.DESC) {
|
|
|
|
|
toggleSort.isChecked = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val viewModel by viewModels<RepositoryViewModel>(
|
|
|
|
|
factoryProducer = {
|
|
|
|
@ -71,6 +92,7 @@ class RepositoryListFragment(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lateInit = true
|
|
|
|
|
search = initialSearch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|