diff options
Diffstat (limited to 'videoviewer.cpp')
-rw-r--r-- | videoviewer.cpp | 54 |
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(); +} |