Add save playlist 💾

This commit is contained in:
Hemanth S 2020-09-06 00:21:44 +05:30
parent 41e8aa8a03
commit 6e8ff6ab71
7 changed files with 105 additions and 60 deletions

View file

@ -13,7 +13,10 @@
*/
package code.name.monkey.retromusic.helper
import code.name.monkey.retromusic.db.PlaylistWithSongs
import code.name.monkey.retromusic.db.toSongs
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.model.Song
import java.io.BufferedWriter
import java.io.File
import java.io.FileWriter
@ -42,4 +45,25 @@ object M3UWriter : M3UConstants {
}
return file
}
@JvmStatic
@Throws(IOException::class)
fun writeIO(dir: File, playlistWithSongs: PlaylistWithSongs): File {
if (!dir.exists()) dir.mkdirs()
val fileName = "${playlistWithSongs.playlistEntity.playlistName}.${M3UConstants.EXTENSION}"
val file = File(dir, fileName)
val songs: List<Song> = playlistWithSongs.songs.toSongs()
if (songs.isNotEmpty()) {
val bufferedWriter = BufferedWriter(FileWriter(file))
bufferedWriter.write(M3UConstants.HEADER)
songs.forEach {
bufferedWriter.newLine()
bufferedWriter.write(M3UConstants.ENTRY + it.duration + M3UConstants.DURATION_SEPARATOR + it.artistName + " - " + it.title)
bufferedWriter.newLine()
bufferedWriter.write(it.data)
}
bufferedWriter.close()
}
return file
}
}

View file

@ -15,24 +15,17 @@
package code.name.monkey.retromusic.helper.menu
import android.content.Context
import android.view.MenuItem
import android.widget.Toast
import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.db.PlaylistWithSongs
import code.name.monkey.retromusic.db.toSongs
import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog
import code.name.monkey.retromusic.dialogs.DeletePlaylistDialog
import code.name.monkey.retromusic.dialogs.RenamePlaylistDialog
import code.name.monkey.retromusic.dialogs.SavePlaylistDialog
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.misc.WeakContextAsyncTask
import code.name.monkey.retromusic.model.AbsCustomPlaylist
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.repository.RealRepository
import code.name.monkey.retromusic.util.PlaylistsUtil
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -81,42 +74,11 @@ object PlaylistMenuHelper : KoinComponent {
return true
}
R.id.action_save_playlist -> {
//SavePlaylistAsyncTask(activity).execute(playlistWithSongs.songs.toSongs())
Toast.makeText(activity, "Coming soon", Toast.LENGTH_SHORT).show()
SavePlaylistDialog.create(playlistWithSongs)
.show(activity.supportFragmentManager, "SavePlaylist")
return true
}
}
return false
}
private fun getPlaylistSongs(
playlist: Playlist
): List<Song> {
return if (playlist is AbsCustomPlaylist) {
playlist.songs()
} else {
playlist.getSongs()
}
}
private class SavePlaylistAsyncTask(context: Context) :
WeakContextAsyncTask<Playlist, String, String>(context) {
override fun doInBackground(vararg params: Playlist): String {
return String.format(
App.getContext().getString(
R.string
.saved_playlist_to
), PlaylistsUtil.savePlaylist(App.getContext(), params[0])
)
}
override fun onPostExecute(string: String) {
super.onPostExecute(string)
val context = context
if (context != null) {
Toast.makeText(context, string, Toast.LENGTH_LONG).show()
}
}
}
}