X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcustomtrackview.h;h=1c3e33a91a9e27e318b146b0ee2bae49bd5e755a;hb=301a8aca1bf4356003f5d24c02f19ee52a0098d9;hp=fecbcfaa1035bc8a51095bcb96cb5ba3b19745ba;hpb=7d1f818376b25f793ad6e8960b73a24a39605945;p=kdenlive diff --git a/src/customtrackview.h b/src/customtrackview.h index fecbcfaa..1c3e33a9 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -31,12 +31,12 @@ #include "docclipbase.h" #include "guide.h" #include "effectslist.h" +#include "customtrackscene.h" class ClipItem; class AbstractClipItem; class AbstractGroupItem; class Transition; -class CustomTrackScene; class CustomTrackView : public QGraphicsView { @@ -59,7 +59,7 @@ public: /** move transition, startPos = (old start, old end), endPos = (new start, new end) */ void moveTransition(const ItemInfo start, const ItemInfo end, bool m_refresh); void resizeClip(const ItemInfo start, const ItemInfo end, bool dontWorry = false); - void addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList list = EffectsList(), bool refresh = true); + void addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList list = EffectsList(), bool overwrite = false, bool push = false, bool refresh = true); void deleteClip(ItemInfo info, bool refresh = true); void slotDeleteClipMarker(const QString &comment, const QString &id, const GenTime &position); void slotDeleteAllClipMarkers(const QString &id); @@ -84,7 +84,7 @@ public: void checkTrackHeight(); //QList tracksList() const; void setTool(PROJECTTOOL tool); - void cutClip(ItemInfo info, GenTime cutTime, bool cut); + ClipItem *cutClip(ItemInfo info, GenTime cutTime, bool cut, bool execute = true); void slotSeekToPreviousSnap(); void slotSeekToNextSnap(); double getSnapPointForPos(double pos); @@ -96,7 +96,7 @@ public: void clipStart(); void clipEnd(); void changeClipSpeed(); - void doChangeClipSpeed(ItemInfo info, const double speed, const double oldspeed, int strobe, const QString &id); + void doChangeClipSpeed(ItemInfo info, ItemInfo speedIndependantInfo, const double speed, const double oldspeed, int strobe, const QString &id); void setDocumentModified(); void setInPoint(); void setOutPoint(); @@ -124,6 +124,12 @@ public: void reloadTransitionLumas(); void updateProjectFps(); double fps() const; + int selectedTrack() const; + void selectClip(bool add, bool group = false); + void selectTransition(bool add, bool group = false); + QStringList extractTransitionsLumas(); + void setEditMode(EDITMODE mode); + void insertClipCut(DocClipBase *clip, int in, int out); public slots: void setCursorPos(int pos, bool seek = true); @@ -141,7 +147,7 @@ public slots: void slotSwitchTrackAudio(int ix); void slotSwitchTrackVideo(int ix); void slotSwitchTrackLock(int ix); - void slotUpdateClip(const QString &clipId); + void slotUpdateClip(const QString &clipId, bool reload = true); void slotAddClipMarker(const QString &id, GenTime t, QString c); bool addGuide(const GenTime pos, const QString &comment); void slotAddGuide(); @@ -159,6 +165,10 @@ public slots: void slotDeleteTrack(int ix); void slotChangeTrack(int ix); void clipNameChanged(const QString id, const QString name); + void slotTrackUp(); + void slotTrackDown(); + void slotSelectTrack(int ix); + void insertZoneOverwrite(QStringList data, int in); protected: virtual void drawBackground(QPainter * painter, const QRectF & rect); @@ -168,6 +178,7 @@ protected: virtual void dragLeaveEvent(QDragLeaveEvent * event); virtual void dropEvent(QDropEvent * event); virtual void wheelEvent(QWheelEvent * e); + virtual void keyPressEvent(QKeyEvent * event); virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; @@ -232,10 +243,12 @@ private: bool m_blockRefresh; AbstractGroupItem *m_selectionGroup; QList m_waitingThumbs; + int m_selectedTrack; + int m_spacerOffset; /** Get the index of the video track that is just below current track */ int getPreviousVideoTrack(int track); - void updateClipFade(ClipItem * item); + void updatePositionEffects(ClipItem * item, ItemInfo info); bool insertDropClips(const QMimeData *data, const QPoint pos); bool canBePastedTo(ItemInfo info, int type) const; bool canBePastedTo(QList infoList, int type) const; @@ -252,6 +265,13 @@ private: void updateClipTypeActions(ClipItem *clip); /** Whether an item can be moved to a new position without colliding with similar items */ bool itemCollision(AbstractClipItem *item, ItemInfo newPos); + /** Selects all items in the scene rect, and sets ok to false if a group going over several tracks is found in it */ + QList checkForGroups(const QRectF &rect, bool *ok); + /** Adjust clips under another one when working in overwrite mode */ + void adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInfo posinfo, QUndoCommand *command); + void adjustTimelineTransitions(EDITMODE mode, Transition *item, QUndoCommand *command); + /** Adjust keyframes when pasted to another clip */ + void adjustKeyfames(GenTime oldstart, GenTime newstart, GenTime duration, QDomElement xml); private slots: void slotRefreshGuides(); @@ -260,6 +280,7 @@ private slots: void slotEditTimeLineGuide(); void slotDeleteTimeLineGuide(); void slotFetchNextThumbs(); + void checkTrackSequence(int track); signals: void cursorMoved(int, int); @@ -270,9 +291,13 @@ signals: void transitionItemSelected(Transition*, int track = 0, QPoint p = QPoint(), bool update = false); void activateDocumentMonitor(); void trackHeightChanged(); + void tracksChanged(); void displayMessage(const QString, MessageType); - void showClipFrame(DocClipBase *, const int); + void showClipFrame(DocClipBase *, QPoint, const int); void doTrackLock(int, bool); + void updateClipMarkers(DocClipBase *); + void updateTrackHeaders(); + void playMonitor(); }; #endif