]> git.sesse.net Git - kdenlive/commitdiff
Nicer timeline visual tips, fix video thumbnails being set on wrong clip
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 2 Mar 2008 19:35:24 +0000 (19:35 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 2 Mar 2008 19:35:24 +0000 (19:35 +0000)
svn path=/branches/KDE4/; revision=1981

src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp
src/customtrackview.h

index 214c00f0a9d5cdb34abea890542b763eccd8cbf2..23c68f1f83e7b323bbb8711876dbb7787965ea91 100644 (file)
@@ -39,7 +39,7 @@
 #include "kdenlivesettings.h"
 
 ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration)
-: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0)
+: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0)
 {
   //setToolTip(name);
   kDebug()<<"*******  CREATING NEW TML CLIP, DUR: "<<duration;
@@ -103,24 +103,29 @@ ClipItem::~ClipItem()
 
 void ClipItem::slotFetchThumbs()
 {
+  m_thumbsRequested += 2; 
   emit getThumb(m_cropStart, m_cropStart + m_cropDuration);
 }
 
 void ClipItem::slotGetStartThumb()
 {
+  m_thumbsRequested++;
   emit getThumb(m_cropStart, -1);
 }
 
 void ClipItem::slotGetEndThumb()
 {
+  m_thumbsRequested++;
   emit getThumb(-1, m_cropStart + m_cropDuration);
 }
 
 void ClipItem::slotThumbReady(int frame, QPixmap pix)
 {
+  if (m_thumbsRequested == 0) return;
   if (frame == m_cropStart) m_startPix = pix;
   else m_endPix = pix;
   update();
+  m_thumbsRequested--;
 }
 
 void ClipItem::slotGotAudioData(){
index 74f782e43ef29f7968f066ef477b3487b7776e7f..12eaa1b462e65dfc32ccade806567e608c9e650f 100644 (file)
@@ -116,6 +116,7 @@ class ClipItem : public QObject, public QGraphicsRectItem
     int m_effectsCounter;
     double m_opacity;
     QTimeLine *m_timeLine;
+    uint m_thumbsRequested;
     
     EffectsList m_effectList;
     QMap<int,QPixmap> audioThumbCachePic;
index 5ea58e017c703233ba46369b09fdf90c0b5e9017..82dc57de1df51dcebf8a298926bacd0954d77c98 100644 (file)
@@ -47,7 +47,11 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, QGraphicsScene * projectscene
   m_animationTimer->setFrameRange(0, 5);
   m_animationTimer->setUpdateInterval(100);
   m_animationTimer->setLoopCount(0);
-  m_tipColor = QColor(230, 50, 0, 150);
+  m_tipColor = QColor(0, 192, 0, 200);
+  QColor border = QColor(255,255,255,100);
+  m_tipPen.setColor(border);
+  m_tipPen.setWidth(3);
+
   setContentsMargins(0, 0, 0, 0);
   if (projectscene) {
     m_cursorLine = projectscene->addLine(0, 0, 0, 50);
@@ -166,9 +170,15 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
       else if (opMode == RESIZESTART) {
        kDebug()<<"********  RESIZE CLIP START; WIDTH: "<<size;
        if (m_visualTip == NULL) {
-         m_visualTip = new QGraphicsRectItem(clip->rect().x(), clip->rect().y(), size, clip->rect().height());
-         ((QGraphicsRectItem*) m_visualTip)->setBrush(m_tipColor);
-         ((QGraphicsRectItem*) m_visualTip)->setPen(QPen(Qt::transparent));
+         QPolygon polygon;
+         polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 - size * 2);
+         polygon << QPoint(clip->rect().x() + size * 2, clip->rect().y() + clip->rect().height() / 2 );
+         polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 + size * 2);
+         polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 - size * 2);
+
+         m_visualTip = new QGraphicsPolygonItem(polygon);
+         ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
+         ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
          m_visualTip->setZValue (100);
          m_animation = new QGraphicsItemAnimation;
          m_animation->setItem(m_visualTip);
@@ -187,9 +197,16 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
       }
       else if (opMode == RESIZEEND) {
        if (m_visualTip == NULL) {
-         m_visualTip = new QGraphicsRectItem(clip->rect().x() + clip->rect().width() - size, clip->rect().y(), size, clip->rect().height());
-         ((QGraphicsRectItem*) m_visualTip)->setBrush(m_tipColor);
-         ((QGraphicsRectItem*) m_visualTip)->setPen(QPen(Qt::transparent));
+         QPolygon polygon;
+         polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 - size * 2);
+         polygon << QPoint(clip->rect().x() + clip->rect().width() - size * 2, clip->rect().y() + clip->rect().height() / 2 );
+         polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 + size * 2);
+         polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 - size * 2);
+
+         m_visualTip = new QGraphicsPolygonItem(polygon);
+         ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
+         ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
+
          m_visualTip->setZValue (100);
          m_animation = new QGraphicsItemAnimation;
          m_animation->setItem(m_visualTip);
@@ -210,7 +227,7 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
        if (m_visualTip == NULL) {
          m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->fadeIn() * m_scale - size, clip->rect().y() - 8, size * 2, 16);
          ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
-         ((QGraphicsEllipseItem*) m_visualTip)->setPen(QPen(Qt::transparent));
+         ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
          m_visualTip->setZValue (100);
          m_animation = new QGraphicsItemAnimation;
          m_animation->setItem(m_visualTip);
@@ -231,7 +248,7 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
        if (m_visualTip == NULL) {
          m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->rect().width() - clip->fadeOut() * m_scale - size, clip->rect().y() - 8, size*2, 16);
          ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
-         ((QGraphicsEllipseItem*) m_visualTip)->setPen(QPen(Qt::transparent));
+         ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
          m_visualTip->setZValue (100);
          m_animation = new QGraphicsItemAnimation;
          m_animation->setItem(m_visualTip);
index dfb282004a205c50f4eb7e987970fe01c1ce17a2..88f523a06331da9659cdffa47b6354a330ee70e7 100644 (file)
@@ -91,6 +91,7 @@ class CustomTrackView : public QGraphicsView
     QGraphicsItemAnimation *m_animation;
     QTimeLine *m_animationTimer;
     QColor m_tipColor;
+    QPen m_tipPen;
     double m_scale;
     int m_clickPoint;
     QList <int> m_snapPoints;