all: minor cleanup

Do some minor cleanup before the next release.
This commit is contained in:
OxygenCobalt 2022-03-07 19:34:07 -07:00
parent 7b5c49a5b3
commit 3293637cfd
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
4 changed files with 24 additions and 7 deletions

View file

@ -30,8 +30,11 @@ import org.oxycblt.auxio.coil.MusicKeyer
import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.settings.SettingsManager
/** /**
* TODO: Phase out databinding * TODO: Plan for a general UI rework
* TODO: Rework sealed classes to minimize whens and maximize overrides * - Refactor fragment class
* - Remove databinding and dedup layouts
* - Rework RecyclerView management and item dragging
* - Rework sealed classes to minimize whens and maximize overrides
*/ */
@Suppress("UNUSED") @Suppress("UNUSED")
class AuxioApp : Application(), ImageLoaderFactory { class AuxioApp : Application(), ImageLoaderFactory {

View file

@ -130,6 +130,8 @@ class MusicLoader {
args += "$path%" // Append % so that the selector properly detects children args += "$path%" // Append % so that the selector properly detects children
} }
// TODO: Move all references to contentResolver into a single variable so we can
// avoid accidentally removing the applicationContext fix
context.applicationContext.contentResolver.query( context.applicationContext.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
arrayOf( arrayOf(
@ -142,7 +144,7 @@ class MusicLoader {
MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.AudioColumns.ALBUM,
MediaStore.Audio.AudioColumns.ALBUM_ID, MediaStore.Audio.AudioColumns.ALBUM_ID,
MediaStore.Audio.AudioColumns.ARTIST, MediaStore.Audio.AudioColumns.ARTIST,
MediaStore.Audio.AudioColumns.ALBUM_ARTIST, AUDIO_COLUMN_ALBUM_ARTIST
), ),
selector, args.toTypedArray(), null selector, args.toTypedArray(), null
)?.use { cursor -> )?.use { cursor ->
@ -155,7 +157,7 @@ class MusicLoader {
val albumIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM) val albumIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM)
val albumIdIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM_ID) val albumIdIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM_ID)
val artistIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST) val artistIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST)
val albumArtistIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM_ARTIST) val albumArtistIndex = cursor.getColumnIndexOrThrow(AUDIO_COLUMN_ALBUM_ARTIST)
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
val id = cursor.getLong(idIndex) val id = cursor.getLong(idIndex)
@ -412,6 +414,15 @@ class MusicLoader {
} }
companion object { companion object {
/**
* The album_artist MediaStore field has existed since at least API 21, but until API
* 30 it was a proprietary extension for Google Play Music and was not documented.
* Since this field probably works on all versions Auxio supports, we suppress the
* warning about using a possibly-unsupported constant.
*/
@Suppress("InlinedApi")
const val AUDIO_COLUMN_ALBUM_ARTIST = MediaStore.Audio.AudioColumns.ALBUM_ARTIST
/** /**
* A complete array of all the hardcoded genre values for ID3(v2), contains standard genres and * A complete array of all the hardcoded genre values for ID3(v2), contains standard genres and
* winamp extensions. * winamp extensions.

View file

@ -21,7 +21,7 @@ import org.oxycblt.auxio.util.getDrawableSafe
* *
* This view also enables use of an "indicator", which is a dot that can denote when a * This view also enables use of an "indicator", which is a dot that can denote when a
* button is active. This is useful for the shuffle/loop buttons, as at times highlighting * button is active. This is useful for the shuffle/loop buttons, as at times highlighting
* them is not enough to * them is not enough to differentiate them.
*/ */
class PlaybackButton @JvmOverloads constructor( class PlaybackButton @JvmOverloads constructor(
context: Context, context: Context,
@ -73,6 +73,7 @@ class PlaybackButton @JvmOverloads constructor(
} }
} }
// Put the indicator right below the icon.
val x = (measuredWidth - indicatorDrawable.intrinsicWidth) / 2 val x = (measuredWidth - indicatorDrawable.intrinsicWidth) / 2
val y = ((measuredHeight - iconSize) / 2) + iconSize val y = ((measuredHeight - iconSize) / 2) + iconSize
@ -81,9 +82,11 @@ class PlaybackButton @JvmOverloads constructor(
) )
} }
override fun onDrawForeground(canvas: Canvas) { override fun onDraw(canvas: Canvas) {
super.onDrawForeground(canvas) super.onDraw(canvas)
// I would use onDrawForeground but apparently that isn't called by Lollipop devices.
// This is not referenced in the documentation at all.
if (hasIndicator && isActivated) { if (hasIndicator && isActivated) {
indicatorDrawable.draw(canvas) indicatorDrawable.draw(canvas)
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 266 KiB