]> git.sesse.net Git - kdenlive/blobdiff - src/monitoreditwidget.cpp
Const'ref
[kdenlive] / src / monitoreditwidget.cpp
index 25df13dd2827b30a7b9bfe005731bc839e8f7db0..0595477f87bfee4d792d3f9d88e6acb15de85bea 100644 (file)
 #include "monitorscene.h"
 #include "kdenlivesettings.h"
 
+#include "onmonitoritems/onmonitorrectitem.h"
+#include "onmonitoritems/onmonitorpathitem.h"
+
 #include <QGraphicsView>
 #include <QVBoxLayout>
 #include <QAction>
 #include <QToolButton>
+#include <QMouseEvent>
+#include <QGraphicsView>
 
 #include <KIcon>
 
+
 MonitorEditWidget::MonitorEditWidget(Render* renderer, QWidget* parent) :
         QWidget(parent)
 {
+    setAutoFillBackground(true);
+    setAttribute(Qt::WA_PaintOnScreen, false);
+    setAttribute(Qt::WA_OpaquePaintEvent, false);
+    setContentsMargins(0, 0, 0, 0);
+    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
     m_ui.setupUi(this);
-
     m_scene = new MonitorScene(renderer);
     m_view = new QGraphicsView(m_scene, m_ui.frameVideo);
-    m_view->setRenderHints(QFlags<QPainter::RenderHint>());
+    m_view->setFrameShape(QFrame::NoFrame);
+    //m_view->setRenderHints(QFlags<QPainter::RenderHint>());
     m_view->scale(((double) renderer->renderWidth()) / renderer->frameRenderWidth(), 1.0);
     m_view->setMouseTracking(true);
     m_scene->setUp();
@@ -49,6 +60,7 @@ MonitorEditWidget::MonitorEditWidget(Render* renderer, QWidget* parent) :
 
     m_visibilityAction = new QAction(KIcon("video-display"), i18n("Show/Hide edit mode"), this);
     m_visibilityAction->setCheckable(true);
+    m_visibilityAction->setChecked(KdenliveSettings::showOnMonitorScene());
     m_visibilityAction->setVisible(false);
 
     m_ui.buttonDirectUpdate->setIcon(KIcon("transform-scale"));
@@ -61,7 +73,7 @@ MonitorEditWidget::MonitorEditWidget(Render* renderer, QWidget* parent) :
     m_ui.buttonZoomOriginal->setToolTip(i18n("Original size"));
 
     connect(m_ui.sliderZoom, SIGNAL(valueChanged(int)), m_scene, SLOT(slotZoom(int)));
-    connect(m_scene, SIGNAL(zoomChanged(int)), m_ui.sliderZoom, SLOT(setValue(int)));
+    connect(m_scene, SIGNAL(zoomChanged(int)), this, SLOT(slotZoom(int)));
     connect(m_ui.buttonZoomFit,      SIGNAL(clicked()), m_scene, SLOT(slotZoomFit()));
     connect(m_ui.buttonZoomOriginal, SIGNAL(clicked()), m_scene, SLOT(slotZoomOriginal()));
     m_scene->slotZoomFit();
@@ -72,18 +84,26 @@ MonitorEditWidget::MonitorEditWidget(Render* renderer, QWidget* parent) :
 
 MonitorEditWidget::~MonitorEditWidget()
 {
+    KdenliveSettings::setShowOnMonitorScene(m_visibilityAction->isChecked());
     delete m_view;
     delete m_scene;
     delete m_visibilityAction;
 }
 
+void MonitorEditWidget::slotZoom(int value)
+{
+    m_ui.sliderZoom->blockSignals(true);
+    m_ui.sliderZoom->setValue(value);
+    m_ui.sliderZoom->blockSignals(false);
+}
+
 void MonitorEditWidget::resetProfile(Render* renderer)
 {
     m_view->scale(((double) renderer->renderWidth()) / renderer->frameRenderWidth(), 1.0);
     m_scene->resetProfile();
 }
 
-MonitorScene* MonitorEditWidget::getScene()
+MonitorScene* MonitorEditWidget::getScene() const
 {
     return m_scene;
 }
@@ -121,8 +141,10 @@ void MonitorEditWidget::addCustomButton(const QIcon& icon, const QString& text,
 void MonitorEditWidget::removeCustomControls()
 {
     QLayoutItem *child;
-    while ((child = m_customControlsLayout->takeAt(0)) != 0)
+    while ((child = m_customControlsLayout->takeAt(0)) != 0) {
+        if (child->widget()) delete child->widget();
         delete child;
+    }
 }
 
 void MonitorEditWidget::slotSetDirectUpdate(bool directUpdate)