diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index 64213d65f39dd15677361015d4c99e6c8d5e7b50..c35b0179de3d615cb69fc55c8038aa15a5432bf8 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -2,6 +2,7 @@ #include "PropertyModel.hh" #include "DocumentViews/AudioVisualizer.hh" #include "DocumentViews/AssLinesView.hh" +#include "DocumentViews/AssLinesModel.hh" #include "../VivyApplication.hh" #include "../Lib/Document/VivyDocument.hh" @@ -9,6 +10,8 @@ #include <QTreeView> #include <QVBoxLayout> #include <QTableView> +#include <QWidget> +#include <QDockWidget> using namespace Vivy; @@ -75,22 +78,24 @@ VivyDocumentView::getDocumentTabToolTip() const noexcept void VivyDocumentView::loadVideoView() noexcept { + if (document->checkDocumentCapabilities(VivyDocument::Capabilities::VideoAble)) { + } } void VivyDocumentView::loadAssView() noexcept { - if (assLines) - delDockWidget(&assLines); - if (document->checkDocumentCapabilities(VivyDocument::Capabilities::AssAble)) { + if (!assLines) { + assLines = new QDockWidget("ASS Lines", this); + assLines->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); + assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | + Qt::BottomDockWidgetArea); + addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical); + } + assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines())); - assLines = new QDockWidget("ASS Lines", this); assLines->setWidget(new AssLinesView(assModel.get(), assLines)); - assLines->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); - assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | - Qt::BottomDockWidgetArea); - addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical); } } @@ -108,9 +113,16 @@ VivyDocumentView::loadAudioView() noexcept return; } - if (visualizer) - delDockWidget(&visualizer); - visualizer = new QDockWidget("Visualizer", this); + if (!visualizer) { + visualizer = new QDockWidget("Visualizer", this); + + visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); + visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | + Qt::BottomDockWidgetArea); + visualizer->setFeatures(QDockWidget::DockWidgetMovable | + QDockWidget::DockWidgetClosable); + addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal); + } AudioVisualizer *visualizerInner = new AudioVisualizer(stream, visualizer); if (visualizerInner == nullptr) { @@ -118,13 +130,8 @@ VivyDocumentView::loadAudioView() noexcept return; } - visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); visualizer->setWidget(visualizerInner); - visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | - Qt::BottomDockWidgetArea); - visualizer->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop); - addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal); } else { @@ -155,16 +162,17 @@ VivyDocumentView::getDocumentTabIcon() const noexcept void VivyDocumentView::openProperties() noexcept { - if (property) - delDockWidget(&property); - propertyModel.reset(new PropertyModel(*document.get())); - property = new QDockWidget("Properties", this); QTreeView *view = new QTreeView(property); view->setModel(propertyModel.get()); view->header()->setSectionResizeMode(QHeaderView::ResizeToContents); view->expandAll(); + + if (!property) { + property = new QDockWidget("Properties", this); + property->setAllowedAreas(Qt::AllDockWidgetAreas); + addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical); + } + property->setWidget(view); - property->setAllowedAreas(Qt::AllDockWidgetAreas); - addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical); } diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index 56c54a493826fe4bbe4447c65c5b75a05a34b11a..13d802cc73d4b52d747e38eea819204439ab8dbf 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -5,17 +5,17 @@ #error "This is a C++ header" #endif -#include "../Lib/Document/VivyDocument.hh" -#include "DocumentViews/AudioVisualizer.hh" -#include "DocumentViews/AssLinesModel.hh" #include "AbstractDocumentView.hh" -#include "PropertyModel.hh" -#include <QWidget> -#include <QDockWidget> +class QDockWidget; +class QWidget; namespace Vivy { +class PropertyModel; +class AssLinesModel; +class VivyDocument; + class VivyDocumentView final : public AbstractDocumentView { Q_OBJECT VIVY_UNMOVABLE_OBJECT(VivyDocumentView) @@ -45,6 +45,7 @@ private: QDockWidget *visualizer{ nullptr }; QDockWidget *property{ nullptr }; QDockWidget *assLines{ nullptr }; + QDockWidget *videoView{ nullptr }; }; }