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.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,9 +35,12 @@ 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
|
||||||
|
private var search: SearchSettings by Delegates.observable(initialSearch) { _, _, _ ->
|
||||||
|
if (!lateInit) {
|
||||||
updateRepositories()
|
updateRepositories()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private lateinit var recyclerView: RecyclerView
|
private lateinit var recyclerView: RecyclerView
|
||||||
private lateinit var pagingAdapter: RepositoryListAdapter
|
private lateinit var pagingAdapter: RepositoryListAdapter
|
||||||
@@ -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,12 +3,22 @@
|
|||||||
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
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
<Spinner
|
<Spinner
|
||||||
android:id="@+id/sort_by_spinner"
|
android:id="@+id/sort_by_spinner"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="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"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@@ -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>
|
||||||
|
Reference in New Issue
Block a user