diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc index 326f8c2bdfae10857279de32a68d9c9c182b3eb0..24e95974a2715301764beb45f3700ff1f5cf6034 100644 --- a/src/UI/DocumentViews/MpvContainer.cc +++ b/src/UI/DocumentViews/MpvContainer.cc @@ -179,6 +179,9 @@ MpvContainer::onMpvEvent() noexcept void MpvContainer::loadFile(const QString &filename) noexcept { + if (filename.isEmpty()) + return; + const QByteArray c_filename = filename.toUtf8(); const char *args[] = { "loadfile", c_filename.data(), nullptr }; printMpvError(mpv_command_async(mpv, 0, args)); diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index c35b0179de3d615cb69fc55c8038aa15a5432bf8..31d659a18521f6642c15dcfaa577ccaa81ceb28e 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -78,7 +78,19 @@ VivyDocumentView::getDocumentTabToolTip() const noexcept void VivyDocumentView::loadVideoView() noexcept { - if (document->checkDocumentCapabilities(VivyDocument::Capabilities::VideoAble)) { + if (document->checkDocumentCapabilities(VivyDocument::Capabilities::VideoAble) && + (!videoView)) { + if (!videoView) { + videoView = new QDockWidget("Video View", this); + videoView->setFeatures(QDockWidget::DockWidgetMovable | + QDockWidget::DockWidgetFloatable); + videoView->setAllowedAreas(Qt::AllDockWidgetAreas); + videoView->setWidget(new VideoView(videoView)); + addDockWidget(Qt::BottomDockWidgetArea, videoView, Qt::Vertical); + } + + qobject_cast<VideoView *>(videoView->widget()) + ->loadFile(document->getVideoSubDocument()->getFilePath()); } } diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index 13d802cc73d4b52d747e38eea819204439ab8dbf..4cdcc8efc8d9cd6d1a68be9c0627b68f410f82ab 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -15,6 +15,7 @@ namespace Vivy class PropertyModel; class AssLinesModel; class VivyDocument; +class VideoView; class VivyDocumentView final : public AbstractDocumentView { Q_OBJECT