Utilize parseAsHtml KTX extension
This commit is contained in:
parent
4d873e59f0
commit
6200a7f291
11 changed files with 36 additions and 80 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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(
|
getString(R.string.do_you_want_to_remove_from_the_blacklist),
|
||||||
R.string.do_you_want_to_remove_from_the_blacklist
|
|
||||||
),
|
|
||||||
paths[which]
|
paths[which]
|
||||||
),
|
).parseAsHtml()
|
||||||
HtmlCompat.FROM_HTML_MODE_LEGACY
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
.setPositiveButton(R.string.remove_action) { _, _ ->
|
.setPositiveButton(R.string.remove_action) { _, _ ->
|
||||||
BlacklistStore.getInstance(App.getContext())
|
BlacklistStore.getInstance(App.getContext())
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue