Kotlin code refactor

This commit is contained in:
Hemanth S 2020-05-24 03:56:45 +05:30
parent a5cc0572a8
commit 229393e766
14 changed files with 71 additions and 163 deletions

View file

@ -54,6 +54,8 @@ object Constants {
} }
const val EXTRA_SONG = "extra_songs"
const val EXTRA_PLAYLIST = "extra_list"
const val LIBRARY_CATEGORIES = "library_categories" const val LIBRARY_CATEGORIES = "library_categories"
const val EXTRA_SONG_INFO = "extra_song_info" const val EXTRA_SONG_INFO = "extra_song_info"
const val DESATURATED_COLOR = "desaturated_color" const val DESATURATED_COLOR = "desaturated_color"

View file

@ -17,8 +17,6 @@ import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
import code.name.monkey.retromusic.dialogs.ClearSmartPlaylistDialog
import code.name.monkey.retromusic.dialogs.DeletePlaylistDialog
import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper
@ -29,7 +27,6 @@ import code.name.monkey.retromusic.model.AbsCustomPlaylist
import code.name.monkey.retromusic.model.Playlist import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist
import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist
import code.name.monkey.retromusic.util.AutoGeneratedPlaylistBitmap import code.name.monkey.retromusic.util.AutoGeneratedPlaylistBitmap
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.NavigationUtil
@ -125,24 +122,6 @@ class PlaylistAdapter(
override fun onMultipleItemAction(menuItem: MenuItem, selection: ArrayList<Playlist>) { override fun onMultipleItemAction(menuItem: MenuItem, selection: ArrayList<Playlist>) {
when (menuItem.itemId) { when (menuItem.itemId) {
R.id.action_delete_playlist -> {
var i = 0
while (i < selection.size) {
val playlist = selection[i]
if (playlist is AbsSmartPlaylist) {
ClearSmartPlaylistDialog.create(playlist).show(
activity.supportFragmentManager, "CLEAR_PLAYLIST_" + playlist.name
)
selection.remove(playlist)
i--
}
i++
}
if (selection.size > 0) {
DeletePlaylistDialog.create(selection)
.show(activity.supportFragmentManager, "DELETE_PLAYLIST")
}
}
else -> SongsMenuHelper.handleMenuClick( else -> SongsMenuHelper.handleMenuClick(
activity, activity,
getSongList(selection), getSongList(selection),
@ -183,25 +162,9 @@ class PlaylistAdapter(
} }
menu?.setOnClickListener { view -> menu?.setOnClickListener { view ->
val playlist = dataSet[layoutPosition]
val popupMenu = PopupMenu(activity, view) val popupMenu = PopupMenu(activity, view)
popupMenu.inflate( popupMenu.inflate(R.menu.menu_item_playlist)
if (itemViewType == SMART_PLAYLIST) R.menu.menu_item_smart_playlist
else R.menu.menu_item_playlist
)
if (playlist is LastAddedPlaylist) {
popupMenu.menu.findItem(R.id.action_clear_playlist).isVisible = false
}
popupMenu.setOnMenuItemClickListener { item -> popupMenu.setOnMenuItemClickListener { item ->
if (item.itemId == R.id.action_clear_playlist) {
if (playlist is AbsSmartPlaylist) {
ClearSmartPlaylistDialog.create(playlist).show(
activity.supportFragmentManager,
"CLEAR_SMART_PLAYLIST_" + playlist.name
)
return@setOnMenuItemClickListener true
}
}
PlaylistMenuHelper.handleMenuClick( PlaylistMenuHelper.handleMenuClick(
activity, dataSet[layoutPosition], item activity, dataSet[layoutPosition], item
) )

View file

@ -17,6 +17,7 @@ package code.name.monkey.retromusic.dialogs
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.extraNotNull import code.name.monkey.retromusic.extensions.extraNotNull
import code.name.monkey.retromusic.loaders.PlaylistLoader import code.name.monkey.retromusic.loaders.PlaylistLoader
@ -41,21 +42,20 @@ class AddToPlaylistDialog : DialogFragment() {
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
) )
.setTitle(R.string.add_playlist_title) .setTitle(R.string.add_playlist_title)
.setItems(playlistNames.toTypedArray()) { dialog, which -> .setItems(playlistNames.toTypedArray()) { _, which ->
val songs = extraNotNull<ArrayList<Song>>("songs") val songs = extraNotNull<ArrayList<Song>>(EXTRA_SONG).value
if (which == 0) { if (which == 0) {
CreatePlaylistDialog.create(songs.value) CreatePlaylistDialog.create(songs)
.show(childFragmentManager, "ADD_TO_PLAYLIST") .show(requireActivity().supportFragmentManager, "ADD_TO_PLAYLIST")
dismiss()
} else { } else {
PlaylistsUtil.addToPlaylist( PlaylistsUtil.addToPlaylist(
requireContext(), requireContext(),
songs.value, songs,
playlists[which - 1].id, playlists[which - 1].id,
true true
) )
dismiss()
} }
dismiss()
} }
.create() .create()
} }
@ -71,7 +71,7 @@ class AddToPlaylistDialog : DialogFragment() {
fun create(songs: List<Song>): AddToPlaylistDialog { fun create(songs: List<Song>): AddToPlaylistDialog {
val dialog = AddToPlaylistDialog() val dialog = AddToPlaylistDialog()
val args = Bundle() val args = Bundle()
args.putParcelableArrayList("songs", ArrayList(songs)) args.putParcelableArrayList(EXTRA_SONG, ArrayList(songs))
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -1,61 +0,0 @@
/*
* Copyright (c) 2019 Hemanth Savarala.
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*/
package code.name.monkey.retromusic.dialogs
import android.app.Dialog
import android.os.Bundle
import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist
import com.google.android.material.dialog.MaterialAlertDialogBuilder
class ClearSmartPlaylistDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val playlist = requireArguments().getParcelable<AbsSmartPlaylist>("playlist")
val title = R.string.clear_playlist_title
val message = HtmlCompat.fromHtml(
getString(R.string.clear_playlist_x, playlist!!.name),
HtmlCompat.FROM_HTML_MODE_LEGACY
)
return MaterialAlertDialogBuilder(
requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
)
.setTitle(title)
.setMessage(message)
.setPositiveButton(R.string.clear_action) { _, _ ->
playlist.clear(requireActivity())
}
.setNegativeButton(android.R.string.cancel, null)
.create()
}
companion object {
fun create(playlist: AbsSmartPlaylist): ClearSmartPlaylistDialog {
val dialog = ClearSmartPlaylistDialog()
val args = Bundle()
args.putParcelable("playlist", playlist)
dialog.arguments = args
return dialog
}
}
}

View file

@ -19,10 +19,9 @@ import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.extraNotNull import code.name.monkey.retromusic.extensions.extraNotNull
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
@ -30,6 +29,7 @@ import code.name.monkey.retromusic.util.PlaylistsUtil
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textfield.TextInputLayout
import kotlinx.android.synthetic.main.dialog_playlist.view.*
class CreatePlaylistDialog : DialogFragment() { class CreatePlaylistDialog : DialogFragment() {
@ -38,19 +38,21 @@ class CreatePlaylistDialog : DialogFragment() {
savedInstanceState: Bundle? savedInstanceState: Bundle?
): Dialog { ): Dialog {
val view = LayoutInflater.from(requireActivity()).inflate(R.layout.dialog_playlist, null) val view = LayoutInflater.from(requireActivity()).inflate(R.layout.dialog_playlist, null)
val playlistView: TextInputEditText = view.findViewById(R.id.actionNewPlaylist) val playlistView: TextInputEditText = view.actionNewPlaylist
val playlistContainer: TextInputLayout = view.findViewById(R.id.actionNewPlaylistContainer) val playlistContainer: TextInputLayout = view.actionNewPlaylistContainer
MaterialUtil.setTint(playlistContainer, false) MaterialUtil.setTint(playlistContainer, false)
return MaterialAlertDialogBuilder(requireActivity(), return MaterialAlertDialogBuilder(
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert) requireActivity(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
)
.setTitle(R.string.new_playlist_title) .setTitle(R.string.new_playlist_title)
.setView(view) .setView(view)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.setPositiveButton( .setPositiveButton(
R.string.create_action R.string.create_action
) { _, _ -> ) { _, _ ->
val extra = extraNotNull<ArrayList<Song>>("songs") val extra = extraNotNull<ArrayList<Song>>(EXTRA_SONG)
val playlistName = playlistView.text.toString() val playlistName = playlistView.text.toString()
if (!TextUtils.isEmpty(playlistName)) { if (!TextUtils.isEmpty(playlistName)) {
val playlistId = PlaylistsUtil.createPlaylist( val playlistId = PlaylistsUtil.createPlaylist(
@ -65,11 +67,6 @@ class CreatePlaylistDialog : DialogFragment() {
.create() .create()
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
(dialog as AlertDialog)
}
companion object { companion object {
@JvmOverloads @JvmOverloads
@JvmStatic @JvmStatic
@ -85,7 +82,7 @@ class CreatePlaylistDialog : DialogFragment() {
fun create(songs: ArrayList<Song>): CreatePlaylistDialog { fun create(songs: ArrayList<Song>): CreatePlaylistDialog {
val dialog = CreatePlaylistDialog() val dialog = CreatePlaylistDialog()
val args = Bundle() val args = Bundle()
args.putParcelableArrayList("songs", songs) args.putParcelableArrayList(EXTRA_SONG, songs)
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -18,29 +18,30 @@ import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_PLAYLIST
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.extraNotNull
import code.name.monkey.retromusic.model.Playlist import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.util.PlaylistsUtil import code.name.monkey.retromusic.util.PlaylistsUtil
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.util.*
class DeletePlaylistDialog : DialogFragment() { class DeletePlaylistDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val playlists = requireArguments().getParcelableArrayList<Playlist>("playlist") val playlists = extraNotNull<List<Playlist>>(EXTRA_PLAYLIST).value
val title: Int val title: Int
val message: CharSequence val message: CharSequence
//noinspection ConstantConditions //noinspection ConstantConditions
if (playlists!!.size > 1) { if (playlists.size > 1) {
title = R.string.delete_playlists_title title = R.string.delete_playlists_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString(R.string.delete_x_playlists, playlists.size), String.format(getString(R.string.delete_x_playlists), playlists.size),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
) )
} else { } else {
title = R.string.delete_playlist_title title = R.string.delete_playlist_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString(R.string.delete_playlist_x, playlists[0].name), String.format(getString(R.string.delete_playlist_x), playlists[0].name),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
) )
} }
@ -69,7 +70,7 @@ class DeletePlaylistDialog : DialogFragment() {
fun create(playlist: ArrayList<Playlist>): DeletePlaylistDialog { fun create(playlist: ArrayList<Playlist>): DeletePlaylistDialog {
val dialog = DeletePlaylistDialog() val dialog = DeletePlaylistDialog()
val args = Bundle() val args = Bundle()
args.putParcelableArrayList("playlist", playlist) args.putParcelableArrayList(EXTRA_PLAYLIST, playlist)
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -20,6 +20,7 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.saf.SAFGuideActivity import code.name.monkey.retromusic.activities.saf.SAFGuideActivity
import code.name.monkey.retromusic.extensions.extraNotNull import code.name.monkey.retromusic.extensions.extraNotNull
@ -39,25 +40,27 @@ class DeleteSongsDialog : DialogFragment() {
private var deleteSongsAsyncTask: DeleteSongsAsyncTask? = null private var deleteSongsAsyncTask: DeleteSongsAsyncTask? = null
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val songs = extraNotNull<List<Song>>("songs¬").value val songs = extraNotNull<List<Song>>(EXTRA_SONG).value
var title = 0 var title = 0
var message: CharSequence = "" var message: CharSequence = ""
if (songs.size > 1) { if (songs.size > 1) {
title = R.string.delete_songs_title title = R.string.delete_songs_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString(R.string.delete_x_songs, songs.size), String.format(getString(R.string.delete_x_songs), songs.size),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
) )
} else { } else {
title = R.string.delete_song_title title = R.string.delete_song_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString(R.string.delete_song_x, songs[0].title), String.format(getString(R.string.delete_song_x), songs[0].title),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
) )
} }
return MaterialAlertDialogBuilder(requireContext(), return MaterialAlertDialogBuilder(
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert) requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
)
.setTitle(title) .setTitle(title)
.setMessage(message) .setMessage(message)
.setCancelable(false) .setCancelable(false)
@ -111,7 +114,7 @@ class DeleteSongsDialog : DialogFragment() {
fun create(songs: List<Song>): DeleteSongsDialog { fun create(songs: List<Song>): DeleteSongsDialog {
val dialog = DeleteSongsDialog() val dialog = DeleteSongsDialog()
val args = Bundle() val args = Bundle()
args.putParcelableArrayList("songs", ArrayList(songs)) args.putParcelableArrayList(EXTRA_SONG, ArrayList(songs))
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -18,6 +18,7 @@ import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.R.string import code.name.monkey.retromusic.R.string
import code.name.monkey.retromusic.model.PlaylistSong import code.name.monkey.retromusic.model.PlaylistSong
@ -27,7 +28,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
class RemoveFromPlaylistDialog : DialogFragment() { class RemoveFromPlaylistDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val songs = requireArguments().getParcelableArrayList<PlaylistSong>("songs") val songs = requireArguments().getParcelableArrayList<PlaylistSong>(EXTRA_SONG)
var title = 0 var title = 0
var message: CharSequence = "" var message: CharSequence = ""
@ -35,14 +36,14 @@ class RemoveFromPlaylistDialog : DialogFragment() {
if (songs.size > 1) { if (songs.size > 1) {
title = R.string.remove_songs_from_playlist_title title = R.string.remove_songs_from_playlist_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString(string.remove_x_songs_from_playlist, songs.size), String.format(getString(string.remove_x_songs_from_playlist), songs.size),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
) )
} else { } else {
title = R.string.remove_song_from_playlist_title title = R.string.remove_song_from_playlist_title
message = HtmlCompat.fromHtml( message = HtmlCompat.fromHtml(
getString( String.format(
code.name.monkey.retromusic.R.string.remove_song_x_from_playlist, getString(string.remove_song_x_from_playlist),
songs[0].title songs[0].title
), ),
HtmlCompat.FROM_HTML_MODE_LEGACY HtmlCompat.FROM_HTML_MODE_LEGACY
@ -50,8 +51,10 @@ class RemoveFromPlaylistDialog : DialogFragment() {
} }
} }
return MaterialAlertDialogBuilder(requireContext(), return MaterialAlertDialogBuilder(
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert) requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
)
.setTitle(title) .setTitle(title)
.setMessage(message) .setMessage(message)
.setPositiveButton(R.string.remove_action) { _, _ -> .setPositiveButton(R.string.remove_action) { _, _ ->
@ -75,7 +78,7 @@ class RemoveFromPlaylistDialog : DialogFragment() {
fun create(songs: ArrayList<PlaylistSong>): RemoveFromPlaylistDialog { fun create(songs: ArrayList<PlaylistSong>): RemoveFromPlaylistDialog {
val dialog = RemoveFromPlaylistDialog() val dialog = RemoveFromPlaylistDialog()
val args = Bundle() val args = Bundle()
args.putParcelableArrayList("songs", songs) args.putParcelableArrayList(EXTRA_SONG, songs)
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -42,8 +42,10 @@ class RenamePlaylistDialog : DialogFragment() {
layout.findViewById(R.id.actionNewPlaylistContainer) layout.findViewById(R.id.actionNewPlaylistContainer)
MaterialUtil.setTint(nameContainer, false) MaterialUtil.setTint(nameContainer, false)
return MaterialAlertDialogBuilder(requireContext(), return MaterialAlertDialogBuilder(
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert) requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
)
.setTitle(R.string.rename_playlist_title) .setTitle(R.string.rename_playlist_title)
.setView(layout) .setView(layout)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)

View file

@ -35,9 +35,7 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.service.MusicService.ACTION_PENDING_QUIT import code.name.monkey.retromusic.service.MusicService.ACTION_PENDING_QUIT
import code.name.monkey.retromusic.service.MusicService.ACTION_QUIT import code.name.monkey.retromusic.service.MusicService.ACTION_QUIT
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtilKT import code.name.monkey.retromusic.util.PreferenceUtilKT
import code.name.monkey.retromusic.util.ViewUtil
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.WhichButton import com.afollestad.materialdialogs.WhichButton
import com.afollestad.materialdialogs.actions.getActionButton import com.afollestad.materialdialogs.actions.getActionButton
@ -169,19 +167,12 @@ class SleepTimerDialog : DialogFragment() {
) { ) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
materialDialog.getActionButton(WhichButton.NEGATIVE).text = String.format( println("onTick: $millisUntilFinished")
"%s %s", seekBar.progress = millisUntilFinished.toInt()
materialDialog.context.getString(R.string.cancel_current_timer),
" (" + MusicUtil.getReadableDurationString(millisUntilFinished) + ")"
)
} }
override fun onFinish() { override fun onFinish() {
updateCancelButton() updateCancelButton()
} }
} }
private fun setProgressBarColor(dark: Int) {
ViewUtil.setProgressDrawable(progressSlider = seekBar, newColor = dark)
}
} }

View file

@ -27,6 +27,7 @@ import android.widget.TextView
import androidx.annotation.NonNull import androidx.annotation.NonNull
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
@ -52,7 +53,7 @@ class SongDetailDialog : DialogFragment() {
val context: Context = requireContext() val context: Context = requireContext()
val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_file_details, null) val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_file_details, null)
val song = requireArguments().getParcelable<Song>("song") val song = requireArguments().getParcelable<Song>(EXTRA_SONG)
val fileName: TextView = dialogView.findViewById(R.id.fileName) val fileName: TextView = dialogView.findViewById(R.id.fileName)
val filePath: TextView = dialogView.findViewById(R.id.filePath) val filePath: TextView = dialogView.findViewById(R.id.filePath)
val fileSize: TextView = dialogView.findViewById(R.id.fileSize) val fileSize: TextView = dialogView.findViewById(R.id.fileSize)
@ -165,7 +166,7 @@ class SongDetailDialog : DialogFragment() {
fun create(song: Song): SongDetailDialog { fun create(song: Song): SongDetailDialog {
val dialog = SongDetailDialog() val dialog = SongDetailDialog()
val args = Bundle() val args = Bundle()
args.putParcelable("song", song) args.putParcelable(EXTRA_SONG, song)
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -18,6 +18,7 @@ import android.app.Dialog
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import code.name.monkey.retromusic.EXTRA_SONG
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.ShareInstagramStory import code.name.monkey.retromusic.activities.ShareInstagramStory
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
@ -26,10 +27,13 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
class SongShareDialog : DialogFragment() { class SongShareDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val song: Song? = requireArguments().getParcelable("song") val song: Song? = requireArguments().getParcelable(EXTRA_SONG)
val listening: String = val listening: String =
getString(R.string.currently_listening_to_x_by_x, song?.title, song?.artistName) String.format(
getString(R.string.currently_listening_to_x_by_x),
song?.title,
song?.artistName
)
return MaterialAlertDialogBuilder( return MaterialAlertDialogBuilder(
requireContext(), requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
@ -92,7 +96,7 @@ class SongShareDialog : DialogFragment() {
fun create(song: Song): SongShareDialog { fun create(song: Song): SongShareDialog {
val dialog = SongShareDialog() val dialog = SongShareDialog()
val args = Bundle() val args = Bundle()
args.putParcelable("song", song) args.putParcelable(EXTRA_SONG, song)
dialog.arguments = args dialog.arguments = args
return dialog return dialog
} }

View file

@ -84,7 +84,7 @@ public class PlaylistsUtil {
return id; return id;
} }
public static void deletePlaylists(@NonNull final Context context, @NonNull final ArrayList<Playlist> playlists) { public static void deletePlaylists(@NonNull final Context context, @NonNull final List<Playlist> playlists) {
final StringBuilder selection = new StringBuilder(); final StringBuilder selection = new StringBuilder();
selection.append(MediaStore.Audio.Playlists._ID + " IN ("); selection.append(MediaStore.Audio.Playlists._ID + " IN (");
for (int i = 0; i < playlists.size(); i++) { for (int i = 0; i < playlists.size(); i++) {

View file

@ -9,16 +9,16 @@
android:id="@+id/timerDisplay" android:id="@+id/timerDisplay"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_marginStart="8dp"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp"
android:textAppearance="@style/TextViewHeadline6" /> android:textAppearance="@style/TextViewHeadline6" />
<androidx.appcompat.widget.AppCompatSeekBar <androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekBar" android:id="@+id/seekBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="3dp" android:maxHeight="3dp"
android:paddingTop="12dp"
android:splitTrack="false" android:splitTrack="false"
tools:progress="20" /> tools:progress="20" />
@ -26,7 +26,9 @@
android:id="@+id/shouldFinishLastSong" android:id="@+id/shouldFinishLastSong"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/finish_last_song" android:text="@string/finish_last_song"
android:textAppearance="@style/TextViewSubtitle1" /> android:textAppearance="@style/TextViewSubtitle1" />