X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fabstractgroupitem.h;h=3e0594ec824ebd7ec03acb0fd7833b5611d41f25;hb=aec01436823fc842d7bf7158e79bac84c1521552;hp=ec4268cf264a57f428cfe4fd00f728ba6b988dc6;hpb=79b7658c19e230a6d217b67a70daaa95ddfbabf3;p=kdenlive diff --git a/src/abstractgroupitem.h b/src/abstractgroupitem.h index ec4268cf..3e0594ec 100644 --- a/src/abstractgroupitem.h +++ b/src/abstractgroupitem.h @@ -21,28 +21,60 @@ #ifndef ABSTRACTGROUPITEM #define ABSTRACTGROUPITEM -#include #include "definitions.h" #include "gentime.h" +#include +#include + 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 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: - QPolygonF 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 m_resizeInfos; }; #endif