]> git.sesse.net Git - kdenlive/blobdiff - src/customtrackview.h
use more forward decl. to have no unneeded recompiling
[kdenlive] / src / customtrackview.h
index f8ddb10544911f380ef2e0fb28537f4c86af19b5..fe5003f5dbd926c779504e7ce8b094e15ff38b92 100644 (file)
 #include <QGraphicsView>
 #include <QGraphicsItemAnimation>
 #include <QTimeLine>
+#include <QMenu>
 
 #include <KUndoStack>
 
 #include "kdenlivedoc.h"
-#include "clipitem.h"
+
+class ClipItem;
+class AbstractClipItem;
+class Transition;
 
 class CustomTrackView : public QGraphicsView {
     Q_OBJECT
@@ -38,7 +42,7 @@ public:
     virtual void mousePressEvent(QMouseEvent * event);
     virtual void mouseReleaseEvent(QMouseEvent * event);
     virtual void mouseMoveEvent(QMouseEvent * event);
-    void addTrack();
+    void addTrack(TrackInfo type);
     void removeTrack();
     int cursorPos();
     void checkAutoScroll();
@@ -52,6 +56,15 @@ public:
     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 addTransition(int track, GenTime pos, QDomElement transition);
+    void deleteTransition(int track, GenTime pos, QDomElement transition);
+    void updateTransition(int track, GenTime pos,  QDomElement oldTransition, QDomElement transition);
+    void activateMonitor();
+    int duration() const;
+    void deleteSelectedClips();
+    void setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition);
+    void checkTrackHeight();
+    QList <TrackInfo> tracksList() const;
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
@@ -61,6 +74,10 @@ public slots:
     void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
     void slotRefreshEffects(ClipItem *clip);
     void setDuration(int duration);
+    void slotAddTransition(ClipItem* clip , QDomElement transition, GenTime startTime , int startTrack);
+    void slotTransitionUpdated(QDomElement, QDomElement);
+    void slotSwitchTrackAudio(int ix);
+    void slotSwitchTrackVideo(int ix);
 
 protected:
     virtual void drawBackground(QPainter * painter, const QRectF & rect);
@@ -75,7 +92,7 @@ protected:
     virtual void resizeEvent(QResizeEvent * event);
 
 private:
-    int m_tracksCount;
+    uint m_tracksHeight;
     int m_projectDuration;
     int m_cursorPos;
     ClipItem *m_dropItem;
@@ -85,7 +102,7 @@ private:
     QPointF m_startPos;
     OPERATIONTYPE m_operationMode;
     OPERATIONTYPE m_moveOpMode;
-    ClipItem *m_dragItem;
+    AbstractClipItem *m_dragItem;
     KUndoStack *m_commandStack;
     QGraphicsItem *m_visualTip;
     QGraphicsItemAnimation *m_animation;
@@ -93,15 +110,22 @@ private:
     QColor m_tipColor;
     QPen m_tipPen;
     double m_scale;
-    int m_clickPoint;
+    QPoint m_clickPoint;
     QList <GenTime> m_snapPoints;
-    void updateSnapPoints(ClipItem *selected);
+    void updateSnapPoints(AbstractClipItem *selected);
     double getSnapPointForPos(double pos);
     ClipItem *getClipItemAt(int pos, int track);
     ClipItem *getClipItemAt(GenTime pos, int track);
     void checkScrolling();
     /** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */
     bool m_autoScroll;
+    void displayContextMenu(QPoint pos, ClipItem *clip = NULL);
+    QMenu *m_timelineContextMenu;
+    QMenu *m_timelineContextClipMenu;
+    QMenu *m_timelineContextTransitionMenu;
+    QList <TrackInfo> m_tracksList;
+    /** Get the index of the video track that is just below current track */
+    int getPreviousVideoTrack(int track);
 
 
 signals:
@@ -110,6 +134,10 @@ signals:
     void zoomOut();
     void mousePosition(int);
     void clipItemSelected(ClipItem*);
+    void transitionItemSelected(Transition*);
+    void activateDocumentMonitor();
+    void trackHeightChanged();
 };
 
 #endif
+