From 16908c324b85a10cf06914ffcb1a5e95a9de90ca Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 21 Feb 2011 00:01:43 +0000 Subject: [PATCH] Double click on monitor overlay info to edit a marker svn path=/trunk/kdenlive/; revision=5444 --- src/mainwindow.cpp | 1 + src/monitor.cpp | 43 +++++++++++++++++++++++++++++++++++++++---- src/monitor.h | 10 ++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c3494a67..5c36eb9a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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())); diff --git a/src/monitor.cpp b/src/monitor.cpp index 819f0b27..27e1758b 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -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 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) { diff --git a/src/monitor.h b/src/monitor.h index ecf7df82..b952271e 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -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 &); -- 2.39.2