From 835688cd5c9abc007904f5a3e6b381d9f5b6016b Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 14 Oct 2018 20:03:32 +0200 Subject: [PATCH] Show how much would be queued before pressing play. --- mainwindow.cpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 2fb897b..5598942 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -360,6 +360,21 @@ Clip MainWindow::live_player_get_next_clip() return clip.get(); } +static string format_duration(double t) +{ + int t_ms = lrint(t * 1e3); + + int ms = t_ms % 1000; + t_ms /= 1000; + int s = t_ms % 60; + t_ms /= 60; + int m = t_ms; + + char buf[256]; + snprintf(buf, sizeof(buf), "%d:%02d.%03d", m, s, ms); + return buf; +} + void MainWindow::live_player_clip_progress(double played_this_clip, double total_length) { playlist_clips->set_currently_playing(playlist_clips->get_currently_playing(), played_this_clip / total_length); @@ -369,17 +384,7 @@ void MainWindow::live_player_clip_progress(double played_this_clip, double total const Clip clip = *playlist_clips->clip(row); remaining += double(clip.pts_out - clip.pts_in) / TIMEBASE / 0.5; // FIXME: stop hardcoding speed. } - int remaining_ms = lrint(remaining * 1e3); - - int ms = remaining_ms % 1000; - remaining_ms /= 1000; - int s = remaining_ms % 60; - remaining_ms /= 60; - int m = remaining_ms; - - char buf[256]; - snprintf(buf, sizeof(buf), "%d:%02d.%03d left", m, s, ms); - set_output_status(buf); + set_output_status(format_duration(remaining) + " left"); } void MainWindow::resizeEvent(QResizeEvent *event) @@ -632,6 +637,17 @@ void MainWindow::playlist_selection_changed() ui->playlist_move_down_btn->setEnabled( any_selected && selected->selectedRows().back().row() < int(playlist_clips->size()) - 1); ui->play_btn->setEnabled(!playlist_clips->empty()); + + if (!any_selected) { + set_output_status("paused"); + } else { + double remaining = 0.0; + for (int row = selected->selectedRows().front().row(); row < int(playlist_clips->size()); ++row) { + const Clip clip = *playlist_clips->clip(row); + remaining += double(clip.pts_out - clip.pts_in) / TIMEBASE / 0.5; // FIXME: stop hardcoding speed. + } + set_output_status(format_duration(remaining) + " ready"); + } } void MainWindow::clip_list_selection_changed(const QModelIndex ¤t, const QModelIndex &) -- 2.39.2