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 @@
#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,23 +78,25 @@ 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)) {
assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines()));
if (!assLines) {
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);
}
assModel.reset(new AssLinesModel(document->getAssSubDocument()->getLines()));
assLines->setWidget(new AssLinesView(assModel.get(), assLines));
}
}
void
......@@ -108,23 +113,25 @@ VivyDocumentView::loadAudioView() noexcept
return;
}
if (visualizer)
delDockWidget(&visualizer);
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) {
qCritical() << "Failed to create visualizer for" << audioDocument->getFilePath();
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();
property->setWidget(view);
if (!property) {
property = new QDockWidget("Properties", this);
property->setAllowedAreas(Qt::AllDockWidgetAreas);
addDockWidget(Qt::RightDockWidgetArea, property, Qt::Vertical);
}
property->setWidget(view);
}
......@@ -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 };
};
}
......
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