mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Dive media: put duration on video thumbnails
On the profile, the run-length of the videos is visualized by a bar. Add the same information to video-thumbnails in the dive-photo-tab. Though in this case, render it as text on top of the thumbnails. Fixes #359 Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
fce42d4858
commit
a76433279e
1 changed files with 31 additions and 1 deletions
|
@ -7,6 +7,7 @@
|
||||||
#include "core/qthelper.h"
|
#include "core/qthelper.h"
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
DivePictureModel *DivePictureModel::instance()
|
DivePictureModel *DivePictureModel::instance()
|
||||||
{
|
{
|
||||||
|
@ -165,10 +166,39 @@ int DivePictureModel::findPictureId(const QString &filename)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivePictureModel::updateThumbnail(QString filename, QImage thumbnail, duration_t)
|
static void addDurationToThumbnail(QImage &img, duration_t duration)
|
||||||
|
{
|
||||||
|
int seconds = duration.seconds;
|
||||||
|
if (seconds < 0)
|
||||||
|
return;
|
||||||
|
QString s = seconds >= 3600 ?
|
||||||
|
QStringLiteral("%1:%2:%3").arg(seconds / 3600, 2, 10, QChar('0'))
|
||||||
|
.arg((seconds % 3600) / 60, 2, 10, QChar('0'))
|
||||||
|
.arg(seconds % 60, 2, 10, QChar('0')) :
|
||||||
|
QStringLiteral("%1:%2").arg(seconds / 60, 2, 10, QChar('0'))
|
||||||
|
.arg(seconds % 60, 2, 10, QChar('0'));
|
||||||
|
|
||||||
|
QFont font(system_divelist_default_font, 30);
|
||||||
|
QFontMetrics metrics(font);
|
||||||
|
QSize size = metrics.size(Qt::TextSingleLine, s);
|
||||||
|
QSize imgSize = img.size();
|
||||||
|
int x = imgSize.width() - size.width();
|
||||||
|
int y = imgSize.height() - size.height() + metrics.descent();
|
||||||
|
QPainter painter(&img);
|
||||||
|
painter.setBrush(Qt::white);
|
||||||
|
painter.setPen(Qt::NoPen);
|
||||||
|
painter.drawRect(x, y, size.width(), size.height() - metrics.descent());
|
||||||
|
painter.setFont(font);
|
||||||
|
painter.setPen(Qt::black);
|
||||||
|
painter.drawText(x, imgSize.height(), s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DivePictureModel::updateThumbnail(QString filename, QImage thumbnail, duration_t duration)
|
||||||
{
|
{
|
||||||
int i = findPictureId(filename);
|
int i = findPictureId(filename);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
|
if (duration.seconds > 0)
|
||||||
|
addDurationToThumbnail(thumbnail, duration); // If we know the duration paint it on top of the thumbnail
|
||||||
pictures[i].image = thumbnail;
|
pictures[i].image = thumbnail;
|
||||||
emit dataChanged(createIndex(i, 0), createIndex(i, 1));
|
emit dataChanged(createIndex(i, 0), createIndex(i, 1));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue