From df6d80176d7ff71397690ddb223a1a43ca9cbac1 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 22 Nov 2022 12:41:47 -0700 Subject: [PATCH] ui: redefine activation meaning Redefine the meaning of activation across the app to align with the SDK documentation. According to the documentation: - Activation -> A permanent kind of selection initiated by the user. This means playback states, item selection, etc. - Selection -> A transient kind of selection that can be added or removed without user input. This includes things such as playing indicators. Redefine usages of selection and activation across the app to align with this. --- .../auxio/detail/recycler/AlbumDetailAdapter.kt | 2 +- .../auxio/detail/recycler/ArtistDetailAdapter.kt | 4 ++-- .../main/java/org/oxycblt/auxio/image/ImageGroup.kt | 12 ++++++------ .../oxycblt/auxio/playback/PlaybackBarFragment.kt | 4 ++-- .../org/oxycblt/auxio/playback/queue/QueueAdapter.kt | 2 +- .../org/oxycblt/auxio/playback/ui/StyledSeekBar.kt | 6 +++--- .../org/oxycblt/auxio/ui/recycler/ViewHolders.kt | 8 ++++---- app/src/main/res/color/sel_accented_primary.xml | 5 ----- app/src/main/res/color/sel_accented_secondary.xml | 5 ----- ...background.xml => sel_activatable_background.xml} | 2 +- .../{sel_accented.xml => sel_activatable_icon.xml} | 2 +- app/src/main/res/color/sel_cover_bg.xml | 2 +- app/src/main/res/color/sel_on_cover_bg.xml | 2 +- ...e_primary.xml => sel_selectable_text_primary.xml} | 2 +- ...condary.xml => sel_selectable_text_secondary.xml} | 2 +- app/src/main/res/drawable/ui_item_ripple.xml | 2 +- .../res/layout-h480dp/fragment_playback_panel.xml | 6 +++--- .../res/layout-sw600dp/fragment_playback_panel.xml | 6 +++--- app/src/main/res/layout/fragment_playback_panel.xml | 6 +++--- app/src/main/res/layout/item_album_song.xml | 2 +- app/src/main/res/layout/item_parent.xml | 2 +- app/src/main/res/layout/item_picker_choice.xml | 2 +- app/src/main/res/layout/item_queue_song.xml | 4 ++-- app/src/main/res/layout/item_song.xml | 2 +- app/src/main/res/layout/view_seek_bar.xml | 2 +- 25 files changed, 42 insertions(+), 52 deletions(-) delete mode 100644 app/src/main/res/color/sel_accented_primary.xml delete mode 100644 app/src/main/res/color/sel_accented_secondary.xml rename app/src/main/res/color/{sel_selectable_background.xml => sel_activatable_background.xml} (83%) rename app/src/main/res/color/{sel_accented.xml => sel_activatable_icon.xml} (77%) rename app/src/main/res/color/{sel_toggleable_primary.xml => sel_selectable_text_primary.xml} (78%) rename app/src/main/res/color/{sel_toggleable_secondary.xml => sel_selectable_text_secondary.xml} (92%) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt index a4d8152db..2828a9f32 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt @@ -197,7 +197,7 @@ private class AlbumSongViewHolder private constructor(private val binding: ItemA } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.songTrackBg.isPlaying = isPlaying } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt index 46097aca2..19d0d929d 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt @@ -165,7 +165,7 @@ private class ArtistAlbumViewHolder private constructor(private val binding: Ite } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.parentImage.isPlaying = isPlaying } @@ -194,7 +194,7 @@ private class ArtistSongViewHolder private constructor(private val binding: Item } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.songAlbumCover.isPlaying = isPlaying } diff --git a/app/src/main/java/org/oxycblt/auxio/image/ImageGroup.kt b/app/src/main/java/org/oxycblt/auxio/image/ImageGroup.kt index 16ae7ad8b..f8376608e 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/ImageGroup.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/ImageGroup.kt @@ -115,8 +115,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr override fun setActivated(activated: Boolean) { super.setActivated(activated) - invalidateAlpha() - invalidatePlayingIndicator() + invalidateSelectionIndicator() } override fun setEnabled(enabled: Boolean) { @@ -127,7 +126,8 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr override fun setSelected(selected: Boolean) { super.setSelected(selected) - invalidateSelectionIndicator() + invalidateAlpha() + invalidatePlayingIndicator() } var isPlaying: Boolean @@ -137,11 +137,11 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr } private fun invalidateAlpha() { - alpha = if (isActivated || isEnabled) 1f else 0.5f + alpha = if (isSelected || isEnabled) 1f else 0.5f } private fun invalidatePlayingIndicator() { - if (isActivated) { + if (isSelected) { customView?.alpha = 0f inner.alpha = 0f playingIndicator.alpha = 1f @@ -153,7 +153,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr } private fun invalidateSelectionIndicator() { - selectionIndicator.alpha = if (isSelected) 1f else 0f + selectionIndicator.alpha = if (isActivated) 1f else 0f } fun bind(song: Song) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt index 596fb1462..4d74f8952 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt @@ -84,7 +84,7 @@ class PlaybackBarFragment : ViewBindingFragment() { ActionMode.REPEAT -> { binding.playbackSecondaryAction.apply { contentDescription = getString(R.string.desc_change_repeat) - iconTint = context.getColorCompat(R.color.sel_accented) + iconTint = context.getColorCompat(R.color.sel_activatable_icon) setOnClickListener { playbackModel.incrementRepeatMode() } collectImmediately(playbackModel.repeatMode, ::updateRepeat) } @@ -93,7 +93,7 @@ class PlaybackBarFragment : ViewBindingFragment() { binding.playbackSecondaryAction.apply { setIconResource(R.drawable.sel_shuffle_state_24) contentDescription = getString(R.string.desc_shuffle) - iconTint = context.getColorCompat(R.color.sel_accented) + iconTint = context.getColorCompat(R.color.sel_activatable_icon) setOnClickListener { playbackModel.invertShuffled() } collectImmediately(playbackModel.isShuffled, ::updateShuffled) } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt index 8d7ddcd10..e78364982 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt @@ -165,7 +165,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.interactBody.isActivated = isActive + binding.interactBody.isSelected = isActive binding.songAlbumCover.isPlaying = isPlaying } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/ui/StyledSeekBar.kt b/app/src/main/java/org/oxycblt/auxio/playback/ui/StyledSeekBar.kt index b8ab58ea5..6b32bde2a 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/ui/StyledSeekBar.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/ui/StyledSeekBar.kt @@ -70,7 +70,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 // Sanity check 2: Ensure that this value is within the duration and will not crash // the app, and that the user is not currently seeking (which would cause the SeekBar // to jump around). - if (from <= durationDs && !isActivated) { + if (from <= durationDs && !isSelected) { binding.seekBarSlider.value = from.toFloat() // We would want to keep this in the callback, but the callback only fires when @@ -106,13 +106,13 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 logD("Starting seek mode") // User has begun seeking, place the SeekBar into a "Suspended" mode in which no // position updates are sent and is indicated by the position value turning accented. - isActivated = true + isSelected = true } override fun onStopTrackingTouch(slider: Slider) { logD("Confirming seek") // End of seek event, send off new value to callback. - isActivated = false + isSelected = false callback?.seekTo(slider.value.toLong()) } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/recycler/ViewHolders.kt b/app/src/main/java/org/oxycblt/auxio/ui/recycler/ViewHolders.kt index 942d55524..38d39b9b1 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/recycler/ViewHolders.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/recycler/ViewHolders.kt @@ -47,7 +47,7 @@ class SongViewHolder private constructor(private val binding: ItemSongBinding) : } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.songAlbumCover.isPlaying = isPlaying } @@ -80,7 +80,7 @@ class AlbumViewHolder private constructor(private val binding: ItemParentBinding } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.parentImage.isPlaying = isPlaying } @@ -126,7 +126,7 @@ class ArtistViewHolder private constructor(private val binding: ItemParentBindin } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.parentImage.isPlaying = isPlaying } @@ -165,7 +165,7 @@ class GenreViewHolder private constructor(private val binding: ItemParentBinding } override fun updateIndicator(isActive: Boolean, isPlaying: Boolean) { - binding.root.isActivated = isActive + binding.root.isSelected = isActive binding.parentImage.isPlaying = isPlaying } diff --git a/app/src/main/res/color/sel_accented_primary.xml b/app/src/main/res/color/sel_accented_primary.xml deleted file mode 100644 index e72a8e2ec..000000000 --- a/app/src/main/res/color/sel_accented_primary.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/sel_accented_secondary.xml b/app/src/main/res/color/sel_accented_secondary.xml deleted file mode 100644 index 105bf5c7a..000000000 --- a/app/src/main/res/color/sel_accented_secondary.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/sel_selectable_background.xml b/app/src/main/res/color/sel_activatable_background.xml similarity index 83% rename from app/src/main/res/color/sel_selectable_background.xml rename to app/src/main/res/color/sel_activatable_background.xml index a17003686..4119e1d4e 100644 --- a/app/src/main/res/color/sel_selectable_background.xml +++ b/app/src/main/res/color/sel_activatable_background.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/sel_accented.xml b/app/src/main/res/color/sel_activatable_icon.xml similarity index 77% rename from app/src/main/res/color/sel_accented.xml rename to app/src/main/res/color/sel_activatable_icon.xml index 9ade5ce76..1cbfc27d6 100644 --- a/app/src/main/res/color/sel_accented.xml +++ b/app/src/main/res/color/sel_activatable_icon.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/sel_cover_bg.xml b/app/src/main/res/color/sel_cover_bg.xml index 22d9606fd..a35d5a7c5 100644 --- a/app/src/main/res/color/sel_cover_bg.xml +++ b/app/src/main/res/color/sel_cover_bg.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/sel_on_cover_bg.xml b/app/src/main/res/color/sel_on_cover_bg.xml index 6de6dcf7b..dcc29354b 100644 --- a/app/src/main/res/color/sel_on_cover_bg.xml +++ b/app/src/main/res/color/sel_on_cover_bg.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/sel_toggleable_primary.xml b/app/src/main/res/color/sel_selectable_text_primary.xml similarity index 78% rename from app/src/main/res/color/sel_toggleable_primary.xml rename to app/src/main/res/color/sel_selectable_text_primary.xml index eb504dfb7..75ce4c38b 100644 --- a/app/src/main/res/color/sel_toggleable_primary.xml +++ b/app/src/main/res/color/sel_selectable_text_primary.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/sel_toggleable_secondary.xml b/app/src/main/res/color/sel_selectable_text_secondary.xml similarity index 92% rename from app/src/main/res/color/sel_toggleable_secondary.xml rename to app/src/main/res/color/sel_selectable_text_secondary.xml index 022128c2d..339853789 100644 --- a/app/src/main/res/color/sel_toggleable_secondary.xml +++ b/app/src/main/res/color/sel_selectable_text_secondary.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/ui_item_ripple.xml b/app/src/main/res/drawable/ui_item_ripple.xml index 74b981fbf..c1501325f 100644 --- a/app/src/main/res/drawable/ui_item_ripple.xml +++ b/app/src/main/res/drawable/ui_item_ripple.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout-h480dp/fragment_playback_panel.xml b/app/src/main/res/layout-h480dp/fragment_playback_panel.xml index 8fc5c8a49..6ba7e9b53 100644 --- a/app/src/main/res/layout-h480dp/fragment_playback_panel.xml +++ b/app/src/main/res/layout-h480dp/fragment_playback_panel.xml @@ -94,7 +94,7 @@ android:layout_height="wrap_content" android:contentDescription="@string/desc_change_repeat" app:icon="@drawable/ic_repeat_off_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" /> @@ -143,11 +143,11 @@ android:layout_height="wrap_content" android:contentDescription="@string/desc_shuffle" app:icon="@drawable/sel_shuffle_state_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/playback_skip_next" - app:tint="@color/sel_accented" /> + app:tint="@color/sel_activatable_icon" /> diff --git a/app/src/main/res/layout-sw600dp/fragment_playback_panel.xml b/app/src/main/res/layout-sw600dp/fragment_playback_panel.xml index 741219401..da87b3d1d 100644 --- a/app/src/main/res/layout-sw600dp/fragment_playback_panel.xml +++ b/app/src/main/res/layout-sw600dp/fragment_playback_panel.xml @@ -96,7 +96,7 @@ android:layout_marginEnd="@dimen/spacing_huge" android:contentDescription="@string/desc_change_repeat" app:icon="@drawable/ic_repeat_off_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintEnd_toStartOf="@+id/playback_skip_prev" app:layout_constraintHorizontal_chainStyle="packed" @@ -147,11 +147,11 @@ android:layout_marginStart="@dimen/spacing_huge" android:contentDescription="@string/desc_shuffle" app:icon="@drawable/sel_shuffle_state_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintStart_toEndOf="@+id/playback_skip_next" app:layout_constraintTop_toTopOf="@+id/playback_skip_next" - app:tint="@color/sel_accented" /> + app:tint="@color/sel_activatable_icon" /> diff --git a/app/src/main/res/layout/fragment_playback_panel.xml b/app/src/main/res/layout/fragment_playback_panel.xml index 092283a50..3ef50f15e 100644 --- a/app/src/main/res/layout/fragment_playback_panel.xml +++ b/app/src/main/res/layout/fragment_playback_panel.xml @@ -109,7 +109,7 @@ android:layout_height="wrap_content" android:contentDescription="@string/desc_change_repeat" app:icon="@drawable/ic_repeat_off_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_prev" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" /> @@ -158,11 +158,11 @@ android:layout_height="wrap_content" android:contentDescription="@string/desc_shuffle" app:icon="@drawable/sel_shuffle_state_24" - app:iconTint="@color/sel_accented" + app:iconTint="@color/sel_activatable_icon" app:layout_constraintBottom_toBottomOf="@+id/playback_skip_next" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/playback_skip_next" - app:tint="@color/sel_accented" /> + app:tint="@color/sel_activatable_icon" /> diff --git a/app/src/main/res/layout/item_album_song.xml b/app/src/main/res/layout/item_album_song.xml index 978044800..07766d23a 100644 --- a/app/src/main/res/layout/item_album_song.xml +++ b/app/src/main/res/layout/item_album_song.xml @@ -54,7 +54,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_small" - android:textColor="@color/sel_accented_primary" + android:textColor="@color/sel_selectable_text_primary" app:layout_constraintBottom_toTopOf="@+id/song_duration" app:layout_constraintEnd_toStartOf="@+id/song_menu" app:layout_constraintStart_toEndOf="@+id/song_track_bg" diff --git a/app/src/main/res/layout/item_parent.xml b/app/src/main/res/layout/item_parent.xml index f588c424c..74e0e7df2 100644 --- a/app/src/main/res/layout/item_parent.xml +++ b/app/src/main/res/layout/item_parent.xml @@ -24,7 +24,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_mid_medium" - android:textColor="@color/sel_accented_primary" + android:textColor="@color/sel_selectable_text_primary" app:layout_constraintBottom_toTopOf="@+id/parent_info" app:layout_constraintEnd_toStartOf="@+id/parent_menu" app:layout_constraintStart_toEndOf="@+id/parent_image" diff --git a/app/src/main/res/layout/item_picker_choice.xml b/app/src/main/res/layout/item_picker_choice.xml index 3aa25d851..8c844b7d2 100644 --- a/app/src/main/res/layout/item_picker_choice.xml +++ b/app/src/main/res/layout/item_picker_choice.xml @@ -24,7 +24,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_mid_medium" - android:textColor="@color/sel_accented_primary" + android:textColor="@color/sel_selectable_text_primary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/picker_image" diff --git a/app/src/main/res/layout/item_queue_song.xml b/app/src/main/res/layout/item_queue_song.xml index 192ade48c..0a897e8ba 100644 --- a/app/src/main/res/layout/item_queue_song.xml +++ b/app/src/main/res/layout/item_queue_song.xml @@ -49,7 +49,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_mid_medium" - android:textColor="@color/sel_toggleable_primary" + android:textColor="@color/sel_selectable_text_primary" app:layout_constraintBottom_toTopOf="@+id/song_info" app:layout_constraintEnd_toStartOf="@+id/song_drag_handle" app:layout_constraintStart_toEndOf="@+id/song_album_cover" @@ -63,7 +63,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_mid_medium" - android:textColor="@color/sel_toggleable_secondary" + android:textColor="@color/sel_selectable_text_secondary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/song_drag_handle" app:layout_constraintStart_toEndOf="@+id/song_album_cover" diff --git a/app/src/main/res/layout/item_song.xml b/app/src/main/res/layout/item_song.xml index 05399146f..108adb89f 100644 --- a/app/src/main/res/layout/item_song.xml +++ b/app/src/main/res/layout/item_song.xml @@ -24,7 +24,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/spacing_mid_medium" - android:textColor="@color/sel_accented_primary" + android:textColor="@color/sel_selectable_text_primary" app:layout_constraintBottom_toTopOf="@+id/song_info" app:layout_constraintEnd_toStartOf="@+id/song_menu" app:layout_constraintStart_toEndOf="@+id/song_album_cover" diff --git a/app/src/main/res/layout/view_seek_bar.xml b/app/src/main/res/layout/view_seek_bar.xml index d00c13a3d..982e02d28 100644 --- a/app/src/main/res/layout/view_seek_bar.xml +++ b/app/src/main/res/layout/view_seek_bar.xml @@ -20,7 +20,7 @@ android:layout_marginStart="@dimen/spacing_medium" android:layout_marginBottom="@dimen/spacing_tiny" android:textAppearance="@style/TextAppearance.Auxio.BodySmall" - android:textColor="@color/sel_accented_secondary" + android:textColor="@color/sel_selectable_text_secondary" tools:text="11:38" />