]> git.sesse.net Git - kdenlive/commitdiff
Alt + Left / Right to go to previous / next snap point
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 11 Apr 2008 21:21:18 +0000 (21:21 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 11 Apr 2008 21:21:18 +0000 (21:21 +0000)
svn path=/branches/KDE4/; revision=2166

src/customtrackview.cpp
src/customtrackview.h
src/mainwindow.cpp
src/mainwindow.h
src/monitormanager.cpp
src/monitormanager.h

index 25bc0f790e78196d95534e9ce1e8564f5a97ec93..b25d863dd73d5300ea2ededabf22dd811a107e84 100644 (file)
@@ -1036,6 +1036,33 @@ void CustomTrackView::updateSnapPoints(AbstractClipItem *selected) {
     //    kDebug() << "SNAP POINT: " << m_snapPoints.at(i).frames(25);
 }
 
+void CustomTrackView::slotSeekToPreviousSnap() {
+    updateSnapPoints(NULL);
+    GenTime pos = GenTime(m_cursorPos, m_document->fps());
+    GenTime res = GenTime();
+    for (int i = 0; i < m_snapPoints.size(); ++i) {
+        if (m_snapPoints.at(i) >= pos) {
+            if (i == 0) i = 1;
+            res = m_snapPoints.at(i - 1);
+            break;
+        }
+    }
+    setCursorPos((int) res.frames(m_document->fps()));
+}
+
+void CustomTrackView::slotSeekToNextSnap() {
+    updateSnapPoints(NULL);
+    GenTime pos = GenTime(m_cursorPos, m_document->fps());
+    GenTime res = GenTime(m_projectDuration, m_document->fps());
+    for (int i = 0; i < m_snapPoints.size(); ++i) {
+        if (m_snapPoints.at(i) > pos) {
+            res = m_snapPoints.at(i);
+            break;
+        }
+    }
+    setCursorPos((int) res.frames(m_document->fps()));
+}
+
 void CustomTrackView::setTool(PROJECTTOOL tool) {
     m_tool = tool;
 }
index 1c9d46f29bc10a169100eabed81b7bd0d73c64b3..09c52724832507440f046d309462b2ab76b974c8 100644 (file)
@@ -71,6 +71,8 @@ public:
     QList <TrackInfo> tracksList() const;
     void setTool(PROJECTTOOL tool);
     void cutClip(ItemInfo info, GenTime cutTime, bool cut);
+    void slotSeekToPreviousSnap();
+    void slotSeekToNextSnap();
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index 7301920cc565aa20db5fb6b7d720003b055248ea..34ff83f0ffaaacd8964d8c01641b45a60c6ffd85 100644 (file)
@@ -408,67 +408,59 @@ void MainWindow::setupActions() {
     actionCollection()->addAction("select_tool", m_buttonSelectTool);
     actionCollection()->addAction("razor_tool", m_buttonRazorTool);
 
-    KAction* clearAction = new KAction(this);
-    clearAction->setText(i18n("Clear"));
-    clearAction->setIcon(KIcon("document-new"));
+    KAction* clearAction = new KAction(KIcon("document-new"), i18n("Clear"), this);
     clearAction->setShortcut(Qt::CTRL + Qt::Key_W);
     actionCollection()->addAction("clear", clearAction);
     /*connect(clearAction, SIGNAL(triggered(bool)),
             textArea, SLOT(clear()));*/
 
-    KAction* profilesAction = new KAction(this);
-    profilesAction->setText(i18n("Manage Profiles"));
-    profilesAction->setIcon(KIcon("document-new"));
+    KAction* profilesAction = new KAction(KIcon("document-new"), i18n("Manage Profiles"), this);
     actionCollection()->addAction("manage_profiles", profilesAction);
     connect(profilesAction, SIGNAL(triggered(bool)), this, SLOT(slotEditProfiles()));
 
-    KAction* projectAction = new KAction(this);
-    projectAction->setText(i18n("Project Settings"));
-    projectAction->setIcon(KIcon("document-new"));
+    KAction* projectAction = new KAction(KIcon("document-new"), i18n("Project Settings"), this);
     actionCollection()->addAction("project_settings", projectAction);
     connect(projectAction, SIGNAL(triggered(bool)), this, SLOT(slotEditProjectSettings()));
 
-    KAction* projectRender = new KAction(this);
-    projectRender->setText(i18n("Render Project"));
-    projectRender->setIcon(KIcon("document-new"));
+    KAction* projectRender = new KAction(KIcon("document-new"), i18n("Render Project"), this);
     actionCollection()->addAction("project_render", projectRender);
     connect(projectRender, SIGNAL(triggered(bool)), this, SLOT(slotRenderProject()));
 
-    KAction* monitorPlay = new KAction(this);
-    monitorPlay->setText(i18n("Play"));
-    monitorPlay->setIcon(KIcon("media-playback-start"));
+    KAction* monitorPlay = new KAction(KIcon("media-playback-start"), i18n("Play"), this);
     monitorPlay->setShortcut(Qt::Key_Space);
     actionCollection()->addAction("monitor_play", monitorPlay);
     connect(monitorPlay, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotPlay()));
 
-    KAction* monitorSeekBackward = new KAction(this);
-    monitorSeekBackward->setText(i18n("Rewind"));
-    monitorSeekBackward->setIcon(KIcon("media-seek-backward"));
+    KAction* monitorSeekBackward = new KAction(KIcon("media-seek-backward"), i18n("Rewind"), this);
     monitorSeekBackward->setShortcut(Qt::Key_J);
     actionCollection()->addAction("monitor_seek_backward", monitorSeekBackward);
     connect(monitorSeekBackward, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotRewind()));
 
-    KAction* monitorSeekBackwardOneFrame = new KAction(this);
-    monitorSeekBackwardOneFrame->setText(i18n("Rewind 1 Frame"));
-    monitorSeekBackwardOneFrame->setIcon(KIcon("media-skip-backward"));
+    KAction* monitorSeekBackwardOneFrame = new KAction(KIcon("media-skip-backward"), i18n("Rewind 1 Frame"), this);
     monitorSeekBackwardOneFrame->setShortcut(Qt::Key_Left);
     actionCollection()->addAction("monitor_seek_backward-one-frame", monitorSeekBackwardOneFrame);
     connect(monitorSeekBackwardOneFrame, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotRewindOneFrame()));
 
-    KAction* monitorSeekForward = new KAction(this);
-    monitorSeekForward->setText(i18n("Forward"));
-    monitorSeekForward->setIcon(KIcon("media-seek-forward"));
+    KAction* monitorSeekSnapBackward = new KAction(KIcon("media-seek-backward"), i18n("Go to Previous Snap Point"), this);
+    monitorSeekSnapBackward->setShortcut(Qt::ALT + Qt::Key_Left);
+    actionCollection()->addAction("monitor_seek_snap_backward", monitorSeekSnapBackward);
+    connect(monitorSeekSnapBackward, SIGNAL(triggered(bool)), this, SLOT(slotSnapRewind()));
+
+    KAction* monitorSeekForward = new KAction(KIcon("media-seek-forward"), i18n("Forward"), this);
     monitorSeekForward->setShortcut(Qt::Key_L);
     actionCollection()->addAction("monitor_seek_forward", monitorSeekForward);
     connect(monitorSeekForward, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotForward()));
 
-    KAction* monitorSeekForwardOneFrame = new KAction(this);
-    monitorSeekForwardOneFrame->setText(i18n("Forward 1 Frame"));
-    monitorSeekForwardOneFrame->setIcon(KIcon("media-skip-forward"));
+    KAction* monitorSeekForwardOneFrame = new KAction(KIcon("media-skip-forward"), i18n("Forward 1 Frame"), this);
     monitorSeekForwardOneFrame->setShortcut(Qt::Key_Right);
     actionCollection()->addAction("monitor_seek_forward-one-frame", monitorSeekForwardOneFrame);
     connect(monitorSeekForwardOneFrame, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotForwardOneFrame()));
 
+    KAction* monitorSeekSnapForward = new KAction(KIcon("media-seek-forward"), i18n("Go to Next Snap Point"), this);
+    monitorSeekSnapForward->setShortcut(Qt::ALT + Qt::Key_Right);
+    actionCollection()->addAction("monitor_seek_snap_forward", monitorSeekSnapForward);
+    connect(monitorSeekSnapForward, SIGNAL(triggered(bool)), this, SLOT(slotSnapForward()));
+
     KAction* deleteTimelineClip = new KAction(KIcon("edit-delete"), i18n("Delete Clip"), this);
     deleteTimelineClip->setShortcut(Qt::Key_Delete);
     actionCollection()->addAction("delete_timeline_clip", deleteTimelineClip);
@@ -982,6 +974,20 @@ void MainWindow::slotActivateTransitionView() {
     transitionConfig->raiseWindow(transitionConfigDock);
 }
 
+void MainWindow::slotSnapRewind() {
+    if (m_monitorManager->projectMonitorFocused()) {
+        TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+        currentTab->projectView()->slotSeekToPreviousSnap();
+    }
+}
+
+void MainWindow::slotSnapForward() {
+    if (m_monitorManager->projectMonitorFocused()) {
+        TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+        currentTab->projectView()->slotSeekToNextSnap();
+    }
+}
+
 void MainWindow::slotChangeTool(QAction * action) {
     if (action == m_buttonSelectTool) slotSetTool(SELECTTOOL);
     else if (action == m_buttonRazorTool) slotSetTool(RAZORTOOL);
index a5faed00141c928d0ae686a9c20cf68f4c9d59de..616d300c12bc639ca0f3780190103f06872a27cf 100644 (file)
@@ -178,6 +178,8 @@ private slots:
     void slotActivateTransitionView();
     void slotChangeTool(QAction * action);
     void slotSetTool(PROJECTTOOL tool);
+    void slotSnapForward();
+    void slotSnapRewind();
 };
 
 #endif
index 9c163f07c91b7bdaae5996f6f7509184e797f821..f771fabc918cb8df1232f8e9dd9bd9985b09edb1 100644 (file)
@@ -26,8 +26,6 @@
 
 MonitorManager::MonitorManager(QWidget *parent)
         : QObject(parent) {
-
-
 }
 
 void MonitorManager::setTimecode(Timecode tc) {
@@ -43,6 +41,10 @@ void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor)
     m_projectMonitor = projectMonitor;
 }
 
+bool MonitorManager::projectMonitorFocused() {
+    if (m_activeMonitor != "clip") return true;
+    return false;
+}
 
 void MonitorManager::activateMonitor(QString name) {
     if (m_activeMonitor == name) return;
index a33af55cbf72a2725c92e8a41f2fdc07be421f15..173fbc18b7f8ecfa96ffd33cd24112a1100b4bc2 100644 (file)
@@ -36,6 +36,7 @@ public:
     void setTimecode(Timecode tc);
     void resetProfiles(QString prof);
     void switchMonitors();
+    bool projectMonitorFocused();
 
 public slots:
     void activateMonitor(QString name = QString::null);