X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fmediaview.cpp;h=46eb8ead94571fd0d95036c2b01245daa086ff51;hb=ff6d1f7f087f40438952d4b4315a8875f23281cb;hp=e6343ab9b2c498507ff3973611047a040f157c1b;hpb=831ecf74b394df57cbc109014189906dc972a92d;p=minitube diff --git a/src/mediaview.cpp b/src/mediaview.cpp index e6343ab..46eb8ea 100644 --- a/src/mediaview.cpp +++ b/src/mediaview.cpp @@ -34,6 +34,7 @@ $END_LICENSE */ #include "videoarea.h" #ifdef APP_ACTIVATION #include "activation.h" +#include "activationview.h" #endif #ifdef APP_EXTRA #include "extra.h" @@ -132,7 +133,16 @@ void MediaView::initialize() { #ifdef APP_ACTIVATION demoTimer = new QTimer(this); demoTimer->setSingleShot(true); - connect(demoTimer, &QTimer::timeout, mainWindow, &MainWindow::showActivationView, + connect( + demoTimer, &QTimer::timeout, this, + [this] { + if (media->state() != Media::PlayingState) return; + media->pause(); + connect( + ActivationView::instance(), &ActivationView::done, media, + [this] { media->play(); }, Qt::UniqueConnection); + MainWindow::instance()->showActivationView(); + }, Qt::QueuedConnection); #endif @@ -153,6 +163,45 @@ void MediaView::initialize() { for (auto *name : videoActionNames) { currentVideoActions.append(mainWindow->getAction(name)); } + + for (int i = 0; i < 10; ++i) { + QAction *action = new QAction(QString()); + action->setShortcut(Qt::Key_0 + i); + action->setAutoRepeat(false); + connect(action, &QAction::triggered, this, [this, i] { + qint64 duration = media->duration(); + // dur : pos = 100 : i*10 + qint64 position = (duration * (i * 10)) / 100; + media->seek(position); + }); + addAction(action); + playingVideoActions << action; + } + + QAction *leftAction = new QAction(tr("Rewind %1 seconds").arg(10)); + leftAction->setShortcut(Qt::Key_Left); + leftAction->setAutoRepeat(false); + connect(leftAction, &QAction::triggered, this, [this] { + qint64 position = media->position(); + position -= 10000; + if (position < 0) position = 0; + media->seek(position); + }); + addAction(leftAction); + playingVideoActions << leftAction; + + QAction *rightAction = new QAction(tr("Fast forward %1 seconds").arg(10)); + rightAction->setShortcut(Qt::Key_Right); + rightAction->setAutoRepeat(false); + connect(rightAction, &QAction::triggered, this, [this] { + qint64 position = media->position(); + position += 10000; + qint64 duration = media->duration(); + if (position > duration) position = duration; + media->seek(position); + }); + addAction(rightAction); + playingVideoActions << rightAction; } void MediaView::setMedia(Media *media) { @@ -319,6 +368,10 @@ void MediaView::mediaStateChanged(Media::State state) { handleError(media->errorString()); } + bool enablePlayingVideoActions = state == Media::PlayingState || state == Media::PausedState; + for (QAction *action : qAsConst(playingVideoActions)) + action->setEnabled(enablePlayingVideoActions); + if (state == Media::PlayingState) { bool res = Idle::preventDisplaySleep(QString("%1 is playing").arg(Constants::NAME)); if (!res) qWarning() << "Error disabling idle display sleep" << Idle::displayErrorMessage(); @@ -497,8 +550,8 @@ void MediaView::gotStreamUrl(const QString &streamUrl, const QString &audioUrl) } #ifdef APP_ACTIVATION - if (!Activation::instance().isActivated() && !demoTimer->isActive()) { - int ms = (60000 * 5) + (qrand() % (60000 * 5)); + if (!demoTimer->isActive() && !Activation::instance().isActivated()) { + int ms = (60000 * 2) + (QRandomGenerator::global()->generate() % (60000 * 2)); demoTimer->start(ms); } #endif