feat: revamping search filter part1

This commit is contained in:
sneazy-ibo
2024-03-21 01:14:17 +01:00
parent 39d6f0fbd6
commit 1ab073dfed
23 changed files with 480 additions and 62 deletions

View File

@@ -13,9 +13,10 @@ import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.ImageView
import android.widget.PopupMenu
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat.startActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.HORIZONTAL
@@ -44,6 +45,18 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
private lateinit var searchHistoryAdapter: SearchHistoryAdapter
private lateinit var binding: ItemSearchHeaderBinding
private fun updateFilterTextViewDrawable() {
val filterDrawable = when (activity.result.sort) {
Anilist.sortBy[0] -> R.drawable.ic_round_area_chart_24
Anilist.sortBy[1] -> R.drawable.ic_round_filter_peak_24
Anilist.sortBy[2] -> R.drawable.ic_round_star_graph_24
Anilist.sortBy[3] -> R.drawable.ic_round_filter_list_24
Anilist.sortBy[4] -> R.drawable.ic_round_filter_list_24_reverse
Anilist.sortBy[5] -> R.drawable.ic_round_assist_walker_24
else -> R.drawable.ic_round_filter_alt_24
}
binding.filterTextView.setCompoundDrawablesWithIntrinsicBounds(filterDrawable, 0, 0, 0)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchHeaderViewHolder {
val binding =
ItemSearchHeaderBinding.inflate(LayoutInflater.from(parent.context), parent, false)
@@ -92,7 +105,7 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
binding.searchAdultCheck.isChecked = adult
binding.searchList.isChecked = listOnly == true
binding.searchChipRecycler.adapter = SearchChipAdapter(activity).also {
binding.searchChipRecycler.adapter = SearchChipAdapter(activity, this).also {
activity.updateChips = { it.update() }
}
@@ -102,6 +115,47 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
binding.searchFilter.setOnClickListener {
SearchFilterBottomDialog.newInstance().show(activity.supportFragmentManager, "dialog")
}
binding.searchFilter.setOnLongClickListener {
val popupMenu = PopupMenu(activity, binding.searchFilter)
popupMenu.menuInflater.inflate(R.menu.sortby_filter_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.sort_by_score -> {
activity.result.sort = Anilist.sortBy[0]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
R.id.sort_by_popular -> {
activity.result.sort = Anilist.sortBy[1]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
R.id.sort_by_trending -> {
activity.result.sort = Anilist.sortBy[2]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
R.id.sort_by_a_z -> {
activity.result.sort = Anilist.sortBy[3]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
R.id.sort_by_z_a -> {
activity.result.sort = Anilist.sortBy[4]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
R.id.sort_by_pure_pain -> {
activity.result.sort = Anilist.sortBy[5]
activity.updateChips.invoke()
updateFilterTextViewDrawable()
}
}
true
}
popupMenu.show()
true
}
binding.searchByImage.setOnClickListener {
activity.startActivity(Intent(activity, ImageSearchActivity::class.java))
}
@@ -256,7 +310,7 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
}
class SearchChipAdapter(val activity: SearchActivity) :
class SearchChipAdapter(val activity: SearchActivity, private val searchAdapter: SearchAdapter) :
RecyclerView.Adapter<SearchChipAdapter.SearchChipViewHolder>() {
private var chips = activity.result.toChipList()
@@ -278,6 +332,7 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
activity.result.removeChip(chip)
update()
activity.search()
searchAdapter.updateFilterTextViewDrawable()
}
}
}
@@ -286,6 +341,7 @@ class SearchAdapter(private val activity: SearchActivity, private val type: Stri
fun update() {
chips = activity.result.toChipList()
notifyDataSetChanged()
searchAdapter.updateFilterTextViewDrawable()
}
override fun getItemCount(): Int = chips.size

View File

@@ -1,11 +1,15 @@
package ani.dantotsu.media
import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
import android.view.ViewGroup
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.AnimationUtils
import android.widget.ArrayAdapter
import android.widget.PopupMenu
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -24,6 +28,7 @@ class SearchFilterBottomDialog : BottomSheetDialogFragment() {
private val binding get() = _binding!!
private lateinit var activity: SearchActivity
private var selectedCountry: String? = null
override fun onCreateView(
inflater: LayoutInflater,
@@ -38,6 +43,29 @@ class SearchFilterBottomDialog : BottomSheetDialogFragment() {
private var exGenres = mutableListOf<String>()
private var selectedTags = mutableListOf<String>()
private var exTags = mutableListOf<String>()
private fun updateChips() {
binding.searchFilterGenres.adapter?.notifyDataSetChanged()
binding.searchFilterTags.adapter?.notifyDataSetChanged()
}
private fun startBounceZoomAnimation(view: View? = null) {
val targetView = view ?: binding.sortByFilter
val bounceZoomAnimation = AnimationUtils.loadAnimation(requireContext(), R.anim.bounce_zoom)
targetView.startAnimation(bounceZoomAnimation)
}
private fun setSortByFilterImage() {
val filterDrawable = when (activity.result.sort) {
Anilist.sortBy[0] -> R.drawable.ic_round_area_chart_24
Anilist.sortBy[1] -> R.drawable.ic_round_filter_peak_24
Anilist.sortBy[2] -> R.drawable.ic_round_star_graph_24
Anilist.sortBy[3] -> R.drawable.ic_round_filter_list_24
Anilist.sortBy[4] -> R.drawable.ic_round_filter_list_24_reverse
Anilist.sortBy[5] -> R.drawable.ic_round_assist_walker_24
else -> R.drawable.ic_round_filter_alt_24
}
binding.sortByFilter.setImageResource(filterDrawable)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -47,14 +75,121 @@ class SearchFilterBottomDialog : BottomSheetDialogFragment() {
exGenres = activity.result.excludedGenres ?: mutableListOf()
selectedTags = activity.result.tags ?: mutableListOf()
exTags = activity.result.excludedTags ?: mutableListOf()
setSortByFilterImage()
binding.resetSearchFilter.setOnClickListener {
activity.result.sort = null
binding.sortByFilter.setImageResource(R.drawable.ic_round_filter_alt_24)
startBounceZoomAnimation(binding.sortByFilter)
selectedCountry = null
binding.countryFilter.setImageResource(R.drawable.ic_round_globe_search_googlefonts)
startBounceZoomAnimation(binding.countryFilter)
val rotateAnimation = ObjectAnimator.ofFloat(binding.resetSearchFilter, "rotation", 180f, 540f)
rotateAnimation.duration = 500
rotateAnimation.interpolator = AccelerateDecelerateInterpolator()
rotateAnimation.start()
selectedGenres.clear()
exGenres.clear()
selectedTags.clear()
exTags.clear()
binding.searchStatus.setText("")
binding.searchFormat.setText("")
binding.searchSeason.setText("")
binding.searchYear.setText("")
binding.searchStatus.clearFocus()
binding.searchFormat.clearFocus()
binding.searchSeason.clearFocus()
binding.searchYear.clearFocus()
updateChips()
}
binding.sortByFilter.setOnClickListener { view ->
val popupMenu = PopupMenu(requireContext(), view)
popupMenu.menuInflater.inflate(R.menu.sortby_filter_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.sort_by_score -> {
activity.result.sort = Anilist.sortBy[0]
binding.sortByFilter.setImageResource(R.drawable.ic_round_area_chart_24)
startBounceZoomAnimation()
}
R.id.sort_by_popular -> {
activity.result.sort = Anilist.sortBy[1]
binding.sortByFilter.setImageResource(R.drawable.ic_round_filter_peak_24)
startBounceZoomAnimation()
}
R.id.sort_by_trending -> {
activity.result.sort = Anilist.sortBy[2]
binding.sortByFilter.setImageResource(R.drawable.ic_round_star_graph_24)
startBounceZoomAnimation()
}
R.id.sort_by_a_z -> {
activity.result.sort = Anilist.sortBy[3]
binding.sortByFilter.setImageResource(R.drawable.ic_round_filter_list_24)
startBounceZoomAnimation()
}
R.id.sort_by_z_a -> {
activity.result.sort = Anilist.sortBy[4]
binding.sortByFilter.setImageResource(R.drawable.ic_round_filter_list_24_reverse)
startBounceZoomAnimation()
}
R.id.sort_by_pure_pain -> {
activity.result.sort = Anilist.sortBy[5]
binding.sortByFilter.setImageResource(R.drawable.ic_round_assist_walker_24)
startBounceZoomAnimation()
}
}
true
}
popupMenu.show()
}
binding.countryFilter.setOnClickListener { view ->
val popupMenu = PopupMenu(requireContext(), view)
popupMenu.menuInflater.inflate(R.menu.country_filter_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.country_china -> {
selectedCountry = "China"
binding.countryFilter.setImageResource(R.drawable.ic_round_globe_china_googlefonts)
startBounceZoomAnimation(binding.countryFilter)
}
R.id.country_south_korea -> {
selectedCountry = "South Korea"
binding.countryFilter.setImageResource(R.drawable.ic_round_globe_south_korea_googlefonts)
startBounceZoomAnimation(binding.countryFilter)
}
R.id.country_japan -> {
selectedCountry = "Japan"
binding.countryFilter.setImageResource(R.drawable.ic_round_globe_japan_googlefonts)
startBounceZoomAnimation(binding.countryFilter)
}
R.id.country_taiwan -> {
selectedCountry = "Taiwan"
binding.countryFilter.setImageResource(R.drawable.ic_round_globe_taiwan_googlefonts)
startBounceZoomAnimation(binding.countryFilter)
}
}
true
}
popupMenu.show()
}
binding.searchFilterApply.setOnClickListener {
activity.result.apply {
format = binding.searchFormat.text.toString().ifBlank { null }
sort = binding.searchSortBy.text.toString().ifBlank { null }
?.let { Anilist.sortBy[resources.getStringArray(R.array.sort_by).indexOf(it)] }
season = binding.searchSeason.text.toString().ifBlank { null }
seasonYear = binding.searchYear.text.toString().toIntOrNull()
sort = activity.result.sort
genres = selectedGenres
tags = selectedTags
excludedGenres = exGenres
@@ -68,17 +203,6 @@ class SearchFilterBottomDialog : BottomSheetDialogFragment() {
dismiss()
}
binding.searchSortBy.setText(activity.result.sort?.let {
resources.getStringArray(R.array.sort_by)[Anilist.sortBy.indexOf(it)]
})
binding.searchSortBy.setAdapter(
ArrayAdapter(
binding.root.context,
R.layout.item_dropdown,
resources.getStringArray(R.array.sort_by)
)
)
binding.searchFormat.setText(activity.result.format)
binding.searchFormat.setAdapter(
ArrayAdapter(

View File

@@ -151,22 +151,23 @@ class ProfileFragment : Fragment() {
private fun setFavPeople() {
if (favStaff.isEmpty()) {
binding.profileFavStaffContainer.visibility = View.GONE
} else {
binding.profileFavStaffRecycler.adapter = AuthorAdapter(favStaff)
binding.profileFavStaffRecycler.layoutManager = LinearLayoutManager(
activity, LinearLayoutManager.HORIZONTAL, false
)
binding.profileFavStaffRecycler.layoutAnimation = LayoutAnimationController(setSlideIn(), 0.25f)
}
binding.profileFavStaffRecycler.adapter = AuthorAdapter(favStaff)
binding.profileFavStaffRecycler.layoutManager = LinearLayoutManager(
activity,
LinearLayoutManager.HORIZONTAL,
false
)
if (favCharacter.isEmpty()) {
binding.profileFavCharactersContainer.visibility = View.GONE
} else {
binding.profileFavCharactersRecycler.adapter = CharacterAdapter(favCharacter)
binding.profileFavCharactersRecycler.layoutManager = LinearLayoutManager(
activity, LinearLayoutManager.HORIZONTAL, false
)
binding.profileFavCharactersRecycler.layoutAnimation = LayoutAnimationController(setSlideIn(), 0.25f)
}
binding.profileFavCharactersRecycler.adapter = CharacterAdapter(favCharacter)
binding.profileFavCharactersRecycler.layoutManager = LinearLayoutManager(
activity,
LinearLayoutManager.HORIZONTAL,
false
)
}
private fun initRecyclerView(

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M8,17l3.39,-4.66c0.33,-0.46 0.98,-0.55 1.42,-0.2L21,18.5V19c0,0.55 -0.45,1 -1,1H4c-0.55,0 -1,-0.45 -1,-1l0,-5.72c0.22,0 0.44,0.07 0.62,0.22L8,17zM3,11c0.44,0 0.88,0.15 1.25,0.44l3.37,2.69l2.77,-3.81c0.66,-0.91 1.95,-1.1 2.85,-0.4L21,15.97V8c0,-0.55 -0.45,-1 -1,-1h-3l-4.18,-3.34c-0.45,-0.36 -1.1,-0.27 -1.44,0.2L7,10L3.6,7.45C3.42,7.32 3.21,7.25 3,7.25L3,11z" />
</vector>

View File

@@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0" />
<path
android:fillColor="@android:color/white"
android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8L2.75,18.1c-0.34,0.43 -0.26,1.06 0.17,1.4l0,0c0.44,0.34 1.07,0.26 1.41,-0.17l2.56,-3.29c0.33,-0.42 0.47,-0.95 0.41,-1.48l-0.07,-0.53L8,14.75V19c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1v-4.29c0,-0.53 -0.21,-1.04 -0.59,-1.41l-1.53,-1.53l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32l-0.75,7.46c-0.04,0.44 0.3,0.83 0.75,0.83h0c0.38,0 0.7,-0.29 0.75,-0.66l0.33,-2.84h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z" />
</vector>

View File

@@ -1,16 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#000000"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M12.5,4.5m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
<path
android:fillColor="@android:color/white"
android:pathData="M19.77,17.72l-0.64,-6.37C19.06,10.58 18.41,10 17.64,10H16c-1.5,-0.02 -2.86,-0.54 -3.76,-1.44l-2,-1.98C10.08,6.42 9.62,6 8.83,6C8.32,6 7.81,6.2 7.42,6.59L4.08,9.91c-0.53,0.68 -0.51,1.57 -0.21,2.13l1.43,2.8l-3.15,4.05l1.57,1.24l3.68,-4.73l-0.17,-1.36L8,14.75V20h2v-6.12l-2.12,-2.12l2.36,-2.36c0.94,0.94 1.72,1.82 3.59,2.32L13,20h1.5l0.41,-3.5h3.18l0.14,1.22c-0.44,0.26 -0.73,0.74 -0.73,1.28c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5C20.5,18.46 20.21,17.98 19.77,17.72zM15.09,15l0.41,-3.5h2l0.41,3.5H15.09z"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M11,18h2c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-2c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM3,7c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,6c-0.55,0 -1,0.45 -1,1zM7,13h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L7,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M11,6h2c0.55,0 1,0.45 1,1s-0.45,1 -1,1h-2c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1zM3,17c0,-0.55 0.45,-1 1,-1h16c0.55,0 1,0.45 1,1s-0.45,1 -1,1L4,18c-0.55,0 -1,-0.45 -1,-1zM7,11h10c0.55,0 1,0.45 1,1s-0.45,1 -1,1L7,13c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M13.2,7.07L10.25,11l2.25,3c0.33,0.44 0.24,1.07 -0.2,1.4 -0.44,0.33 -1.07,0.25 -1.4,-0.2 -1.05,-1.4 -2.31,-3.07 -3.1,-4.14 -0.4,-0.53 -1.2,-0.53 -1.6,0l-4,5.33c-0.49,0.67 -0.02,1.61 0.8,1.61h18c0.82,0 1.29,-0.94 0.8,-1.6l-7,-9.33c-0.4,-0.54 -1.2,-0.54 -1.6,0z" />
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M480,800q18,0 34.5,-2t33.5,-6l-48,-72L360,720v-40q0,-33 23.5,-56.5T440,600h80v-120h-80q-17,0 -28.5,-11.5T400,440v-80h-18q-26,0 -44,-17.5T320,299q0,-9 2.5,-18t7.5,-17l62,-91q-101,29 -166.5,113T160,480h40v-40q0,-17 11.5,-28.5T240,400h80q17,0 28.5,11.5T360,440v40q0,17 -11.5,28.5T320,520v40q0,33 -23.5,56.5T240,640h-37q42,72 115,116t162,44ZM784,578q8,-23 12,-47.5t4,-50.5q0,-112 -68,-197.5T560,170v110q33,0 56.5,23.5T640,360v80q19,0 34,4.5t29,18.5l81,115ZM480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,83 -31.5,156T763,763q-54,54 -127,85.5T480,880Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,83 -31.5,156T763,763q-54,54 -127,85.5T480,880ZM440,798v-78q-33,0 -56.5,-23.5T360,640v-40L168,408q-3,18 -5.5,36t-2.5,36q0,121 79.5,212T440,798ZM716,696q20,-22 36,-47.5t26.5,-53q10.5,-27.5 16,-56.5t5.5,-59q0,-98 -54.5,-179T600,184v16q0,33 -23.5,56.5T520,280h-80v80q0,17 -11.5,28.5T400,400h-80v80h240q17,0 28.5,11.5T600,520v120h40q26,0 47,15.5t29,40.5Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M819,932 L701,814q-48,32 -103.5,49T480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-62 17,-117.5T146,259L27,140l57,-57L876,875l-57,57ZM440,798v-78q-33,0 -56.5,-23.5T360,640v-40L168,408q-3,18 -5.5,36t-2.5,36q0,121 79.5,212T440,798ZM814,699 L756,641q21,-37 32.5,-77.5T800,480q0,-98 -54.5,-179T600,184v16q0,33 -23.5,56.5T520,280h-80v45L261,146q48,-31 103,-48.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,61 -17.5,116T814,699Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q127,0 226.5,70T851,331q7,17 0.5,34T828,388q-16,5 -30.5,-3T777,361q-24,-60 -69,-106t-108,-71v16q0,33 -23.5,56.5T520,280h-80v80q0,17 -11.5,28.5T400,400h-80v80h40q17,0 28.5,11.5T400,520v80h-40L168,408q-3,18 -5.5,36t-2.5,36q0,122 80.5,213T443,798q16,2 26.5,13.5T480,840q0,17 -11.5,28.5T441,878Q288,863 184,750T80,480ZM816,832L716,732q-21,12 -45,20t-51,8q-75,0 -127.5,-52.5T440,580q0,-75 52.5,-127.5T620,400q75,0 127.5,52.5T800,580q0,27 -8,51t-20,45l100,100q11,11 11,28t-11,28q-11,11 -28,11t-28,-11ZM620,680q42,0 71,-29t29,-71q0,-42 -29,-71t-71,-29q-42,0 -71,29t-29,71q0,42 29,71t71,29Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,83 -31.5,156T763,763q-54,54 -127,85.5T480,880ZM480,800q134,0 227,-93t93,-227q0,-7 -0.5,-14.5T799,453q-5,29 -27,48t-52,19h-80q-33,0 -56.5,-23.5T560,440v-40L400,400v-80q0,-33 23.5,-56.5T480,240h40q0,-23 12.5,-40.5T563,171q-20,-5 -40.5,-8t-42.5,-3q-134,0 -227,93t-93,227h200q66,0 113,47t47,113v40L400,680v110q20,5 39.5,7.5T480,800Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M472,801q-33,0 -56.5,-24T392,720q0,-33 23.5,-56.5T472,640l24,-23q8,-8 18.5,-12.5T536,600q23,0 39.5,17t16.5,40v17q0,20 13,33t33,13q15,0 27,-9t17,-23l12,-33q9,-24 29,-39.5t46,-15.5q11,-28 17.5,-58t6.5,-62q0,-89 -44.5,-162.5T632,202v38q0,33 -23.5,56.5T552,320h-40v80q0,17 -11.5,28.5T472,440h-40v68q0,22 -15,37t-37,15q-14,0 -25.5,-6T336,537l-64,-97h-40v40q0,31 -21,53t-50,26q26,104 112.5,173T472,801ZM552,560q-17,0 -28.5,-11.5T512,520q0,-17 11.5,-28.5T552,480h40q17,0 28.5,11.5T632,520q0,17 -11.5,28.5T592,560h-40ZM645,440q-20,0 -31.5,-15.5T608,390l15,-44q4,-12 14,-19t22,-7q20,0 31.5,15.5T696,370l-15,44q-4,12 -14,19t-22,7ZM472,880q-83,0 -156,-31.5T189,763q-54,-54 -85.5,-127T72,480q0,-83 31.5,-156T189,197q54,-54 127,-85.5T472,80q83,0 156,31.5T755,197q54,54 85.5,127T872,480q0,83 -31.5,156T755,763q-54,54 -127,85.5T472,880Z"/>
</vector>

View File

@@ -0,0 +1,32 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M18.06,2.83c-1.15,-0.77 -2.46,-1.32 -3.86,-1.61C13.58,1.1 13,1.57 13,2.21v0c0,0.46 0.31,0.88 0.76,0.97c1.17,0.23 2.26,0.7 3.21,1.34c0.39,0.26 0.9,0.19 1.23,-0.14l0,0C18.66,3.93 18.59,3.18 18.06,2.83z" />
<path
android:fillColor="@android:color/white"
android:pathData="M11,2.21L11,2.21c0,-0.64 -0.58,-1.11 -1.2,-0.99c-1.4,0.29 -2.71,0.84 -3.86,1.61c-0.52,0.35 -0.59,1.1 -0.15,1.54l0,0c0.33,0.33 0.84,0.4 1.23,0.14c0.96,-0.64 2.04,-1.1 3.21,-1.34C10.69,3.09 11,2.67 11,2.21z" />
<path
android:fillColor="@android:color/white"
android:pathData="M4.38,5.79L4.38,5.79C3.93,5.34 3.18,5.42 2.84,5.94C2.07,7.09 1.51,8.39 1.23,9.8C1.1,10.42 1.58,11 2.21,11h0c0.46,0 0.88,-0.31 0.97,-0.76c0.23,-1.17 0.7,-2.26 1.34,-3.22C4.77,6.64 4.7,6.12 4.38,5.79z" />
<path
android:fillColor="@android:color/white"
android:pathData="M21.79,11L21.79,11c0.63,0 1.11,-0.58 0.98,-1.2c-0.29,-1.4 -0.84,-2.7 -1.61,-3.86c-0.35,-0.52 -1.1,-0.6 -1.54,-0.15l0,0c-0.33,0.33 -0.4,0.84 -0.14,1.23c0.64,0.96 1.1,2.05 1.34,3.22C20.91,10.69 21.33,11 21.79,11z" />
<path
android:fillColor="@android:color/white"
android:pathData="M8,12.46l2.44,1.11L11.54,16c0.18,0.39 0.73,0.39 0.91,0l1.11,-2.44L16,12.46c0.39,-0.18 0.39,-0.73 0,-0.91l-2.44,-1.11L12.46,8c-0.18,-0.39 -0.73,-0.39 -0.91,0l-1.11,2.44L8,11.54C7.61,11.72 7.61,12.28 8,12.46z" />
<path
android:fillColor="@android:color/white"
android:pathData="M12,21c-3.11,0 -5.85,-1.59 -7.46,-4H6c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1H2c-0.55,0 -1,0.45 -1,1v4c0,0.55 0.45,1 1,1h0c0.55,0 1,-0.45 1,-1v-1.7c1.99,2.84 5.27,4.7 9,4.7c4.45,0 8.27,-2.64 10,-6.43c0.26,-0.57 -0.08,-1.25 -0.69,-1.39l0,0c-0.45,-0.1 -0.93,0.11 -1.12,0.54C18.77,18.83 15.64,21 12,21z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M14.06,9.94L13,9.45c-0.39,-0.18 -0.39,-0.73 0,-0.91l1.06,-0.49L14.55,7c0.18,-0.39 0.73,-0.39 0.91,0l0.49,1.06L17,8.55c0.39,0.18 0.39,0.73 0,0.91l-1.06,0.49L15.45,11c-0.18,0.39 -0.73,0.39 -0.91,0L14.06,9.94zM4.45,13l0.49,-1.06L6,11.45c0.39,-0.18 0.39,-0.73 0,-0.91l-1.06,-0.49L4.45,9C4.28,8.61 3.72,8.61 3.55,9l-0.49,1.06L2,10.55c-0.39,0.18 -0.39,0.73 0,0.91l1.06,0.49L3.55,13C3.72,13.39 4.28,13.39 4.45,13zM8.96,7.99l0.63,-1.4l1.4,-0.63c0.39,-0.18 0.39,-0.73 0,-0.91l-1.4,-0.63l-0.63,-1.4c-0.18,-0.39 -0.73,-0.39 -0.91,0l-0.63,1.4l-1.4,0.63c-0.39,0.18 -0.39,0.73 0,0.91l1.4,0.63l0.63,1.4C8.22,8.38 8.78,8.38 8.96,7.99zM22.34,8.27c-0.4,-0.4 -1.07,-0.39 -1.45,0.04l-6.39,7.18l-3.29,-3.29c-0.39,-0.39 -1.02,-0.39 -1.41,0l-6.04,6.05c-0.41,0.41 -0.41,1.09 0,1.5c0.41,0.41 1.09,0.41 1.5,0l5.25,-5.26l3.25,3.25c0.41,0.41 1.07,0.39 1.45,-0.04l7.17,-8.07C22.73,9.24 22.71,8.64 22.34,8.27z" />
</vector>

View File

@@ -711,7 +711,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:checked="false"
android:drawableStart="@drawable/ic_round_early_bird_special"
android:drawableStart="@drawable/ic_round_assist_walker_24"
android:drawablePadding="16dp"
android:elegantTextHeight="true"
android:fontFamily="@font/poppins_bold"

View File

@@ -1318,7 +1318,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:checked="false"
android:drawableStart="@drawable/ic_round_early_bird_special"
android:drawableStart="@drawable/ic_round_assist_walker_24"
android:drawablePadding="16dp"
android:elegantTextHeight="true"
android:fontFamily="@font/poppins_bold"

View File

@@ -11,17 +11,59 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/bottomSheerCustomTitle"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="16dp"
android:fontFamily="@font/poppins_semi_bold"
android:text="@string/filter"
android:textAlignment="center"
android:textSize="20sp"
app:drawableStartCompat="@drawable/ic_round_filter_alt_24" />
android:layout_marginTop="17dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal">
<ImageButton
android:id="@+id/resetSearchFilter"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="start|center_vertical"
android:layout_marginStart="17dp"
android:background="@null"
android:scaleType="fitCenter"
android:rotation="180"
android:src="@drawable/ic_round_reset_star_24"
app:tint="?attr/colorPrimary" />
<TextView
android:id="@+id/bottomSheerCustomTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginTop="-2dp"
android:layout_weight="1"
android:fontFamily="@font/poppins_semi_bold"
android:text="@string/filter"
android:textAlignment="center"
android:textSize="23sp" />
<ImageButton
android:id="@+id/countryFilter"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="10dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@drawable/ic_round_globe_search_googlefonts"
app:tint="?attr/colorPrimary" />
<ImageButton
android:id="@+id/sortByFilter"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="17dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@drawable/ic_round_filter_alt_24"
app:tint="?attr/colorPrimary" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -37,7 +79,7 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:hint="@string/sort_by"
android:hint="Status"
app:boxCornerRadiusBottomEnd="16dp"
app:boxCornerRadiusBottomStart="16dp"
app:boxCornerRadiusTopEnd="16dp"
@@ -46,7 +88,7 @@
app:hintAnimationEnabled="true">
<AutoCompleteTextView
android:id="@+id/searchSortBy"
android:id="@+id/searchStatus"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_weight="1"
@@ -180,11 +222,17 @@
android:text="@string/genres"
android:textSize="16sp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/searchGenresGrid"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_semi_bold"
android:layout_marginEnd="10dp"
android:text="@string/grid" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/searchGenresGrid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
@@ -217,11 +265,17 @@
android:text="@string/tags"
android:textSize="16sp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/searchTagsGrid"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_semi_bold"
android:layout_marginEnd="10dp"
android:text="@string/grid" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/searchTagsGrid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView

View File

@@ -150,6 +150,7 @@
tools:ignore="ContentDescription,TextContrastCheck">
<TextView
android:id="@+id/filterTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/country_china"
android:title="China" />
<item
android:id="@+id/country_south_korea"
android:title="South Korea" />
<item
android:id="@+id/country_japan"
android:title="Japan" />
<item
android:id="@+id/country_taiwan"
android:title="Taiwan" />
</menu>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/sort_by_score"
android:title="Score" />
<item
android:id="@+id/sort_by_popular"
android:title="Popular" />
<item
android:id="@+id/sort_by_trending"
android:title="Trending" />
<item
android:id="@+id/sort_by_a_z"
android:title="A-Z" />
<item
android:id="@+id/sort_by_z_a"
android:title="Z-A" />
<item
android:id="@+id/sort_by_pure_pain"
android:title="Pure pain" />
</menu>