From 52105e521720c87e64dbd2519be7bbe5dc243439 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Sun, 14 Apr 2019 16:19:23 +0200 Subject: Write dive data as video subtitles This commit adds an entry to the dive media context menu which offers to write a subtitle file. This creates an .ass file for the selected videos. In an attempt to to clutter the screen too much, don't show irrelevant entries (zero temperature or NDL and show TTS only for dives with stops). VLC is able to show these subtitles directly, they can be integrated into the video file with ffmpeg. Signed-off-by: Robert C. Helling --- qt-models/divepicturemodel.cpp | 11 +++++++++-- qt-models/divepicturemodel.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'qt-models') diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index babd404f5..8156693ef 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -59,7 +59,7 @@ void DivePictureModel::updateDivePictures() if (dive->selected) { int first = pictures.count(); FOR_EACH_PICTURE(dive) - pictures.push_back({ dive->id, picture, picture->filename, {}, picture->offset.seconds }); + pictures.push_back({ dive->id, picture, picture->filename, {}, picture->offset.seconds, {.seconds = 0}}); // Sort pictures of this dive by offset. // Thus, the list will be sorted by (diveId, offset). @@ -101,6 +101,11 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const case Qt::UserRole: ret = entry.diveId; break; + case Qt::UserRole + 1: + ret = entry.offsetSeconds; + break; + case Qt::UserRole + 2: + ret = entry.length.seconds; } } else if (index.column() == 1) { switch (role) { @@ -197,8 +202,10 @@ void DivePictureModel::updateThumbnail(QString filename, QImage thumbnail, durat { int i = findPictureId(filename); if (i >= 0) { - if (duration.seconds > 0) + if (duration.seconds > 0) { addDurationToThumbnail(thumbnail, duration); // If we know the duration paint it on top of the thumbnail + pictures[i].length = duration; + } pictures[i].image = thumbnail; emit dataChanged(createIndex(i, 0), createIndex(i, 1)); } diff --git a/qt-models/divepicturemodel.h b/qt-models/divepicturemodel.h index 6c9384c62..4e25db687 100644 --- a/qt-models/divepicturemodel.h +++ b/qt-models/divepicturemodel.h @@ -14,6 +14,7 @@ struct PictureEntry { QString filename; QImage image; int offsetSeconds; + duration_t length; }; class DivePictureModel : public QAbstractTableModel { -- cgit v1.2.3-70-g09d2