]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
- Find clip, selected in project tree, in timeline
[kdenlive] / src / customtrackview.cpp
index a4927056f49f9fe9a68f4c43b3845087a63f274d..f4cb35fca5c1d7fafd6c2a2799bf31f537f5c6f0 100644 (file)
@@ -1285,7 +1285,7 @@ void CustomTrackView::mouseDoubleClickEvent(QMouseEvent *event)
             emit clipItemSelected(item, item->selectedEffectIndex());
         }
     } else if (m_dragItem && !m_dragItem->isItemLocked()) {
-        editClipDuration();
+        editItemDuration();
     } else {
         QList<QGraphicsItem *> collisionList = items(event->pos());
         if (collisionList.count() == 1 && collisionList.at(0)->type() == GUIDEITEM) {
@@ -1295,19 +1295,25 @@ void CustomTrackView::mouseDoubleClickEvent(QMouseEvent *event)
     }
 }
 
-void CustomTrackView::editClipDuration()
+void CustomTrackView::editItemDuration()
 {
     AbstractClipItem *item;
     if (m_dragItem) {
-       item = m_dragItem;
-    }
-    else {
-        GenTime pos = GenTime((int)(mapToScene(m_menuPosition).x()), m_document->fps());
-        int track = (int)(mapToScene(m_menuPosition).y() / m_tracksHeight);
-        item = getClipItemAt(pos, track);
+        item = m_dragItem;
+    } else {
+        if (m_scene->selectedItems().count() == 1) {
+            item = static_cast <AbstractClipItem *> (m_scene->selectedItems().at(0));
+        } else {
+            if (m_scene->selectedItems().empty()) {
+                emit displayMessage(i18n("Cannot find clip to edit"), ErrorMessage);
+            } else {
+                emit displayMessage(i18n("Cannot edit the duration of multiple items"), ErrorMessage);
+            }
+            return;
+        }
     }
 
-    if (item && !item->isItemLocked()) {
+    if (!item->isItemLocked()) {
         GenTime minimum;
         GenTime maximum;
         if (item->type() == TRANSITIONWIDGET) {
@@ -1358,7 +1364,7 @@ void CustomTrackView::editClipDuration()
                 m_commandStack->push(moveCommand);
             }
         }
-    }
+    } else emit displayMessage(i18n("Item is locked"), ErrorMessage);
 }
 
 void CustomTrackView::editKeyFrame(const GenTime pos, const int track, const int index, const QString keyframes)
@@ -4155,7 +4161,7 @@ void CustomTrackView::moveTransition(const ItemInfo start, const ItemInfo end, b
     //item->moveTransition(GenTime((int) (endPos.x() - startPos.x()), m_document->fps()));
     KdenliveSettings::setSnaptopoints(snap);
     item->updateTransitionEndTrack(getPreviousVideoTrack(end.track));
-    m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos);
+    m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - item->track(), item->transitionEndTrack(), start.startPos, start.endPos, item->startPos(), item->endPos());
     if (m_dragItem && m_dragItem == item) {
         QPoint p;
         ClipItem *transitionClip = getClipItemAt(item->startPos(), item->track());
@@ -4706,6 +4712,16 @@ bool CustomTrackView::findString(const QString &text)
     return false;
 }
 
+void CustomTrackView::selectFound(QString track, QString pos)
+{
+    setCursorPos(m_document->timecode().getFrameCount(pos), true);
+    slotSelectTrack(track.toInt());
+    selectClip(true);
+    int vert = verticalScrollBar()->value();
+    int hor = cursorPos();
+    ensureVisible(hor, vert + 10, 2, 2, 50, 0);
+}
+
 bool CustomTrackView::findNextString(const QString &text)
 {
     QString marker;
@@ -4755,6 +4771,21 @@ void CustomTrackView::clearSearchStrings()
     m_findIndex = 0;
 }
 
+QList<ItemInfo> CustomTrackView::findId(const QString &clipId)
+{
+    QList<ItemInfo> matchingInfo;
+    QList<QGraphicsItem *> itemList = items();
+    for (int i = 0; i < itemList.count(); i++) {
+        if (itemList.at(i)->type() == AVWIDGET) {
+            ClipItem *item = (ClipItem *)itemList.at(i);
+            if (item->clipProducer() == clipId) {
+                matchingInfo << item->info();
+            }
+        }
+    }
+    return matchingInfo;
+}
+
 void CustomTrackView::copyClip()
 {
     qDeleteAll(m_copiedItems);
@@ -5240,7 +5271,7 @@ void CustomTrackView::slotChangeTrack(int ix)
     d.track_nb->setValue(ix);
     d.slotUpdateName(ix);
     d.setWindowTitle(i18n("Change Track Type"));
-    
+
     TrackInfo oldInfo = m_document->trackInfoAt(m_document->tracksCount() - ix - 1);
     if (oldInfo.type == VIDEOTRACK)
         d.video_track->setChecked(true);