summaryrefslogtreecommitdiffstats
path: root/videoviewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'videoviewer.cpp')
-rw-r--r--videoviewer.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/videoviewer.cpp b/videoviewer.cpp
new file mode 100644
index 0000000..5430e9f
--- /dev/null
+++ b/videoviewer.cpp
@@ -0,0 +1,54 @@
+/*
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version
+ 2 of the License, or (at your option) any later version.
+*/
+
+#include <QMediaPlayer>
+#include <QMediaPlaylist>
+#include <QKeyEvent>
+#include <QCloseEvent>
+
+#include "videoviewer.h"
+#include "smglobals.h"
+
+VideoViewer::VideoViewer(QWidget *parent) : QVideoWidget(parent) {
+ mPlayer = new QMediaPlayer(this);
+ mPlayer->setVideoOutput(this);
+ QMediaPlaylist *playList = new QMediaPlaylist;
+ mPlayer->setPlaylist(playList);
+ SmGlobals::instance()->addGlobalWidget(this);
+}
+
+void VideoViewer::keyPressEvent(QKeyEvent *e){
+ int keyNum = e->key();
+ if(keyNum == Qt::Key_Q){
+ close();
+ }else if(keyNum == Qt::Key_F){
+ setFullScreen(isFullScreen() ? false : true);
+ }else if(keyNum == Qt::Key_Right){
+ mPlayer->setPosition(mPlayer->position() + 5000);
+ }else if(keyNum == Qt::Key_Left){
+ qint64 pos = mPlayer->position();
+ mPlayer->setPosition(pos - 5000 < 0 ? 0 : pos - 5000);
+ }else if(keyNum == Qt::Key_Up){
+ mPlayer->setPosition(mPlayer->position() + 60000);
+ }else if(keyNum == Qt::Key_Down){
+ qint64 pos = mPlayer->position();
+ mPlayer->setPosition(pos - 60000 < 0 ? 0 : pos - 60000);
+ }else if(keyNum == Qt::Key_N){
+ mPlayer->playlist()->next();
+ }else if(keyNum == Qt::Key_P){
+ mPlayer->playlist()->previous();
+ }else if(keyNum == Qt::Key_M){
+ mPlayer->setMuted(mPlayer->isMuted() ? false : true);
+ }
+}
+
+void VideoViewer::closeEvent(QCloseEvent *e){
+ mPlayer->stop();
+ SmGlobals::instance()->removeGlobalWidget(this);
+ deleteLater();
+ e->accept();
+}