diff --git a/app/src/main/java/org/oxycblt/auxio/ui/Accent.kt b/app/src/main/java/org/oxycblt/auxio/ui/Accent.kt index 86be21dc4..a671a5d3d 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/Accent.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/Accent.kt @@ -16,24 +16,14 @@ import org.oxycblt.auxio.R val ACCENTS = arrayOf( Accent(R.color.red, R.style.Theme_Red, R.style.Theme_Red_Black, R.string.clr_red), Accent(R.color.pink, R.style.Theme_Pink, R.style.Theme_Pink_Black, R.string.clr_pink), - Accent( - R.color.purple, - R.style.Theme_Purple, - R.style.Theme_Purple_Black, - R.string.clr_purple - ), + Accent(R.color.purple, R.style.Theme_Purple, R.style.Theme_Purple_Black, R.string.clr_purple), Accent( R.color.deep_purple, R.style.Theme_DeepPurple, R.style.Theme_DeepPurple_Black, R.string.clr_deep_purple ), - Accent( - R.color.indigo, - R.style.Theme_Indigo, - R.style.Theme_Indigo_Black, - R.string.clr_indigo - ), + Accent(R.color.indigo, R.style.Theme_Indigo, R.style.Theme_Indigo_Black, R.string.clr_indigo), Accent(R.color.blue, R.style.Theme_Blue, R.style.Theme_Blue_Black, R.string.clr_blue), Accent( R.color.light_blue, @@ -48,21 +38,11 @@ val ACCENTS = arrayOf( R.color.light_green, R.style.Theme_LightGreen, R.style.Theme_LightGreen_Black, - R.string.color_light_green - ), - Accent(R.color.lime, R.style.Theme_Lime, R.style.Theme_Lime_Black, R.string.color_lime), - Accent( - R.color.yellow, - R.style.Theme_Yellow, - R.style.Theme_Yellow_Black, - R.string.color_yellow - ), - Accent( - R.color.orange, - R.style.Theme_Orange, - R.style.Theme_Orange_Black, - R.string.clr_orange + R.string.clr_light_green ), + Accent(R.color.lime, R.style.Theme_Lime, R.style.Theme_Lime_Black, R.string.clr_lime), + Accent(R.color.yellow, R.style.Theme_Yellow, R.style.Theme_Yellow_Black, R.string.clr_yellow), + Accent(R.color.orange, R.style.Theme_Orange, R.style.Theme_Orange_Black, R.string.clr_orange), Accent( R.color.deep_orange, R.style.Theme_DeepOrange, diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt index aa9c43869..ea7d40f54 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt @@ -9,7 +9,7 @@ import org.oxycblt.auxio.playback.system.PlaybackService import org.oxycblt.auxio.ui.newBroadcastIntent import org.oxycblt.auxio.ui.newMainIntent -private fun createBaseView( +private fun createViews( context: Context, @LayoutRes layout: Int, state: WidgetState @@ -56,33 +56,23 @@ private fun createBaseView( if (state.albumArt != null) { views.setImageViewBitmap(R.id.widget_cover, state.albumArt) - views.setCharSequence( - R.id.widget_cover, "setContentDescription", - context.getString(R.string.desc_album_cover, state.song.album.name) + views.setContentDescription( + R.id.widget_cover, context.getString(R.string.desc_album_cover, state.song.album.name) ) } else { views.setImageViewResource(R.id.widget_cover, R.drawable.ic_song) - views.setCharSequence( - R.id.widget_cover, - "setContentDescription", - context.getString(R.string.desc_no_cover) - ) + views.setContentDescription(R.id.widget_cover, context.getString(R.string.desc_no_cover)) } return views } fun createSmallWidget(context: Context, state: WidgetState): RemoteViews { - return createBaseView(context, R.layout.widget_small, state) + return createViews(context, R.layout.widget_small, state) } fun createFullWidget(context: Context, state: WidgetState): RemoteViews { - val views = createBaseView(context, R.layout.widget_full, state) - - // The main way the large widget differs from the other widgets is the addition of extra - // controls. However, since the context we use to load attributes is from the main process, - // attempting to dynamically color anything will result in an error. More duplicate - // resources it is. This is getting really tiring. + val views = createViews(context, R.layout.widget_full, state) views.setOnClickPendingIntent( R.id.widget_loop, @@ -98,10 +88,15 @@ fun createFullWidget(context: Context, state: WidgetState): RemoteViews { ) ) - val shuffleRes = if (state.isShuffled) - R.drawable.ic_shuffle_tinted - else - R.drawable.ic_shuffle + // The main way the large widget differs from the other widgets is the addition of extra + // controls. However, since the context we use to load attributes is from the main process, + // attempting to dynamically color anything will result in an error. More duplicate + // resources it is. This is getting really tiring. + + val shuffleRes = when { + state.isShuffled -> R.drawable.ic_shuffle_tinted + else -> R.drawable.ic_shuffle + } val loopRes = when (state.loopMode) { LoopMode.NONE -> R.drawable.ic_loop diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt index de0d7a2d2..3824bf8dd 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt @@ -64,8 +64,6 @@ class WidgetProvider : AppWidgetProvider() { return } - // FIXME: Fix the race conditions with the bitmap loading. - loadBitmap(context, song) { bitmap -> val state = WidgetState( song, @@ -85,6 +83,15 @@ class WidgetProvider : AppWidgetProvider() { } } + /* + * Revert this widget to its default view + */ + fun reset(context: Context) { + logD("Resetting widget") + + applyDefaultViews(context, AppWidgetManager.getInstance(context)) + } + private fun AppWidgetManager.applyViewsCompat( context: Context, views: Map @@ -125,7 +132,8 @@ class WidgetProvider : AppWidgetProvider() { // Widget dimens pre-12 are weird. Basically, they correspond to columns // but with 2 columns worth of DiP added for some insane reason. Take // the dimens, normalize them into cells, and then turn them back into dimens. - // This is super lossy and may result in wonky layouts, but it *seems* to work. + // This may result in wonky layouts, but it *seems* to work well enough + // in practice. width = normalizeDimen(width) height = normalizeDimen(height) @@ -153,7 +161,6 @@ class WidgetProvider : AppWidgetProvider() { } // No layout fits. Just use the smallest view. - logD("No widget layout found") val minimum = requireNotNull( @@ -175,15 +182,6 @@ class WidgetProvider : AppWidgetProvider() { return 70 * (cells - 2) - 30 } - /* - * Revert this widget to its default view - */ - fun reset(context: Context) { - logD("Resetting widget") - - applyDefaultViews(context, AppWidgetManager.getInstance(context)) - } - @SuppressLint("RemoteViewLayout") private fun applyDefaultViews(context: Context, manager: AppWidgetManager) { val views = RemoteViews(context.packageName, R.layout.widget_default) diff --git a/app/src/main/res/drawable/ic_accent.xml b/app/src/main/res/drawable/ic_accent.xml index 485d365af..d769b5e76 100644 --- a/app/src/main/res/drawable/ic_accent.xml +++ b/app/src/main/res/drawable/ic_accent.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_album.xml b/app/src/main/res/drawable/ic_album.xml index d5e444134..e9601bf25 100644 --- a/app/src/main/res/drawable/ic_album.xml +++ b/app/src/main/res/drawable/ic_album.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout-land/item_album_header.xml b/app/src/main/res/layout-land/item_album_header.xml index b2aa1c994..ecec3145a 100644 --- a/app/src/main/res/layout-land/item_album_header.xml +++ b/app/src/main/res/layout-land/item_album_header.xml @@ -99,7 +99,7 @@ style="@style/Widget.Button.Vibrant.Primary" android:layout_marginStart="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_medium" - android:backgroundTint="?attr/colorPrimary" + android:backgroundTint="?attr/colorAccent" android:onClick="@{() -> playbackModel.playAlbum(album, true)}" android:text="@string/lbl_shuffle" app:layout_constraintBottom_toBottomOf="@+id/album_play_button" diff --git a/app/src/main/res/layout-land/item_artist_header.xml b/app/src/main/res/layout-land/item_artist_header.xml index ee1c665f1..010776d92 100644 --- a/app/src/main/res/layout-land/item_artist_header.xml +++ b/app/src/main/res/layout-land/item_artist_header.xml @@ -89,7 +89,7 @@ diff --git a/app/src/main/res/layout/item_album_header.xml b/app/src/main/res/layout/item_album_header.xml index 4227f5803..7308c9dea 100644 --- a/app/src/main/res/layout/item_album_header.xml +++ b/app/src/main/res/layout/item_album_header.xml @@ -93,7 +93,7 @@ style="@style/Widget.Button.Vibrant.Primary" android:layout_marginStart="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_medium" - android:backgroundTint="?attr/colorPrimary" + android:backgroundTint="?attr/colorAccent" android:onClick="@{() -> playbackModel.playAlbum(album, true)}" android:text="@string/lbl_shuffle" app:layout_constraintBottom_toBottomOf="@+id/album_play_button" diff --git a/app/src/main/res/layout/item_artist_header.xml b/app/src/main/res/layout/item_artist_header.xml index 2cab60118..ff3d5b29a 100644 --- a/app/src/main/res/layout/item_artist_header.xml +++ b/app/src/main/res/layout/item_artist_header.xml @@ -88,7 +88,7 @@ style="@style/Widget.Button.Vibrant.Primary" android:layout_marginStart="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_medium" - android:backgroundTint="?attr/colorPrimary" + android:backgroundTint="?attr/colorAccent" android:onClick="@{() -> playbackModel.playArtist(artist, true)}" android:text="@string/lbl_shuffle" app:layout_constraintBottom_toBottomOf="@+id/artist_play_button" diff --git a/app/src/main/res/layout/item_genre_header.xml b/app/src/main/res/layout/item_genre_header.xml index 9de547e30..ce32ead61 100644 --- a/app/src/main/res/layout/item_genre_header.xml +++ b/app/src/main/res/layout/item_genre_header.xml @@ -91,7 +91,7 @@ diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 66207931d..fcfb0874e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -79,12 +79,12 @@ Kopfhörerafokus Abspielen/Pausieren wenn der Kopfhöreranschluss ändern - Verhalten - Wenn ein Lied ausgewählt hat - Zufällig-Einstellung merken - Lassen zufällig an, wenn ein neues Lied anspielen - Zurückspulen bevor zurück springen - Zurückspulen bevor zum vorheriger Lied springen + Verhalten + Wenn ein Lied ausgewählt hat + Zufällig-Einstellung merken + Lassen zufällig an, wenn ein neues Lied anspielen + Zurückspulen bevor zurück springen + Zurückspulen bevor zum vorheriger Lied springen Content Wiedergabezustand abspeichern @@ -137,9 +137,9 @@ Türkis Blaugrün Grün - Hellgrün - Lindgrün - Gelb + Hellgrün + Lindgrün + Gelb Orange Tieforange Braun diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a15b45050..b0906019b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -50,7 +50,7 @@ Ήχος - Συμπεριφορά + Συμπεριφορά Κομμάτι %d @@ -72,9 +72,9 @@ Ανοιχτός Γαλάζιος Γαλάζιος Πράσινος Πράσινος - Ανοιχτός Πράσινος - Πράσινος Κίτρινος - Κίτρινος + Ανοιχτός Πράσινος + Πράσινος Κίτρινος + Κίτρινος Πορτοκαλής Καφέ Γκρί diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 82587afab..e6cb62e1e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -82,12 +82,12 @@ Conexión de auriculares Reproducir/Pausar cuando la conexión de los auriculares cambie - Funcionamiento - Cuando una canción es seleccionada - Recordar orden aleatorio - Mantener la reproducción aleatoria cuando se reproduce una nueva canción - Rebobinar antes de saltar al anterior - Rebobinar antes de saltar a la canción anterior + Funcionamiento + Cuando una canción es seleccionada + Recordar orden aleatorio + Mantener la reproducción aleatoria cuando se reproduce una nueva canción + Rebobinar antes de saltar al anterior + Rebobinar antes de saltar a la canción anterior Contenido Guardar estado de reproducción @@ -141,9 +141,9 @@ Cyan Teal Verde - Verde Claro - Lima - Amarillo + Verde Claro + Lima + Amarillo Naranja Naranja Profundo Café diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 40ca448f8..2a4af6a8a 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -56,7 +56,7 @@ Audio Focus Branchement du casque - Comportement + Comportement Pas de musique trouvée @@ -81,9 +81,9 @@ Bleu Clair Bleu Vert Vert - Vert Clair - Vert Citron - Jaune + Vert Clair + Vert Citron + Jaune Orange Brun Gris diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index c56be90a9..7d5f04490 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -46,7 +46,7 @@ ऑडियो फोकस हेडसेट प्लग - चाल चलन + चाल चलन कोई संगीत नहीं मिला diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9785c5fc7..e33a919fc 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -54,7 +54,7 @@ Hangfókusz Fejhallgató csatlakozó - Működés + Működés Nem található zene @@ -81,9 +81,9 @@ Világoskék Kékeszöld Zöld - Világoszöld - Sárgazöld - Sárga + Világoszöld + Sárgazöld + Sárga Narancs Barna Szürke diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index af9e55258..0e365a976 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -53,8 +53,8 @@ Audio Fokus audio - Perilaku - Ingat putar acak + Perilaku + Ingat putar acak Musik tidak ditemukan diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e2f6b6761..09096f56a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -55,8 +55,8 @@ Focus audio Inserimento cuffie - Comportamento - Ricorda casuale + Comportamento + Ricorda casuale Nessuna canzone trovata @@ -82,9 +82,9 @@ Azzurro Chiaro Azzurro Verde Verde - Verde Chiaro - Verde Giallo - Giallo + Verde Chiaro + Verde Giallo + Giallo Arancio Bruno Grigio diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d2028e9cd..b7c7854b5 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -53,7 +53,7 @@ 오디오 포커스 헤드셋 연결 - 동작 + 동작 노래를 찾을 수 없습니다 diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0dddf83b2..937eb2a23 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -80,12 +80,12 @@ Headset-pluggen Afspelen/Pauzeren wanneer de headsetaansluiting verandert - Gedrag - Wanneer een liedje is geselecteerd - Onthoud shuffle - Houd shuffle aan bij het afspelen van een nieuw nummer - Terugspoelen voordat je terugspoelt - Terugspoelen voordat u naar het vorige nummer gaat + Gedrag + Wanneer een liedje is geselecteerd + Onthoud shuffle + Houd shuffle aan bij het afspelen van een nieuw nummer + Terugspoelen voordat je terugspoelt + Terugspoelen voordat u naar het vorige nummer gaat Inhoud Afspeelstatus opslaan @@ -138,10 +138,10 @@ Lichtblauw Blauwgroen Groen - Lichtgroen + Lichtgroen Cyaan - Geelgroen - Geel + Geelgroen + Geel Oranje Dieporanje Bruin diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 0890ba602..1bda56a42 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -54,7 +54,7 @@ Wyciszanie otoczenia Podłączanie słuchawek - Zachowanie + Zachowanie Nie znaleziono muzyki @@ -79,9 +79,9 @@ Błękit Jasnobłękit Zielony - Jasnozielony - Żółtyzielony - Żółty + Jasnozielony + Żółtyzielony + Żółty Pomarańczowy Brązowy Szary diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 006c6347c..ab1f28303 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -54,8 +54,8 @@ Foco do áudio Entrada do fone de ouvido - Comportamento - Memorizar aleatorização + Comportamento + Memorizar aleatorização Nenhuma música encontrada @@ -80,9 +80,9 @@ Azul-claro Azul-verde Verde - Verde-claro - Verde-amarelo - Amarelo + Verde-claro + Verde-amarelo + Amarelo Laranja Moreno Grisalho diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 64354b473..0f6a7edba 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -55,8 +55,8 @@ Foco de áudio Entrada do fone de ouvido - Comportamento - Memorizar aleatorização + Comportamento + Memorizar aleatorização Nenhuma música encontrada @@ -81,9 +81,9 @@ Azul-claro Azul-verde Verde - Verde-claro - Verde-amarelo - Amarelo + Verde-claro + Verde-amarelo + Amarelo Laranja Moreno Grisalho diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 1bd8ab1fe..9c7311acb 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -55,7 +55,7 @@ Concentrare audio Conexiune cu cască - Comportament + Comportament Nu s-a găsit nici o muzică @@ -80,9 +80,9 @@ Albastru Deschis Albastru Verde Verde - Verde Deschis - Verde Galben - Galben + Verde Deschis + Verde Galben + Galben Portocaliu Brun Gri diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 07b889219..9c72d41e9 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -54,8 +54,8 @@ Фокусировка аудио Гарнитура - Поведение - Запомнить перемешивание + Поведение + Запомнить перемешивание Музыка не найдена @@ -79,8 +79,8 @@ Голубой Зелёный Светло-Зелёный - Оранжевый - Жёлтый + Оранжевый + Жёлтый Коричневый Седой Нейтральный diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index be483f3fa..5a5f8dbb4 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -53,7 +53,7 @@ Ses Ses odaklama - Tercihler + Tercihler Müzik bulunamadı diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a0c1110c4..759c46c0b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -47,7 +47,7 @@ Аудіо - Поведінка + Поведінка Музику не знайдено diff --git a/app/src/main/res/values-v31/styles_core.xml b/app/src/main/res/values-v31/styles_core.xml index 37efdd3c8..f7715c743 100644 --- a/app/src/main/res/values-v31/styles_core.xml +++ b/app/src/main/res/values-v31/styles_core.xml @@ -2,7 +2,7 @@ @@ -29,7 +29,7 @@ match_parent @dimen/height_compact_progress ?attr/colorControlNormal - ?attr/colorPrimary + ?attr/colorAccent \ No newline at end of file diff --git a/app/src/main/res/values/themes_black.xml b/app/src/main/res/values/themes_black.xml index 482f77477..ef0611d2c 100644 --- a/app/src/main/res/values/themes_black.xml +++ b/app/src/main/res/values/themes_black.xml @@ -1,96 +1,81 @@ + \ No newline at end of file diff --git a/app/src/main/res/xml/prefs_main.xml b/app/src/main/res/xml/prefs_main.xml index 042e316b3..ddfc42332 100644 --- a/app/src/main/res/xml/prefs_main.xml +++ b/app/src/main/res/xml/prefs_main.xml @@ -100,7 +100,7 @@ + app:title="@string/set_behavior"> + app:summary="@string/set_keep_shuffle_desc" + app:title="@string/set_keep_shuffle" /> + app:summary="@string/set_rewind_prev_desc" + app:title="@string/set_rewind_prev" /> + app:summary="@string/set_loop_pause_desc" + app:title="@string/set_loop_pause" /> diff --git a/info/ARCHITECTURE.md b/info/ARCHITECTURE.md index b998c30dc..18913909d 100644 --- a/info/ARCHITECTURE.md +++ b/info/ARCHITECTURE.md @@ -107,7 +107,8 @@ org.oxycblt.auxio # Main UI's and logging utilities │ ├──.accent # Accent UI + Systems │ └──.ui # Settings-Related UIs ├──.songs # Songs UI -└──.ui # Shared user interface utilities +├──.ui # Shared user interface utilities +└──.widget # Widgets ``` #### `.coil`