Utilize parseAsHtml KTX extension

This commit is contained in:
TacoTheDank 2022-04-07 16:50:43 -04:00
parent 4d873e59f0
commit 6200a7f291
11 changed files with 36 additions and 80 deletions

View file

@ -23,7 +23,7 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.core.view.isVisible import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.appthemehelper.util.VersionUtils
@ -77,10 +77,8 @@ class PermissionActivity : AbsMusicServiceActivity() {
private fun setupTitle() { private fun setupTitle() {
val color = ThemeStore.accentColor(this) val color = ThemeStore.accentColor(this)
val hexColor = String.format("#%06X", 0xFFFFFF and color) val hexColor = String.format("#%06X", 0xFFFFFF and color)
val appName = HtmlCompat.fromHtml( val appName = "Hello there! <br>Welcome to <b>Retro <span style='color:$hexColor';>Music</span></b>"
"Hello there! <br>Welcome to <b>Retro <span style='color:$hexColor';>Music</span></b>", .parseAsHtml()
HtmlCompat.FROM_HTML_MODE_COMPACT
)
binding.appNameText.text = appName binding.appNameText.text = appName
} }

View file

@ -17,7 +17,7 @@ package code.name.monkey.retromusic.dialogs
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_PLAYLIST import code.name.monkey.retromusic.EXTRA_PLAYLIST
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
@ -55,16 +55,10 @@ class DeletePlaylistDialog : DialogFragment() {
//noinspection ConstantConditions //noinspection ConstantConditions
if (playlists.size > 1) { if (playlists.size > 1) {
title = R.string.delete_playlists_title title = R.string.delete_playlists_title
message = HtmlCompat.fromHtml( message = String.format(getString(R.string.delete_x_playlists), playlists.size).parseAsHtml()
String.format(getString(R.string.delete_x_playlists), playlists.size),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
} else { } else {
title = R.string.delete_playlist_title title = R.string.delete_playlist_title
message = HtmlCompat.fromHtml( message = String.format(getString(R.string.delete_playlist_x), playlists[0].playlistName).parseAsHtml()
String.format(getString(R.string.delete_playlist_x), playlists[0].playlistName),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
} }
return materialDialog(title) return materialDialog(title)

View file

@ -22,7 +22,7 @@ import android.provider.MediaStore
import androidx.activity.result.IntentSenderRequest import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.EXTRA_SONG import code.name.monkey.retromusic.EXTRA_SONG
@ -87,18 +87,12 @@ class DeleteSongsDialog : DialogFragment() {
val pair = if (songs.size > 1) { val pair = if (songs.size > 1) {
Pair( Pair(
R.string.delete_songs_title, R.string.delete_songs_title,
HtmlCompat.fromHtml( String.format(getString(R.string.delete_x_songs), songs.size).parseAsHtml()
String.format(getString(R.string.delete_x_songs), songs.size),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
) )
} else { } else {
Pair( Pair(
R.string.delete_song_title, R.string.delete_song_title,
HtmlCompat.fromHtml( String.format(getString(R.string.delete_song_x), songs[0].title).parseAsHtml()
String.format(getString(R.string.delete_song_x), songs[0].title),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
) )
} }

View file

@ -17,7 +17,7 @@ package code.name.monkey.retromusic.dialogs
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
@ -52,21 +52,16 @@ class RemoveSongFromPlaylistDialog : DialogFragment() {
val pair = if (songs.size > 1) { val pair = if (songs.size > 1) {
Pair( Pair(
R.string.remove_songs_from_playlist_title, R.string.remove_songs_from_playlist_title,
HtmlCompat.fromHtml( String.format(getString(R.string.remove_x_songs_from_playlist), songs.size)
String.format(getString(R.string.remove_x_songs_from_playlist), songs.size), .parseAsHtml()
HtmlCompat.FROM_HTML_MODE_LEGACY
)
) )
} else { } else {
Pair( Pair(
R.string.remove_song_from_playlist_title, R.string.remove_song_from_playlist_title,
HtmlCompat.fromHtml( String.format(
String.format( getString(R.string.remove_song_x_from_playlist),
getString(R.string.remove_song_x_from_playlist), songs[0].title
songs[0].title ).parseAsHtml()
),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
) )
} }
return materialDialog(pair.first) return materialDialog(pair.first)

View file

@ -23,7 +23,7 @@ import android.view.LayoutInflater
import android.widget.TextView import android.widget.TextView
import androidx.annotation.NonNull import androidx.annotation.NonNull
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
@ -167,10 +167,8 @@ class SongDetailDialog : DialogFragment() {
} }
private fun makeTextWithTitle(context: Context, titleResId: Int, text: String?): Spanned { private fun makeTextWithTitle(context: Context, titleResId: Int, text: String?): Spanned {
return HtmlCompat.fromHtml( return ("<b>" + context.resources.getString(titleResId) + ": " + "</b>" + text)
"<b>" + context.resources.getString(titleResId) + ": " + "</b>" + text, .parseAsHtml()
HtmlCompat.FROM_HTML_MODE_LEGACY
)
} }
private fun getFileSizeString(sizeInBytes: Long): String { private fun getFileSizeString(sizeInBytes: Long): String {

View file

@ -22,7 +22,7 @@ import android.view.*
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
@ -283,10 +283,8 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
binding.fragmentAlbumContent.aboutAlbumTitle.show() binding.fragmentAlbumContent.aboutAlbumTitle.show()
binding.fragmentAlbumContent.aboutAlbumTitle.text = binding.fragmentAlbumContent.aboutAlbumTitle.text =
String.format(getString(R.string.about_album_label), lastFmAlbum.album.name) String.format(getString(R.string.about_album_label), lastFmAlbum.album.name)
binding.fragmentAlbumContent.aboutAlbumText.text = HtmlCompat.fromHtml( binding.fragmentAlbumContent.aboutAlbumText.text =
lastFmAlbum.album.wiki.content, lastFmAlbum.album.wiki.content.parseAsHtml()
HtmlCompat.FROM_HTML_MODE_LEGACY
)
} }
if (lastFmAlbum.album.listeners.isNotEmpty()) { if (lastFmAlbum.album.listeners.isNotEmpty()) {
binding.fragmentAlbumContent.listeners.show() binding.fragmentAlbumContent.listeners.show()

View file

@ -12,7 +12,7 @@ import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -198,7 +198,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
binding.fragmentArtistContent.run { binding.fragmentArtistContent.run {
biographyText.isVisible = true biographyText.isVisible = true
biographyTitle.isVisible = true biographyTitle.isVisible = true
biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY) biography = bioContent.parseAsHtml()
biographyText.text = biography biographyText.text = biography
if (lastFmArtist.artist.stats.listeners.isNotEmpty()) { if (lastFmArtist.artist.stats.listeners.isNotEmpty()) {
listeners.show() listeners.show()

View file

@ -22,7 +22,7 @@ import android.view.MenuItem.SHOW_AS_ACTION_IF_ROOM
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.core.view.doOnLayout import androidx.core.view.doOnLayout
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -171,10 +171,7 @@ class HomeFragment :
findNavController().navigate(R.id.action_search, null, navOptions) findNavController().navigate(R.id.action_search, null, navOptions)
} }
val hexColor = String.format("#%06X", 0xFFFFFF and accentColor()) val hexColor = String.format("#%06X", 0xFFFFFF and accentColor())
val appName = HtmlCompat.fromHtml( val appName = "Retro <span style='color:$hexColor';>Music</span>".parseAsHtml()
"Retro <span style='color:$hexColor';>Music</span>",
HtmlCompat.FROM_HTML_MODE_COMPACT
)
binding.appNameText.text = appName binding.appNameText.text = appName
} }

View file

@ -19,7 +19,7 @@ import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.NavigationUI
@ -66,10 +66,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
private fun setupTitle() { private fun setupTitle() {
val color = ThemeStore.accentColor(requireContext()) val color = ThemeStore.accentColor(requireContext())
val hexColor = String.format("#%06X", 0xFFFFFF and color) val hexColor = String.format("#%06X", 0xFFFFFF and color)
val appName = HtmlCompat.fromHtml( val appName = "Retro <span style='color:$hexColor';>Music</span>".parseAsHtml()
"Retro <span style='color:$hexColor';>Music</span>",
HtmlCompat.FROM_HTML_MODE_COMPACT
)
binding.appNameText.text = appName binding.appNameText.text = appName
} }

View file

@ -21,7 +21,7 @@ import android.util.AttributeSet
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.core.graphics.BlendModeCompat.SRC_IN
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference
import code.name.monkey.retromusic.App import code.name.monkey.retromusic.App
@ -84,15 +84,10 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog
.setItems(paths.toTypedArray()) { _, which -> .setItems(paths.toTypedArray()) { _, which ->
materialDialog(R.string.remove_from_blacklist) materialDialog(R.string.remove_from_blacklist)
.setMessage( .setMessage(
HtmlCompat.fromHtml( String.format(
String.format( getString(R.string.do_you_want_to_remove_from_the_blacklist),
getString( paths[which]
R.string.do_you_want_to_remove_from_the_blacklist ).parseAsHtml()
),
paths[which]
),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
) )
.setPositiveButton(R.string.remove_action) { _, _ -> .setPositiveButton(R.string.remove_action) { _, _ ->
BlacklistStore.getInstance(App.getContext()) BlacklistStore.getInstance(App.getContext())

View file

@ -26,7 +26,7 @@ import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.text.HtmlCompat import androidx.core.text.parseAsHtml
import androidx.media.app.NotificationCompat.MediaStyle import androidx.media.app.NotificationCompat.MediaStyle
import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
@ -120,19 +120,9 @@ class PlayingNotificationImpl24(
} }
override fun updateMetadata(song: Song, onUpdate: () -> Unit) { override fun updateMetadata(song: Song, onUpdate: () -> Unit) {
setContentTitle( setContentTitle(("<b>" + song.title + "</b>").parseAsHtml())
HtmlCompat.fromHtml(
"<b>" + song.title + "</b>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
)
setContentText(song.artistName) setContentText(song.artistName)
setSubText( setSubText(("<b>" + song.albumName + "</b>").parseAsHtml())
HtmlCompat.fromHtml(
"<b>" + song.albumName + "</b>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
)
val bigNotificationImageSize = context.resources val bigNotificationImageSize = context.resources
.getDimensionPixelSize(R.dimen.notification_big_image_size) .getDimensionPixelSize(R.dimen.notification_big_image_size)
GlideApp.with(context).asBitmapPalette().songCoverOptions(song) GlideApp.with(context).asBitmapPalette().songCoverOptions(song)