-void CustomTrackView::slotEditClipMarker() {
- QList<QGraphicsItem *> itemList = scene()->selectedItems();
- if (itemList.count() != 1) {
- emit displayMessage(i18n("Cannot edit marker if more than one clip is selected"), ErrorMessage);
- kDebug() << "// CANNOT DELETE MARKER IF MORE TAN ONE CLIP IS SELECTED....";
- return;
- }
- AbstractClipItem *item = (AbstractClipItem *)itemList.at(0);
- if (item->type() != AVWIDGET) {
- emit displayMessage(i18n("No clip at cursor time"), ErrorMessage);
- return;
- }
- GenTime pos = GenTime(m_cursorPos, m_document->fps());
- if (item->startPos() > pos || item->endPos() < pos) {
- emit displayMessage(i18n("No selected clip at cursor time"), ErrorMessage);
- return;
- }
- ClipItem *clip = (ClipItem *) item;
- QString id = clip->baseClip()->getId();
- GenTime position = pos - item->startPos() + item->cropStart();
- QString oldcomment = clip->baseClip()->markerComment(position);
- if (oldcomment.isEmpty()) {
- emit displayMessage(i18n("No marker found at cursor time"), ErrorMessage);
- return;
- }
-
- CommentedTime marker(position, oldcomment);
- MarkerDialog d(clip->baseClip(), marker, m_document->timecode(), i18n("Edit Marker"), this);
- if (d.exec() == QDialog::Accepted) {
- if (d.newMarker().time() == position) {
- // marker position was not changed, only text
- AddMarkerCommand *command = new AddMarkerCommand(this, oldcomment, d.newMarker().comment(), id, position, true);
- m_commandStack->push(command);
- } else {
- // marker text and position were changed, remove previous marker and add new one
- AddMarkerCommand *command1 = new AddMarkerCommand(this, oldcomment, QString(), id, position, true);
- AddMarkerCommand *command2 = new AddMarkerCommand(this, QString(), d.newMarker().comment(), id, d.newMarker().time(), true);
- m_commandStack->push(command1);
- m_commandStack->push(command2);
- }
- }
-}
-