Sort by updated initially
This commit is contained in:
@@ -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>
|
||||
|
Reference in New Issue
Block a user