blob: b94790a205eda5f252415e3a0d5acd6a29b7abbd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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();
}
|