m_monitorRefresh(NULL),
m_effectWidget(NULL),
m_selectedClip(NULL),
- m_loopClipTransition(true)
+ m_loopClipTransition(true),
+ m_editMarker(NULL)
{
QVBoxLayout *layout = new QVBoxLayout;
}
QWidget *spacer = new QWidget(this);
- spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
m_toolbar->addWidget(spacer);
m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this);
m_toolbar->addWidget(m_timePos);
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);
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();
}
- } else m_contextMenu->popup(event->globalPos());
+ } else if (!m_effectWidget || !m_effectWidget->isVisible()) {
+ m_contextMenu->popup(event->globalPos());
+ }
}
void Monitor::slotSwitchFullScreen()
return;
}
m_currentClip->setClipThumbFrame((uint) render->seekFramePosition());
- emit refreshClipThumbnail(m_currentClip->getId());
+ emit refreshClipThumbnail(m_currentClip->getId(), true);
}
void Monitor::slotExtractCurrentFrame()
if (m_monitorRefresh == NULL) {
// Using OpenGL display
#if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
- m_overlay = new Overlay(m_glWidget);
+ 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);
+ m_glWidget->setLayout(layout);
#endif
} else {
- m_overlay = new Overlay(m_monitorRefresh);
+ 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);
+ m_monitorRefresh->setLayout(layout);
m_overlay->raise();
m_overlay->setHidden(true);
}
+ checkOverlay();
} else {
delete m_overlay;
m_overlay = NULL;
}
}
+void Monitor::slotEditMarker()
+{
+ if (m_editMarker) m_editMarker->trigger();
+}
+
void Monitor::updateTimecodeFormat()
{
m_timePos->slotUpdateTimeCodeFormat();
// MonitorRefresh is used as container for the SDL display (it's window id is passed to SDL)
setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_OpaquePaintEvent);
+ setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
//setAttribute(Qt::WA_NoSystemBackground);
}
Overlay::Overlay(QWidget* parent) :
QLabel(parent)
{
- setAttribute(Qt::WA_TransparentForMouseEvents);
- //setAttribute(Qt::WA_OpaquePaintEvent);
- //setAttribute(Qt::WA_NoSystemBackground);
+ //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)