Skip to content

Commit

Permalink
fix: fixed search when no genre is selected, added sort method
Browse files Browse the repository at this point in the history
  • Loading branch information
tsshadow committed Oct 20, 2024
1 parent ef79822 commit 4844b35
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,25 @@ import org.moire.ultrasonic.util.RefreshableFragment
import org.moire.ultrasonic.util.Settings.maxSongs
import org.moire.ultrasonic.util.Util.applyTheme
import org.moire.ultrasonic.util.toastingExceptionHandler
import timber.log.Timber


/**
* Advanced search fragment, enables searching for songs with multiple parameters
*/
class SelectSongFragment : Fragment(), RefreshableFragment {
override var swipeRefresh: SwipeRefreshLayout? = null
private var lengthSpinner: Spinner? = null
private var genreSpinner: Spinner? = null
private var genreList = ArrayList<String>()

private var yearSpinner: Spinner? = null

private var ratingMin: Spinner? = null
private var ratingMax: Spinner? = null

private var lengthSpinner: Spinner? = null

private var genreSpinner: Spinner? = null
private var genreList = ArrayList<String>()

private var sortMethodSpinner: Spinner? = null

private var searchButton: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -62,23 +67,26 @@ class SelectSongFragment : Fragment(), RefreshableFragment {
super.onViewCreated(view, savedInstanceState)
swipeRefresh = view.findViewById(R.id.select_genre_refresh)
yearSpinner = view.findViewById(R.id.select_year)
genreSpinner = view.findViewById(R.id.select_genre)
ratingMin = view.findViewById(R.id.select_rating_min)
ratingMax = view.findViewById(R.id.select_rating_max)
lengthSpinner = view.findViewById(R.id.select_length)
genreSpinner = view.findViewById(R.id.select_genre)
sortMethodSpinner = view.findViewById(R.id.select_sort_method)
searchButton = view.findViewById(R.id.search)
swipeRefresh?.setOnRefreshListener { load(true) }

searchButton?.setOnClickListener {
val genre = genreSpinner?.selectedItem as String
val action = NavigationGraphDirections.toTrackCollection(
getSongsName = "getSongs",
genreName = if (genre != "") genre else null,
size = maxSongs,
offset = 0,
year = yearSpinner?.selectedItem as String,
length = lengthSpinner?.selectedItem as String?,
ratingMin = ratingMin?.selectedItem as Int,
ratingMax = ratingMax?.selectedItem as Int,
sortMethod = sortMethodSpinner?.selectedItem as String
)
findNavController().navigate(action)
}
Expand All @@ -91,7 +99,7 @@ class SelectSongFragment : Fragment(), RefreshableFragment {
)
ratingAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

var years = arrayOf(
val years = arrayOf(
"All",
"2024",
"2023",
Expand Down Expand Up @@ -126,14 +134,17 @@ class SelectSongFragment : Fragment(), RefreshableFragment {
"1994",
"1993",
"1992"
);
)
val yearAdapter =
ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_item, years)
yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

var lengths = arrayOf("", "short", "long");
val lengthAdapter =
ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_item, lengths)
ArrayAdapter<String>(
requireContext(),
android.R.layout.simple_spinner_item,
arrayOf("", "short", "long")
)
yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

// Initialize empty genres list
Expand All @@ -142,13 +153,30 @@ class SelectSongFragment : Fragment(), RefreshableFragment {
ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_item, genreList)
genreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

val sortMethodAdapter =
ArrayAdapter<String>(
requireContext(),
android.R.layout.simple_spinner_item,
arrayListOf(
"None",
"Id",
"Random",
"LastWritten",
"StarredDateDesc",
"Name",
"DateDescAndRelease",
"Release",
"TrackList"
)
)
// Set Adapters
genreSpinner?.setAdapter(genreAdapter)
yearSpinner?.setAdapter(yearAdapter)
lengthSpinner?.setAdapter(lengthAdapter)
ratingMin?.setAdapter(ratingAdapter)
ratingMax?.setAdapter(ratingAdapter)
ratingMax?.setSelection(5)
lengthSpinner?.setAdapter(lengthAdapter)
genreSpinner?.setAdapter(genreAdapter)
sortMethodSpinner?.setAdapter(sortMethodAdapter)

setTitle(this, R.string.main_advanced_search_title)
load(false)
Expand All @@ -165,9 +193,7 @@ class SelectSongFragment : Fragment(), RefreshableFragment {

musicService.getGenres(refresh, null, null)
}

for (genre in genres) {
Timber.e(genre.name, null)
genreList.add(genre.name)
}
}
Expand Down
20 changes: 20 additions & 0 deletions ultrasonic/src/main/res/layout/tsshadow_select_song.xml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,26 @@
a:inputType="text"
a:spinnerMode="dropdown" />
</LinearLayout>
<!--Sort Method -->
<LinearLayout
a:layout_width="match_parent"
a:layout_height="40dp">

<TextView
a:id="@+id/textView7"
a:layout_width="0dp"
a:layout_height="wrap_content"
a:layout_weight=".10"
a:text="Sort method" />

<Spinner
a:id="@+id/select_sort_method"
a:layout_width="0dp"
a:layout_height="match_parent"
a:layout_weight=".30"
a:inputType="text"
a:spinnerMode="dropdown" />
</LinearLayout>

<LinearLayout
a:layout_width="match_parent"
Expand Down

0 comments on commit 4844b35

Please sign in to comment.