Sort by updated initially

main
Clément FRÉVILLE 2 years ago
parent 8651a29944
commit 6396947de9

@ -12,6 +12,8 @@ import fr.uca.iut.clfreville2.teaiswarm.fragment.RepositoryListFragment
import fr.uca.iut.clfreville2.teaiswarm.fragment.SetupConfigFragment
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
const val REPOSITORY_OWNER = "repository_owner"
const val REPOSITORY_NAME = "repository_name"
@ -48,7 +50,7 @@ class MainActivity : AppCompatActivity() {
override fun instantiate(classLoader: ClassLoader, className: String): Fragment =
when (className) {
RepositoryListFragment::class.java.name -> RepositoryListFragment(
SearchSettings(), onClick
SearchSettings(sort = SortCriteria.UPDATED, order = SortOrder.DESC), onClick
)
SetupConfigFragment::class.java.name -> SetupConfigFragment(preferences)
else -> super.instantiate(classLoader, className)

@ -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
}

@ -3,11 +3,21 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Spinner
android:id="@+id/sort_by_spinner"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:layout_height="wrap_content">
<Spinner
android:id="@+id/sort_by_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ToggleButton
android:id="@+id/desc_sort_toggle"
android:textOff="@string/asc_sort"
android:textOn="@string/desc_sort"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/repositories_view"

@ -15,6 +15,7 @@
<string name="configure">Configure</string>
<string name="activity">Activity</string>
<string name="owner_not_found">User not found</string>
<string name="asc_sort">Asc</string>
<string name="desc_sort">Desc</string>
<string-array name="sort_criteria">
<item>alpha</item>

Loading…
Cancel
Save