From 1af17a6df1314b65a6a55f8f907120fc02deb027 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Wed, 25 Nov 2020 21:12:02 -0700 Subject: [PATCH] Remove usages of animator to fix nav bugs Remove usages of animator as apparently sometimes that actually causes bugs. Why do I do this to myself. --- README.md | 5 +- .../auxio/detail/AlbumDetailFragment.kt | 33 +++++++------ .../oxycblt/auxio/library/LibraryFragment.kt | 5 +- .../oxycblt/auxio/library/LibraryViewModel.kt | 12 ++--- .../auxio/playback/PlaybackFragment.kt | 2 - .../songs/{SongAdapter.kt => SongsAdapter.kt} | 4 +- .../org/oxycblt/auxio/songs/SongsFragment.kt | 24 ++++++---- app/src/main/res/menu/menu_songs.xml | 2 +- app/src/main/res/navigation/nav_explore.xml | 46 +++++++++---------- app/src/main/res/navigation/nav_main.xml | 8 ++-- 10 files changed, 76 insertions(+), 65 deletions(-) rename app/src/main/java/org/oxycblt/auxio/songs/{SongAdapter.kt => SongsAdapter.kt} (93%) diff --git a/README.md b/README.md index a384fa170..f28273a5c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # Auxio -Android Music Player, Current WIP + +Auxio is a music player for android that I built for myself. It only has the features that I need out of a music player and nothing more. + +***WIP*** diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index eec314169..4de3f35e9 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -129,25 +129,30 @@ class AlbumDetailFragment : DetailFragment() { playbackModel.navToItem.observe(viewLifecycleOwner) { if (it != null) { /* - // Calculate where the item for the currently played song is, and navigate to there. - val pos = detailModel.albumSortMode.value!!.getSortedSongList( - detailModel.currentAlbum.value!!.songs - ).indexOf(playbackModel.song.value) + if (it is Song) { + // Calculate where the item for the currently played song is, and navigate to there. + val pos = detailModel.albumSortMode.value!!.getSortedSongList( + detailModel.currentAlbum.value!!.songs + ).indexOf(playbackModel.song.value) - if (pos != -1) { - binding.albumSongRecycler.post { - // Only scroll after UI creation - val y = binding.albumSongRecycler.y + - binding.albumSongRecycler.getChildAt(pos).y + if (pos != -1) { + binding.albumSongRecycler.post { + // Only scroll after UI creation + val y = binding.albumSongRecycler.y + + binding.albumSongRecycler.getChildAt(pos).y - binding.nestedScroll.scrollTo(0, y.toInt()) + binding.nestedScroll.scrollTo(0, y.toInt()) + } + + playbackModel.doneWithNavToItem() } - - playbackModel.doneWithNavToItem() } TODO: Re-add scroll if you find a way to implement the playing indicators on song items - */ - playbackModel.doneWithNavToItem() + */ + + if (detailModel.currentAlbum.value!!.id == playbackModel.song.value!!.album.id) { + playbackModel.doneWithNavToItem() + } } } diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index e7592511e..286441162 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -92,7 +92,6 @@ class LibraryFragment : Fragment(), SearchView.OnQueryTextListener { searchView.setOnQueryTextListener(this@LibraryFragment) searchView.setOnQueryTextFocusChangeListener { _, hasFocus -> libraryModel.updateSearchFocusStatus(hasFocus) - libraryModel.doSearch(searchView.query.toString(), requireContext()) item.isVisible = !hasFocus } @@ -155,8 +154,8 @@ class LibraryFragment : Fragment(), SearchView.OnQueryTextListener { if (it != null) { libraryModel.updateNavigationStatus(false) - if (it is Song) { - navToItem(it.album) + if (it is Song || it is Album) { + navToItem(playbackModel.song.value!!.album) } else { navToItem(it) } diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt index 45cfb1f32..040053928 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt @@ -20,12 +20,6 @@ import org.oxycblt.auxio.recycler.SortMode * @author OxygenCobalt */ class LibraryViewModel : ViewModel() { - private var mIsNavigating = false - val isNavigating: Boolean get() = mIsNavigating - - private var mSearchHasFocus = false - val searchHasFocus: Boolean get() = mSearchHasFocus - // TODO: Move these to prefs when they're added private val mShowMode = MutableLiveData(ShowMode.SHOW_ARTISTS) val showMode: LiveData get() = mShowMode @@ -36,6 +30,12 @@ class LibraryViewModel : ViewModel() { private val mSearchResults = MutableLiveData(listOf()) val searchResults: LiveData> get() = mSearchResults + private var mIsNavigating = false + val isNavigating: Boolean get() = mIsNavigating + + private var mSearchHasFocus = false + val searchHasFocus: Boolean get() = mSearchHasFocus + /** * Perform a search of the music library, given a query. * Results are pushed to [searchResults]. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt index f244757e1..46b41bf3b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -83,8 +83,6 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { queueMenuItem = menu.findItem(R.id.action_queue) } - // Make marquee scroll work - binding.playbackSong.isSelected = true binding.playbackSeekBar.setOnSeekBarChangeListener(this) // --- VIEWMODEL SETUP -- diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsAdapter.kt similarity index 93% rename from app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt rename to app/src/main/java/org/oxycblt/auxio/songs/SongsAdapter.kt index b26c563a8..cf49471b0 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsAdapter.kt @@ -6,8 +6,8 @@ import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.recycler.viewholders.SongViewHolder -class SongAdapter( - val data: List, +class SongsAdapter( + private val data: List, private val doOnClick: (data: Song) -> Unit, private val doOnLongClick: (data: Song, view: View) -> Unit ) : RecyclerView.Adapter() { diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 0a3d6cdff..1820d3a87 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -38,7 +38,7 @@ class SongsFragment : Fragment() { val musicStore = MusicStore.getInstance() - val songAdapter = SongAdapter( + val songAdapter = SongsAdapter( musicStore.songs, doOnClick = { playbackModel.playSong(it, PlaybackMode.ALL_SONGS) }, doOnLongClick = { data, view -> @@ -48,8 +48,6 @@ class SongsFragment : Fragment() { } ) - // TODO: Add option to search songs [Or just make a dedicated tab] - // --- UI SETUP --- binding.songToolbar.setOnMenuItemClickListener { @@ -64,6 +62,16 @@ class SongsFragment : Fragment() { setHasFixedSize(true) } + setupFastScroller(binding) + + Log.d(this::class.simpleName, "Fragment created.") + + return binding.root + } + + private fun setupFastScroller(binding: FragmentSongsBinding) { + val musicStore = MusicStore.getInstance() + binding.songFastScroll.apply { var hasAddedNumber = false var iters = 0 @@ -126,13 +134,11 @@ class SongsFragment : Fragment() { } } ) - - binding.songFastScrollThumb.setupWithFastScroller(this) - binding.songFastScrollThumb.textAppearanceRes = R.style.TextAppearance_ThumbIndicator } - Log.d(this::class.simpleName, "Fragment created.") - - return binding.root + binding.songFastScrollThumb.apply { + setupWithFastScroller(binding.songFastScroll) + textAppearanceRes = R.style.TextAppearance_ThumbIndicator + } } } diff --git a/app/src/main/res/menu/menu_songs.xml b/app/src/main/res/menu/menu_songs.xml index aa3007843..f3859f101 100644 --- a/app/src/main/res/menu/menu_songs.xml +++ b/app/src/main/res/menu/menu_songs.xml @@ -5,5 +5,5 @@ android:id="@+id/action_shuffle" android:icon="@drawable/ic_shuffle" android:title="@string/label_shuffle" - app:showAsAction="always" /> + app:showAsAction="ifRoom" /> \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_explore.xml b/app/src/main/res/navigation/nav_explore.xml index 0f11192a0..5cf0b55c6 100644 --- a/app/src/main/res/navigation/nav_explore.xml +++ b/app/src/main/res/navigation/nav_explore.xml @@ -11,24 +11,24 @@ tools:layout="@layout/fragment_library"> @@ -61,10 +61,10 @@ app:argType="boolean" />