#include "clip_list.h"
#include "disk_space_estimator.h"
+#include "flags.h"
#include "player.h"
#include "post_to_main_thread.h"
#include "timebase.h"
MainWindow::MainWindow()
: ui(new Ui::MainWindow),
- db("futatabi.db")
+ db(global_flags.working_directory + "/futatabi.db")
{
global_mainwindow = this;
ui->setupUi(this);
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);
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)
int row = destination->rowAt(wheel->y());
if (column == -1 || row == -1) return false;
+ // Only adjust pts with the wheel if the given row is selected.
+ if (!destination->hasFocus() ||
+ row != destination->selectionModel()->currentIndex().row()) {
+ return false;
+ }
+
currently_deferring_model_changes = true;
{
current_change_id = (watched == ui->clip_list->viewport()) ? "cliplist:" : "playlist:";
}
}
currently_deferring_model_changes = false;
+ return true; // Don't scroll.
} else if (event->type() == QEvent::MouseButtonRelease) {
scrubbing = false;
}
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 &)