1
0
mirror of https://github.com/ultrasonic/ultrasonic synced 2025-02-18 12:40:52 +01:00

Use lambdas in Listeners, fix various warnings

This commit is contained in:
tzugen 2021-04-21 22:36:19 +02:00
parent fa4f4d6c9c
commit 1802e91fa7
No known key found for this signature in database
GPG Key ID: 61E9C34BC10EC930

View File

@ -17,8 +17,6 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.AdapterView.AdapterContextMenuInfo import android.widget.AdapterView.AdapterContextMenuInfo
import android.widget.AdapterView.OnItemClickListener
import android.widget.AdapterView.OnItemLongClickListener
import android.widget.ImageView import android.widget.ImageView
import android.widget.ListView import android.widget.ListView
import android.widget.TextView import android.widget.TextView
@ -28,7 +26,6 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import androidx.navigation.Navigation import androidx.navigation.Navigation
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import org.koin.android.viewmodel.ext.android.viewModel import org.koin.android.viewmodel.ext.android.viewModel
@ -121,12 +118,9 @@ class SelectAlbumFragment : Fragment() {
refreshAlbumListView = view.findViewById(R.id.select_album_entries_refresh) refreshAlbumListView = view.findViewById(R.id.select_album_entries_refresh)
albumListView = view.findViewById(R.id.select_album_entries_list) albumListView = view.findViewById(R.id.select_album_entries_list)
refreshAlbumListView!!.setOnRefreshListener( refreshAlbumListView!!.setOnRefreshListener {
OnRefreshListener updateDisplay(true)
{ }
updateDisplay(true)
}
)
header = LayoutInflater.from(context).inflate( header = LayoutInflater.from(context).inflate(
R.layout.select_album_header, albumListView, R.layout.select_album_header, albumListView,
@ -134,69 +128,61 @@ class SelectAlbumFragment : Fragment() {
) )
selectFolderHeader = SelectMusicFolderView( selectFolderHeader = SelectMusicFolderView(
requireContext(), view as ViewGroup, requireContext(), view as ViewGroup
{ selectedFolderId -> ) { selectedFolderId ->
if (!ActiveServerProvider.isOffline(context)) { if (!isOffline(context)) {
val currentSetting = activeServerProvider.getActiveServer() val currentSetting = activeServerProvider.getActiveServer()
currentSetting.musicFolderId = selectedFolderId currentSetting.musicFolderId = selectedFolderId
serverSettingsModel.updateItem(currentSetting) serverSettingsModel.updateItem(currentSetting)
}
this.updateDisplay(true)
} }
) this.updateDisplay(true)
}
model.musicFolders.observe(viewLifecycleOwner, musicFolderObserver) model.musicFolders.observe(viewLifecycleOwner, musicFolderObserver)
model.currentDirectory.observe(viewLifecycleOwner, defaultObserver) model.currentDirectory.observe(viewLifecycleOwner, defaultObserver)
model.songsForGenre.observe(viewLifecycleOwner, songsForGenreObserver) model.songsForGenre.observe(viewLifecycleOwner, songsForGenreObserver)
model.albumList.observe(viewLifecycleOwner, albumListObserver) model.albumList.observe(viewLifecycleOwner, albumListObserver)
albumListView!!.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) albumListView!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE
albumListView!!.setOnItemClickListener( albumListView!!.setOnItemClickListener { parent, theView, position, _ ->
OnItemClickListener if (position >= 0) {
{ parent, theView, position, _ -> val entry = parent.getItemAtPosition(position) as MusicDirectory.Entry?
if (position >= 0) { if (entry != null && entry.isDirectory) {
val entry = parent.getItemAtPosition(position) as MusicDirectory.Entry? val bundle = Bundle()
if (entry != null && entry.isDirectory) { bundle.putString(Constants.INTENT_EXTRA_NAME_ID, entry.id)
val bundle = Bundle() bundle.putBoolean(Constants.INTENT_EXTRA_NAME_IS_ALBUM, entry.isDirectory)
bundle.putString(Constants.INTENT_EXTRA_NAME_ID, entry.id) bundle.putString(Constants.INTENT_EXTRA_NAME_NAME, entry.title)
bundle.putBoolean(Constants.INTENT_EXTRA_NAME_IS_ALBUM, entry.isDirectory) bundle.putString(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.parent)
bundle.putString(Constants.INTENT_EXTRA_NAME_NAME, entry.title) Navigation.findNavController(theView).navigate(
bundle.putString(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.parent)
Navigation.findNavController(theView).navigate(
R.id.selectAlbumFragment, R.id.selectAlbumFragment,
bundle bundle
) )
} else if (entry != null && entry.isVideo) { } else if (entry != null && entry.isVideo) {
videoPlayer.playVideo(requireContext(), entry) videoPlayer.playVideo(requireContext(), entry)
} else { } else {
enableButtons() enableButtons()
}
} }
} }
) }
// TODO Long click on an item will first try to maximize / collapse the item, even when it // TODO Long click on an item will first try to maximize / collapse the item, even when it
// fits inside the TextView. The context menu is only displayed on the second long click... // fits inside the TextView. The context menu is only displayed on the second long click...
// This may be improved somehow, e.g. checking first if the texts fit // This may be improved somehow, e.g. checking first if the texts fit
albumListView!!.setOnItemLongClickListener( albumListView!!.setOnItemLongClickListener { _, theView, _, _ ->
OnItemLongClickListener if (theView is AlbumView) {
{ _, theView, _, _ -> if (!theView.isMaximized) {
if (theView is AlbumView) {
val albumView = theView
if (!albumView.isMaximized) {
albumView.maximizeOrMinimize()
return@OnItemLongClickListener true
} else {
return@OnItemLongClickListener false
}
}
if (theView is SongView) {
theView.maximizeOrMinimize() theView.maximizeOrMinimize()
return@OnItemLongClickListener true true
} else {
false
} }
false
} }
) if (theView is SongView) {
theView.maximizeOrMinimize()
true
}
false
}
selectButton = view.findViewById(R.id.select_album_select) selectButton = view.findViewById(R.id.select_album_select)
playNowButton = view.findViewById(R.id.select_album_play_now) playNowButton = view.findViewById(R.id.select_album_play_now)
@ -209,63 +195,39 @@ class SelectAlbumFragment : Fragment() {
moreButton = view.findViewById(R.id.select_album_more) moreButton = view.findViewById(R.id.select_album_more)
emptyView = TextView(requireContext()) emptyView = TextView(requireContext())
selectButton!!.setOnClickListener( selectButton!!.setOnClickListener {
View.OnClickListener selectAllOrNone()
{ }
selectAllOrNone() playNowButton!!.setOnClickListener {
} playNow(false)
) }
playNowButton!!.setOnClickListener( playNextButton!!.setOnClickListener {
View.OnClickListener downloadHandler.download(
{
playNow(false)
}
)
playNextButton!!.setOnClickListener(
View.OnClickListener
{
downloadHandler.download(
this@SelectAlbumFragment, true, this@SelectAlbumFragment, true,
false, false, true, false, false, false, true, false,
getSelectedSongs(albumListView) getSelectedSongs(albumListView)
) )
selectAll(false, false) selectAll(false, false)
} }
) playLastButton!!.setOnClickListener {
playLastButton!!.setOnClickListener( playNow(true)
View.OnClickListener }
{ pinButton!!.setOnClickListener {
playNow(true) downloadBackground(true)
} selectAll(false, false)
) }
pinButton!!.setOnClickListener( unpinButton!!.setOnClickListener {
View.OnClickListener unpin()
{ selectAll(false, false)
downloadBackground(true) }
selectAll(false, false) downloadButton!!.setOnClickListener {
} downloadBackground(false)
) selectAll(false, false)
unpinButton!!.setOnClickListener( }
View.OnClickListener deleteButton!!.setOnClickListener {
{ delete()
unpin() selectAll(false, false)
selectAll(false, false) }
}
)
downloadButton!!.setOnClickListener(
View.OnClickListener
{
downloadBackground(false)
selectAll(false, false)
}
)
deleteButton!!.setOnClickListener(
View.OnClickListener
{
delete()
selectAll(false, false)
}
)
registerForContextMenu(albumListView!!) registerForContextMenu(albumListView!!)
setHasOptionsMenu(true) setHasOptionsMenu(true)
@ -494,7 +456,7 @@ class SelectAlbumFragment : Fragment() {
private fun playNow(append: Boolean) { private fun playNow(append: Boolean) {
val selectedSongs = getSelectedSongs(albumListView) val selectedSongs = getSelectedSongs(albumListView)
if (!selectedSongs.isEmpty()) { if (selectedSongs.isNotEmpty()) {
downloadHandler.download( downloadHandler.download(
this, append, false, !append, false, this, append, false, !append, false,
false, selectedSongs false, selectedSongs
@ -576,7 +538,7 @@ class SelectAlbumFragment : Fragment() {
private fun enableButtons() { private fun enableButtons() {
val selection = getSelectedSongs(albumListView) val selection = getSelectedSongs(albumListView)
val enabled = !selection.isEmpty() val enabled = selection.isNotEmpty()
var unpinEnabled = false var unpinEnabled = false
var deleteEnabled = false var deleteEnabled = false
@ -665,8 +627,8 @@ class SelectAlbumFragment : Fragment() {
mediaPlayerController.unpin(songs) mediaPlayerController.unpin(songs)
} }
val albumListObserver = Observer<MusicDirectory> { musicDirectory -> private val albumListObserver = Observer<MusicDirectory> { musicDirectory ->
if (!musicDirectory.getChildren().isEmpty()) { if (musicDirectory.getChildren().isNotEmpty()) {
pinButton!!.visibility = View.GONE pinButton!!.visibility = View.GONE
unpinButton!!.visibility = View.GONE unpinButton!!.visibility = View.GONE
downloadButton!!.visibility = View.GONE downloadButton!!.visibility = View.GONE
@ -713,7 +675,7 @@ class SelectAlbumFragment : Fragment() {
updateInterfaceWithEntries(musicDirectory) updateInterfaceWithEntries(musicDirectory)
} }
val musicFolderObserver = Observer<List<MusicFolder>> { changedFolders -> private val musicFolderObserver = Observer<List<MusicFolder>> { changedFolders ->
if (changedFolders != null) { if (changedFolders != null) {
selectFolderHeader!!.setData( selectFolderHeader!!.setData(
activeServerProvider.getActiveServer().musicFolderId, activeServerProvider.getActiveServer().musicFolderId,
@ -722,7 +684,7 @@ class SelectAlbumFragment : Fragment() {
} }
} }
val songsForGenreObserver = Observer<MusicDirectory> { musicDirectory -> private val songsForGenreObserver = Observer<MusicDirectory> { musicDirectory ->
// Hide more button when results are less than album list size // Hide more button when results are less than album list size
if (musicDirectory.getChildren().size < requireArguments().getInt( if (musicDirectory.getChildren().size < requireArguments().getInt(
@ -751,7 +713,7 @@ class SelectAlbumFragment : Fragment() {
} }
// Our old "done" function // Our old "done" function
val defaultObserver = Observer(this::updateInterfaceWithEntries) private val defaultObserver = Observer(this::updateInterfaceWithEntries)
private fun updateInterfaceWithEntries(musicDirectory: MusicDirectory) { private fun updateInterfaceWithEntries(musicDirectory: MusicDirectory) {
val entries = musicDirectory.getChildren() val entries = musicDirectory.getChildren()
@ -875,7 +837,7 @@ class SelectAlbumFragment : Fragment() {
model.currentDirectoryIsSortable = true model.currentDirectoryIsSortable = true
} }
protected fun createHeader( private fun createHeader(
entries: List<MusicDirectory.Entry>, entries: List<MusicDirectory.Entry>,
name: CharSequence?, name: CharSequence?,
songCount: Int songCount: Int
@ -898,9 +860,8 @@ class SelectAlbumFragment : Fragment() {
} }
val artistView = header!!.findViewById<TextView>(R.id.select_album_artist) val artistView = header!!.findViewById<TextView>(R.id.select_album_artist)
val artist: String
artist = if (albumHeader.artists.size == 1) val artist: String = if (albumHeader.artists.size == 1)
albumHeader.artists.iterator().next() albumHeader.artists.iterator().next()
else if (albumHeader.grandParents.size == 1) else if (albumHeader.grandParents.size == 1)
albumHeader.grandParents.iterator().next() albumHeader.grandParents.iterator().next()
@ -910,9 +871,8 @@ class SelectAlbumFragment : Fragment() {
artistView.text = artist artistView.text = artist
val genreView = header!!.findViewById<TextView>(R.id.select_album_genre) val genreView = header!!.findViewById<TextView>(R.id.select_album_genre)
val genre: String
genre = if (albumHeader.genres.size == 1) val genre: String = if (albumHeader.genres.size == 1)
albumHeader.genres.iterator().next() albumHeader.genres.iterator().next()
else else
resources.getString(R.string.common_multiple_genres) resources.getString(R.string.common_multiple_genres)
@ -920,9 +880,8 @@ class SelectAlbumFragment : Fragment() {
genreView.text = genre genreView.text = genre
val yearView = header!!.findViewById<TextView>(R.id.select_album_year) val yearView = header!!.findViewById<TextView>(R.id.select_album_year)
val year: String
year = if (albumHeader.years.size == 1) val year: String = if (albumHeader.years.size == 1)
albumHeader.years.iterator().next().toString() albumHeader.years.iterator().next().toString()
else else
resources.getString(R.string.common_multiple_years) resources.getString(R.string.common_multiple_years)