Skip to content
Snippets Groups Projects
Commit 02bc476e authored by Nicolas Pomepuy's avatar Nicolas Pomepuy
Browse files

Add a play queue time indicator "Ends at" mode

Fixes #1610
parent f14dfa14
Branches master
No related tags found
No related merge requests found
......@@ -714,6 +714,7 @@
<string name="subtitle_delay_end">Text seen</string>
<string name="track_index">Track: %s</string>
<string name="audio_queue_progress">Progress: %s</string>
<string name="audio_queue_progress_finished">Ends at: %s</string>
<string name="sortby_track">Track</string>
<string name="this_folder">Add this folder</string>
<string name="all_subfolders">Add this folder and subfolders</string>
......
......@@ -101,6 +101,7 @@ const val RESUME_PLAYBACK = "resume_playback"
const val AUDIO_DUCKING = "audio_ducking"
const val AUDIO_DELAY_GLOBAL = "audio_delay_global"
const val AUDIO_PLAY_PROGRESS_MODE = "audio_play_progress_mode"
class DeviceInfo(context: Context) {
val pm = context.packageManager
......
......@@ -30,6 +30,7 @@ import android.os.Vibrator
import android.support.v4.media.session.PlaybackStateCompat
import android.text.Editable
import android.text.TextWatcher
import android.text.format.DateFormat
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
......@@ -76,6 +77,7 @@ import org.videolan.vlc.util.launchWhenStarted
import org.videolan.vlc.util.share
import org.videolan.vlc.viewmodels.PlaybackProgress
import org.videolan.vlc.viewmodels.PlaylistModel
import java.util.*
private const val TAG = "VLC/AudioPlayer"
private const val SEARCH_TIMEOUT_MILLIS = 10000L
......@@ -101,6 +103,7 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
private lateinit var playToPauseSmall: AnimatedVectorDrawableCompat
private lateinit var abRepeatAddMarker: Button
private var audioPlayProgressMode:Boolean = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -179,6 +182,12 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
playlistModel.service?.playlistManager?.setABRepeatValue(binding.timeline.progress.toLong())
}
audioPlayProgressMode = Settings.getInstance(requireActivity()).getBoolean(AUDIO_PLAY_PROGRESS_MODE, false)
binding.audioPlayProgress.setOnClickListener {
audioPlayProgressMode = !audioPlayProgressMode
Settings.getInstance(requireActivity()).putSingle(AUDIO_PLAY_PROGRESS_MODE, audioPlayProgressMode)
playlistModel.progress.value?.let { updateProgress(it) }
}
}
......@@ -321,11 +330,14 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
if (playlistModel.currentMediaPosition == -1) return@withContext ""
val elapsedTracksTime = playlistModel.previousTotalTime ?: return@withContext ""
val totalTime = elapsedTracksTime + progress.time
val totalTimeText = Tools.millisToString(totalTime, true, false, false)
val totalTimeText = Tools.millisToString(totalTime, true, true, false)
val currentProgressText = if (totalTimeText.isNullOrEmpty()) "0s" else totalTimeText
val textTrack = getString(R.string.track_index, "${playlistModel.currentMediaPosition + 1} / ${medias.size}")
val textProgress = getString(R.string.audio_queue_progress,
val textProgress = if (audioPlayProgressMode)
getString(R.string.audio_queue_progress_finished,DateFormat.getTimeFormat(requireContext()).format(Date(System.currentTimeMillis() + playlistModel.getTotalTime() - totalTime)))
else
getString(R.string.audio_queue_progress,
if (playlistModel.totalTime.isNullOrEmpty()) "$currentProgressText" else "$currentProgressText / ${playlistModel.totalTime}")
"$textTrack • $textProgress"
}
......
......@@ -242,6 +242,13 @@ class PlaylistModel : ViewModel(), PlaybackService.Callback by EmptyPBSCallback
totalTime = Tools.millisToString(totalLength, true, false, false)
}
fun getTotalTime():Long {
val mediaList = medias ?: return 0L
return mediaList.asSequence()
.map { it.length }
.sum()
}
companion object {
fun get(fragment: Fragment) = ViewModelProviders.of(fragment.requireActivity()).get(PlaylistModel::class.java)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment