]> git.sesse.net Git - kdenlive/blobdiff - src/abstractgroupitem.h
Const'ref
[kdenlive] / src / abstractgroupitem.h
index 1945722e5cb5454a186f47c3ca6471d4998517c6..91792be7aca28620c99a48812d3454530a0cc4ef 100644 (file)
 #ifndef ABSTRACTGROUPITEM
 #define ABSTRACTGROUPITEM
 
-#include <QGraphicsItemGroup>
 #include "definitions.h"
 #include "gentime.h"
 
+#include <QGraphicsItemGroup>
+#include <QGraphicsSceneMouseEvent>
+
 class CustomTrackScene;
+class QGraphicsSceneMouseEvent;
 
-class AbstractGroupItem : public QObject , public QGraphicsItemGroup {
+class AbstractGroupItem : public QObject , public QGraphicsItemGroup
+{
     Q_OBJECT
 public:
     AbstractGroupItem(double fps);
     virtual int type() const;
     CustomTrackScene* projectScene();
     void addItem(QGraphicsItem * item);
+    void removeItem(QGraphicsItem * item);
+    int track() const;
+    QPainterPath clipGroupShape(const QPointF &offset) const;
+    QPainterPath clipGroupSpacerShape(const QPointF &offset) const;
+    QPainterPath transitionGroupShape(const QPointF &offset) const;
+    void setItemLocked(bool locked);
+    bool isItemLocked() const;
+    //    ItemInfo info() const;
+
+    /** @brief Resizes all clips in this group from start.
+    *@param diff Difference to startPos stored in m_resizeInfos */
+    void resizeStart(int diff);
+    /** @brief Resizes all clips in this group from end.
+    * @param diff Difference to endPos stored in m_resizeInfos */
+    void resizeEnd(int diff);
+    /** @brief Gets m_resizeInfos */
+    QList <ItemInfo> resizeInfos();
+    /** @brief Clears m_resizeInfos */
+    void clearResizeInfos();
+
+    /** @brief Gets the duration (length) of the group. */
+    GenTime duration();
 
 protected:
     virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
     virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
+    virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
 
 private:
-    QPainterPath groupShape(QPointF);
     void fixItemRect();
-    double m_fps;
+    QPainterPath groupShape(GRAPHICSRECTITEM type, const QPointF &offset) const;
+    QPainterPath spacerGroupShape(GRAPHICSRECTITEM type, const QPointF &offset) const;
+    /** Stores the original info of the items beeing resized. */
+    QList <ItemInfo> m_resizeInfos;
 };
 
 #endif