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

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

@ -3,11 +3,21 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout
<Spinner
android:id="@+id/sort_by_spinner"
android:layout_width="match_parent" 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 <androidx.recyclerview.widget.RecyclerView
android:id="@+id/repositories_view" android:id="@+id/repositories_view"

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

Loading…
Cancel
Save