diff --git a/src/widgets/videomonitorwidget.h b/src/widgets/videomonitorwidget.h --- a/src/widgets/videomonitorwidget.h +++ b/src/widgets/videomonitorwidget.h @@ -27,7 +27,6 @@ public: explicit VideoMonitorWidget(QWidget *parent = nullptr); - ~VideoMonitorWidget(); private: QMediaPlayer _mediaplayer; diff --git a/src/widgets/videomonitorwidget.cpp b/src/widgets/videomonitorwidget.cpp --- a/src/widgets/videomonitorwidget.cpp +++ b/src/widgets/videomonitorwidget.cpp @@ -26,7 +26,7 @@ VideoMonitorWidget::VideoMonitorWidget(QWidget *parent) : QWidget(parent), - _mediaplayer(nullptr, QMediaPlayer::VideoSurface) + _mediaplayer(nullptr, QMediaPlayer::StreamPlayback) { auto _layout = new QGridLayout(); auto _label = new QLabel(i18n("Source url:")); @@ -43,7 +43,7 @@ auto _playPB = new QPushButton(); _playPB->setCheckable(true); - _playPB->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); + _playPB->setIcon(QIcon::fromTheme("media-playback-start", style()->standardIcon(QStyle::SP_MediaPlay))); _layout->addWidget(_playPB, 0, 2); auto _videoWidget = new QVideoWidget(); @@ -55,38 +55,35 @@ this->setLayout(_layout); _mediaplayer.setVideoOutput(_videoWidget); - + #ifdef Q_OS_LINUX QStringList sources; sources << QString("video*"); _sourceCB->addItems(QDir("/dev/")\ .entryList(sources, QDir::System)\ .replaceInStrings( QRegExp("^"), "v4l2:///dev/")); #endif - - connect(_playPB, &QPushButton::clicked, [this, _playPB, _sourceCB](bool b){ + + connect(_playPB, &QPushButton::clicked, [this, _playPB, _sourceCB, _videoWidget](bool b){ if(b){ - _playPB->setIcon(style()->standardIcon(QStyle::SP_MediaPause)); - QString source = _sourceCB->currentText(); - _mediaplayer.setMedia(QUrl(source)); + if(_mediaplayer.state() != QMediaPlayer::PausedState) { + QString source = _sourceCB->currentText(); + _mediaplayer.setMedia(QUrl(source)); + } + _playPB->setIcon(QIcon::fromTheme("media-playback-pause", style()->standardIcon(QStyle::SP_MediaPause))); _mediaplayer.play(); }else{ _mediaplayer.pause(); - _playPB->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); + _playPB->setIcon(QIcon::fromTheme("media-playback-start", style()->standardIcon(QStyle::SP_MediaPlay))); } + _videoWidget->setVisible(b); }); typedef void (QMediaPlayer::*ErrorSignal)(QMediaPlayer::Error); connect(&_mediaplayer, static_cast(&QMediaPlayer::error), this, &VideoMonitorWidget::handleError); } - -VideoMonitorWidget::~VideoMonitorWidget() -{ - -} - void VideoMonitorWidget::handleError() { const QString errorString = _mediaplayer.errorString();