]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.h
get ready for keyframes in timeline
[kdenlive] / src / customtrackview.h
index af88a19509f65bf7b6f7b26f74a1471e322552c5..020ea834e705e399e6726589f968ed87b503368b 100644 (file)
@@ -29,6 +29,8 @@
 #include <KUndoStack>
 
 #include "kdenlivedoc.h"
+#include "docclipbase.h"
+#include "guide.h"
 
 class ClipItem;
 class AbstractClipItem;
@@ -39,9 +41,11 @@ class CustomTrackView : public QGraphicsView {
 
 public:
     CustomTrackView(KdenliveDoc *doc, QGraphicsScene * projectscene, QWidget *parent = 0);
+    virtual ~ CustomTrackView();
     virtual void mousePressEvent(QMouseEvent * event);
     virtual void mouseReleaseEvent(QMouseEvent * event);
     virtual void mouseMoveEvent(QMouseEvent * event);
+    virtual void mouseDoubleClickEvent(QMouseEvent *event);
     void addTrack(TrackInfo type);
     void removeTrack();
     int cursorPos();
@@ -52,12 +56,17 @@ public:
     void resizeClip(const ItemInfo start, const ItemInfo end);
     void addClip(QDomElement xml, int clipId, ItemInfo info);
     void deleteClip(ItemInfo info);
+    void slotAddClipMarker();
+    void slotEditClipMarker();
+    void slotDeleteClipMarker();
+    void addMarker(const int id, const GenTime &pos, const QString comment);
     void setScale(double scaleFactor);
     void deleteClip(int clipId);
     void slotAddEffect(QDomElement effect, GenTime pos, int track);
     void addEffect(int track, GenTime pos, QDomElement effect);
     void deleteEffect(int track, GenTime pos, QDomElement effect);
     void updateEffect(int track, GenTime pos, QDomElement effect);
+    void moveEffect(int track, GenTime pos, int oldPos, int newPos);
     void addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
     void deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
     void updateTransition(int track, GenTime pos,  QDomElement oldTransition, QDomElement transition);
@@ -71,19 +80,32 @@ public:
     QList <TrackInfo> tracksList() const;
     void setTool(PROJECTTOOL tool);
     void cutClip(ItemInfo info, GenTime cutTime, bool cut);
+    void slotSeekToPreviousSnap();
+    void slotSeekToNextSnap();
+    double getSnapPointForPos(double pos);
+    QDomElement xmlInfo();
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
+    void moveCursorPos(int delta);
     void updateCursorPos();
     void slotDeleteEffect(ClipItem *clip, QDomElement effect);
     void slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable);
+    void slotChangeEffectPosition(ClipItem *clip, int currentPos, int newPos);
     void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
     void slotRefreshEffects(ClipItem *clip);
     void setDuration(int duration);
     void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition = QDomElement());
+    void slotAddTransitionToSelectedClips(QDomElement transition);
     void slotTransitionUpdated(Transition *, QDomElement);
     void slotSwitchTrackAudio(int ix);
     void slotSwitchTrackVideo(int ix);
+    void slotUpdateClip(int clipId);
+    void slotAddClipMarker(int id, GenTime t, QString c);
+    void addGuide(const GenTime pos, const QString &comment);
+    void slotAddGuide();
+    void slotDeleteGuide();
+    void editGuide(const GenTime oldPos, const GenTime pos, const QString &comment);
 
 protected:
     virtual void drawBackground(QPainter * painter, const QRectF & rect);
@@ -109,6 +131,7 @@ private:
     OPERATIONTYPE m_operationMode;
     OPERATIONTYPE m_moveOpMode;
     AbstractClipItem *m_dragItem;
+    Guide *m_dragGuide;
     KUndoStack *m_commandStack;
     QGraphicsItem *m_visualTip;
     QGraphicsItemAnimation *m_animation;
@@ -119,8 +142,8 @@ private:
     QPoint m_clickPoint;
     QPoint m_clickEvent;
     QList <GenTime> m_snapPoints;
+    QList <Guide *> m_guides;
     void updateSnapPoints(AbstractClipItem *selected);
-    double getSnapPointForPos(double pos);
     ClipItem *getClipItemAt(int pos, int track);
     ClipItem *getClipItemAt(GenTime pos, int track);
     Transition *getTransitionItemAt(int pos, int track);
@@ -128,7 +151,7 @@ private:
     void checkScrolling();
     /** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */
     bool m_autoScroll;
-    void displayContextMenu(QPoint pos, ClipItem *clip = NULL);
+    void displayContextMenu(QPoint pos, AbstractClipItem *clip = NULL);
     QMenu *m_timelineContextMenu;
     QMenu *m_timelineContextClipMenu;
     QMenu *m_timelineContextTransitionMenu;
@@ -137,7 +160,7 @@ private:
     QCursor m_razorCursor;
     /** Get the index of the video track that is just below current track */
     int getPreviousVideoTrack(int track);
-
+    void updateClipFade(ClipItem * item, bool updateFadeOut = false);
 
 signals:
     void cursorMoved(int, int);