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:
parent
fa4f4d6c9c
commit
1802e91fa7
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user