package org.fossify.musicplayer.helpers import org.fossify.commons.activities.BaseSimpleActivity import org.fossify.commons.extensions.showErrorToast import org.fossify.commons.extensions.toast import org.fossify.commons.extensions.writeLn import org.fossify.musicplayer.models.Track import java.io.OutputStream class M3uExporter(val activity: BaseSimpleActivity) { var failedEvents = 0 var exportedEvents = 0 enum class ExportResult { EXPORT_FAIL, EXPORT_OK, EXPORT_PARTIAL } fun exportPlaylist( outputStream: OutputStream?, tracks: ArrayList, callback: (result: ExportResult) -> Unit ) { if (outputStream == null) { callback(ExportResult.EXPORT_FAIL) return } activity.toast(org.fossify.commons.R.string.exporting) try { outputStream.bufferedWriter().use { out -> out.writeLn(M3U_HEADER) for (track in tracks) { out.writeLn(M3U_ENTRY + track.duration + M3U_DURATION_SEPARATOR + track.artist + " - " + track.title) out.writeLn(track.path) exportedEvents++ } } } catch (e: Exception) { failedEvents++ activity.showErrorToast(e) } finally { outputStream.close() } callback( when { exportedEvents == 0 -> ExportResult.EXPORT_FAIL failedEvents > 0 -> ExportResult.EXPORT_PARTIAL else -> ExportResult.EXPORT_OK } ) } }