Skip to content
Extraits de code Groupes Projets
Vérifiée Valider ddf975b1 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

UI: Don't delete dock widget in VivyDocumentView

If the dock already exists in the VivyDocumentView, only recreate the
contained widget to preserve the dock position and size.
parent afe4bdf4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!15Video playback with mpv
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "PropertyModel.hh" #include "PropertyModel.hh"
#include "DocumentViews/AudioVisualizer.hh" #include "DocumentViews/AudioVisualizer.hh"
#include "DocumentViews/AssLinesView.hh" #include "DocumentViews/AssLinesView.hh"
#include "DocumentViews/AssLinesModel.hh"
#include "../VivyApplication.hh" #include "../VivyApplication.hh"
#include "../Lib/Document/VivyDocument.hh" #include "../Lib/Document/VivyDocument.hh"
...@@ -9,6 +10,8 @@ ...@@ -9,6 +10,8 @@
#include <QTreeView> #include <QTreeView>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QTableView> #include <QTableView>
#include <QWidget>
#include <QDockWidget>
using namespace Vivy; using namespace Vivy;
...@@ -75,23 +78,25 @@ VivyDocumentView::getDocumentTabToolTip() const noexcept ...@@ -75,23 +78,25 @@ VivyDocumentView::getDocumentTabToolTip() const noexcept
void void
VivyDocumentView::loadVideoView() noexcept VivyDocumentView::loadVideoView() noexcept
{ {
if (document->checkDocumentCapabilities(VivyDocument::Capabilities::VideoAble)) {
}
} }
void void
VivyDocumentView::loadAssView() noexcept VivyDocumentView::loadAssView() noexcept
{ {
if (assLines)
delDockWidget(&assLines);
if (document->checkDocumentCapabilities(VivyDocument::Capabilities::AssAble)) { if (document->checkDocumentCapabilities(VivyDocument::Capabilities::AssAble)) {
assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines())); if (!assLines) {
assLines = new QDockWidget("ASS Lines", this); assLines = new QDockWidget("ASS Lines", this);
assLines->setWidget(new AssLinesView(assModel.get(), assLines));
assLines->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); assLines->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);
assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | assLines->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea |
Qt::BottomDockWidgetArea); Qt::BottomDockWidgetArea);
addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical); addDockWidget(Qt::BottomDockWidgetArea, assLines, Qt::Vertical);
} }
assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines()));
assLines->setWidget(new AssLinesView(assModel.get(), assLines));
}
} }
void void
...@@ -108,23 +113,25 @@ VivyDocumentView::loadAudioView() noexcept ...@@ -108,23 +113,25 @@ VivyDocumentView::loadAudioView() noexcept
return; return;
} }
if (visualizer) if (!visualizer) {
delDockWidget(&visualizer);
visualizer = new QDockWidget("Visualizer", this); 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); AudioVisualizer *visualizerInner = new AudioVisualizer(stream, visualizer);
if (visualizerInner == nullptr) { if (visualizerInner == nullptr) {
qCritical() << "Failed to create visualizer for" << audioDocument->getFilePath(); qCritical() << "Failed to create visualizer for" << audioDocument->getFilePath();
return; return;
} }
visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum);
visualizer->setWidget(visualizerInner); visualizer->setWidget(visualizerInner);
visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea |
Qt::BottomDockWidgetArea);
visualizer->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);
visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop); visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop);
addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal);
} }
else { else {
...@@ -155,16 +162,17 @@ VivyDocumentView::getDocumentTabIcon() const noexcept ...@@ -155,16 +162,17 @@ VivyDocumentView::getDocumentTabIcon() const noexcept
void void
VivyDocumentView::openProperties() noexcept VivyDocumentView::openProperties() noexcept
{ {
if (property)
delDockWidget(&property);
propertyModel.reset(new PropertyModel(*document.get())); propertyModel.reset(new PropertyModel(*document.get()));
property = new QDockWidget("Properties", this);
QTreeView *view = new QTreeView(property); QTreeView *view = new QTreeView(property);
view->setModel(propertyModel.get()); view->setModel(propertyModel.get());
view->header()->setSectionResizeMode(QHeaderView::ResizeToContents); view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
view->expandAll(); view->expandAll();
property->setWidget(view);
if (!property) {
property = new QDockWidget("Properties", this);
property->setAllowedAreas(Qt::AllDockWidgetAreas); property->setAllowedAreas(Qt::AllDockWidgetAreas);
addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical); addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical);
} }
property->setWidget(view);
}
...@@ -5,17 +5,17 @@ ...@@ -5,17 +5,17 @@
#error "This is a C++ header" #error "This is a C++ header"
#endif #endif
#include "../Lib/Document/VivyDocument.hh"
#include "DocumentViews/AudioVisualizer.hh"
#include "DocumentViews/AssLinesModel.hh"
#include "AbstractDocumentView.hh" #include "AbstractDocumentView.hh"
#include "PropertyModel.hh"
#include <QWidget> class QDockWidget;
#include <QDockWidget> class QWidget;
namespace Vivy namespace Vivy
{ {
class PropertyModel;
class AssLinesModel;
class VivyDocument;
class VivyDocumentView final : public AbstractDocumentView { class VivyDocumentView final : public AbstractDocumentView {
Q_OBJECT Q_OBJECT
VIVY_UNMOVABLE_OBJECT(VivyDocumentView) VIVY_UNMOVABLE_OBJECT(VivyDocumentView)
...@@ -45,6 +45,7 @@ private: ...@@ -45,6 +45,7 @@ private:
QDockWidget *visualizer{ nullptr }; QDockWidget *visualizer{ nullptr };
QDockWidget *property{ nullptr }; QDockWidget *property{ nullptr };
QDockWidget *assLines{ nullptr }; QDockWidget *assLines{ nullptr };
QDockWidget *videoView{ nullptr };
}; };
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter