summaryrefslogtreecommitdiffstats
path: root/videoviewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'videoviewer.cpp')
-rw-r--r--videoviewer.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/videoviewer.cpp b/videoviewer.cpp
new file mode 100644
index 0000000..b94790a
--- /dev/null
+++ b/videoviewer.cpp
@@ -0,0 +1,81 @@
+/*
+ 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 <QSettings>
+
+#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);
+ readSettings();
+}
+
+void VideoViewer::readSettings(){
+ QSettings s;
+ QRect winSize = s.value("vw/size").toRect();
+ setGeometry(winSize);
+ bool fullScreen = s.value("vw/fullscreen").toBool();
+ setFullScreen(fullScreen);
+}
+
+void VideoViewer::writeSettings(){
+ QSettings s;
+ s.setValue("vw/size", geometry());
+ s.setValue("vw/fullscreen", isFullScreen());
+}
+
+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){
+ int mediaCount = mPlayer->playlist()->mediaCount();
+ int nextIndex = mPlayer->playlist()->currentIndex() + 1;
+ if(nextIndex >= mediaCount){
+ nextIndex = 0;
+ }
+ mPlayer->playlist()->setCurrentIndex(nextIndex);
+ }else if(keyNum == Qt::Key_P){
+ int mediaCount = mPlayer->playlist()->mediaCount();
+ int prevIndex = mPlayer->playlist()->currentIndex() - 1;
+ if(prevIndex < 0){
+ prevIndex = mediaCount - 1;
+ }
+ mPlayer->playlist()->setCurrentIndex(prevIndex);
+ }else if(keyNum == Qt::Key_M){
+ mPlayer->setMuted(mPlayer->isMuted() ? false : true);
+ }
+}
+
+void VideoViewer::closeEvent(QCloseEvent *e){
+ mPlayer->stop();
+ writeSettings();
+ SmGlobals::instance()->removeGlobalWidget(this);
+ deleteLater();
+ e->accept();
+}