[Digikam-devel] extragear/graphics/digikam/libs/widgets

Gilles Caulier caulier.gilles at free.fr
Tue Jul 12 14:37:46 BST 2005


SVN commit 433991 by cgilles:

digiKam Image guide widget : animated guide is more visible!

CCMAIL: digikam-devel at kde.org

 M  +23 -5     imageguidewidget.cpp  
 M  +3 -0      imageguidewidget.h  


--- trunk/extragear/graphics/digikam/libs/widgets/imageguidewidget.cpp #433990:433991
@@ -26,6 +26,7 @@
 #include <qpen.h>
 #include <qpixmap.h>
 #include <qtooltip.h>
+#include <qtimer.h>
 
 // KDE include.
 
@@ -49,10 +50,13 @@
                                    bool spotVisible, int guideMode)
                 : QWidget(parent, 0, Qt::WDestructiveClose)
 {
-    m_spotVisible             = spotVisible;
-    m_guideMode               = guideMode;
-    m_focus                   = false;
+    m_spotVisible = spotVisible;
+    m_guideMode   = guideMode;
+    m_focus       = false;
+    m_flicker     = false;
     
+    m_timerID = startTimer(800);
+    
     setBackgroundMode(Qt::NoBackground);
     setMinimumSize(w, h);
     setMouseTracking(true);
@@ -137,8 +141,8 @@
              {
              QPainter p(m_pixmap);
              p.setPen(QPen(Qt::red, 1, Qt::DotLine));
-             p.drawLine(xspot, m_rect.top(), xspot, m_rect.bottom());
-             p.drawLine(m_rect.left(), yspot, m_rect.right(), yspot);
+             p.drawLine(xspot, m_rect.top() + m_flicker, xspot, m_rect.bottom() - m_flicker);
+             p.drawLine(m_rect.left() + m_flicker, yspot, m_rect.right() - m_flicker, yspot);
              p.end();
              break;
              }
@@ -149,6 +153,8 @@
              p.setPen(QPen(Qt::red, 1, Qt::SolidLine));
              p.drawLine(xspot-10, yspot-10, xspot+10, yspot+10);
              p.drawLine(xspot+10, yspot-10, xspot-10, yspot+10);
+             if (m_flicker%2 != 0)
+                p.setPen(QPen(Qt::red, 2, Qt::SolidLine));
              p.drawEllipse( xspot-5, yspot-5, 11, 11 );
              p.end();
              break;
@@ -159,6 +165,18 @@
     bitBlt(this, 0, 0, m_pixmap);
 }
 
+void ImageGuideWidget::timerEvent(QTimerEvent * e)
+{
+    if (e->timerId() == m_timerID)
+        {
+        if (m_flicker == 5) m_flicker=0;
+        else m_flicker++;
+        repaint(false);
+        }
+    else
+        QWidget::timerEvent(e);
+}
+
 void ImageGuideWidget::resizeEvent(QResizeEvent * e)
 {
     blockSignals(true);
--- trunk/extragear/graphics/digikam/libs/widgets/imageguidewidget.h #433990:433991
@@ -73,6 +73,7 @@
     
     void paintEvent( QPaintEvent *e );
     void resizeEvent( QResizeEvent * e );
+    void timerEvent(QTimerEvent * e);
     void mousePressEvent ( QMouseEvent * e );
     void mouseReleaseEvent ( QMouseEvent * e );
     void mouseMoveEvent ( QMouseEvent * e );
@@ -83,7 +84,9 @@
     int                  m_w;
     int                  m_h;
     
+    int                  m_timerID;
     int                  m_guideMode;
+    int                  m_flicker;
 
     bool                 m_focus;
     bool                 m_spotVisible;



More information about the Digikam-devel mailing list