diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index 11d4aef22..3c1db8a1b 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -29,7 +29,6 @@ import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.BaseModel import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Header -import org.oxycblt.auxio.music.HeaderString import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.ui.DisplayMode @@ -160,7 +159,7 @@ class DetailViewModel : ViewModel() { data.add( ActionHeader( id = -2, - string = HeaderString.Single(R.string.lbl_songs), + string = R.string.lbl_songs, icon = R.drawable.ic_sort, desc = R.string.lbl_sort, onClick = { view -> @@ -182,7 +181,7 @@ class DetailViewModel : ViewModel() { data.add( Header( id = -2, - string = HeaderString.Single(R.string.lbl_albums) + string = R.string.lbl_albums ) ) @@ -191,7 +190,7 @@ class DetailViewModel : ViewModel() { data.add( ActionHeader( id = -3, - string = HeaderString.Single(R.string.lbl_songs), + string = R.string.lbl_songs, icon = R.drawable.ic_sort, desc = R.string.lbl_sort, onClick = { view -> @@ -212,7 +211,7 @@ class DetailViewModel : ViewModel() { data.add( ActionHeader( id = -2, - string = HeaderString.Single(R.string.lbl_songs), + string = R.string.lbl_songs, icon = R.drawable.ic_sort, desc = R.string.lbl_sort, onClick = { view -> 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 8bc99ad77..954032c43 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/Models.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/Models.kt @@ -18,7 +18,6 @@ package org.oxycblt.auxio.music -import android.content.Context import android.view.View import androidx.annotation.DrawableRes import androidx.annotation.StringRes @@ -202,11 +201,10 @@ data class Genre( /** * A data object used solely for the "Header" UI element. - * @see HeaderString */ data class Header( override val id: Long, - val string: HeaderString + @StringRes val string: Int ) : BaseModel() /** @@ -215,7 +213,7 @@ data class Header( */ data class ActionHeader( override val id: Long, - val string: HeaderString, + @StringRes val string: Int, @DrawableRes val icon: Int, @StringRes val desc: Int, val onClick: (View) -> Unit, @@ -243,77 +241,3 @@ data class ActionHeader( return result } } - -/** - * The string used for a header instance. This class is a bit complex, mostly because it revolves - * around passing string resources that are then resolved by the view. This is because ViewModel - * instance should preferably not have access to a Context but should still generate data, - * which at times can include [Header] instances that require string resources. - * @author OxygenCobalt - */ -sealed class HeaderString { - /** A single string resource. */ - class Single(@StringRes val id: Int) : HeaderString() - /** A string resource with an argument. */ - class WithArg(@StringRes val id: Int, val arg: Arg) : HeaderString() - - /** - * Resolve this instance into a string. - */ - fun resolve(context: Context): String { - return when (this) { - is Single -> context.getString(id) - is WithArg -> context.getString(id, arg.resolve(context)) - } - } - - override fun equals(other: Any?): Boolean { - if (this === other) return false - - return when (this) { - is Single -> other is Single && other.id == id - is WithArg -> other is WithArg && other.id == id && other.arg == arg - } - } - - override fun hashCode(): Int { - return when (this) { - is Single -> id.hashCode() - is WithArg -> 31 * id.hashCode() * arg.hashCode() - } - } - - /** - * An argument for the [WithArg] header string. - */ - sealed class Arg { - /** A string resource to be used as the argument */ - class Resource(@StringRes val id: Int) : Arg() - /** A string value to be used as the argument */ - class Value(val string: String) : Arg() - - /** Resolve this argument instance into a string. */ - fun resolve(context: Context): String { - return when (this) { - is Resource -> context.getString(id) - is Value -> string - } - } - - override fun equals(other: Any?): Boolean { - if (this === other) return false - - return when (this) { - is Resource -> other is Resource && other.id == id - is Value -> other is Value && other.string == this.string - } - } - - override fun hashCode(): Int { - return when (this) { - is Resource -> id.hashCode() - is Value -> 31 * string.hashCode() - } - } - } -} diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt index a741adafe..8f7fe8597 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt @@ -214,7 +214,6 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback { */ fun removeQueueDataItem(adapterIndex: Int, apply: () -> Unit) { val adjusted = adapterIndex + (playbackManager.queue.size - mNextUp.value!!.size) - logD("$adjusted") if (adjusted in playbackManager.queue.indices) { apply() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index 307285400..3c5f6ab51 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -284,7 +284,6 @@ class PlaybackStateManager private constructor() { if (index > mQueue.size || index < 0) { logE("Index is out of bounds, did not remove queue item.") - return false } @@ -301,7 +300,6 @@ class PlaybackStateManager private constructor() { fun moveQueueItems(from: Int, to: Int): Boolean { if (from > mQueue.size || from < 0 || to > mQueue.size || to < 0) { logE("Indices were out of bounds, did not move queue item") - return false } diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt index 61e7dda93..d09bb027f 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt @@ -27,7 +27,6 @@ import kotlinx.coroutines.launch import org.oxycblt.auxio.R import org.oxycblt.auxio.music.BaseModel import org.oxycblt.auxio.music.Header -import org.oxycblt.auxio.music.HeaderString import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicStore @@ -85,28 +84,28 @@ class SearchViewModel : ViewModel() { if (mFilterMode == null || mFilterMode == DisplayMode.SHOW_ARTISTS) { musicStore.artists.filterByOrNull(query)?.let { artists -> - results.add(Header(-1, HeaderString.Single(R.string.lbl_artists))) + results.add(Header(-1, R.string.lbl_artists)) results.addAll(sort.sortParents(artists)) } } if (mFilterMode == null || mFilterMode == DisplayMode.SHOW_ALBUMS) { musicStore.albums.filterByOrNull(query)?.let { albums -> - results.add(Header(-2, HeaderString.Single(R.string.lbl_albums))) + results.add(Header(-2, R.string.lbl_albums)) results.addAll(sort.sortAlbums(albums)) } } if (mFilterMode == null || mFilterMode == DisplayMode.SHOW_GENRES) { musicStore.genres.filterByOrNull(query)?.let { genres -> - results.add(Header(-3, HeaderString.Single(R.string.lbl_genres))) + results.add(Header(-3, R.string.lbl_genres)) results.addAll(sort.sortParents(genres)) } } if (mFilterMode == null || mFilterMode == DisplayMode.SHOW_SONGS) { musicStore.songs.filterByOrNull(query)?.let { songs -> - results.add(Header(-4, HeaderString.Single(R.string.lbl_songs))) + results.add(Header(-4, R.string.lbl_songs)) results.addAll(sort.sortSongs(songs)) } } diff --git a/app/src/main/res/font/inter.ttf b/app/src/main/res/font/inter.ttf deleted file mode 100644 index 96fd6a12d..000000000 Binary files a/app/src/main/res/font/inter.ttf and /dev/null differ diff --git a/app/src/main/res/font/inter_semibold.ttf b/app/src/main/res/font/inter_semibold.ttf deleted file mode 100644 index ddb279290..000000000 Binary files a/app/src/main/res/font/inter_semibold.ttf and /dev/null differ diff --git a/app/src/main/res/layout-sw600dp/item_detail.xml b/app/src/main/res/layout-sw600dp/item_detail.xml index e798c2e6d..ed00e99af 100644 --- a/app/src/main/res/layout-sw600dp/item_detail.xml +++ b/app/src/main/res/layout-sw600dp/item_detail.xml @@ -24,7 +24,6 @@ style="@style/Widget.Auxio.TextView.Detail" android:layout_width="0dp" android:layout_height="wrap_content" - android:fontFamily="@font/inter_semibold" android:layout_marginStart="@dimen/spacing_medium" android:ellipsize="end" android:maxLines="1" diff --git a/app/src/main/res/layout/item_action_header.xml b/app/src/main/res/layout/item_action_header.xml index 638780b2b..42e3d1b2b 100644 --- a/app/src/main/res/layout/item_action_header.xml +++ b/app/src/main/res/layout/item_action_header.xml @@ -20,7 +20,7 @@ style="@style/Widget.Auxio.TextView.Header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@{header.string.resolve(context)}" + android:text="@{context.getString(header.string)}" app:layout_constraintBottom_toTopOf="@id/header_divider" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" diff --git a/app/src/main/res/layout/item_album_song.xml b/app/src/main/res/layout/item_album_song.xml index 09e219ba8..ac8cf7af7 100644 --- a/app/src/main/res/layout/item_album_song.xml +++ b/app/src/main/res/layout/item_album_song.xml @@ -24,7 +24,7 @@ android:text="@{String.valueOf(song.track)}" android:textAlignment="center" android:textAppearance="@style/TextAppearance.Auxio.TitleMidLarge" - android:fontFamily="@font/inter" + android:fontFamily="sans-serif" android:textColor="@color/sel_accented_secondary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/item_header.xml b/app/src/main/res/layout/item_header.xml index 383e82961..d33f346e1 100644 --- a/app/src/main/res/layout/item_header.xml +++ b/app/src/main/res/layout/item_header.xml @@ -20,7 +20,7 @@ style="@style/Widget.Auxio.TextView.Header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@{header.string.resolve(context)}" + android:text="@{context.getString(header.string)}" app:layout_constraintBottom_toTopOf="@id/header_divider" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" diff --git a/app/src/main/res/layout/widget_default.xml b/app/src/main/res/layout/widget_default.xml index f02d3bf98..abf8a9794 100644 --- a/app/src/main/res/layout/widget_default.xml +++ b/app/src/main/res/layout/widget_default.xml @@ -25,7 +25,6 @@ android:padding="@dimen/spacing_medium" android:text="@string/def_playback" android:textAppearance="@style/TextAppearance.Auxio.TitleMidLarge" - android:textColor="?android:attr/textColorPrimary" - android:textStyle="bold" /> + android:textColor="?android:attr/textColorPrimary" /> diff --git a/app/src/main/res/values/styles_android.xml b/app/src/main/res/values/styles_android.xml index 37275b1e6..598557730 100644 --- a/app/src/main/res/values/styles_android.xml +++ b/app/src/main/res/values/styles_android.xml @@ -16,7 +16,7 @@ @@ -39,7 +39,7 @@ diff --git a/app/src/main/res/values/typography.xml b/app/src/main/res/values/typography.xml index 0d240ad40..07cead865 100644 --- a/app/src/main/res/values/typography.xml +++ b/app/src/main/res/values/typography.xml @@ -2,98 +2,81 @@ - + - - - - - - - - - - - + - \ No newline at end of file