]> git.sesse.net Git - kdenlive/commitdiff
Double click on monitor overlay info to edit a marker
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 21 Feb 2011 00:01:43 +0000 (00:01 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 21 Feb 2011 00:01:43 +0000 (00:01 +0000)
svn path=/trunk/kdenlive/; revision=5444

src/mainwindow.cpp
src/monitor.cpp
src/monitor.h

index c3494a6749adee8cfeb0afc2b76fe219234dc2a1..5c36eb9ada3da9d9fc16bd7253f33cbc0cbf6e54 100644 (file)
@@ -1422,6 +1422,7 @@ void MainWindow::setupActions()
     connect(deleteAllClipMarkers, SIGNAL(triggered(bool)), this, SLOT(slotDeleteAllClipMarkers()));
 
     KAction* editClipMarker = new KAction(KIcon("document-properties"), i18n("Edit Marker"), this);
+    editClipMarker->setData(QString("edit_marker"));
     collection.addAction("edit_clip_marker", editClipMarker);
     connect(editClipMarker, SIGNAL(triggered(bool)), this, SLOT(slotEditClipMarker()));
 
index 819f0b27b2c6e13b0525f40945e86283c3b887be..27e1758b65f7c68f687e1858e6dd15fd2c4f7795 100644 (file)
@@ -60,7 +60,8 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget
     m_monitorRefresh(NULL),
     m_effectWidget(NULL),
     m_selectedClip(NULL),
-    m_loopClipTransition(true)
+    m_loopClipTransition(true),
+    m_editMarker(NULL)
 
 {
     QVBoxLayout *layout = new QVBoxLayout;
@@ -256,8 +257,16 @@ void Monitor::setupMenu(QMenu *goMenu, QAction *playZone, QAction *loopZone, QMe
     m_contextMenu->addMenu(m_playMenu);
     if (goMenu)
         m_contextMenu->addMenu(goMenu);
-    if (markerMenu)
+    if (markerMenu) {
         m_contextMenu->addMenu(markerMenu);
+        QList <QAction *>list = markerMenu->actions();
+        for (int i = 0; i < list.count(); i++) {
+            if (list.at(i)->data().toString() == "edit_marker") {
+                m_editMarker = list.at(i);
+                break;
+            }
+        }
+    }
 
     m_playMenu->addAction(playZone);
     m_playMenu->addAction(loopZone);
@@ -443,7 +452,7 @@ void Monitor::slotSetZoneEnd()
 void Monitor::mousePressEvent(QMouseEvent * event)
 {
     if (event->button() != Qt::RightButton) {
-        if (m_videoBox->underMouse()) {
+        if (m_videoBox->underMouse() && (!m_overlay || !m_overlay->underMouse())) {
             m_dragStarted = true;
             m_DragStartPosition = event->pos();
         }
@@ -888,6 +897,7 @@ void Monitor::slotSwitchMonitorInfo(bool show)
 #if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
             if (m_glWidget->layout()) delete m_glWidget->layout();
             m_overlay = new Overlay();
+            connect(m_overlay, SIGNAL(editMarker()), this, SLOT(slotEditMarker()));
             QVBoxLayout *layout = new QVBoxLayout;
             layout->addStretch(10);
             layout->addWidget(m_overlay);
@@ -896,6 +906,7 @@ void Monitor::slotSwitchMonitorInfo(bool show)
         } else {
             if (m_monitorRefresh->layout()) delete m_monitorRefresh->layout();
             m_overlay = new Overlay();
+            connect(m_overlay, SIGNAL(editMarker()), this, SLOT(slotEditMarker()));
             QVBoxLayout *layout = new QVBoxLayout;
             layout->addStretch(10);
             layout->addWidget(m_overlay);
@@ -910,6 +921,11 @@ void Monitor::slotSwitchMonitorInfo(bool show)
     }
 }
 
+void Monitor::slotEditMarker()
+{
+    if (m_editMarker) m_editMarker->trigger();
+}
+
 void Monitor::updateTimecodeFormat()
 {
     m_timePos->slotUpdateTimeCodeFormat();
@@ -1029,12 +1045,31 @@ void MonitorRefresh::paintEvent(QPaintEvent *event)
 Overlay::Overlay(QWidget* parent) :
     QLabel(parent)
 {
-    setAttribute(Qt::WA_TransparentForMouseEvents);
+    //setAttribute(Qt::WA_TransparentForMouseEvents);
     setAutoFillBackground(true);
     setBackgroundRole(QPalette::Base);
     setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+    setCursor(Qt::PointingHandCursor);
+}
+
+// virtual
+void Overlay::mouseReleaseEvent ( QMouseEvent * event )
+{
+    event->accept();
+}
+
+// virtual
+void Overlay::mousePressEvent( QMouseEvent * event )
+{
+    event->accept();
 }
 
+// virtual
+void Overlay::mouseDoubleClickEvent ( QMouseEvent * event )
+{
+    emit editMarker();
+    event->accept();
+}
 
 void Overlay::setOverlayText(const QString &text, bool isZone)
 {
index ecf7df82cbb6768ff3f19101e38d83fecbf54998..b952271eb78c6cb94412553dbcd7a553cfb18ac1 100644 (file)
@@ -96,6 +96,14 @@ public:
 
 private:
     bool m_isZone;
+
+protected:
+    virtual void mouseDoubleClickEvent ( QMouseEvent * event );
+    virtual void mousePressEvent ( QMouseEvent * event );
+    virtual void mouseReleaseEvent ( QMouseEvent * event );
+    
+signals:
+    void editMarker();
 };
 
 class Monitor : public QWidget
@@ -179,6 +187,7 @@ private:
     QToolBar *m_toolbar;
     QWidget *m_volumeWidget;
     QSlider *m_audioSlider;
+    QAction *m_editMarker;
 
 private slots:
     void seekCursor(int pos);
@@ -195,6 +204,7 @@ private slots:
     void slotGoToMarker(QAction *action);
     void slotSetVolume(int volume);
     void slotShowVolume();
+    void slotEditMarker();
 
 public slots:
     void slotOpenFile(const QString &);