summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcherview.cpp53
1 files changed, 30 insertions, 23 deletions
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
@@ -84,87 +84,93 @@ public:
84 } 84 }
85 85
86 QPixmap* busyPixmap() const { return (QPixmap*)&bpm[::abs(busystate)]; } 86 QPixmap* busyPixmap() const { return (QPixmap*)&bpm[::abs(busystate)]; }
87 QIconViewItem* busyItem() const { return bsy; } 87 QIconViewItem* busyItem() const { return bsy; }
88 void setBigIcons( bool bi ) { bigIcns = bi; } 88 void setBigIcons( bool bi ) { bigIcns = bi; }
89 89
90 void updateCategoriesAndMimeTypes(); 90 void updateCategoriesAndMimeTypes();
91 91
92 void doAutoScroll() 92 void doAutoScroll()
93 { 93 {
94 // We don't want rubberbanding (yet) 94 // We don't want rubberbanding (yet)
95 } 95 }
96 96
97 void setBusy(bool on) 97 void setBusy(bool on)
98 { 98 {
99 QIconViewItem *c = on ? currentItem() : 0; 99 QIconViewItem *c = on ? currentItem() : 0;
100 qDebug ( "set busy %d -> %s", on, c ? c-> text ().latin1() : "(null)" );
101
100 if ( bsy != c ) { 102 if ( bsy != c ) {
101 if ( bsy ) 103 QIconViewItem *oldbsy = bsy;
102 bsy-> repaint ( );
103 bsy = c; 104 bsy = c;
104 105
106 if ( oldbsy )
107 oldbsy-> repaint ( );
108
105 if ( bsy ) { 109 if ( bsy ) {
106 busystate = 5; 110 QPixmap *src = bsy-> QIconViewItem::pixmap();
107 for ( int i = 0; i <= 5; i++ ) 111 for ( int i = 0; i <= 5; i++ ) {
108 bpm [i] = QPixmap ( );
109 timerEvent ( 0 );
110 busytimer = startTimer ( 150 );
111 }
112 else
113 killTimer ( busytimer );
114 }
115 }
116
117 virtual void timerEvent ( QTimerEvent *te )
118 {
119 if ( !te || ( te-> timerId ( ) == busytimer )) {
120 if ( bsy ) {
121 if ( bpm [::abs(busystate)]. isNull ( )) {
122 QPixmap *src = bsy-> QIconViewItem::pixmap();
123 QImage img = src->convertToImage(); 112 QImage img = src->convertToImage();
124 QRgb* rgb; 113 QRgb* rgb;
125 int count; 114 int count;
126 if ( img.depth() == 32 ) { 115 if ( img.depth() == 32 ) {
127 rgb = (QRgb*)img.bits(); 116 rgb = (QRgb*)img.bits();
128 count = img.bytesPerLine()/sizeof(QRgb)*img.height(); 117 count = img.bytesPerLine()/sizeof(QRgb)*img.height();
129 } else { 118 } else {
130 rgb = img.colorTable(); 119 rgb = img.colorTable();
131 count = img.numColors(); 120 count = img.numColors();
132 } 121 }
133 int rc, gc, bc; 122 int rc, gc, bc;
134 int bs = ::abs ( busystate * 10 ) + 25; 123 int bs = ::abs ( i * 10 ) + 25;
135 colorGroup().highlight().rgb( &rc, &gc, &bc ); 124 colorGroup().highlight().rgb( &rc, &gc, &bc );
136 rc = rc * bs / 100; 125 rc = rc * bs / 100;
137 gc = gc * bs / 100; 126 gc = gc * bs / 100;
138 bc = bc * bs / 100; 127 bc = bc * bs / 100;
139 128
140 for ( int r = 0; r < count; r++, rgb++ ) { 129 for ( int r = 0; r < count; r++, rgb++ ) {
141 int ri = rc + qRed ( *rgb ) * ( 100 - bs ) / 100; 130 int ri = rc + qRed ( *rgb ) * ( 100 - bs ) / 100;
142 int gi = gc + qGreen ( *rgb ) * ( 100 - bs ) / 100; 131 int gi = gc + qGreen ( *rgb ) * ( 100 - bs ) / 100;
143 int bi = bc + qBlue ( *rgb ) * ( 100 - bs ) / 100; 132 int bi = bc + qBlue ( *rgb ) * ( 100 - bs ) / 100;
144 int ai = qAlpha ( *rgb ); 133 int ai = qAlpha ( *rgb );
145 *rgb = qRgba ( ri, gi, bi, ai ); 134 *rgb = qRgba ( ri, gi, bi, ai );
146 } 135 }
147 136
148 bpm [::abs(busystate)].convertFromImage( img ); 137 bpm [i].convertFromImage( img );
149 } 138 }
150 bsy-> repaint ( ); 139 busystate = 0;
140 if ( busytimer )
141 killTimer ( busytimer );
142 timerEvent ( 0 );
143 busytimer = startTimer ( 180 );
144 }
145 else {
146 killTimer ( busytimer );
147 busytimer = 0;
148 }
149 }
150 }
151 151
152 virtual void timerEvent ( QTimerEvent *te )
153 {
154 if ( !te || ( te-> timerId ( ) == busytimer )) {
155 if ( bsy ) {
152 busystate++; 156 busystate++;
153 if ( busystate > 5 ) 157 if ( busystate > 5 )
154 busystate = -4; 158 busystate = -4;
159
160 bsy-> repaint ( );
155 } 161 }
156 } 162 }
157 } 163 }
158 164
159 bool inKeyEvent() const { return ike; } 165 bool inKeyEvent() const { return ike; }
160 void keyPressEvent(QKeyEvent* e) 166 void keyPressEvent(QKeyEvent* e)
161 { 167 {
162 ike = TRUE; 168 ike = TRUE;
163 if ( e->key() == Key_F33 /* OK button */ || e->key() == Key_Space ) 169 if ( e->key() == Key_F33 /* OK button */ || e->key() == Key_Space )
164 returnPressed(currentItem()); 170 returnPressed(currentItem());
165 QIconView::keyPressEvent(e); 171 QIconView::keyPressEvent(e);
166 ike = FALSE; 172 ike = FALSE;
167 } 173 }
168 174
169 void addItem(AppLnk* app, bool resort=TRUE); 175 void addItem(AppLnk* app, bool resort=TRUE);
170 bool removeLink(const QString& linkfile); 176 bool removeLink(const QString& linkfile);
@@ -193,33 +199,34 @@ public:
193 k = maj.left(12) == "application/" ? maj : maj.left(sl); 199 k = maj.left(12) == "application/" ? maj : maj.left(sl);
194 mimes.replace(k,(void*)1); 200 mimes.replace(k,(void*)1);
195 } 201 }
196 } 202 }
197 203
198 void setBackgroundPixmap( const QPixmap &pm ) { 204 void setBackgroundPixmap( const QPixmap &pm ) {
199 bgPixmap = pm; 205 bgPixmap = pm;
200 } 206 }
201 207
202 void setBackgroundColor( const QColor &c ) { 208 void setBackgroundColor( const QColor &c ) {
203 bgColor = c; 209 bgColor = c;
204 } 210 }
205 211
206 void drawBackground( QPainter *p, const QRect &r ) 212 void drawBackground( QPainter *p, const QRect &r )
207 { 213 {
208 if ( !bgPixmap.isNull() ) { 214 if ( !bgPixmap.isNull() ) {
209 p->drawTiledPixmap( r, bgPixmap, 215 p-> fillRect ( r, bgColor );
216 p->drawTiledPixmap( r, bgPixmap,
210 QPoint( (r.x() + contentsX()) % bgPixmap.width(), 217 QPoint( (r.x() + contentsX()) % bgPixmap.width(),
211 (r.y() + contentsY()) % bgPixmap.height() ) ); 218 (r.y() + contentsY()) % bgPixmap.height() ) );
212 } else { 219 } else {
213 p->fillRect( r, bgColor ); 220 p->fillRect( r, bgColor );
214 } 221 }
215 } 222 }
216 223
217 void setItemTextPos( ItemTextPos pos ) 224 void setItemTextPos( ItemTextPos pos )
218 { 225 {
219 calculateGrid( pos ); 226 calculateGrid( pos );
220 QIconView::setItemTextPos( pos ); 227 QIconView::setItemTextPos( pos );
221 } 228 }
222 229
223 void hideOrShowItems(bool resort); 230 void hideOrShowItems(bool resort);
224 231
225 void setTypeFilter(const QString& typefilter, bool resort) 232 void setTypeFilter(const QString& typefilter, bool resort)