From 2cba564f9ef9cbf4599d7ae011a474f82572841d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 19 Oct 2009 07:59:42 +0000 Subject: [PATCH] Improve track selection svn path=/trunk/kdenlive/; revision=4047 --- src/customruler.cpp | 2 +- src/customtrackview.cpp | 28 ++++++++++++++++++++++++++++ src/customtrackview.h | 2 ++ src/headertrack.cpp | 7 +++++++ src/headertrack.h | 4 ++++ src/mainwindow.cpp | 29 ++++++----------------------- src/mainwindow.h | 2 -- src/trackview.cpp | 14 +++++++++++++- src/trackview.h | 3 +++ 9 files changed, 64 insertions(+), 27 deletions(-) diff --git a/src/customruler.cpp b/src/customruler.cpp index dbf5fe96..e840c20d 100644 --- a/src/customruler.cpp +++ b/src/customruler.cpp @@ -112,7 +112,7 @@ void CustomRuler::setZone(QPoint p) update(min * m_factor - 2, 0, (max - min) * m_factor + 4, height()); } -void CustomRuler::mouseReleaseEvent(QMouseEvent * event) +void CustomRuler::mouseReleaseEvent(QMouseEvent * /*event*/) { m_mouseMove = NO_MOVE; } diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index d5055df1..e986565e 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -171,6 +171,18 @@ CustomTrackView::~CustomTrackView() m_waitingThumbs.clear(); } +//virtual +void CustomTrackView::keyPressEvent(QKeyEvent * event) +{ + if (event->key() == Qt::Key_Up) { + slotTrackUp(); + event->accept(); + } else if (event->key() == Qt::Key_Down) { + slotTrackDown(); + event->accept(); + } else QWidget::keyPressEvent(event); +} + void CustomTrackView::setDocumentModified() { m_document->setModified(true); @@ -2185,6 +2197,8 @@ void CustomTrackView::removeTrack(int ix) } m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), maxHeight); setSceneRect(0, 0, sceneRect().width(), maxHeight); + + m_selectedTrack = qMin(m_selectedTrack, m_document->tracksCount() - 1); viewport()->update(); emit tracksChanged(); //QTimer::singleShot(500, this, SIGNAL(trackHeightChanged())); @@ -5213,6 +5227,8 @@ void CustomTrackView::slotTrackDown() if (m_selectedTrack > m_document->tracksCount() - 2) m_selectedTrack = 0; else m_selectedTrack++; emit updateTrackHeaders(); + QRectF rect(mapToScene(QPoint()).x(), m_selectedTrack * m_tracksHeight, 10, m_tracksHeight); + ensureVisible(rect); viewport()->update(); } @@ -5221,6 +5237,8 @@ void CustomTrackView::slotTrackUp() if (m_selectedTrack > 0) m_selectedTrack--; else m_selectedTrack = m_document->tracksCount() - 1; emit updateTrackHeaders(); + QRectF rect(mapToScene(QPoint()).x(), m_selectedTrack * m_tracksHeight, 10, m_tracksHeight); + ensureVisible(rect); viewport()->update(); } @@ -5229,3 +5247,13 @@ int CustomTrackView::selectedTrack() const return m_selectedTrack; } +void CustomTrackView::slotSelectTrack(int ix) +{ + m_selectedTrack = qMax(0, ix); + m_selectedTrack = qMin(ix, m_document->tracksCount() - 1); + emit updateTrackHeaders(); + QRectF rect(mapToScene(QPoint()).x(), m_selectedTrack * m_tracksHeight, 10, m_tracksHeight); + ensureVisible(rect); + viewport()->update(); +} + diff --git a/src/customtrackview.h b/src/customtrackview.h index 5efd6bb7..2e568fbe 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -162,6 +162,7 @@ public slots: void clipNameChanged(const QString id, const QString name); void slotTrackUp(); void slotTrackDown(); + void slotSelectTrack(int ix); protected: virtual void drawBackground(QPainter * painter, const QRectF & rect); @@ -171,6 +172,7 @@ protected: virtual void dragLeaveEvent(QDragLeaveEvent * event); virtual void dropEvent(QDropEvent * event); virtual void wheelEvent(QWheelEvent * e); + virtual void keyPressEvent(QKeyEvent * event); virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; diff --git a/src/headertrack.cpp b/src/headertrack.cpp index de53684d..117d67f2 100644 --- a/src/headertrack.cpp +++ b/src/headertrack.cpp @@ -101,6 +101,13 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) { }*/ +// virtual +void HeaderTrack::mousePressEvent(QMouseEvent * event) +{ + emit selectTrack(m_index); + QWidget::mousePressEvent(event); +} + void HeaderTrack::setSelectedIndex(int ix) { if (m_index == ix) { diff --git a/src/headertrack.h b/src/headertrack.h index a789ddcd..22a9b742 100644 --- a/src/headertrack.h +++ b/src/headertrack.h @@ -37,6 +37,9 @@ public: void adjustSize(int height); void setSelectedIndex(int ix); +protected: + virtual void mousePressEvent(QMouseEvent * event); + private: int m_index; TRACKTYPE m_type; @@ -59,6 +62,7 @@ signals: void deleteTrack(int); void changeTrack(int); void renameTrack(int); + void selectTrack(int); }; #endif diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 55e7ad11..0b1ec98d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -937,12 +937,12 @@ void MainWindow::setupActions() connect(transcodeClip, SIGNAL(triggered(bool)), this, SLOT(slotTranscodeClip())); KAction *markIn = collection->addAction("mark_in"); - markIn->setText(i18n("Set In Point")); + markIn->setText(i18n("Set Zone In")); markIn->setShortcut(Qt::Key_I); connect(markIn, SIGNAL(triggered(bool)), this, SLOT(slotSetInPoint())); KAction *markOut = collection->addAction("mark_out"); - markOut->setText(i18n("Set Out Point")); + markOut->setText(i18n("Set Zone Out")); markOut->setShortcut(Qt::Key_O); connect(markOut, SIGNAL(triggered(bool)), this, SLOT(slotSetOutPoint())); @@ -951,16 +951,6 @@ void MainWindow::setupActions() collection->addAction("monitor_seek_backward", monitorSeekBackward); connect(monitorSeekBackward, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotRewind())); - KAction* trackUp = new KAction(KIcon(), i18n("Previous Track"), this); - trackUp->setShortcut(Qt::Key_Up); - collection->addAction("track_up", trackUp); - connect(trackUp, SIGNAL(triggered(bool)), this, SLOT(slotTrackUp())); - - KAction* trackDown = new KAction(KIcon(), i18n("Next Track"), this); - trackDown->setShortcut(Qt::Key_Down); - collection->addAction("track_down", trackDown); - connect(trackDown, SIGNAL(triggered(bool)), this, SLOT(slotTrackDown())); - KAction* monitorSeekBackwardOneFrame = new KAction(KIcon("media-skip-backward"), i18n("Rewind 1 Frame"), this); monitorSeekBackwardOneFrame->setShortcut(Qt::Key_Left); collection->addAction("monitor_seek_backward-one-frame", monitorSeekBackwardOneFrame); @@ -2679,14 +2669,16 @@ void MainWindow::slotSetInPoint() { if (m_clipMonitor->isActive()) { m_clipMonitor->slotSetZoneStart(); - } else m_activeTimeline->projectView()->setInPoint(); + } else m_projectMonitor->slotSetZoneStart(); + //else m_activeTimeline->projectView()->setInPoint(); } void MainWindow::slotSetOutPoint() { if (m_clipMonitor->isActive()) { m_clipMonitor->slotSetZoneEnd(); - } else m_activeTimeline->projectView()->setOutPoint(); + } else m_projectMonitor->slotSetZoneEnd(); + // else m_activeTimeline->projectView()->setOutPoint(); } void MainWindow::slotGetNewLumaStuff() @@ -3055,15 +3047,6 @@ QPixmap MainWindow::createSchemePreviewIcon(const KSharedConfigPtr &config) return pixmap; } -void MainWindow::slotTrackUp() -{ - if (m_activeTimeline) m_activeTimeline->projectView()->slotTrackUp(); -} - -void MainWindow::slotTrackDown() -{ - if (m_activeTimeline) m_activeTimeline->projectView()->slotTrackDown(); -} #include "mainwindow.moc" diff --git a/src/mainwindow.h b/src/mainwindow.h index ad197522..e259a491 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -324,8 +324,6 @@ private slots: void slotUpdateTrackInfo(); /** \brief Change color scheme */ void slotChangePalette(QAction *action, const QString &themename = QString()); - void slotTrackUp(); - void slotTrackDown(); signals: Q_SCRIPTABLE void abortRenderJob(const QString &url); diff --git a/src/trackview.cpp b/src/trackview.cpp index 854bc09f..640431ee 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -124,6 +124,18 @@ TrackView::~TrackView() delete m_trackview; } +//virtual +void TrackView::keyPressEvent(QKeyEvent * event) +{ + if (event->key() == Qt::Key_Up) { + m_trackview->slotTrackUp(); + event->accept(); + } else if (event->key() == Qt::Key_Down) { + m_trackview->slotTrackDown(); + event->accept(); + } else QWidget::keyPressEvent(event); +} + int TrackView::duration() const { return m_trackview->duration(); @@ -512,7 +524,7 @@ void TrackView::slotRebuildTrackHeaders() connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int))); connect(header, SIGNAL(switchTrackAudio(int)), m_trackview, SLOT(slotSwitchTrackAudio(int))); connect(header, SIGNAL(switchTrackLock(int)), m_trackview, SLOT(slotSwitchTrackLock(int))); - + connect(header, SIGNAL(selectTrack(int)), m_trackview, SLOT(slotSelectTrack(int))); connect(header, SIGNAL(deleteTrack(int)), this, SIGNAL(deleteTrack(int))); connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int))); connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int))); diff --git a/src/trackview.h b/src/trackview.h index 359d7b22..2defee00 100644 --- a/src/trackview.h +++ b/src/trackview.h @@ -59,6 +59,9 @@ public: int inPoint() const; int fitZoom() const; +protected: + virtual void keyPressEvent(QKeyEvent * event); + public slots: void slotDeleteClip(const QString &clipId); void slotChangeZoom(int horizontal, int vertical = -1); -- 2.39.2