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 bae8ceb87..e9bd00667 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 @@ -31,7 +31,6 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.databinding.ActivityPermissionBinding import code.name.monkey.retromusic.extensions.* -import code.name.monkey.retromusic.util.RingtoneManager class PermissionActivity : AbsMusicServiceActivity() { private lateinit var binding: ActivityPermissionBinding @@ -50,7 +49,7 @@ class PermissionActivity : AbsMusicServiceActivity() { if (VersionUtils.hasMarshmallow()) { binding.audioPermission.show() binding.audioPermission.setButtonClick { - if (RingtoneManager.requiresDialog(this@PermissionActivity)) { + if (hasAudioPermission()) { val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS) intent.data = ("package:" + applicationContext.packageName).toUri() startActivity(intent) @@ -99,7 +98,8 @@ class PermissionActivity : AbsMusicServiceActivity() { } private fun hasStoragePermission(): Boolean { - return ActivityCompat.checkSelfPermission(this , Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED + return ActivityCompat.checkSelfPermission(this, + Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED } @RequiresApi(Build.VERSION_CODES.M) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt index b2aba2318..5e7a8f8eb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt @@ -31,6 +31,7 @@ import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.theme.getNightMode import code.name.monkey.retromusic.util.theme.getThemeResValue +import com.google.android.play.core.splitcompat.SplitCompat import java.util.* abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { @@ -122,5 +123,6 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { Locale.forLanguageTag(code) } super.attachBaseContext(LanguageContextWrapper.wrap(newBase, locale)) + SplitCompat.install(this) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 082f1ce4b..8a8069d2f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -180,11 +180,14 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme return true } R.id.action_set_as_ringtone -> { - if (RingtoneManager.requiresDialog(requireActivity())) { - RingtoneManager.getDialog(requireActivity()) + requireContext().run { + if (RingtoneManager.requiresDialog(this)) { + RingtoneManager.showDialog(this) + } else { + RingtoneManager.setRingtone(this, song) + } } - val ringtoneManager = RingtoneManager(requireActivity()) - ringtoneManager.setRingtone(song) + return true } R.id.action_go_to_genre -> { @@ -265,7 +268,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme } else { if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border } - val drawable = requireContext().getTintedDrawable( + val drawable = requireContext().getTintedDrawable( icon, toolbarIconColor() ) @@ -379,9 +382,7 @@ fun goToArtist(activity: Activity) { findNavController(R.id.fragment_container).navigate( R.id.artistDetailsFragment, bundleOf(EXTRA_ARTIST_ID to song.artistId), - navOptions { - launchSingleTop = true - }, + null, null ) } @@ -402,9 +403,7 @@ fun goToAlbum(activity: Activity) { findNavController(R.id.fragment_container).navigate( R.id.albumDetailsFragment, bundleOf(EXTRA_ALBUM_ID to song.albumId), - navOptions { - launchSingleTop = true - }, + null, null ) } 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 a4b03a5b1..7b4946506 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 @@ -66,7 +66,7 @@ class UserInfoFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { sharedElementEnterTransition = MaterialContainerTransform().apply { drawingViewId = R.id.fragment_container @@ -229,7 +229,7 @@ class UserInfoFragment : Fragment() { model: Any?, target: Target?, dataSource: DataSource?, - isFirstResource: Boolean + isFirstResource: Boolean, ): Boolean { resource?.let { saveImage(it, USER_BANNER) } return false @@ -239,7 +239,7 @@ class UserInfoFragment : Fragment() { e: GlideException?, model: Any?, target: Target?, - isFirstResource: Boolean + isFirstResource: Boolean, ): Boolean { return false } @@ -251,14 +251,10 @@ class UserInfoFragment : Fragment() { lifecycleScope.launch(Dispatchers.IO) { val appDir = requireContext().filesDir val file = File(appDir, fileName) - var successful = false - runCatching { - file.outputStream().buffered().use { - successful = ImageUtil.resizeBitmap(bitmap, 2048) - .compress(Bitmap.CompressFormat.WEBP, 100, it) - } - }.onFailure { - it.printStackTrace() + var successful: Boolean + file.outputStream().buffered().use { + successful = ImageUtil.resizeBitmap(bitmap, 2048) + .compress(Bitmap.CompressFormat.WEBP, 100, it) } if (successful) { withContext(Dispatchers.Main) { @@ -279,7 +275,7 @@ class UserInfoFragment : Fragment() { model: Any?, target: Target?, dataSource: DataSource?, - isFirstResource: Boolean + isFirstResource: Boolean, ): Boolean { resource?.let { saveImage(it, USER_PROFILE) } return false @@ -289,7 +285,7 @@ class UserInfoFragment : Fragment() { e: GlideException?, model: Any?, target: Target?, - isFirstResource: Boolean + isFirstResource: Boolean, ): Boolean { return false } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index b0ada25df..3500d2627 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -139,9 +139,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment subMenu.findItem(R.id.action_layout_card).isChecked = true R.layout.item_grid -> subMenu.findItem(R.id.action_layout_normal).isChecked = true @@ -227,9 +223,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment gridSizeMenu.findItem(R.id.action_grid_size_1).isChecked = true 2 -> gridSizeMenu.findItem(R.id.action_grid_size_2).isChecked = true @@ -274,9 +268,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment SongSortOrder.SONG_A_Z R.id.action_song_sort_order_desc -> SongSortOrder.SONG_Z_A @@ -297,9 +289,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment R.layout.item_grid R.id.action_layout_card -> R.layout.item_card @@ -317,9 +307,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment 1 R.id.action_grid_size_2 -> 2 diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt index 4c63a6f39..6fca4a3a0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt @@ -55,10 +55,9 @@ object SongMenuHelper : KoinComponent { when (menuItemId) { R.id.action_set_as_ringtone -> { if (RingtoneManager.requiresDialog(activity)) { - RingtoneManager.getDialog(activity) + RingtoneManager.showDialog(activity) } else { - val ringtoneManager = RingtoneManager(activity) - ringtoneManager.setRingtone(song) + RingtoneManager.setRingtone(activity, song) } return true } 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 8071ce4fa..98be17699 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 @@ -27,10 +27,10 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil.getSongFileUri import com.google.android.material.dialog.MaterialAlertDialogBuilder -class RingtoneManager(val context: Context) { - fun setRingtone(song: Song) { - val resolver = context.contentResolver +object RingtoneManager { + fun setRingtone(context: Context, song: Song) { val uri = getSongFileUri(song.id) + val resolver = context.contentResolver try { val cursor = resolver.query( @@ -52,28 +52,25 @@ class RingtoneManager(val context: Context) { } } - companion object { - - fun requiresDialog(context: Context): Boolean { - if (VersionUtils.hasMarshmallow()) { - if (!Settings.System.canWrite(context)) { - return true - } + fun requiresDialog(context: Context): Boolean { + if (VersionUtils.hasMarshmallow()) { + if (!Settings.System.canWrite(context)) { + return true } - return false } + return false + } - fun getDialog(context: Context) { - return MaterialAlertDialogBuilder(context, R.style.MaterialAlertDialogTheme) - .setTitle(R.string.dialog_title_set_ringtone) - .setMessage(R.string.dialog_message_set_ringtone) - .setPositiveButton(android.R.string.ok) { _, _ -> - val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS) - intent.data = ("package:" + context.applicationContext.packageName).toUri() - context.startActivity(intent) - } - .setNegativeButton(android.R.string.cancel, null) - .create().show() - } + fun showDialog(context: Context) { + return MaterialAlertDialogBuilder(context, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.dialog_title_set_ringtone) + .setMessage(R.string.dialog_message_set_ringtone) + .setPositiveButton(android.R.string.ok) { _, _ -> + val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS) + intent.data = ("package:" + context.applicationContext.packageName).toUri() + context.startActivity(intent) + } + .setNegativeButton(android.R.string.cancel, null) + .create().show() } } \ No newline at end of file