From ec358a13e3c40a7ad414e934abf0b9d1e1c73a72 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 13 Feb 2022 15:33:28 -0700 Subject: [PATCH] style: apply body typography Use body typography in more places, reworking the letter spacing as to make it more pleasent to use with the inter typeface. This should hopefully be the last time I fret over typography. Everything should line up in the way desired by M3. --- CHANGELOG.md | 2 ++ .../java/org/oxycblt/auxio/music/Models.kt | 2 ++ .../org/oxycblt/auxio/music/MusicLoader.kt | 23 +++++++++++++++---- app/src/main/res/layout/widget_default.xml | 2 +- app/src/main/res/values/styles_android.xml | 10 ++++---- app/src/main/res/values/styles_ui.xml | 4 ++-- app/src/main/res/values/typography.xml | 18 ++++++++------- 7 files changed, 40 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b9a0b8dc..42ee0b705 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ # Changelog ## dev [v2.2.1 or v2.3.0] +#### What's Improved - Updated chinese translations [courtesy of cccClyde] +- Use body typography in correct places ## v2.2.0 #### What's New: diff --git a/app/src/main/java/org/oxycblt/auxio/music/Models.kt b/app/src/main/java/org/oxycblt/auxio/music/Models.kt index 80f27daf6..080bd584d 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/Models.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/Models.kt @@ -60,6 +60,8 @@ data class Song( override val name: String, /** The file name of this song, excluding the full path. */ val fileName: String, + /** The parent directories of this song. More or less the complement to [fileName]. */ + val dirs: String, /** The total duration of this song, in millis. */ val duration: Long, /** The track number of this song. */ diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt index e6088f2d2..058cc6d84 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicLoader.kt @@ -7,6 +7,7 @@ import android.provider.MediaStore import androidx.core.database.getStringOrNull import org.oxycblt.auxio.R import org.oxycblt.auxio.excluded.ExcludedDatabase +import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.logE import java.lang.Exception @@ -124,7 +125,7 @@ class MusicLoader { args += "$path%" // Append % so that the selector properly detects children } - context.applicationContext.contentResolver.query( + context.contentResolver.query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, arrayOf( MediaStore.Audio.AudioColumns._ID, @@ -137,6 +138,7 @@ class MusicLoader { MediaStore.Audio.AudioColumns.YEAR, MediaStore.Audio.AudioColumns.TRACK, MediaStore.Audio.AudioColumns.DURATION, + MediaStore.Audio.AudioColumns.DATA ), selector, args.toTypedArray(), null )?.use { cursor -> @@ -150,6 +152,7 @@ class MusicLoader { val yearIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.YEAR) val trackIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TRACK) val durationIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DURATION) + val dataIndex = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DATA) while (cursor.moveToNext()) { val id = cursor.getLong(idIndex) @@ -170,10 +173,19 @@ class MusicLoader { val track = cursor.getInt(trackIndex) val duration = cursor.getLong(durationIndex) + // More efficient to slice away DISPLAY_NAME from the full path then to + // grok the path components from DATA itself. + val dirs = cursor.getString(dataIndex).run { + substring(0 until lastIndexOfAny(listOf(fileName))) + } + + logD("SONG NAME: $title ALBUM: $album ARTIST: $artist ALBUM ARTIST: $albumArtist") + songs.add( Song( title, fileName, + dirs, duration, track, id, @@ -188,7 +200,8 @@ class MusicLoader { } songs = songs.distinctBy { - it.name to it.internalMediaStoreAlbumName to it.internalMediaStoreArtistName to it.internalMediaStoreAlbumArtistName to it.track to it.duration + it.name to it.internalMediaStoreAlbumName to it.internalMediaStoreArtistName to + it.internalMediaStoreAlbumArtistName to it.track to it.duration }.toMutableList() return songs @@ -223,6 +236,8 @@ class MusicLoader { ) val artistName = templateSong.internalGroupingArtistName + logD("ALBUM NAME: $albumName PREFERRED ARTIST: $artistName") + albums.add( Album( albumName, @@ -279,7 +294,7 @@ class MusicLoader { private fun readGenres(context: Context, songs: List): List { val genres = mutableListOf() - val genreCursor = context.applicationContext.contentResolver.query( + val genreCursor = context.contentResolver.query( MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, arrayOf( MediaStore.Audio.Genres._ID, @@ -332,7 +347,7 @@ class MusicLoader { val genreSongs = mutableListOf() // Don't even bother blacklisting here as useless iterations are less expensive than IO - val songCursor = context.applicationContext.contentResolver.query( + val songCursor = context.contentResolver.query( MediaStore.Audio.Genres.Members.getContentUri("external", genreId), arrayOf(MediaStore.Audio.Genres.Members._ID), null, null, null diff --git a/app/src/main/res/layout/widget_default.xml b/app/src/main/res/layout/widget_default.xml index 255cc28b3..1a3729aaf 100644 --- a/app/src/main/res/layout/widget_default.xml +++ b/app/src/main/res/layout/widget_default.xml @@ -19,12 +19,12 @@ diff --git a/app/src/main/res/values/styles_android.xml b/app/src/main/res/values/styles_android.xml index 3bd708c22..436dd4309 100644 --- a/app/src/main/res/values/styles_android.xml +++ b/app/src/main/res/values/styles_android.xml @@ -22,7 +22,7 @@ @@ -40,16 +40,14 @@ diff --git a/app/src/main/res/values/styles_ui.xml b/app/src/main/res/values/styles_ui.xml index e738fd67a..c6042f9da 100644 --- a/app/src/main/res/values/styles_ui.xml +++ b/app/src/main/res/values/styles_ui.xml @@ -85,7 +85,7 @@ @@ -105,7 +105,7 @@ end 1 ?android:attr/textColorSecondary - @style/TextAppearance.Auxio.TitleMedium + @style/TextAppearance.Auxio.BodyLarge \ No newline at end of file