[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kstyles/keramik
From:       Maks Orlovich <maksim () kde ! org>
Date:       2004-07-29 16:44:11
Message-ID: 20040729164411.97EC29A02 () office ! kde ! org
[Download RAW message or body]

CVS commit by orlovich: 

Merge in a couple of fixes to the progressbar animation code from plastik ---
- don't animate when at 100% or disabled (big oops on the second one). 
Also don't animate when not visible. Note that the latter has the implications for \
apps  like kmail or kapture that use the hidden widget hack --- they'll no longer get \
any progressbar animation;  which would not have worked right, particularly for \
people w/S/W cursors.  Fixes #78164
CCMAIL:78164-done@bugs.kde.org


  M +19 -12    keramik.cpp   1.133
  M +4 -3      keramik.h   1.27


--- kdelibs/kstyles/keramik/keramik.cpp  #1.132:1.133
@@ -13,5 +13,6 @@
              (C) 2001 Martijn Klingens      <klingens@kde.org>
 
-    Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed \
<gallium@kde.org> +   Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol \
Szwed <gallium@kde.org>, +   Improvements to progressbar animation from Plastik, \
Copyright (C) 2003 Sandro Giessl <sandro@giessl.com>  
    This library is free software; you can redistribute it and/or
@@ -282,5 +283,4 @@ KeramikStyle::KeramikStyle()
         forceSmallMode = false;
         hoverWidget    = 0;
-        progAnimShift  = 0;
 
         QSettings settings;
@@ -301,12 +301,18 @@ KeramikStyle::KeramikStyle()
 void KeramikStyle::updateProgressPos()
 {
-        progAnimShift++;
-        if (progAnimShift == 28)
-                progAnimShift = 0;
-                
         //Update the registered progressbars.
-        QMap<QWidget*, bool>::iterator iter;
+        QMap<QProgressBar*, int>::iterator iter;
         for (iter = progAnimWidgets.begin(); iter != progAnimWidgets.end(); iter++)
+        {
+                QProgressBar* pbar = iter.key(); 
+                if (pbar->isVisible() && pbar->isEnabled() &&
+                        pbar->progress() != pbar->totalSteps())
+                {
+                        ++iter.data();
+                        if (iter.data() == 28)
+                                iter.data() = 0;
                 iter.key()->update();
+                }
+        }
 }
 
@@ -355,5 +361,5 @@ void KeramikStyle::polish(QWidget* widge
         if (animateProgressBar && ::qt_cast<QProgressBar*>(widget))
         {
-                progAnimWidgets[widget] = true;
+                progAnimWidgets[static_cast<QProgressBar*>(widget)] = true;
                 connect(widget, SIGNAL(destroyed(QObject*)), this, \
SLOT(progressBarDestroyed(QObject*)));  }
@@ -391,5 +397,5 @@ void KeramikStyle::unPolish(QWidget* wid
         else if ( ::qt_cast<QProgressBar*>(widget) )
         {
-                progAnimWidgets.remove(widget);
+                progAnimWidgets.remove(static_cast<QProgressBar*>(widget));
         }
 
@@ -399,5 +405,5 @@ void KeramikStyle::unPolish(QWidget* wid
 void KeramikStyle::progressBarDestroyed(QObject* obj)
 {
-        progAnimWidgets.remove(static_cast<QWidget*>(obj));
+        progAnimWidgets.remove(static_cast<QProgressBar*>(obj));
 }
 
@@ -1849,4 +1855,5 @@ void KeramikStyle::drawControl( ControlE
                                 if (animateProgressBar)
                                 {
+                                        int progAnimShift = \
progAnimWidgets[const_cast<QProgressBar*>(pb)];  if (reverse)
                                         {

--- kdelibs/kstyles/keramik/keramik.h  #1.26:1.27
@@ -38,4 +38,6 @@
 #include "pixmaploader.h"
 
+class QProgressBar;
+
 class KeramikStyle : public KStyle
 {
@@ -156,6 +158,5 @@ private:
 
         //Animation support.
-        QMap<QWidget*, bool> progAnimWidgets;
-        int                  progAnimShift;
+        QMap<QProgressBar*, int> progAnimWidgets;
 
         bool eventFilter( QObject* object, QEvent* event );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic