From 37a8266f4a32d07a27d453897febf1f25963a4d0 Mon Sep 17 00:00:00 2001 From: sandman Date: Mon, 30 Sep 2002 23:06:39 +0000 Subject: - again some speedups for the new busy indicator - (inefficient) fix for background pixmaps with alpha channel (untested) --- (limited to 'core') diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp index 5daaeff..33717bc 100644 --- a/core/launcher/launcherview.cpp +++ b/core/launcher/launcherview.cpp @@ -97,29 +97,18 @@ public: void setBusy(bool on) { QIconViewItem *c = on ? currentItem() : 0; + qDebug ( "set busy %d -> %s", on, c ? c-> text ().latin1() : "(null)" ); + if ( bsy != c ) { - if ( bsy ) - bsy-> repaint ( ); + QIconViewItem *oldbsy = bsy; bsy = c; + if ( oldbsy ) + oldbsy-> repaint ( ); + if ( bsy ) { - busystate = 5; - for ( int i = 0; i <= 5; i++ ) - bpm [i] = QPixmap ( ); - timerEvent ( 0 ); - busytimer = startTimer ( 150 ); - } - else - killTimer ( busytimer ); - } - } - - virtual void timerEvent ( QTimerEvent *te ) - { - if ( !te || ( te-> timerId ( ) == busytimer )) { - if ( bsy ) { - if ( bpm [::abs(busystate)]. isNull ( )) { - QPixmap *src = bsy-> QIconViewItem::pixmap(); + QPixmap *src = bsy-> QIconViewItem::pixmap(); + for ( int i = 0; i <= 5; i++ ) { QImage img = src->convertToImage(); QRgb* rgb; int count; @@ -131,7 +120,7 @@ public: count = img.numColors(); } int rc, gc, bc; - int bs = ::abs ( busystate * 10 ) + 25; + int bs = ::abs ( i * 10 ) + 25; colorGroup().highlight().rgb( &rc, &gc, &bc ); rc = rc * bs / 100; gc = gc * bs / 100; @@ -145,13 +134,30 @@ public: *rgb = qRgba ( ri, gi, bi, ai ); } - bpm [::abs(busystate)].convertFromImage( img ); + bpm [i].convertFromImage( img ); } - bsy-> repaint ( ); + busystate = 0; + if ( busytimer ) + killTimer ( busytimer ); + timerEvent ( 0 ); + busytimer = startTimer ( 180 ); + } + else { + killTimer ( busytimer ); + busytimer = 0; + } + } + } + virtual void timerEvent ( QTimerEvent *te ) + { + if ( !te || ( te-> timerId ( ) == busytimer )) { + if ( bsy ) { busystate++; if ( busystate > 5 ) busystate = -4; + + bsy-> repaint ( ); } } } @@ -206,7 +212,8 @@ public: void drawBackground( QPainter *p, const QRect &r ) { if ( !bgPixmap.isNull() ) { - p->drawTiledPixmap( r, bgPixmap, + p-> fillRect ( r, bgColor ); + p->drawTiledPixmap( r, bgPixmap, QPoint( (r.x() + contentsX()) % bgPixmap.width(), (r.y() + contentsY()) % bgPixmap.height() ) ); } else { -- cgit v0.9.0.2