]> git.sesse.net Git - kdenlive/commitdiff
Improve track selection
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Oct 2009 07:59:42 +0000 (07:59 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Oct 2009 07:59:42 +0000 (07:59 +0000)
svn path=/trunk/kdenlive/; revision=4047

src/customruler.cpp
src/customtrackview.cpp
src/customtrackview.h
src/headertrack.cpp
src/headertrack.h
src/mainwindow.cpp
src/mainwindow.h
src/trackview.cpp
src/trackview.h

index dbf5fe962dd9edd8e94e4fd57128c8c7a5070c62..e840c20db0cf6bc5d509ee89710516103d4a573f 100644 (file)
@@ -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;
 }
index d5055df13b3e399a143eb6be30397bb9adb812ae..e986565ec7a9d35b8ef4714ef3a41b495b716097 100644 (file)
@@ -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();
+}
+
index 5efd6bb7a39d000478f20c9d1205ba5dbbce1ea8..2e568fbe83e1d5e80cde16b13f6f7a44bb844837 100644 (file)
@@ -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;
 
index de53684d41a30c85d31506d1f00b6ec45a6caee2..117d67f267c80c03a865f0429dbcabd2358ee745 100644 (file)
@@ -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) {
index a789ddcdd8e11aa90f4a39e2c22a4d14d9fb79ca..22a9b7426b26c6b5c7081ebf7499a7246fa260dd 100644 (file)
@@ -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
index 55e7ad11ad0bdab3c444a38cede0dbaaaa10fe63..0b1ec98d0e28806432053e91c5ecfaf8385fc692 100644 (file)
@@ -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"
 
index ad19752289eb7e40d5f88da9d4a6b0bd8deb2738..e259a491a8d80c5fa0013661db16196b98c81a6f 100644 (file)
@@ -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);
index 854bc09f38398fca26b6b9153034e729a23834da..640431ee60cac3761b3f39a09e08a8dff71cea6b 100644 (file)
@@ -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)));
index 359d7b22803d61061e82c58246eb9c14bece8d66..2defee005c97dff256b5daf8c9832b90d8f85829 100644 (file)
@@ -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);