}
CustomTrackScene* AbstractClipItem::projectScene() {
- return static_cast <CustomTrackScene*>(scene());
+ if (scene()) return static_cast <CustomTrackScene*>(scene());
+ return NULL;
}
}
CustomTrackScene* AbstractGroupItem::projectScene() {
- return static_cast <CustomTrackScene*>(scene());
+ if (scene()) return static_cast <CustomTrackScene*>(scene());
+ return NULL;
}
ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps)
- : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_startThumbRequested(false), m_endThumbRequested(false), m_startFade(0), m_endFade(0), m_hover(false), m_selectedEffect(-1), m_speed(1.0), framePixelWidth(0) {
+ : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_startThumbRequested(false), m_endThumbRequested(false), m_startFade(0), m_endFade(0), m_hover(false), m_selectedEffect(-1), m_speed(1.0), framePixelWidth(0), m_startPix(QPixmap()), m_endPix(QPixmap()) {
setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() - 2));
setPos((qreal) info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight()) + 1);
}
void ClipItem::slotThumbReady(int frame, QPixmap pix) {
+ if (scene() == NULL) return;
QRectF r = sceneBoundingRect();
double width = m_startPix.width() / projectScene()->scale();
if (m_startThumbRequested && frame == m_cropStart.frames(m_fps)) {
m_scale = scale;
}
-double CustomTrackScene::scale() {
+double CustomTrackScene::scale() const {
return m_scale;
}
-int CustomTrackScene::tracksCount() {
+int CustomTrackScene::tracksCount() const {
return m_tracksList.count();
}
GenTime nextSnapPoint(GenTime pos);
double getSnapPointForPos(double pos, bool doSnap = true);
void setScale(double scale);
- double scale();
+ double scale() const;
QList <TrackInfo> m_tracksList;
- int tracksCount();
+ int tracksCount() const;
QPixmap m_transitionPixmap;
private:
// const int duration = animate ? 1500 : 1;
CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent)
- : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0) {
+ : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_selectedClipList(QList<AbstractClipItem *> ()) {
if (doc) m_commandStack = doc->commandStack();
else m_commandStack == NULL;
setMouseTracking(true);
void CustomTrackView::addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects) {
DocClipBase *baseclip = m_document->clipManager()->getClipById(clipId);
+ if (baseclip == NULL) {
+ emit displayMessage(i18n("No clip copied"), ErrorMessage);
+ return;
+ }
ClipItem *item = new ClipItem(baseclip, info, m_document->fps());
item->setEffectList(effects);
scene()->addItem(item);