diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index da1d29355..294cc0fef 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -194,14 +194,7 @@ class HomeFragment : Fragment() { } TabLayoutMediator(binding.homeTabs, binding.homePager) { tab, pos -> - val labelRes = when (homeModel.tabs[pos]) { - DisplayMode.SHOW_SONGS -> R.string.lbl_songs - DisplayMode.SHOW_ALBUMS -> R.string.lbl_albums - DisplayMode.SHOW_ARTISTS -> R.string.lbl_artists - DisplayMode.SHOW_GENRES -> R.string.lbl_genres - } - - tab.setText(labelRes) + tab.setText(homeModel.tabs[pos].string) }.attach() // --- VIEWMODEL SETUP --- @@ -219,7 +212,7 @@ class HomeFragment : Fragment() { homeModel.curTab.observe(viewLifecycleOwner) { tab -> // Make sure that we update the scrolling view and allowed menu items before whenever // the tab changes. - binding.homeAppbar.liftOnScrollTargetViewId = when (requireNotNull(tab)) { + val targetView = when (requireNotNull(tab)) { DisplayMode.SHOW_SONGS -> { updateSortMenu(sortItem, tab) R.id.home_song_list @@ -246,6 +239,8 @@ class HomeFragment : Fragment() { R.id.home_genre_list } } + + binding.homeAppbar.liftOnScrollTargetViewId = targetView } detailModel.navToItem.observe(viewLifecycleOwner) { item -> diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index ea036d7ab..7d169e371 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -119,6 +119,12 @@ class SongListFragment : HomeListFragment() { } } + /** + * The viewholder for the play/shuffle header on the song header. + * Using a FAB would have been more conventional here, but it's so difficult to get a FAB + * to play along with edge-to-edge and nested RecyclerView instances to the point where I + * may as well not bother. + */ private inner class PlayViewHolder( binding: ItemPlayShuffleBinding ) : RecyclerView.ViewHolder(binding.root) { 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 7a0cd4d26..6ddc0c208 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -87,10 +87,7 @@ class PlaybackFragment : Fragment() { // Make marquee of song title work binding.playbackSong.isSelected = true - - binding.playbackSeekBar.onConfirmListener = { pos -> - playbackModel.setPosition(pos) - } + binding.playbackSeekBar.onConfirmListener = playbackModel::setPosition // --- VIEWMODEL SETUP -- diff --git a/app/src/main/java/org/oxycblt/auxio/settings/tabs/TabAdapter.kt b/app/src/main/java/org/oxycblt/auxio/settings/tabs/TabAdapter.kt index 8ac9095b2..adfd59f91 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/tabs/TabAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/tabs/TabAdapter.kt @@ -60,20 +60,14 @@ class TabAdapter( // A. We don't have a real ViewModel state since this is a dialog // B. Doing so would cause a relayout and the ripple effect to disappear // Instead, simply notify a tab change and let TabCustomizeDialog handle it. - binding.tabIcon.isEnabled = !binding.tabIcon.isEnabled - binding.tabName.isEnabled = !binding.tabName.isEnabled + binding.tabIcon.isChecked = !binding.tabIcon.isChecked onTabSwitch(tab) } } - binding.tabIcon.apply { - setImageResource(tab.mode.icon) - contentDescription = context.getString(tab.mode.string) - isEnabled = tab is Tab.Visible - } - binding.tabName.apply { + binding.tabIcon.apply { setText(tab.mode.string) - isEnabled = tab is Tab.Visible + isChecked = tab is Tab.Visible } binding.tabDragHandle.setOnTouchListener { _, motionEvent -> diff --git a/app/src/main/java/org/oxycblt/auxio/ui/DisplayMode.kt b/app/src/main/java/org/oxycblt/auxio/ui/DisplayMode.kt index 8238b968c..490f5f23b 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/DisplayMode.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/DisplayMode.kt @@ -18,7 +18,6 @@ package org.oxycblt.auxio.ui -import androidx.annotation.DrawableRes import androidx.annotation.StringRes import org.oxycblt.auxio.R @@ -28,11 +27,11 @@ import org.oxycblt.auxio.R * changing them would also change the meaning. * @author OxygenCobalt */ -enum class DisplayMode(@DrawableRes val icon: Int, @StringRes val string: Int) { - SHOW_SONGS(R.drawable.ic_song, R.string.lbl_songs), - SHOW_ALBUMS(R.drawable.ic_album, R.string.lbl_albums), - SHOW_ARTISTS(R.drawable.ic_artist, R.string.lbl_artists), - SHOW_GENRES(R.drawable.ic_genre, R.string.lbl_genres); +enum class DisplayMode(@StringRes val string: Int) { + SHOW_SONGS(R.string.lbl_songs), + SHOW_ALBUMS(R.string.lbl_albums), + SHOW_ARTISTS(R.string.lbl_artists), + SHOW_GENRES(R.string.lbl_genres); companion object { private const val CONST_NULL = 0xA107 diff --git a/app/src/main/res/drawable/ui_circle_ripple.xml b/app/src/main/res/drawable/ui_circle_ripple.xml index 5a950b569..0d814703a 100644 --- a/app/src/main/res/drawable/ui_circle_ripple.xml +++ b/app/src/main/res/drawable/ui_circle_ripple.xml @@ -1,10 +1,11 @@ - - + - + diff --git a/app/src/main/res/layout/dialog_accent.xml b/app/src/main/res/layout/dialog_accent.xml index e8053810f..f85bc9f7e 100644 --- a/app/src/main/res/layout/dialog_accent.xml +++ b/app/src/main/res/layout/dialog_accent.xml @@ -9,8 +9,8 @@ android:layout_height="match_parent" android:overScrollMode="never" android:paddingTop="@dimen/spacing_medium" - android:paddingStart="@dimen/spacing_small" - android:paddingEnd="@dimen/spacing_small" + android:paddingStart="@dimen/spacing_medium" + android:paddingEnd="@dimen/spacing_medium" app:layoutManager="org.oxycblt.auxio.accent.AutoGridLayoutManager" app:layout_constraintBottom_toTopOf="@+id/accent_cancel" app:layout_constraintTop_toBottomOf="@+id/accent_header" diff --git a/app/src/main/res/layout/item_accent.xml b/app/src/main/res/layout/item_accent.xml index 866c8350e..c703cbe06 100644 --- a/app/src/main/res/layout/item_accent.xml +++ b/app/src/main/res/layout/item_accent.xml @@ -7,7 +7,8 @@ android:theme="@style/ThemeOverlay.Accent" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="@dimen/spacing_small"> + android:paddingTop="@dimen/spacing_small" + android:paddingBottom="@dimen/spacing_small"> - - -