#include <stdio.h>
-CaptureWinGL::CaptureWinGL()
+CaptureWinGL::CaptureWinGL(ApplicationWindow *aw) :
+ CaptureWin(aw)
{
#ifdef HAVE_QTGL
CaptureWin::buildWindow(&m_videoSurface);
class CaptureWinGL : public CaptureWin
{
public:
- CaptureWinGL();
+ CaptureWinGL(ApplicationWindow *aw);
~CaptureWinGL();
void stop();
#include "capture-win-qt.h"
-CaptureWinQt::CaptureWinQt() :
+CaptureWinQt::CaptureWinQt(ApplicationWindow *aw) :
+ CaptureWin(aw),
m_image(new QImage(0, 0, QImage::Format_Invalid)),
m_data(NULL),
m_supportedFormat(false),
class CaptureWinQt : public CaptureWin
{
public:
- CaptureWinQt();
+ CaptureWinQt(ApplicationWindow *aw);
~CaptureWinQt();
void stop();
double CaptureWin::m_pixelAspectRatio = 1.0;
CropMethod CaptureWin::m_cropMethod = QV4L2_CROP_NONE;
-CaptureWin::CaptureWin()
+CaptureWin::CaptureWin(ApplicationWindow *aw) :
+ appWin(aw)
{
setWindowTitle("V4L2 Capture");
m_hotkeyClose = new QShortcut(Qt::CTRL+Qt::Key_W, this);
connect(m_hotkeyExitFullscreen, SIGNAL(activated()), this, SLOT(escape()));
m_hotkeyToggleFullscreen = new QShortcut(Qt::Key_F, this);
connect(m_hotkeyToggleFullscreen, SIGNAL(activated()), this, SLOT(fullScreen()));
+ m_exitFullScreen = new QAction(QIcon(":/fullscreenexit.png"), "Exit Fullscreen", this);
+ m_exitFullScreen->setShortcut(Qt::Key_Escape);
+ connect(m_exitFullScreen, SIGNAL(triggered()), this, SLOT(escape()));
+ m_enterFullScreen = new QAction(QIcon(":/fullscreen.png"), "Show Fullscreen", this);
+ m_enterFullScreen->setShortcut(Qt::Key_F);
+ connect(m_enterFullScreen, SIGNAL(triggered()), this, SLOT(fullScreen()));
m_frame.format = 0;
m_frame.size.setWidth(0);
m_frame.size.setHeight(0);
vbox->addWidget(bottom, 0, Qt::AlignBottom);
vbox->getContentsMargins(&l, &t, &r, &b);
vbox->setSpacing(t+b);
+
+ setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(this, SIGNAL(customContextMenuRequested(QPoint)), SLOT(customMenuRequested(QPoint)));
}
void CaptureWin::resetSize()
}
}
+void CaptureWin::customMenuRequested(QPoint pos)
+{
+ QMenu *menu=new QMenu(this);
+
+ if (isFullScreen()) {
+ menu->addAction(m_exitFullScreen);
+ menu->setStyleSheet("background-color:none;");
+ } else {
+ menu->addAction(m_enterFullScreen);
+ }
+
+ menu->addAction(appWin->m_resetScalingAct);
+ menu->addAction(appWin->m_useBlendingAct);
+ menu->addAction(appWin->m_snapshotAct);
+ menu->addAction(appWin->m_showFramesAct);
+
+ menu->popup(mapToGlobal(pos));
+}
+
void CaptureWin::closeEvent(QCloseEvent *event)
{
QWidget::closeEvent(event);
#include <QShortcut>
#include <QLabel>
#include <QPushButton>
+#include <QMenu>
enum CropMethod {
// Crop Height
bool updated;
};
+class ApplicationWindow;
class CaptureWin : public QWidget
{
Q_OBJECT
public:
- CaptureWin();
+ CaptureWin(ApplicationWindow *aw);
~CaptureWin();
void setWindowSize(QSize size);
virtual void setBlending(bool enable) = 0;
void setCropMethod(CropMethod crop);
void toggleFullScreen();
+ QAction *m_exitFullScreen;
+ QAction *m_enterFullScreen;
/**
* @brief Set a frame into the capture window.
public slots:
void resetSize();
+ void customMenuRequested(QPoint pos);
private slots:
void fullScreen();
void close();
private:
+ ApplicationWindow *appWin;
static double m_pixelAspectRatio;
static CropMethod m_cropMethod;
QShortcut *m_hotkeyClose;
switch (m_renderMethod) {
case QV4L2_RENDER_GL:
- m_capture = new CaptureWinGL;
+ m_capture = new CaptureWinGL(this);
break;
default:
- m_capture = new CaptureWinQt;
+ m_capture = new CaptureWinQt(this);
break;
}
void updateColorspace();
void updateDisplayColorspace();
void clearBuffers();
-
void about();
public:
void errorCtrl(unsigned id, int err, const QString &v);
void info(const QString &info);
virtual void closeEvent(QCloseEvent *event);
+ QAction *m_resetScalingAct;
+ QAction *m_useBlendingAct;
+ QAction *m_snapshotAct;
+ QAction *m_showFramesAct;
private:
void addWidget(QGridLayout *grid, QWidget *w, Qt::Alignment align = Qt::AlignLeft);
GeneralTab *m_genTab;
VbiTab *m_vbiTab;
QAction *m_capStartAct;
- QAction *m_snapshotAct;
QAction *m_saveRawAct;
- QAction *m_showFramesAct;
QAction *m_useGLAct;
- QAction *m_useBlendingAct;
QAction *m_showAllAudioAct;
QAction *m_audioBufferAct;
QAction *m_scalingAct;
- QAction *m_resetScalingAct;
QString m_filename;
QSignalMapper *m_sigMapper;
QTabWidget *m_tabs;
<file>video-television.png</file>
<file>qv4l2.png</file>
<file>enterbutt.png</file>
+ <file>fullscreen.png</file>
+ <file>fullscreenexit.png</file>
</qresource>
</RCC>