diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
index a0bad95dd..57a0d2657 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt
@@ -18,12 +18,12 @@ import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.ColorStateList
-import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import androidx.annotation.RequiresApi
-import androidx.core.text.HtmlCompat
+import androidx.core.net.toUri
+import androidx.core.text.parseAsHtml
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.VersionUtils
@@ -54,7 +54,7 @@ class PermissionActivity : AbsMusicServiceActivity() {
binding.audioPermission.setButtonClick {
if (RingtoneManager.requiresDialog(this@PermissionActivity)) {
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
- intent.data = Uri.parse("package:" + applicationContext.packageName)
+ intent.data = ("package:" + applicationContext.packageName).toUri()
startActivity(intent)
}
}
@@ -77,10 +77,8 @@ class PermissionActivity : AbsMusicServiceActivity() {
private fun setupTitle() {
val color = ThemeStore.accentColor(this)
val hexColor = String.format("#%06X", 0xFFFFFF and color)
- val appName = HtmlCompat.fromHtml(
- "Hello there!
Welcome to Retro Music",
- HtmlCompat.FROM_HTML_MODE_COMPACT
- )
+ val appName = "Hello there!
Welcome to Retro Music"
+ .parseAsHtml()
binding.appNameText.text = appName
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt
index 7632d68e1..23b9bfb77 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt
@@ -18,10 +18,10 @@ import android.content.res.ColorStateList
import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
-import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore.Images.Media
import android.view.MenuItem
+import androidx.core.net.toUri
import androidx.core.view.drawToBitmap
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil
@@ -87,10 +87,9 @@ class ShareInstagramStory : AbsBaseActivity() {
binding.mainContent.drawToBitmap(Bitmap.Config.ARGB_8888),
"Design", null
)
- val uri = Uri.parse(path)
Share.shareStoryToSocial(
this@ShareInstagramStory,
- uri
+ path.toUri()
)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
index 598510f2c..fe169e332 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
@@ -25,10 +25,7 @@ import android.view.ViewTreeObserver
import android.view.animation.PathInterpolator
import android.widget.FrameLayout
import androidx.core.animation.doOnEnd
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
-import androidx.core.view.isGone
-import androidx.core.view.isVisible
+import androidx.core.view.*
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import code.name.monkey.appthemehelper.util.VersionUtils
@@ -238,9 +235,9 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
override fun onGlobalLayout() {
binding.slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this)
if (nowPlayingScreen != Peek) {
- val params = binding.slidingPanel.layoutParams as ViewGroup.LayoutParams
- params.height = ViewGroup.LayoutParams.MATCH_PARENT
- binding.slidingPanel.layoutParams = params
+ binding.slidingPanel.updateLayoutParams {
+ height = ViewGroup.LayoutParams.MATCH_PARENT
+ }
}
when (panelState) {
STATE_EXPANDED -> onPanelExpanded()
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
index 0106c892e..4bf23f402 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
@@ -17,15 +17,14 @@ package code.name.monkey.retromusic.activities.bugreport
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Intent
-import android.net.Uri
import android.os.Bundle
-import android.text.TextUtils
import android.view.MenuItem
import android.view.inputmethod.EditorInfo
import android.widget.Toast
import androidx.annotation.StringDef
import androidx.annotation.StringRes
import androidx.core.content.getSystemService
+import androidx.core.net.toUri
import androidx.lifecycle.lifecycleScope
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.MaterialUtil
@@ -81,7 +80,7 @@ open class BugReportActivity : AbsThemeActivity() {
initViews()
- if (TextUtils.isEmpty(title)) setTitle(R.string.report_an_issue)
+ if (title.isNullOrEmpty()) setTitle(R.string.report_an_issue)
deviceInfo = DeviceInfo(this)
binding.cardDeviceInfo.airTextDeviceInfo.text = deviceInfo.toString()
@@ -154,7 +153,7 @@ open class BugReportActivity : AbsThemeActivity() {
copyDeviceInfoToClipBoard()
val i = Intent(Intent.ACTION_VIEW)
- i.data = Uri.parse(ISSUE_TRACKER_LINK)
+ i.data = ISSUE_TRACKER_LINK.toUri()
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(i)
}
@@ -175,14 +174,14 @@ open class BugReportActivity : AbsThemeActivity() {
var hasErrors = false
if (binding.cardReport.optionUseAccount.isChecked) {
- if (TextUtils.isEmpty(binding.cardReport.inputUsername.text)) {
+ if (binding.cardReport.inputUsername.text.isNullOrEmpty()) {
setError(binding.cardReport.inputLayoutUsername, R.string.bug_report_no_username)
hasErrors = true
} else {
removeError(binding.cardReport.inputLayoutUsername)
}
- if (TextUtils.isEmpty(binding.cardReport.inputPassword.text)) {
+ if (binding.cardReport.inputPassword.text.isNullOrEmpty()) {
setError(binding.cardReport.inputLayoutPassword, R.string.bug_report_no_password)
hasErrors = true
} else {
@@ -190,14 +189,14 @@ open class BugReportActivity : AbsThemeActivity() {
}
}
- if (TextUtils.isEmpty(binding.cardReport.inputTitle.text)) {
+ if (binding.cardReport.inputTitle.text.isNullOrEmpty()) {
setError(binding.cardReport.inputLayoutTitle, R.string.bug_report_no_title)
hasErrors = true
} else {
removeError(binding.cardReport.inputLayoutTitle)
}
- if (TextUtils.isEmpty(binding.cardReport.inputDescription.text)) {
+ if (binding.cardReport.inputDescription.text.isNullOrEmpty()) {
setError(binding.cardReport.inputLayoutDescription, R.string.bug_report_no_description)
hasErrors = true
} else {
@@ -225,7 +224,7 @@ open class BugReportActivity : AbsThemeActivity() {
onSaveExtraInfo()
val report = Report(bugTitle, bugDescription, deviceInfo, extraInfo)
- val target = GithubTarget("prathameshmm02", "RetroMusicPlayer")
+ val target = GithubTarget("RetroMusicPlayer", "RetroMusicPlayer")
reportIssue(report, target, login)
}
@@ -315,6 +314,6 @@ open class BugReportActivity : AbsThemeActivity() {
private const val STATUS_BAD_CREDENTIALS = 401
private const val STATUS_ISSUES_NOT_ENABLED = 410
- private const val ISSUE_TRACKER_LINK = "https://github.com/prathameshmm02/RetroMusicPlayer"
+ private const val ISSUE_TRACKER_LINK = "https://github.com/RetroMusicPlayer/RetroMusicPlayer"
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
index d301e6aff..40e03b8a3 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
@@ -22,12 +22,11 @@ import android.graphics.Color
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle
-import android.text.Editable
-import android.text.TextWatcher
import android.transition.Slide
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.Toast
+import androidx.core.widget.doAfterTextChanged
import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ActivityAlbumTagEditorBinding
@@ -50,7 +49,7 @@ import com.google.android.material.shape.MaterialShapeDrawable
import org.jaudiotagger.tag.FieldKey
import java.util.*
-class AlbumTagEditorActivity : AbsTagEditorActivity(), TextWatcher {
+class AlbumTagEditorActivity : AbsTagEditorActivity() {
override val bindingInflater: (LayoutInflater) -> ActivityAlbumTagEditorBinding =
ActivityAlbumTagEditorBinding::inflate
@@ -91,10 +90,10 @@ class AlbumTagEditorActivity : AbsTagEditorActivity(), TextWatcher {
+class SongTagEditorActivity : AbsTagEditorActivity() {
override val bindingInflater: (LayoutInflater) -> ActivitySongTagEditorBinding =
ActivitySongTagEditorBinding::inflate
@@ -83,16 +82,16 @@ class SongTagEditorActivity : AbsTagEditorActivity
binding.discNumberContainer.setTint(false)
binding.lyricsContainer.setTint(false)
- binding.songText.appHandleColor().addTextChangedListener(this)
- binding.albumText.appHandleColor().addTextChangedListener(this)
- binding.albumArtistText.appHandleColor().addTextChangedListener(this)
- binding.artistText.appHandleColor().addTextChangedListener(this)
- binding.genreText.appHandleColor().addTextChangedListener(this)
- binding.yearText.appHandleColor().addTextChangedListener(this)
- binding.trackNumberText.appHandleColor().addTextChangedListener(this)
- binding.discNumberText.appHandleColor().addTextChangedListener(this)
- binding.lyricsText.appHandleColor().addTextChangedListener(this)
- binding.songComposerText.appHandleColor().addTextChangedListener(this)
+ binding.songText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.albumText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.albumArtistText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.artistText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.genreText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.yearText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.trackNumberText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.discNumberText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.lyricsText.appHandleColor().doAfterTextChanged { dataChanged() }
+ binding.songComposerText.appHandleColor().doAfterTextChanged { dataChanged() }
}
private fun fillViewsWithFileTags() {
@@ -205,16 +204,6 @@ class SongTagEditorActivity : AbsTagEditorActivity
})
}
- override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
- }
-
- override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- }
-
- override fun afterTextChanged(s: Editable) {
- dataChanged()
- }
-
companion object {
val TAG: String = SongTagEditorActivity::class.java.simpleName
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
index 8798ed5ee..a568ad12d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
@@ -19,6 +19,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
+import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope
@@ -205,9 +206,7 @@ class AlbumCoverPagerAdapter(
fun newInstance(song: Song): AlbumCoverFragment {
val frag = AlbumCoverFragment()
- val args = Bundle()
- args.putParcelable(SONG_ARG, song)
- frag.arguments = args
+ frag.arguments = bundleOf(SONG_ARG to song)
return frag
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt
index a51663507..d039691ee 100755
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt
@@ -15,12 +15,12 @@
package code.name.monkey.retromusic.adapter.playlist
import android.graphics.Color
-import android.text.TextUtils
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.PopupMenu
+import androidx.core.view.isGone
import androidx.core.view.setPadding
import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R
@@ -30,8 +30,6 @@ import code.name.monkey.retromusic.db.PlaylistEntity
import code.name.monkey.retromusic.db.PlaylistWithSongs
import code.name.monkey.retromusic.db.toSongs
import code.name.monkey.retromusic.extensions.dipToPix
-import code.name.monkey.retromusic.extensions.hide
-import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.playlistPreview.PlaylistPreview
import code.name.monkey.retromusic.helper.SortOrder.PlaylistSortOrder
@@ -79,7 +77,7 @@ class PlaylistAdapter(
}
private fun getPlaylistTitle(playlist: PlaylistEntity): String {
- return if (TextUtils.isEmpty(playlist.playlistName)) "-" else playlist.playlistName
+ return playlist.playlistName.ifEmpty { "-" }
}
private fun getPlaylistText(playlist: PlaylistWithSongs): String {
@@ -102,12 +100,7 @@ class PlaylistAdapter(
holder.itemView.isActivated = isChecked(playlist)
holder.title?.text = getPlaylistTitle(playlist.playlistEntity)
holder.text?.text = getPlaylistText(playlist)
- val isChecked = isChecked(playlist)
- if (isChecked) {
- holder.menu?.hide()
- } else {
- holder.menu?.show()
- }
+ holder.menu?.isGone = isChecked(playlist)
GlideApp.with(activity)
.load(
if (itemLayoutRes == R.layout.item_list) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
index ce1d28284..b76ce5d25 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
@@ -21,6 +21,7 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.os.bundleOf
+import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity
import androidx.navigation.findNavController
@@ -28,8 +29,6 @@ import code.name.monkey.retromusic.EXTRA_ALBUM_ID
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
-import code.name.monkey.retromusic.extensions.hide
-import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
@@ -96,11 +95,7 @@ open class SongAdapter(
val song = dataSet[position]
val isChecked = isChecked(song)
holder.itemView.isActivated = isChecked
- if (isChecked) {
- holder.menu?.hide()
- } else {
- holder.menu?.show()
- }
+ holder.menu?.isGone = isChecked
holder.title?.text = getSongTitle(song)
holder.text?.text = getSongText(song)
holder.text2?.text = getSongText(song)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt
index 3186d609c..78d8d90a2 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt
@@ -16,13 +16,14 @@ package code.name.monkey.retromusic.appshortcuts
import android.content.Context
import android.graphics.Bitmap
-import android.graphics.Canvas
import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon
import android.graphics.drawable.LayerDrawable
import android.os.Build
import android.util.TypedValue
import androidx.annotation.RequiresApi
+import androidx.core.graphics.applyCanvas
+import androidx.core.graphics.createBitmap
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil
@@ -79,12 +80,9 @@ object AppShortcutIconGenerator {
}
private fun drawableToBitmap(drawable: Drawable): Bitmap {
- val bitmap = Bitmap.createBitmap(
- drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888
- )
- val canvas = Canvas(bitmap)
- drawable.setBounds(0, 0, canvas.width, canvas.height)
- drawable.draw(canvas)
- return bitmap
+ return createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight).applyCanvas {
+ drawable.setBounds(0, 0, width, height)
+ drawable.draw(this)
+ }
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt
index b163c1c8d..502ff0e71 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt
@@ -17,6 +17,7 @@ package code.name.monkey.retromusic.appshortcuts
import android.app.Activity
import android.content.Intent
import android.os.Bundle
+import androidx.core.os.bundleOf
import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType
import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType
import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType
@@ -63,9 +64,10 @@ class AppShortcutLauncherActivity : Activity() {
val intent = Intent(this, MusicService::class.java)
intent.action = ACTION_PLAY_PLAYLIST
- val bundle = Bundle()
- bundle.putParcelable(INTENT_EXTRA_PLAYLIST, playlist)
- bundle.putInt(INTENT_EXTRA_SHUFFLE_MODE, shuffleMode)
+ val bundle = bundleOf(
+ INTENT_EXTRA_PLAYLIST to playlist,
+ INTENT_EXTRA_SHUFFLE_MODE to shuffleMode
+ )
intent.putExtras(bundle)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt
index 91fc8f410..94f876bba 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt
@@ -19,7 +19,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.os.Build
-import android.os.Bundle
+import androidx.core.os.bundleOf
import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity
@TargetApi(Build.VERSION_CODES.N_MR1)
@@ -36,8 +36,7 @@ abstract class BaseShortcutType(internal var context: Context) {
internal fun getPlaySongsIntent(shortcutType: Long): Intent {
val intent = Intent(context, AppShortcutLauncherActivity::class.java)
intent.action = Intent.ACTION_VIEW
- val b = Bundle()
- b.putLong(AppShortcutLauncherActivity.KEY_SHORTCUT_TYPE, shortcutType)
+ val b = bundleOf(AppShortcutLauncherActivity.KEY_SHORTCUT_TYPE to shortcutType)
intent.putExtras(b)
return intent
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt
index 2e9112ad5..ac2f6359f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt
@@ -20,7 +20,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import code.name.monkey.appthemehelper.util.MaterialValueHelper
@@ -102,7 +101,7 @@ class AppWidgetBig : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(
R.id.media_titles,
View.INVISIBLE
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt
index 092db34ed..ee3e1c990 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt
@@ -20,7 +20,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import code.name.monkey.appthemehelper.util.MaterialValueHelper
@@ -98,7 +97,7 @@ class AppWidgetCard : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
} else {
appWidgetView.setViewVisibility(R.id.media_titles, View.VISIBLE)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt
index 535d6f54b..87cacc283 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt
@@ -21,7 +21,6 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import code.name.monkey.appthemehelper.util.MaterialValueHelper
@@ -101,7 +100,7 @@ class AppWidgetClassic : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
} else {
appWidgetView.setViewVisibility(R.id.media_titles, View.VISIBLE)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetMD3.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetMD3.kt
index 124bdff5c..0ce4ebf28 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetMD3.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetMD3.kt
@@ -20,7 +20,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import code.name.monkey.appthemehelper.util.MaterialValueHelper
@@ -99,7 +98,7 @@ class AppWidgetMD3 : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
} else {
appWidgetView.setViewVisibility(R.id.media_titles, View.VISIBLE)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt
index 6c497514f..3a92daa1e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt
@@ -20,7 +20,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import code.name.monkey.appthemehelper.util.MaterialValueHelper
@@ -99,10 +98,10 @@ class AppWidgetSmall : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
} else {
- if (TextUtils.isEmpty(song.title) || TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() || song.artistName.isEmpty()) {
appWidgetView.setTextViewText(R.id.text_separator, "")
} else {
appWidgetView.setTextViewText(R.id.text_separator, "•")
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
index 9b7d46928..76bbc77c5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
@@ -18,7 +18,6 @@ import android.app.PendingIntent
import android.content.ComponentName
import android.content.Context
import android.content.Intent
-import android.text.TextUtils
import android.view.View
import android.widget.RemoteViews
import androidx.core.content.ContextCompat
@@ -119,7 +118,7 @@ class AppWidgetText : BaseAppWidget() {
val song = service.currentSong
// Set the titles and artwork
- if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
+ if (song.title.isEmpty() && song.artistName.isEmpty()) {
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
} else {
appWidgetView.setViewVisibility(R.id.media_titles, View.VISIBLE)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
index d74fae63f..a95c35a7e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
@@ -24,9 +24,10 @@ import android.content.res.Resources
import android.graphics.*
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
-import android.text.TextUtils
import android.widget.RemoteViews
import androidx.core.content.ContextCompat
+import androidx.core.graphics.applyCanvas
+import androidx.core.graphics.createBitmap
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R
@@ -126,7 +127,7 @@ abstract class BaseAppWidget : AppWidgetProvider() {
protected fun getSongArtistAndAlbum(song: Song): String {
val builder = StringBuilder()
builder.append(song.artistName)
- if (!TextUtils.isEmpty(song.artistName) && !TextUtils.isEmpty(song.albumName)) {
+ if (song.artistName.isNotEmpty() && song.albumName.isNotEmpty()) {
builder.append(" • ")
}
builder.append(song.albumName)
@@ -171,15 +172,13 @@ abstract class BaseAppWidget : AppWidgetProvider() {
}
fun createBitmap(drawable: Drawable, sizeMultiplier: Float): Bitmap {
- val bitmap = Bitmap.createBitmap(
+ return createBitmap(
(drawable.intrinsicWidth * sizeMultiplier).toInt(),
(drawable.intrinsicHeight * sizeMultiplier).toInt(),
- Bitmap.Config.ARGB_8888
- )
- val c = Canvas(bitmap)
- drawable.setBounds(0, 0, c.width, c.height)
- drawable.draw(c)
- return bitmap
+ ).applyCanvas {
+ drawable.setBounds(0, 0, this.width, this.height)
+ drawable.draw(this)
+ }
}
protected fun composeRoundedRectPath(
diff --git a/app/src/main/java/code/name/monkey/retromusic/auto/MediaItemBuilder.kt b/app/src/main/java/code/name/monkey/retromusic/auto/MediaItemBuilder.kt
index 44f945819..b94a60274 100644
--- a/app/src/main/java/code/name/monkey/retromusic/auto/MediaItemBuilder.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/auto/MediaItemBuilder.kt
@@ -2,9 +2,9 @@ package code.name.monkey.retromusic.auto
import android.content.Context
import android.net.Uri
-import android.os.Bundle
import android.support.v4.media.MediaBrowserCompat
import android.support.v4.media.MediaDescriptionCompat
+import androidx.core.os.bundleOf
import code.name.monkey.retromusic.util.ImageUtil
@@ -55,15 +55,14 @@ internal object AutoMediaItem {
fun gridLayout(isGrid: Boolean): Builder {
- val hints = Bundle()
- hints.putBoolean(CONTENT_STYLE_SUPPORTED, true)
- hints.putInt(
- CONTENT_STYLE_BROWSABLE_HINT,
- if (isGrid) CONTENT_STYLE_GRID_ITEM_HINT_VALUE else CONTENT_STYLE_LIST_ITEM_HINT_VALUE
- )
- hints.putInt(
- CONTENT_STYLE_PLAYABLE_HINT,
- if (isGrid) CONTENT_STYLE_GRID_ITEM_HINT_VALUE else CONTENT_STYLE_LIST_ITEM_HINT_VALUE
+ val hints = bundleOf(
+ CONTENT_STYLE_SUPPORTED to true,
+ CONTENT_STYLE_BROWSABLE_HINT to
+ if (isGrid) CONTENT_STYLE_GRID_ITEM_HINT_VALUE
+ else CONTENT_STYLE_LIST_ITEM_HINT_VALUE,
+ CONTENT_STYLE_PLAYABLE_HINT to
+ if (isGrid) CONTENT_STYLE_GRID_ITEM_HINT_VALUE
+ else CONTENT_STYLE_LIST_ITEM_HINT_VALUE
)
mBuilder?.setExtras(hints)
return this
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeletePlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeletePlaylistDialog.kt
index bfd321ccc..be133cbe5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeletePlaylistDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeletePlaylistDialog.kt
@@ -17,7 +17,7 @@ package code.name.monkey.retromusic.dialogs
import android.app.Dialog
import android.os.Bundle
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_PLAYLIST
import code.name.monkey.retromusic.R
@@ -55,16 +55,10 @@ class DeletePlaylistDialog : DialogFragment() {
//noinspection ConstantConditions
if (playlists.size > 1) {
title = R.string.delete_playlists_title
- message = HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_x_playlists), playlists.size),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ message = String.format(getString(R.string.delete_x_playlists), playlists.size).parseAsHtml()
} else {
title = R.string.delete_playlist_title
- message = HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_playlist_x), playlists[0].playlistName),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ message = String.format(getString(R.string.delete_playlist_x), playlists[0].playlistName).parseAsHtml()
}
return materialDialog(title)
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
index 57621e9b6..04b890259 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt
@@ -22,7 +22,7 @@ import android.provider.MediaStore
import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.EXTRA_SONG
@@ -87,18 +87,12 @@ class DeleteSongsDialog : DialogFragment() {
val pair = if (songs.size > 1) {
Pair(
R.string.delete_songs_title,
- HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_x_songs), songs.size),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ String.format(getString(R.string.delete_x_songs), songs.size).parseAsHtml()
)
} else {
Pair(
R.string.delete_song_title,
- HtmlCompat.fromHtml(
- String.format(getString(R.string.delete_song_x), songs[0].title),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ String.format(getString(R.string.delete_song_x), songs[0].title).parseAsHtml()
)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveSongFromPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveSongFromPlaylistDialog.kt
index a480c7a33..a51479248 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveSongFromPlaylistDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveSongFromPlaylistDialog.kt
@@ -17,7 +17,7 @@ package code.name.monkey.retromusic.dialogs
import android.app.Dialog
import android.os.Bundle
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R
@@ -52,21 +52,16 @@ class RemoveSongFromPlaylistDialog : DialogFragment() {
val pair = if (songs.size > 1) {
Pair(
R.string.remove_songs_from_playlist_title,
- HtmlCompat.fromHtml(
- String.format(getString(R.string.remove_x_songs_from_playlist), songs.size),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ String.format(getString(R.string.remove_x_songs_from_playlist), songs.size)
+ .parseAsHtml()
)
} else {
Pair(
R.string.remove_song_from_playlist_title,
- HtmlCompat.fromHtml(
- String.format(
- getString(R.string.remove_song_x_from_playlist),
- songs[0].title
- ),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ String.format(
+ getString(R.string.remove_song_x_from_playlist),
+ songs[0].title
+ ).parseAsHtml()
)
}
return materialDialog(pair.first)
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt
index 85d3569bf..339996d5b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt
@@ -23,7 +23,7 @@ import android.view.LayoutInflater
import android.widget.TextView
import androidx.annotation.NonNull
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R
@@ -167,10 +167,8 @@ class SongDetailDialog : DialogFragment() {
}
private fun makeTextWithTitle(context: Context, titleResId: Int, text: String?): Spanned {
- return HtmlCompat.fromHtml(
- "" + context.resources.getString(titleResId) + ": " + "" + text,
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ return ("" + context.resources.getString(titleResId) + ": " + "" + text)
+ .parseAsHtml()
}
private fun getFileSizeString(sizeInBytes: Long): String {
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentMusicExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentMusicExtensions.kt
index 2541b8802..ac35af672 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentMusicExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentMusicExtensions.kt
@@ -1,7 +1,7 @@
package code.name.monkey.retromusic.extensions
-import android.net.Uri
import android.webkit.MimeTypeMap
+import androidx.core.net.toUri
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.util.RetroUtil
import org.jaudiotagger.audio.AudioFileIO
@@ -14,7 +14,7 @@ fun getSongInfo(song: Song): String {
return try {
val audioHeader = AudioFileIO.read(File(song.data)).audioHeader
val string: StringBuilder = StringBuilder()
- val uriFile = Uri.fromFile(file)
+ val uriFile = file.toUri()
string.append(getMimeType(uriFile.toString())).append(" • ")
string.append(audioHeader.bitRate).append(" kb/s").append(" • ")
string.append(RetroUtil.frequencyCount(audioHeader.sampleRate.toInt()))
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
index d4e759619..f4d94ea06 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
@@ -67,11 +67,7 @@ fun View.translateYAnimate(value: Float): Animator {
bringToFront()
}
doOnEnd {
- if (value != 0f) {
- hide()
- } else {
- show()
- }
+ isGone = (value != 0f)
}
start()
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt
index 08c064fed..116dba855 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt
@@ -16,10 +16,10 @@ package code.name.monkey.retromusic.fragments.about
import android.content.Intent
import android.content.pm.PackageManager
-import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.core.app.ShareCompat
+import androidx.core.net.toUri
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.DefaultItemAnimator
@@ -55,7 +55,7 @@ class AboutFragment : Fragment(R.layout.fragment_about), View.OnClickListener {
private fun openUrl(url: String) {
val i = Intent(Intent.ACTION_VIEW)
- i.data = Uri.parse(url)
+ i.data = url.toUri()
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(i)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
index 7b0e83480..72b54775c 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt
@@ -22,7 +22,7 @@ import android.view.*
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.FragmentNavigatorExtras
@@ -282,10 +282,8 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
binding.fragmentAlbumContent.aboutAlbumTitle.show()
binding.fragmentAlbumContent.aboutAlbumTitle.text =
String.format(getString(R.string.about_album_label), lastFmAlbum.album.name)
- binding.fragmentAlbumContent.aboutAlbumText.text = HtmlCompat.fromHtml(
- lastFmAlbum.album.wiki.content,
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ binding.fragmentAlbumContent.aboutAlbumText.text =
+ lastFmAlbum.album.wiki.content.parseAsHtml()
}
if (lastFmAlbum.album.listeners.isNotEmpty()) {
binding.fragmentAlbumContent.listeners.show()
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
index 30f71c71d..f0d0c7f75 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt
@@ -12,7 +12,7 @@ import android.view.View
import androidx.activity.addCallback
import androidx.appcompat.widget.PopupMenu
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
@@ -194,7 +194,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
binding.fragmentArtistContent.run {
biographyText.isVisible = true
biographyTitle.isVisible = true
- biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY)
+ biography = bioContent.parseAsHtml()
biographyText.text = biography
if (lastFmArtist.artist.stats.listeners.isNotEmpty()) {
listeners.show()
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
index bc48c2af5..5bb7bdbbe 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
@@ -27,6 +27,8 @@ import android.widget.SeekBar
import android.widget.TextView
import androidx.annotation.LayoutRes
import androidx.core.view.isVisible
+import androidx.fragment.app.commit
+import androidx.fragment.app.replace
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener
import code.name.monkey.retromusic.fragments.other.VolumeFragment
@@ -217,8 +219,9 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
private fun hideVolumeIfAvailable() {
if (PreferenceUtil.isVolumeVisibilityMode) {
- childFragmentManager.beginTransaction()
- .replace(R.id.volumeFragmentContainer, VolumeFragment()).commit()
+ childFragmentManager.commit {
+ replace(R.id.volumeFragmentContainer)
+ }
childFragmentManager.executePendingTransactions()
}
volumeFragment =
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
index 944a0ce9d..292784dff 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
@@ -22,7 +22,7 @@ import android.view.MenuItem.SHOW_AS_ACTION_IF_ROOM
import android.view.View
import androidx.activity.addCallback
import androidx.core.os.bundleOf
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.core.view.doOnLayout
import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible
@@ -171,10 +171,7 @@ class HomeFragment :
findNavController().navigate(R.id.action_search, null, navOptions)
}
val hexColor = String.format("#%06X", 0xFFFFFF and accentColor())
- val appName = HtmlCompat.fromHtml(
- "Retro Music",
- HtmlCompat.FROM_HTML_MODE_COMPACT
- )
+ val appName = "Retro Music".parseAsHtml()
binding.appNameText.text = appName
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
index 83a6eb508..5dbd00759 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
@@ -19,7 +19,7 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.NavigationUI
@@ -66,10 +66,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
private fun setupTitle() {
val color = ThemeStore.accentColor(requireContext())
val hexColor = String.format("#%06X", 0xFFFFFF and color)
- val appName = HtmlCompat.fromHtml(
- "Retro Music",
- HtmlCompat.FROM_HTML_MODE_COMPACT
- )
+ val appName = "Retro Music".parseAsHtml()
binding.appNameText.text = appName
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt
index c41c3c1bd..1b07d3377 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/CoverLyricsFragment.kt
@@ -2,7 +2,6 @@ package code.name.monkey.retromusic.fragments.other
import android.content.SharedPreferences
import android.os.Bundle
-import android.text.TextUtils
import android.view.View
import android.widget.FrameLayout
import android.widget.TextView
@@ -92,9 +91,7 @@ class CoverLyricsFragment : AbsMusicServiceFragment(R.layout.fragment_cover_lyri
val lrcFile: File? = LyricUtil.getSyncedLyricsFile(song)
val data: String = LyricUtil.getStringFromLrc(lrcFile)
Lyrics.parse(song,
- if (!TextUtils.isEmpty(data)) {
- data
- } else {
+ data.ifEmpty {
// Get Embedded Lyrics
LyricUtil.getEmbeddedSyncedLyrics(song.data)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
index 05998ea64..8787f1cc8 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
@@ -18,13 +18,14 @@ import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
-import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.view.GestureDetector
import android.view.MotionEvent
import android.view.View
import android.view.animation.DecelerateInterpolator
+import androidx.core.text.toSpannable
+import androidx.core.view.isVisible
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentMiniPlayerBinding
import code.name.monkey.retromusic.extensions.accentColor
@@ -70,10 +71,8 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p
binding.actionNext.show()
binding.actionPrevious.show()
} else {
- binding.actionNext.visibility =
- if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
- binding.actionPrevious.visibility =
- if (PreferenceUtil.isExtraControls) View.VISIBLE else View.GONE
+ binding.actionNext.isVisible = PreferenceUtil.isExtraControls
+ binding.actionPrevious.isVisible = PreferenceUtil.isExtraControls
}
binding.actionNext.setOnClickListener(this)
binding.actionPrevious.setOnClickListener(this)
@@ -94,10 +93,10 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p
val builder = SpannableStringBuilder()
- val title = SpannableString(song.title)
+ val title = song.title.toSpannable()
title.setSpan(ForegroundColorSpan(textColorPrimary()), 0, title.length, 0)
- val text = SpannableString(song.artistName)
+ val text = song.artistName.toSpannable()
text.setSpan(ForegroundColorSpan(textColorSecondary()), 0, text.length, 0)
builder.append(title).append(" • ").append(text)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
index 45377c3dc..d517e1dd1 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
@@ -20,7 +20,6 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
-import android.text.TextUtils
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
@@ -98,10 +97,10 @@ class UserInfoFragment : Fragment() {
binding.next.setOnClickListener {
val nameString = binding.name.text.toString().trim { it <= ' ' }
- if (TextUtils.isEmpty(nameString)) {
+ if (nameString.isEmpty()) {
Toast.makeText(
requireContext(),
- "Umm you're name can't be empty!",
+ "Your name can't be empty!",
Toast.LENGTH_SHORT
).show()
return@setOnClickListener
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
index 59d8127b9..6db36c55c 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
@@ -25,6 +25,7 @@ import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
+import androidx.fragment.app.commit
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.appthemehelper.util.ColorUtil
@@ -168,9 +169,9 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
private fun hideVolumeIfAvailable() {
if (PreferenceUtil.isVolumeVisibilityMode) {
- childFragmentManager.beginTransaction()
- .replace(R.id.volumeFragmentContainer, VolumeFragment.newInstance())
- .commit()
+ childFragmentManager.commit {
+ replace(R.id.volumeFragmentContainer, VolumeFragment.newInstance())
+ }
childFragmentManager.executePendingTransactions()
volumeFragment =
childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment?
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
index 83eda6178..8be7e32de 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
@@ -31,6 +31,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
+import androidx.fragment.app.commit
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -303,9 +304,9 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
private fun hideVolumeIfAvailable() {
if (PreferenceUtil.isVolumeVisibilityMode) {
- childFragmentManager.beginTransaction()
- .replace(R.id.volumeFragmentContainer, VolumeFragment.newInstance())
- .commit()
+ childFragmentManager.commit {
+ replace(R.id.volumeFragmentContainer, VolumeFragment.newInstance())
+ }
childFragmentManager.executePendingTransactions()
volumeFragment =
childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment?
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
index 8ce902b03..5b7c25d76 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt
@@ -20,13 +20,12 @@ import android.content.Intent
import android.content.res.ColorStateList
import android.os.Bundle
import android.speech.RecognizerIntent
-import android.text.Editable
-import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import androidx.core.content.getSystemService
import androidx.core.view.*
+import androidx.core.widget.doAfterTextChanged
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.transition.TransitionManager
@@ -51,7 +50,7 @@ import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEvent
import java.util.*
-class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), TextWatcher,
+class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search),
ChipGroup.OnCheckedStateChangeListener {
companion object {
const val QUERY = "query"
@@ -81,7 +80,10 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), TextWa
searchAdapter.swapDataSet(listOf())
}
binding.searchView.apply {
- addTextChangedListener(this@SearchFragment)
+ doAfterTextChanged {
+ if (!it.isNullOrEmpty())
+ search(it.toString())
+ }
focusAndShowKeyboard()
}
binding.keyboardPopup.apply {
@@ -171,16 +173,6 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), TextWa
}
}
- override fun afterTextChanged(newText: Editable?) {
- if (!newText.isNullOrEmpty()) search(newText.toString())
- }
-
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
- }
-
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- }
-
private fun search(query: String) {
this.query = query
TransitionManager.beginDelayedTransition(binding.appBarLayout)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt
index ac22d66cf..aff3f4779 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt
@@ -19,6 +19,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.view.isGone
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import code.name.monkey.appthemehelper.ThemeStore
@@ -26,8 +27,6 @@ import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentMainSettingsBinding
import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding
-import code.name.monkey.retromusic.extensions.hide
-import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.util.NavigationUtil
class MainSettingsFragment : Fragment(), View.OnClickListener {
@@ -76,7 +75,7 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
binding.backupRestoreSettings.setOnClickListener(this)
binding.buyProContainer.apply {
- if (App.isProVersion()) hide() else show()
+ isGone = App.isProVersion()
setOnClickListener {
NavigationUtil.goToProVersion(requireContext())
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
index b5ec3f5bd..c0c19fa78 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
@@ -16,6 +16,7 @@ package code.name.monkey.retromusic.fragments.settings
import android.annotation.SuppressLint
import android.os.Bundle
+import androidx.core.content.edit
import androidx.preference.Preference
import androidx.preference.TwoStatePreference
import code.name.monkey.appthemehelper.ACCENT_COLORS
@@ -93,10 +94,9 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
val desaturatedColor: ATESwitchPreference? = findPreference(DESATURATED_COLOR)
desaturatedColor?.setOnPreferenceChangeListener { _, value ->
val desaturated = value as Boolean
- ThemeStore.prefs(requireContext())
- .edit()
- .putBoolean("desaturated_color", desaturated)
- .apply()
+ ThemeStore.prefs(requireContext()).edit {
+ putBoolean("desaturated_color", desaturated)
+ }
PreferenceUtil.isDesaturatedColor = desaturated
restartActivity()
true
diff --git a/app/src/main/java/code/name/monkey/retromusic/lyrics/CoverLrcView.kt b/app/src/main/java/code/name/monkey/retromusic/lyrics/CoverLrcView.kt
index 6dbc5e9f6..bd421250a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/lyrics/CoverLrcView.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/lyrics/CoverLrcView.kt
@@ -24,7 +24,6 @@ import android.os.Looper
import android.text.Layout
import android.text.StaticLayout
import android.text.TextPaint
-import android.text.TextUtils
import android.text.format.DateUtils
import android.util.AttributeSet
import android.view.GestureDetector
@@ -34,6 +33,7 @@ import android.view.View
import android.view.animation.LinearInterpolator
import android.widget.Scroller
import androidx.core.content.ContextCompat
+import androidx.core.graphics.withSave
import code.name.monkey.retromusic.R
import java.io.File
import kotlin.math.abs
@@ -208,7 +208,7 @@ class CoverLrcView @JvmOverloads constructor(
)
mDefaultLabel = ta.getString(R.styleable.LrcView_lrcLabel)
mDefaultLabel =
- if (TextUtils.isEmpty(mDefaultLabel)) context.getString(R.string.empty) else mDefaultLabel
+ if (mDefaultLabel.isNullOrEmpty()) context.getString(R.string.empty) else mDefaultLabel
mLrcPadding = ta.getDimension(R.styleable.LrcView_lrcPadding, 0f)
mTimelineColor = ta.getColor(
R.styleable.LrcView_lrcTimelineColor,
@@ -522,10 +522,10 @@ class CoverLrcView @JvmOverloads constructor(
* @param y 歌词中心 Y 坐标
*/
private fun drawText(canvas: Canvas, staticLayout: StaticLayout, y: Float) {
- canvas.save()
- canvas.translate(mLrcPadding, y - (staticLayout.height shr 1))
- staticLayout.draw(canvas)
- canvas.restore()
+ canvas.withSave {
+ translate(mLrcPadding, y - (staticLayout.height shr 1))
+ staticLayout.draw(this)
+ }
}
fun animateCurrentTextSize() {
diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
index e967c25b7..6c47487e5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
@@ -21,7 +21,7 @@ import android.util.AttributeSet
import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference
import code.name.monkey.retromusic.App
@@ -84,15 +84,10 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog
.setItems(paths.toTypedArray()) { _, which ->
materialDialog(R.string.remove_from_blacklist)
.setMessage(
- HtmlCompat.fromHtml(
- String.format(
- getString(
- R.string.do_you_want_to_remove_from_the_blacklist
- ),
- paths[which]
- ),
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
+ String.format(
+ getString(R.string.do_you_want_to_remove_from_the_blacklist),
+ paths[which]
+ ).parseAsHtml()
)
.setPositiveButton(R.string.remove_action) { _, _ ->
BlacklistStore.getInstance(App.getContext())
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt
index 634a27d2b..e9a7ffd00 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt
@@ -7,10 +7,10 @@ import android.media.AudioAttributes
import android.media.AudioManager
import android.media.MediaPlayer
import android.media.audiofx.AudioEffect
-import android.net.Uri
import android.os.PowerManager
import android.util.Log
import android.widget.Toast
+import androidx.core.net.toUri
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.service.AudioFader.Companion.createFadeAnimator
@@ -160,7 +160,7 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion
player.setOnPreparedListener(null)
try {
if (path.startsWith("content://")) {
- player.setDataSource(context, Uri.parse(path))
+ player.setDataSource(context, path.toUri())
} else {
player.setDataSource(path)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
index c5a4092c8..e39ddf6bf 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt
@@ -540,10 +540,9 @@ class MusicService : MediaBrowserServiceCompat(),
}
fun setShuffleMode(shuffleMode: Int) {
- PreferenceManager.getDefaultSharedPreferences(this)
- .edit()
- .putInt(SAVED_SHUFFLE_MODE, shuffleMode)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(this).edit {
+ putInt(SAVED_SHUFFLE_MODE, shuffleMode)
+ }
when (shuffleMode) {
SHUFFLE_MODE_SHUFFLE -> {
this.shuffleMode = shuffleMode
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl24.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl24.kt
index 9b7123f6f..e65443ca6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl24.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl24.kt
@@ -26,7 +26,7 @@ import android.graphics.drawable.Drawable
import android.os.Build
import android.support.v4.media.session.MediaSessionCompat
import androidx.core.app.NotificationCompat
-import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import androidx.media.app.NotificationCompat.MediaStyle
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
@@ -120,19 +120,9 @@ class PlayingNotificationImpl24(
}
override fun updateMetadata(song: Song, onUpdate: () -> Unit) {
- setContentTitle(
- HtmlCompat.fromHtml(
- "" + song.title + "",
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
- )
+ setContentTitle(("" + song.title + "").parseAsHtml())
setContentText(song.artistName)
- setSubText(
- HtmlCompat.fromHtml(
- "" + song.albumName + "",
- HtmlCompat.FROM_HTML_MODE_LEGACY
- )
- )
+ setSubText(("" + song.albumName + "").parseAsHtml())
val bigNotificationImageSize = context.resources
.getDimensionPixelSize(R.dimen.notification_big_image_size)
GlideApp.with(context).asBitmapPalette().songCoverOptions(song)
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt
index 3dd3ea638..4836032a1 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt
@@ -23,6 +23,7 @@ import android.net.Uri
import android.os.AsyncTask
import android.provider.MediaStore
import android.widget.Toast
+import androidx.core.content.edit
import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.model.Artist
import com.bumptech.glide.Glide
@@ -79,7 +80,7 @@ class CustomArtistImageUtil private constructor(context: Context) {
}
if (succesful) {
- mPreferences.edit().putBoolean(getFileName(artist), true).apply()
+ mPreferences.edit { putBoolean(getFileName(artist), true) }
ArtistSignatureUtil.getInstance(App.getContext())
.updateArtistSignature(artist.name)
App.getContext().contentResolver.notifyChange(
@@ -99,7 +100,7 @@ class CustomArtistImageUtil private constructor(context: Context) {
object : AsyncTask() {
@SuppressLint("ApplySharedPref")
override fun doInBackground(vararg params: Void): Void? {
- mPreferences.edit().putBoolean(getFileName(artist), false).commit()
+ mPreferences.edit(commit = true) { putBoolean(getFileName(artist), false) }
ArtistSignatureUtil.getInstance(App.getContext()).updateArtistSignature(artist.name)
App.getContext().contentResolver.notifyChange(
MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt
index a77793a1c..66e46929a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/LyricUtil.kt
@@ -132,27 +132,14 @@ object LyricUtil {
}
@Throws(Exception::class)
- private fun convertStreamToString(`is`: InputStream): String {
- val reader = BufferedReader(InputStreamReader(`is`))
- val sb = StringBuilder()
- var line: String?
- while (reader.readLine().also { line = it } != null) {
- sb.append(line).append("\n")
- }
- reader.close()
- return sb.toString()
+ private fun convertStreamToString(inputStream: InputStream): String {
+ return inputStream.bufferedReader().readLines().joinToString(separator = "\n")
}
fun getStringFromLrc(file: File?): String {
try {
val reader = BufferedReader(FileReader(file))
- val sb = StringBuilder()
- var line: String?
- while (reader.readLine().also { line = it } != null) {
- sb.append(line).append("\n")
- }
- reader.close()
- return sb.toString()
+ return reader.readLines().joinToString(separator = "\n")
} catch (e: Exception) {
Log.i("Error", "Error Occurred")
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MergedImageUtils.kt b/app/src/main/java/code/name/monkey/retromusic/util/MergedImageUtils.kt
index 59095d9ab..8026c98f7 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/MergedImageUtils.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/MergedImageUtils.kt
@@ -4,6 +4,7 @@ import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Matrix
import android.graphics.Paint
+import androidx.core.graphics.scale
import com.bumptech.glide.util.Util.assertBackgroundThread
@@ -75,7 +76,7 @@ internal object MergedImageUtils {
val onePartSize = imageSize / parts
images.forEachIndexed { i, bitmap ->
- val bit = Bitmap.createScaledBitmap(bitmap, onePartSize, onePartSize, true)
+ val bit = bitmap.scale(onePartSize, onePartSize)
canvas.drawBitmap(
bit,
(onePartSize * (i % parts)).toFloat() + (i % 3) * 50,
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
index 406aa5b68..62b364e8d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt
@@ -1,7 +1,6 @@
package code.name.monkey.retromusic.util
import android.content.ContentUris
-import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.database.Cursor
@@ -9,10 +8,11 @@ import android.net.Uri
import android.os.Environment
import android.provider.BaseColumns
import android.provider.MediaStore
-import android.text.TextUtils
import android.util.Log
import android.widget.Toast
import androidx.core.content.FileProvider
+import androidx.core.content.contentValuesOf
+import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
@@ -99,7 +99,7 @@ object MusicUtil : KoinComponent {
fun deleteAlbumArt(context: Context, albumId: Long) {
val contentResolver = context.contentResolver
- val localUri = Uri.parse("content://media/external/audio/albumart")
+ val localUri = "content://media/external/audio/albumart".toUri()
contentResolver.delete(ContentUris.withAppendedId(localUri, albumId), null, null)
contentResolver.notifyChange(localUri, null)
}
@@ -189,7 +189,7 @@ object MusicUtil : KoinComponent {
@JvmStatic
fun getMediaStoreAlbumCoverUri(albumId: Long): Uri {
- val sArtworkUri = Uri.parse("content://media/external/audio/albumart")
+ val sArtworkUri = "content://media/external/audio/albumart".toUri()
return ContentUris.withAppendedId(sArtworkUri, albumId)
}
@@ -238,10 +238,10 @@ object MusicUtil : KoinComponent {
fun getSectionName(mediaTitle: String?): String {
var musicMediaTitle = mediaTitle
return try {
- if (TextUtils.isEmpty(musicMediaTitle)) {
+ if (musicMediaTitle.isNullOrEmpty()) {
return "-"
}
- musicMediaTitle = musicMediaTitle!!.trim { it <= ' ' }.lowercase()
+ musicMediaTitle = musicMediaTitle.trim { it <= ' ' }.lowercase()
if (musicMediaTitle.startsWith("the ")) {
musicMediaTitle = musicMediaTitle.substring(4)
} else if (musicMediaTitle.startsWith("a ")) {
@@ -309,28 +309,29 @@ object MusicUtil : KoinComponent {
path: String?
) {
val contentResolver = context.contentResolver
- val artworkUri = Uri.parse("content://media/external/audio/albumart")
+ val artworkUri = "content://media/external/audio/albumart".toUri()
contentResolver.delete(ContentUris.withAppendedId(artworkUri, albumId), null, null)
- val values = ContentValues()
- values.put("album_id", albumId)
- values.put("_data", path)
+ val values = contentValuesOf(
+ "album_id" to albumId,
+ "_data" to path
+ )
contentResolver.insert(artworkUri, values)
contentResolver.notifyChange(artworkUri, null)
}
fun isArtistNameUnknown(artistName: String?): Boolean {
- if (TextUtils.isEmpty(artistName)) {
+ if (artistName.isNullOrEmpty()) {
return false
}
if (artistName == Artist.UNKNOWN_ARTIST_DISPLAY_NAME) {
return true
}
- val tempName = artistName!!.trim { it <= ' ' }.lowercase()
+ val tempName = artistName.trim { it <= ' ' }.lowercase()
return tempName == "unknown" || tempName == ""
}
fun isVariousArtists(artistName: String?): Boolean {
- if (TextUtils.isEmpty(artistName)) {
+ if (artistName.isNullOrEmpty()) {
return false
}
if (artistName == Artist.VARIOUS_ARTISTS_DISPLAY_NAME) {
@@ -454,7 +455,7 @@ object MusicUtil : KoinComponent {
} catch (ignored: SecurityException) {
}
- activity.contentResolver.notifyChange(Uri.parse("content://media"), null)
+ activity.contentResolver.notifyChange("content://media".toUri(), null)
activity.runOnUiThread {
Toast.makeText(
activity,
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
index 234bb035f..a023e7475 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
@@ -16,11 +16,11 @@ package code.name.monkey.retromusic.util
import android.content.Context
import android.content.Intent
-import android.net.Uri
import android.provider.BaseColumns
import android.provider.MediaStore
import android.provider.Settings
import android.widget.Toast
+import androidx.core.net.toUri
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.model.Song
@@ -69,7 +69,7 @@ class RingtoneManager(val context: Context) {
.setMessage(R.string.dialog_message_set_ringtone)
.setPositiveButton(android.R.string.ok) { _, _ ->
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
- intent.data = Uri.parse("package:" + context.applicationContext.packageName)
+ intent.data = ("package:" + context.applicationContext.packageName).toUri()
context.startActivity(intent)
}
.setNegativeButton(android.R.string.cancel, null)
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
index 358e17080..8ba3b636a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
@@ -20,6 +20,7 @@ import android.graphics.Color
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.content.ContextCompat
+import androidx.core.content.withStyledAttributes
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
@@ -38,12 +39,10 @@ class ColorIconsImageView @JvmOverloads constructor(
init {
// Load the styled attributes and set their properties
- val attributes =
- context.obtainStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0)
- val color =
- attributes.getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED)
- setIconBackgroundColor(color)
- attributes.recycle()
+ context.withStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0) {
+ val color = getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED)
+ setIconBackgroundColor(color)
+ }
}
fun setIconBackgroundColor(color: Int) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt
index 752b88b8a..a1b199682 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt
@@ -18,6 +18,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
+import androidx.core.content.withStyledAttributes
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ListItemViewNoCardBinding
import code.name.monkey.retromusic.extensions.hide
@@ -49,20 +50,20 @@ class ListItemView : FrameLayout {
private fun init(context: Context, attrs: AttributeSet?) {
binding = ListItemViewNoCardBinding.inflate(LayoutInflater.from(context), this, true)
- val typedArray = context.obtainStyledAttributes(attrs, R.styleable.ListItemView)
- if (typedArray.hasValue(R.styleable.ListItemView_listItemIcon)) {
- binding.icon.setImageDrawable(typedArray.getDrawable(R.styleable.ListItemView_listItemIcon))
- } else {
- binding.icon.hide()
- }
+ context.withStyledAttributes(attrs, R.styleable.ListItemView) {
+ if (hasValue(R.styleable.ListItemView_listItemIcon)) {
+ binding.icon.setImageDrawable(getDrawable(R.styleable.ListItemView_listItemIcon))
+ } else {
+ binding.icon.hide()
+ }
- binding.title.text = typedArray.getText(R.styleable.ListItemView_listItemTitle)
- if (typedArray.hasValue(R.styleable.ListItemView_listItemSummary)) {
- binding.summary.text = typedArray.getText(R.styleable.ListItemView_listItemSummary)
- } else {
- binding.summary.hide()
+ binding.title.text = getText(R.styleable.ListItemView_listItemTitle)
+ if (hasValue(R.styleable.ListItemView_listItemSummary)) {
+ binding.summary.text = getText(R.styleable.ListItemView_listItemSummary)
+ } else {
+ binding.summary.hide()
+ }
}
- typedArray.recycle()
}
fun setSummary(appVersion: String) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt b/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt
index 51e9cbe25..e80bf48aa 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt
@@ -5,6 +5,7 @@ import android.content.res.ColorStateList
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
+import androidx.core.content.withStyledAttributes
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.retromusic.R
@@ -21,26 +22,25 @@ class PermissionItem @JvmOverloads constructor(
val checkImage get() = binding.checkImage
init {
- val attributes = context.obtainStyledAttributes(attrs, R.styleable.PermissionItem, 0, 0)
binding = ItemPermissionBinding.inflate(LayoutInflater.from(context), this, true)
- binding.title.text = attributes.getText(R.styleable.PermissionItem_permissionTitle)
- binding.summary.text =
- attributes.getText(R.styleable.PermissionItem_permissionTitleSubTitle)
- binding.number.text = attributes.getText(R.styleable.PermissionItem_permissionTitleNumber)
- binding.button.text = attributes.getText(R.styleable.PermissionItem_permissionButtonTitle)
- binding.button.setIconResource(
- attributes.getResourceId(
- R.styleable.PermissionItem_permissionIcon,
- R.drawable.ic_album
+ context.withStyledAttributes(attrs, R.styleable.PermissionItem, 0, 0) {
+ binding.title.text = getText(R.styleable.PermissionItem_permissionTitle)
+ binding.summary.text = getText(R.styleable.PermissionItem_permissionTitleSubTitle)
+ binding.number.text = getText(R.styleable.PermissionItem_permissionTitleNumber)
+ binding.button.text = getText(R.styleable.PermissionItem_permissionButtonTitle)
+ binding.button.setIconResource(
+ getResourceId(
+ R.styleable.PermissionItem_permissionIcon,
+ R.drawable.ic_album
+ )
)
- )
- val color = ThemeStore.accentColor(context)
- binding.number.backgroundTintList =
- ColorStateList.valueOf(ColorUtil.withAlpha(color, 0.22f))
+ val color = ThemeStore.accentColor(context)
+ binding.number.backgroundTintList =
+ ColorStateList.valueOf(ColorUtil.withAlpha(color, 0.22f))
- binding.button.accentOutlineColor()
- attributes.recycle()
+ binding.button.accentOutlineColor()
+ }
}
fun setButtonClick(callBack: () -> Unit) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt
index e07e78450..055ca002d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt
@@ -18,6 +18,7 @@ import android.graphics.Color
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
+import androidx.core.content.withStyledAttributes
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ListSettingItemViewBinding
@@ -33,21 +34,15 @@ class SettingListItemView @JvmOverloads constructor(
init {
val binding: ListSettingItemViewBinding =
ListSettingItemViewBinding.inflate(LayoutInflater.from(context), this, true)
- val typedArray =
- context.obtainStyledAttributes(attrs, R.styleable.SettingListItemView)
- binding.icon
- if (typedArray.hasValue(R.styleable.SettingListItemView_settingListItemIcon)) {
- binding.icon.setImageDrawable(typedArray.getDrawable(R.styleable.SettingListItemView_settingListItemIcon))
- }
- binding.icon.setIconBackgroundColor(
- typedArray.getColor(
- R.styleable.SettingListItemView_settingListItemIconColor,
- Color.WHITE
+ context.withStyledAttributes(attrs, R.styleable.SettingListItemView) {
+ if (hasValue(R.styleable.SettingListItemView_settingListItemIcon)) {
+ binding.icon.setImageDrawable(getDrawable(R.styleable.SettingListItemView_settingListItemIcon))
+ }
+ binding.icon.setIconBackgroundColor(
+ getColor(R.styleable.SettingListItemView_settingListItemIconColor, Color.WHITE)
)
- )
- binding.title.text =
- typedArray.getText(R.styleable.SettingListItemView_settingListItemTitle)
- binding.text.text = typedArray.getText(R.styleable.SettingListItemView_settingListItemText)
- typedArray.recycle()
+ binding.title.text = getText(R.styleable.SettingListItemView_settingListItemTitle)
+ binding.text.text = getText(R.styleable.SettingListItemView_settingListItemText)
+ }
}
}
\ No newline at end of file
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
index c095c9025..6b8406b8d 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
@@ -6,6 +6,7 @@ import android.graphics.Color
import androidx.annotation.*
import androidx.annotation.IntRange
import androidx.core.content.ContextCompat
+import androidx.core.content.edit
import androidx.preference.PreferenceManager
import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor
@@ -336,7 +337,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
val prefs = prefs(context)
val lastVersion = prefs.getInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, -1)
if (version > lastVersion) {
- prefs.edit().putInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, version).apply()
+ prefs.edit { putInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, version) }
return false
}
return true
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
index b47d20c00..19eb3e15a 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
@@ -5,6 +5,7 @@ import android.text.Editable
import android.util.AttributeSet
import android.widget.SeekBar
import android.widget.TextView
+import androidx.core.content.withStyledAttributes
import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat
import androidx.core.widget.doAfterTextChanged
@@ -26,13 +27,11 @@ class ATESeekBarPreference @JvmOverloads constructor(
var unit: String = ""
init {
- val attributes =
- context.obtainStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0)
-
- attributes.getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let {
- unit = it
+ context.withStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0) {
+ getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let {
+ unit = it
+ }
}
- attributes.recycle()
icon?.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(
ATHUtil.resolveColor(
context,