]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.cpp
Remove some more unnecessary empty variable initializations
[kdenlive] / src / customtrackview.cpp
index 6c17d122990664186757c5bc79794c6590c45c04..b5dcf60c22553d49334bd85ab9bb354528e3a978 100644 (file)
 // const bool animate = KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects;
 // const int duration = animate ? 1500 : 1;
 
-CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent)
-        : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL), m_ungroupAction(NULL), m_clipDrag(false)
+CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent) :
+        QGraphicsView(projectscene, parent),
+        m_tracksHeight(KdenliveSettings::trackheight()),
+        m_selectedTrack(0),
+        m_projectDuration(0),
+        m_cursorPos(0),
+        m_document(doc),
+        m_scene(projectscene),
+        m_cursorLine(NULL),
+        m_operationMode(NONE),
+        m_moveOpMode(NONE),
+        m_dragItem(NULL),
+        m_dragGuide(NULL),
+        m_visualTip(NULL),
+        m_animation(NULL),
+        m_clickPoint(),
+        m_autoScroll(KdenliveSettings::autoscroll()),
+        m_changeSpeedAction(NULL),
+        m_pasteEffectsAction(NULL),
+        m_ungroupAction(NULL),
+        m_scrollOffset(0),
+        m_clipDrag(false),
+        m_findIndex(0),
+        m_tool(SELECTTOOL),
+        m_copiedItems(),
+        m_menuPosition(),
+        m_blockRefresh(false),
+        m_selectionGroup(NULL)
 {
     if (doc) m_commandStack = doc->commandStack();
     else m_commandStack = NULL;
@@ -125,10 +151,11 @@ void CustomTrackView::setDocumentModified()
     m_document->setModified(true);
 }
 
-void CustomTrackView::setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition)
+void CustomTrackView::setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition, QActionGroup *clipTypeGroup)
 {
     m_timelineContextMenu = timeline;
     m_timelineContextClipMenu = clip;
+    m_clipTypeGroup = clipTypeGroup;
     QList <QAction *> list = m_timelineContextClipMenu->actions();
     for (int i = 0; i < list.count(); i++) {
         if (list.at(i)->data().toString() == "change_speed") m_changeSpeedAction = list.at(i);
@@ -646,6 +673,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         m_scene->clearSelection();
         event->accept();
         emit clipItemSelected(NULL);
+        updateClipTypeActions(NULL);
         if (m_tool == SPACERTOOL) {
             QList<QGraphicsItem *> selection;
             if (event->modifiers() == Qt::ControlModifier) {
@@ -689,7 +717,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
             return;
         }
         AbstractClipItem *clip = static_cast <AbstractClipItem *>(m_dragItem);
-        RazorClipCommand* command = new RazorClipCommand(this, clip->info(), GenTime((int)(mapToScene(event->pos()).x()), m_document->fps()), true);
+        RazorClipCommand* command = new RazorClipCommand(this, clip->info(), GenTime((int)(mapToScene(event->pos()).x()), m_document->fps()));
         m_document->renderer()->pause();
         m_commandStack->push(command);
         m_document->setModified(true);
@@ -726,7 +754,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
     if (m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) emit clipItemSelected((ClipItem*) m_dragItem);
     else emit clipItemSelected(NULL);
 
-    if (event->modifiers() != Qt::ControlModifier && (m_dragItem->isSelected() || dragGroup && dragGroup->isSelected())) {
+    if (event->modifiers() != Qt::ControlModifier && (m_dragItem->isSelected() || (dragGroup && dragGroup->isSelected()))) {
         // If clicked item is selected, allow move
         if (dragGroup) dragGroup->setSelected(true);
         //event->accept();
@@ -742,8 +770,10 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
         bool selected = !m_dragItem->isSelected();
         if (dragGroup) dragGroup->setSelected(selected);
         else m_dragItem->setSelected(selected);
+
         groupSelectedItems();
         ClipItem *clip = static_cast <ClipItem *>(m_dragItem);
+        updateClipTypeActions(dragGroup == NULL ? clip : NULL);
         m_changeSpeedAction->setEnabled(clip->clipType() == AV || clip->clipType() == VIDEO);
         m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
     }
@@ -1026,11 +1056,13 @@ void CustomTrackView::displayContextMenu(QPoint pos, AbstractClipItem *clip, Abs
         m_changeSpeedAction->setEnabled(false);
         m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
         m_ungroupAction->setEnabled(true);
+        updateClipTypeActions(NULL);
         m_timelineContextClipMenu->popup(pos);
     } else {
         m_ungroupAction->setEnabled(false);
         if (clip->type() == AVWIDGET) {
             ClipItem *item = static_cast <ClipItem*>(clip);
+            updateClipTypeActions(item);
             m_changeSpeedAction->setEnabled(item->clipType() == AV || item->clipType() == VIDEO);
             m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
             m_timelineContextClipMenu->popup(pos);
@@ -1331,7 +1363,7 @@ void CustomTrackView::slotChangeEffectState(ClipItem *clip, int effectPos, bool
 
 void CustomTrackView::slotChangeEffectPosition(ClipItem *clip, int currentPos, int newPos)
 {
-    MoveEffectCommand *command = new MoveEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), currentPos, newPos, true);
+    MoveEffectCommand *command = new MoveEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), currentPos, newPos);
     m_commandStack->push(command);
     m_document->setModified(true);
 }
@@ -1604,6 +1636,11 @@ void CustomTrackView::dropEvent(QDropEvent * event)
         for (int i = 0; i < items.count(); i++) {
             ClipItem *item = static_cast <ClipItem *>(items.at(i));
             if (!hasVideoClip && (item->clipType() == AV || item->clipType() == VIDEO)) hasVideoClip = true;
+            if (items.count() == 1) {
+                updateClipTypeActions(item);
+            } else {
+                updateClipTypeActions(NULL);
+            }
             AddTimelineClipCommand *command = new AddTimelineClipCommand(this, item->xml(), item->clipProducer(), item->info(), item->effectList(), false, false);
             m_commandStack->push(command);
             item->baseClip()->addReference();
@@ -1821,7 +1858,7 @@ void CustomTrackView::slotSwitchTrackAudio(int ix)
 void CustomTrackView::slotSwitchTrackLock(int ix)
 {
     int tracknumber = m_document->tracksCount() - ix - 1;
-    LockTrackCommand *command = new LockTrackCommand(this, ix, !m_document->trackInfoAt(tracknumber).isLocked, true);
+    LockTrackCommand *command = new LockTrackCommand(this, ix, !m_document->trackInfoAt(tracknumber).isLocked);
     m_commandStack->push(command);
 }
 
@@ -2022,7 +2059,7 @@ void CustomTrackView::deleteClip(const QString &clipId)
                 count++;
                 if (item->parentItem()) {
                     // Clip is in a group, destroy the group
-                    new GroupClipsCommand(this, QList<ItemInfo>() << item->info(), QList<ItemInfo>(), false, true, deleteCommand);
+                    new GroupClipsCommand(this, QList<ItemInfo>() << item->info(), QList<ItemInfo>(), false, deleteCommand);
                 }
                 new AddTimelineClipCommand(this, item->xml(), item->clipProducer(), item->info(), item->effectList(), true, true, deleteCommand);
             }
@@ -2637,7 +2674,7 @@ void CustomTrackView::deleteSelectedClips()
                 }
             }
             if (clipInfos.count() > 0) {
-                new GroupClipsCommand(this, clipInfos, transitionInfos, false, true, deleteSelected);
+                new GroupClipsCommand(this, clipInfos, transitionInfos, false, deleteSelected);
             }
         }
     }
@@ -2682,7 +2719,7 @@ void CustomTrackView::changeClipSpeed()
             double speed = (double) percent / 100.0;
             if (item->speed() != speed && (item->clipType() == VIDEO || item->clipType() == AV)) {
                 count++;
-                new ChangeSpeedCommand(this, info, item->speed(), speed, item->clipProducer(), true, changeSelected);
+                new ChangeSpeedCommand(this, info, item->speed(), speed, item->clipProducer(), changeSelected);
             }
         }
     }
@@ -2720,7 +2757,7 @@ void CustomTrackView::cutSelectedClips()
             if (item->parentItem() && item->parentItem() != m_selectionGroup) {
                 emit displayMessage(i18n("Cannot cut a clip in a group"), ErrorMessage);
             } else if (currentPos > item->startPos() && currentPos <  item->endPos()) {
-                RazorClipCommand *command = new RazorClipCommand(this, item->info(), currentPos, true);
+                RazorClipCommand *command = new RazorClipCommand(this, item->info(), currentPos);
                 m_commandStack->push(command);
             }
         }
@@ -2752,7 +2789,7 @@ void CustomTrackView::groupClips(bool group)
         }
     }
     if (clipInfos.count() > 0) {
-        GroupClipsCommand *command = new GroupClipsCommand(this, clipInfos, transitionInfos, group, true);
+        GroupClipsCommand *command = new GroupClipsCommand(this, clipInfos, transitionInfos, group);
         m_commandStack->push(command);
     }
 }
@@ -3387,13 +3424,13 @@ void CustomTrackView::clipEnd()
 void CustomTrackView::slotAddClipMarker(const QString &id, GenTime t, QString c)
 {
     QString oldcomment = m_document->clipManager()->getClipById(id)->markerComment(t);
-    AddMarkerCommand *command = new AddMarkerCommand(this, oldcomment, c, id, t, true);
+    AddMarkerCommand *command = new AddMarkerCommand(this, oldcomment, c, id, t);
     m_commandStack->push(command);
 }
 
 void CustomTrackView::slotDeleteClipMarker(const QString &comment, const QString &id, const GenTime &position)
 {
-    AddMarkerCommand *command = new AddMarkerCommand(this, comment, QString(), id, position, true);
+    AddMarkerCommand *command = new AddMarkerCommand(this, comment, QString(), id, position);
     m_commandStack->push(command);
 }
 
@@ -3410,7 +3447,7 @@ void CustomTrackView::slotDeleteAllClipMarkers(const QString &id)
     deleteMarkers->setText("Delete clip markers");
 
     for (int i = 0; i < markers.size(); i++) {
-        new AddMarkerCommand(this, markers.at(i).comment(), QString(), id, markers.at(i).time(), true, deleteMarkers);
+        new AddMarkerCommand(this, markers.at(i).comment(), QString(), id, markers.at(i).time(), deleteMarkers);
     }
     m_commandStack->push(deleteMarkers);
 }
@@ -4021,7 +4058,7 @@ void CustomTrackView::slotInsertTrack(int ix)
             info.isBlind = true;
             info.isLocked = false;
         }
-        AddTrackCommand *addTrack = new AddTrackCommand(this, ix, info, true, true);
+        AddTrackCommand *addTrack = new AddTrackCommand(this, ix, info, true);
         m_commandStack->push(addTrack);
         m_document->setModified(true);
     }
@@ -4035,7 +4072,7 @@ void CustomTrackView::slotDeleteTrack(int ix)
         TrackInfo info = m_document->trackInfoAt(m_document->tracksCount() - ix - 1);
         deleteTimelineTrack(ix, info);
         m_document->setModified(true);
-        /*AddTrackCommand* command = new AddTrackCommand(this, ix, info, false, true);
+        /*AddTrackCommand* command = new AddTrackCommand(this, ix, info, false);
         m_commandStack->push(command);*/
     }
 }
@@ -4095,14 +4132,14 @@ void CustomTrackView::deleteTimelineTrack(int ix, TrackInfo trackinfo)
         }
     }
 
-    new AddTrackCommand(this, ix, trackinfo, false, true, deleteTrack);
+    new AddTrackCommand(this, ix, trackinfo, false, deleteTrack);
     m_commandStack->push(deleteTrack);
 }
 
 void CustomTrackView::changeTimelineTrack(int ix, TrackInfo trackinfo)
 {
     TrackInfo oldinfo = m_document->trackInfoAt(m_document->tracksCount() - ix - 1);
-    ChangeTrackCommand *changeTrack = new ChangeTrackCommand(this, ix, oldinfo, trackinfo, true);
+    ChangeTrackCommand *changeTrack = new ChangeTrackCommand(this, ix, oldinfo, trackinfo);
     m_commandStack->push(changeTrack);
 }
 
@@ -4225,7 +4262,7 @@ void CustomTrackView::splitAudio()
                 if (clip->parentItem()) {
                     emit displayMessage(i18n("Cannot split audio of grouped clips"), ErrorMessage);
                 } else {
-                    new SplitAudioCommand(this, clip->track(), clip->startPos(), true, splitCommand);
+                    new SplitAudioCommand(this, clip->track(), clip->startPos(), splitCommand);
                 }
             }
         }
@@ -4302,7 +4339,7 @@ void CustomTrackView::doSplitAudio(const GenTime &pos, int track, bool split)
     }
 }
 
-void CustomTrackView::videoOnly()
+void CustomTrackView::setVideoOnly()
 {
     resetSelectionGroup();
     QList<QGraphicsItem *> selection = scene()->selectedItems();
@@ -4319,7 +4356,7 @@ void CustomTrackView::videoOnly()
                 if (clip->parentItem()) {
                     emit displayMessage(i18n("Cannot change grouped clips"), ErrorMessage);
                 } else {
-                    new ChangeClipTypeCommand(this, clip->track(), clip->startPos(), true, false, clip->isVideoOnly(), clip->isAudioOnly(), true, videoCommand);
+                    new ChangeClipTypeCommand(this, clip->track(), clip->startPos(), true, false, clip->isVideoOnly(), clip->isAudioOnly(), videoCommand);
                 }
             }
         }
@@ -4327,7 +4364,7 @@ void CustomTrackView::videoOnly()
     m_commandStack->push(videoCommand);
 }
 
-void CustomTrackView::audioOnly()
+void CustomTrackView::setAudioOnly()
 {
     resetSelectionGroup();
     QList<QGraphicsItem *> selection = scene()->selectedItems();
@@ -4344,7 +4381,32 @@ void CustomTrackView::audioOnly()
                 if (clip->parentItem()) {
                     emit displayMessage(i18n("Cannot change grouped clips"), ErrorMessage);
                 } else {
-                    new ChangeClipTypeCommand(this, clip->track(), clip->startPos(), false, true, clip->isVideoOnly(), clip->isAudioOnly(), true, videoCommand);
+                    new ChangeClipTypeCommand(this, clip->track(), clip->startPos(), false, true, clip->isVideoOnly(), clip->isAudioOnly(), videoCommand);
+                }
+            }
+        }
+    }
+    m_commandStack->push(videoCommand);
+}
+
+void CustomTrackView::setAudioAndVideo()
+{
+    resetSelectionGroup();
+    QList<QGraphicsItem *> selection = scene()->selectedItems();
+    if (selection.isEmpty()) {
+        emit displayMessage(i18n("You must select one clip for this action"), ErrorMessage);
+        return;
+    }
+    QUndoCommand *videoCommand = new QUndoCommand();
+    videoCommand->setText(i18n("Audio and Video"));
+    for (int i = 0; i < selection.count(); i++) {
+        if (selection.at(i)->type() == AVWIDGET) {
+            ClipItem *clip = static_cast <ClipItem *>(selection.at(i));
+            if (clip->clipType() == AV || clip->clipType() == PLAYLIST) {
+                if (clip->parentItem()) {
+                    emit displayMessage(i18n("Cannot change grouped clips"), ErrorMessage);
+                } else {
+                    new ChangeClipTypeCommand(this, clip->track(), clip->startPos(), false, false, clip->isVideoOnly(), clip->isAudioOnly(), videoCommand);
                 }
             }
         }
@@ -4378,4 +4440,24 @@ void CustomTrackView::doChangeClipType(const GenTime &pos, int track, bool video
     clip->update();
 }
 
+void CustomTrackView::updateClipTypeActions(ClipItem *clip)
+{
+    if (clip == NULL || (clip->clipType() != AV && clip->clipType() != PLAYLIST)) {
+        m_clipTypeGroup->setEnabled(false);
+    } else {
+        m_clipTypeGroup->setEnabled(true);
+        QList <QAction *> actions = m_clipTypeGroup->actions();
+        QString lookup;
+        if (clip->isAudioOnly()) lookup = "clip_audio_only";
+        else if (clip->isVideoOnly()) lookup = "clip_video_only";
+        else  lookup = "clip_audio_and_video";
+        for (int i = 0; i < actions.count(); i++) {
+            if (actions.at(i)->data().toString() == lookup) {
+                actions.at(i)->setChecked(true);
+                break;
+            }
+        }
+    }
+}
+
 #include "customtrackview.moc"