Code Cleanup
This commit is contained in:
parent
8d81424365
commit
5f5bddf5e9
7 changed files with 52 additions and 71 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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<Bitmap>?,
|
||||
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<Bitmap>?,
|
||||
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<Bitmap>?,
|
||||
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<Bitmap>?,
|
||||
isFirstResource: Boolean
|
||||
isFirstResource: Boolean,
|
||||
): Boolean {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -139,9 +139,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
|
||||
}
|
||||
|
||||
private fun setUpSortOrderMenu(
|
||||
sortOrderMenu: SubMenu
|
||||
) {
|
||||
private fun setUpSortOrderMenu(sortOrderMenu: SubMenu) {
|
||||
val currentSortOrder: String? = getSortOrder()
|
||||
sortOrderMenu.clear()
|
||||
sortOrderMenu.add(
|
||||
|
@ -211,9 +209,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
sortOrderMenu.setGroupCheckable(0, true, true)
|
||||
}
|
||||
|
||||
private fun setupLayoutMenu(
|
||||
subMenu: SubMenu
|
||||
) {
|
||||
private fun setupLayoutMenu(subMenu: SubMenu) {
|
||||
when (itemLayoutRes()) {
|
||||
R.layout.item_card -> 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<SongAdapter, GridLay
|
|||
}
|
||||
}
|
||||
|
||||
private fun setUpGridSizeMenu(
|
||||
gridSizeMenu: SubMenu
|
||||
) {
|
||||
private fun setUpGridSizeMenu(gridSizeMenu: SubMenu) {
|
||||
when (getGridSize()) {
|
||||
1 -> 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<SongAdapter, GridLay
|
|||
return super.onMenuItemSelected(item)
|
||||
}
|
||||
|
||||
private fun handleSortOrderMenuItem(
|
||||
item: MenuItem
|
||||
): Boolean {
|
||||
private fun handleSortOrderMenuItem(item: MenuItem): Boolean {
|
||||
val sortOrder: String = when (item.itemId) {
|
||||
R.id.action_song_sort_order_asc -> SongSortOrder.SONG_A_Z
|
||||
R.id.action_song_sort_order_desc -> SongSortOrder.SONG_Z_A
|
||||
|
@ -297,9 +289,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
return false
|
||||
}
|
||||
|
||||
private fun handleLayoutResType(
|
||||
item: MenuItem
|
||||
): Boolean {
|
||||
private fun handleLayoutResType(item: MenuItem): Boolean {
|
||||
val layoutRes = when (item.itemId) {
|
||||
R.id.action_layout_normal -> R.layout.item_grid
|
||||
R.id.action_layout_card -> R.layout.item_card
|
||||
|
@ -317,9 +307,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
return false
|
||||
}
|
||||
|
||||
private fun handleGridSizeMenuItem(
|
||||
item: MenuItem
|
||||
): Boolean {
|
||||
private fun handleGridSizeMenuItem(item: MenuItem): Boolean {
|
||||
val gridSize = when (item.itemId) {
|
||||
R.id.action_grid_size_1 -> 1
|
||||
R.id.action_grid_size_2 -> 2
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue