diff options
author | Weblate <noreply@weblate.org> | 2017-08-07 15:58:22 +0000 |
---|---|---|
committer | Weblate <noreply@weblate.org> | 2017-08-07 15:58:22 +0000 |
commit | 1a320d85b86593fb7716eea493df39e339bbae77 (patch) | |
tree | 33a44e00ac33f4c0d558e40e173472cb7ada624f /src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h | |
parent | Translated using Weblate (French) (diff) | |
parent | Translated using Weblate (Catalan) (diff) | |
download | lumina-1a320d85b86593fb7716eea493df39e339bbae77.tar.gz lumina-1a320d85b86593fb7716eea493df39e339bbae77.tar.bz2 lumina-1a320d85b86593fb7716eea493df39e339bbae77.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h')
-rw-r--r-- | src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h new file mode 100644 index 00000000..fdddaf93 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h @@ -0,0 +1,102 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_VIDEOSLIDESHOW_ANIMATION_H +#define _LUMINA_DESKTOP_SCREEN_SAVER_VIDEOSLIDESHOW_ANIMATION_H + +#include "global-includes.h" +#include "BaseAnimGroup.h" + +class VideoSlideshow: public QPropertyAnimation{ + Q_OBJECT +public: + VideoSlideshow(QWidget *parent, QVideoWidget *videoWidget) : QPropertyAnimation(videoWidget, "pos", parent){ + this->setKeyValueAt(0,QPoint(0,0)); + this->setKeyValueAt(1,QPoint(0,0)); + } + ~VideoSlideshow(){} + +}; + +class VideoAnimation: public BaseAnimGroup{ + Q_OBJECT +private: + QString videoPath; + VideoSlideshow *tmp; + QVideoWidget *videoWidget; + QMediaPlayer *video; + QStringList videoFiles; + QMediaPlaylist *playlist; + bool multimonitor, random; + +private slots: + void startVideo() { + this->addAnimation(tmp); + tmp->setDuration(video->duration()); + qDebug() << "Status: " << video->mediaStatus(); + video->setPlaylist(playlist); + video->setVolume(100); + video->play(); + } + + void LoopChanged(){ + qDebug() << "New Video"; + if(random) + playlist->setCurrentIndex(qrand() % videoFiles.size()); + else + playlist->setCurrentIndex(playlist->currentIndex()+1); + } + + void stopped(){qDebug() << "Video Stopped"; videoWidget->hide();} + +public: + VideoAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + + ~VideoAnimation(){ + this->stop(); + } + + void LoadAnimations(){ + canvas->setStyleSheet("background: black;"); + + //Load the path of the videos from the configuration file (default /usr/local/videos/) + videoPath = settings->value("videoSlideshow/path","/usr/local/videos/").toString(); + + //Set whether to copy videos on two monitors or play different videos + multimonitor = settings->value("videoSlideshow/multimonitor",true).toBool(); + + //Set whether to play random videos or in order + random = settings->value("videoSlideshow/random",false).toBool(); + + video = new QMediaPlayer(canvas, QMediaPlayer::VideoSurface); + videoWidget = new QVideoWidget(canvas); + + tmp = new VideoSlideshow(canvas, videoWidget); + + //Generate the list of files in the directory + videoFiles = QDir(videoPath).entryList(QDir::Files); + if(videoFiles.empty()) + qDebug() << "Current video file path has no files."; + + this->setLoopCount(videoFiles.size()); + + //Load a random initial video + playlist = new QMediaPlaylist(); + for(int i = 0; i < videoFiles.size(); i++) + playlist->addMedia(QUrl::fromLocalFile(videoFiles[i])); + if(random) + playlist->setCurrentIndex(qrand() % videoFiles.size()); + + video->setVideoOutput(videoWidget); + videoWidget->show(); + qDebug() << "VideoWidget Displayed"; + connect(video, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(startVideo())); + connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged()) ); + connect(this, SIGNAL(finished()), this, SLOT(stopped()) ); + } + +}; +#endif |