/* 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 #include #include #include #include #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(); }