summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcher.cpp14
-rw-r--r--core/launcher/launcher.h2
-rw-r--r--core/launcher/launcherview.cpp31
-rw-r--r--core/launcher/launcherview.h3
4 files changed, 43 insertions, 7 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 6948976..66cc3e6 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -202,96 +202,99 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder,
202 202
203 ids.clear(); 203 ids.clear();
204 204
205 Config cfg("Launcher"); 205 Config cfg("Launcher");
206 206
207 QStringList types = rootFolder->types(); 207 QStringList types = rootFolder->types();
208 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { 208 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) {
209 if ( !(*it).isEmpty() ) { 209 if ( !(*it).isEmpty() ) {
210 (void)newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it)); 210 (void)newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it));
211 setTabAppearance( *it, cfg ); 211 setTabAppearance( *it, cfg );
212 } 212 }
213 } 213 }
214 QListIterator<AppLnk> it( rootFolder->children() ); 214 QListIterator<AppLnk> it( rootFolder->children() );
215 AppLnk* l; 215 AppLnk* l;
216 while ( (l=it.current()) ) { 216 while ( (l=it.current()) ) {
217 if ( l->type() == "Separator" ) { // No tr 217 if ( l->type() == "Separator" ) { // No tr
218 rootFolder->remove(l); 218 rootFolder->remove(l);
219 delete l; 219 delete l;
220 } else { 220 } else {
221 int i=0; 221 int i=0;
222 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { 222 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) {
223 if ( *it == l->type() ) 223 if ( *it == l->type() )
224 ((LauncherView*)stack->widget(i))->addItem(l,FALSE); 224 ((LauncherView*)stack->widget(i))->addItem(l,FALSE);
225 i++; 225 i++;
226 } 226 }
227 } 227 }
228 ++it; 228 ++it;
229 } 229 }
230 rootFolder->detachChildren(); 230 rootFolder->detachChildren();
231 for (int i=0; i<tabs; i++) 231 for (int i=0; i<tabs; i++)
232 ((LauncherView*)stack->widget(i))->sort(); 232 ((LauncherView*)stack->widget(i))->sort();
233 233
234 // all documents 234 // all documents
235 QImage img( Resource::loadImage( "DocsIcon" ) ); 235 QImage img( Resource::loadImage( "DocsIcon" ) );
236 QPixmap pm; 236 QPixmap pm;
237 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 237 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
238 docview = newView( "Documents", // No tr 238 docview = newView( "Documents", // No tr
239 pm, tr("Documents")); 239 pm, tr("Documents"));
240 docview->populate( docFolder, QString::null ); 240 docview->populate( docFolder, QString::null );
241 docFolder->detachChildren(); 241 docFolder->detachChildren();
242 docview->setFileSystems(fs); 242 docview->setFileSystems(fs);
243 docview->setToolsEnabled(TRUE); 243 docview->setToolsEnabled(TRUE);
244 setTabAppearance( "Documents", cfg ); // No tr 244 setTabAppearance( "Documents", cfg ); // No tr
245 245
246 connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) ); 246 connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) );
247 247
248 ((LauncherView*)stack->widget(0))->setFocus(); 248 ((LauncherView*)stack->widget(0))->setFocus();
249 249
250 cfg. setGroup ( "GUI" );
251 setBusyIndicatorType ( cfg. readEntry ( "BusyType", QString::null ));
252
250 categoryBar->show(); 253 categoryBar->show();
251 stack->show(); 254 stack->show();
252} 255}
253 256
254void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg ) 257void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg )
255{ 258{
256 QString grp( "Tab %1" ); // No tr 259 QString grp( "Tab %1" ); // No tr
257 cfg.setGroup( grp.arg(id) ); 260 cfg.setGroup( grp.arg(id) );
258 LauncherView *v = view( id ); 261 LauncherView *v = view( id );
259 int idx = ids.findIndex( id ); 262 int idx = ids.findIndex( id );
260 CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx ); 263 CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx );
261 264
262 // View 265 // View
263 QString view = cfg.readEntry( "View", "Icon" ); 266 QString view = cfg.readEntry( "View", "Icon" );
264 if ( view == "List" ) // No tr 267 if ( view == "List" ) // No tr
265 v->setViewMode( LauncherView::List ); 268 v->setViewMode( LauncherView::List );
266 QString bgType = cfg.readEntry( "BackgroundType", "Image" ); 269 QString bgType = cfg.readEntry( "BackgroundType", "Image" );
267 if ( bgType == "Image" ) { // No tr 270 if ( bgType == "Image" ) { // No tr
268 QString pm = cfg.readEntry( "BackgroundImage", "launcher/opie-background" ); 271 QString pm = cfg.readEntry( "BackgroundImage", "launcher/opie-background" );
269 v->setBackgroundType( LauncherView::Image, pm ); 272 v->setBackgroundType( LauncherView::Image, pm );
270 } else if ( bgType == "SolidColor" ) { 273 } else if ( bgType == "SolidColor" ) {
271 QString c = cfg.readEntry( "BackgroundColor" ); 274 QString c = cfg.readEntry( "BackgroundColor" );
272 v->setBackgroundType( LauncherView::SolidColor, c ); 275 v->setBackgroundType( LauncherView::SolidColor, c );
273 } 276 }
274 QString textCol = cfg.readEntry( "TextColor" ); 277 QString textCol = cfg.readEntry( "TextColor" );
275 if ( textCol.isEmpty() ) 278 if ( textCol.isEmpty() )
276 v->setTextColor( QColor() ); 279 v->setTextColor( QColor() );
277 else 280 else
278 v->setTextColor( QColor(textCol) ); 281 v->setTextColor( QColor(textCol) );
279 QStringList font = cfg.readListEntry( "Font", ',' ); 282 QStringList font = cfg.readListEntry( "Font", ',' );
280 if ( font.count() == 4 ) 283 if ( font.count() == 4 )
281 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) ); 284 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) );
282 285
283 // Tabs 286 // Tabs
284 QString tabCol = cfg.readEntry( "TabColor" ); 287 QString tabCol = cfg.readEntry( "TabColor" );
285 if ( tabCol.isEmpty() ) 288 if ( tabCol.isEmpty() )
286 tab->bgColor = QColor(); 289 tab->bgColor = QColor();
287 else 290 else
288 tab->bgColor = QColor(tabCol); 291 tab->bgColor = QColor(tabCol);
289 QString tabTextCol = cfg.readEntry( "TabTextColor" ); 292 QString tabTextCol = cfg.readEntry( "TabTextColor" );
290 if ( tabTextCol.isEmpty() ) 293 if ( tabTextCol.isEmpty() )
291 tab->fgColor = QColor(); 294 tab->fgColor = QColor();
292 else 295 else
293 tab->fgColor = QColor(tabTextCol); 296 tab->fgColor = QColor(tabTextCol);
294} 297}
295 298
296void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs) 299void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs)
297{ 300{
@@ -326,96 +329,102 @@ LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm,
326 LauncherView* view = new LauncherView( stack ); 329 LauncherView* view = new LauncherView( stack );
327 connect( view, SIGNAL(clicked(const AppLnk*)), 330 connect( view, SIGNAL(clicked(const AppLnk*)),
328 this, SIGNAL(clicked(const AppLnk*))); 331 this, SIGNAL(clicked(const AppLnk*)));
329 connect( view, SIGNAL(rightPressed(AppLnk*)), 332 connect( view, SIGNAL(rightPressed(AppLnk*)),
330 this, SIGNAL(rightPressed(AppLnk*))); 333 this, SIGNAL(rightPressed(AppLnk*)));
331 ids.append(id); 334 ids.append(id);
332 categoryBar->addTab( new CategoryTab( pm, label ) ); 335 categoryBar->addTab( new CategoryTab( pm, label ) );
333 stack->addWidget( view, tabs++ ); 336 stack->addWidget( view, tabs++ );
334 return view; 337 return view;
335} 338}
336 339
337void CategoryTabWidget::updateLink(const QString& linkfile) 340void CategoryTabWidget::updateLink(const QString& linkfile)
338{ 341{
339 int i=0; 342 int i=0;
340 LauncherView* view; 343 LauncherView* view;
341 while ((view = (LauncherView*)stack->widget(i++))) { 344 while ((view = (LauncherView*)stack->widget(i++))) {
342 if ( view->removeLink(linkfile) ) 345 if ( view->removeLink(linkfile) )
343 break; 346 break;
344 } 347 }
345 addItem(linkfile); 348 addItem(linkfile);
346 docview->updateTools(); 349 docview->updateTools();
347} 350}
348 351
349void CategoryTabWidget::paletteChange( const QPalette &p ) 352void CategoryTabWidget::paletteChange( const QPalette &p )
350{ 353{
351 QVBox::paletteChange( p ); 354 QVBox::paletteChange( p );
352 QPalette pal = palette(); 355 QPalette pal = palette();
353 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); 356 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) );
354 pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); 357 pal.setColor( QColorGroup::Background, pal.active().background().light(110) );
355 categoryBar->setPalette( pal ); 358 categoryBar->setPalette( pal );
356 categoryBar->update(); 359 categoryBar->update();
357} 360}
358 361
359void CategoryTabWidget::setBusy(bool on) 362void CategoryTabWidget::setBusy(bool on)
360{ 363{
361 if ( on ) 364 if ( on )
362 ((LauncherView*)stack->visibleWidget())->setBusy(TRUE); 365 ((LauncherView*)stack->visibleWidget())->setBusy(TRUE);
363 else 366 else
364 for (int i=0; i<tabs; i++) 367 for (int i=0; i<tabs; i++)
365 ((LauncherView*)stack->widget(i))->setBusy(FALSE); 368 ((LauncherView*)stack->widget(i))->setBusy(FALSE);
366} 369}
367 370
368LauncherView *CategoryTabWidget::view( const QString &id ) 371LauncherView *CategoryTabWidget::view( const QString &id )
369{ 372{
370 int idx = ids.findIndex( id ); 373 int idx = ids.findIndex( id );
371 return (LauncherView *)stack->widget(idx); 374 return (LauncherView *)stack->widget(idx);
372} 375}
373 376
377void CategoryTabWidget::setBusyIndicatorType ( const QString &type )
378{
379 for ( QStringList::Iterator it = ids. begin ( ); it != ids. end ( ); ++it )
380 view ( *it )-> setBusyIndicatorType ( type );
381}
382
374//=========================================================================== 383//===========================================================================
375 384
376CategoryTabBar::CategoryTabBar( QWidget *parent, const char *name ) 385CategoryTabBar::CategoryTabBar( QWidget *parent, const char *name )
377 : QTabBar( parent, name ) 386 : QTabBar( parent, name )
378{ 387{
379 setFocusPolicy( NoFocus ); 388 setFocusPolicy( NoFocus );
380 connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) ); 389 connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) );
381} 390}
382 391
383CategoryTabBar::~CategoryTabBar() 392CategoryTabBar::~CategoryTabBar()
384{ 393{
385} 394}
386 395
387void CategoryTabBar::layoutTabs() 396void CategoryTabBar::layoutTabs()
388{ 397{
389 if ( !count() ) 398 if ( !count() )
390 return; 399 return;
391 400
392// int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 }; 401// int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 };
393 int available = width()-1; 402 int available = width()-1;
394 QFontMetrics fm = fontMetrics(); 403 QFontMetrics fm = fontMetrics();
395 int hiddenTabWidth = -7; 404 int hiddenTabWidth = -7;
396 int middleTab = currentTab(); 405 int middleTab = currentTab();
397 int hframe, vframe, overlap; 406 int hframe, vframe, overlap;
398 style().tabbarMetrics( this, hframe, vframe, overlap ); 407 style().tabbarMetrics( this, hframe, vframe, overlap );
399 int x = 0; 408 int x = 0;
400 QRect r; 409 QRect r;
401 QTab *t; 410 QTab *t;
402 int required = 0; 411 int required = 0;
403 int eventabwidth = (width()-1)/count(); 412 int eventabwidth = (width()-1)/count();
404 enum Mode { HideBackText, Pack, Even } mode=Even; 413 enum Mode { HideBackText, Pack, Even } mode=Even;
405 for ( int i = 0; i < count(); i++ ) { 414 for ( int i = 0; i < count(); i++ ) {
406 t = tab(i); 415 t = tab(i);
407 int iw = fm.width( t->text() ) + hframe - overlap; 416 int iw = fm.width( t->text() ) + hframe - overlap;
408 if ( i != middleTab ) { 417 if ( i != middleTab ) {
409 available -= hiddenTabWidth + hframe - overlap; 418 available -= hiddenTabWidth + hframe - overlap;
410 if ( t->iconSet() != 0 ) 419 if ( t->iconSet() != 0 )
411 available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 420 available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
412 } 421 }
413 if ( t->iconSet() != 0 ) 422 if ( t->iconSet() != 0 )
414 iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 423 iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
415 required += iw; 424 required += iw;
416 // As space gets tight, packed looks better than even. "10" must be at least 0. 425 // As space gets tight, packed looks better than even. "10" must be at least 0.
417 if ( iw >= eventabwidth-10 ) 426 if ( iw >= eventabwidth-10 )
418 mode = Pack; 427 mode = Pack;
419 } 428 }
420 if ( mode == Pack && required > width()-1 ) 429 if ( mode == Pack && required > width()-1 )
421 mode = HideBackText; 430 mode = HideBackText;
@@ -1122,96 +1131,101 @@ void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
1122void Launcher::cancelSync() 1131void Launcher::cancelSync()
1123{ 1132{
1124#ifndef QT_NO_COP 1133#ifndef QT_NO_COP
1125 QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); 1134 QCopEnvelope e( "QPE/Desktop", "cancelSync()" );
1126#endif 1135#endif
1127} 1136}
1128 1137
1129void Launcher::launcherMessage( const QCString &msg, const QByteArray &data) 1138void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
1130{ 1139{
1131 QDataStream stream( data, IO_ReadOnly ); 1140 QDataStream stream( data, IO_ReadOnly );
1132 if ( msg == "setTabView(QString,int)" ) { 1141 if ( msg == "setTabView(QString,int)" ) {
1133 QString id; 1142 QString id;
1134 stream >> id; 1143 stream >> id;
1135 int mode; 1144 int mode;
1136 stream >> mode; 1145 stream >> mode;
1137 if ( tabs->view(id) ) 1146 if ( tabs->view(id) )
1138 tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode ); 1147 tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode );
1139 } else if ( msg == "setTabBackground(QString,int,QString)" ) { 1148 } else if ( msg == "setTabBackground(QString,int,QString)" ) {
1140 QString id; 1149 QString id;
1141 stream >> id; 1150 stream >> id;
1142 int mode; 1151 int mode;
1143 stream >> mode; 1152 stream >> mode;
1144 QString pixmapOrColor; 1153 QString pixmapOrColor;
1145 stream >> pixmapOrColor; 1154 stream >> pixmapOrColor;
1146 if ( tabs->view(id) ) 1155 if ( tabs->view(id) )
1147 tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); 1156 tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor );
1148 } else if ( msg == "setTextColor(QString,QString)" ) { 1157 } else if ( msg == "setTextColor(QString,QString)" ) {
1149 QString id; 1158 QString id;
1150 stream >> id; 1159 stream >> id;
1151 QString color; 1160 QString color;
1152 stream >> color; 1161 stream >> color;
1153 if ( tabs->view(id) ) 1162 if ( tabs->view(id) )
1154 tabs->view(id)->setTextColor( QColor(color) ); 1163 tabs->view(id)->setTextColor( QColor(color) );
1155 } else if ( msg == "setFont(QString,QString,int,int,int)" ) { 1164 } else if ( msg == "setFont(QString,QString,int,int,int)" ) {
1156 QString id; 1165 QString id;
1157 stream >> id; 1166 stream >> id;
1158 QString fam; 1167 QString fam;
1159 stream >> fam; 1168 stream >> fam;
1160 int size; 1169 int size;
1161 stream >> size; 1170 stream >> size;
1162 int weight; 1171 int weight;
1163 stream >> weight; 1172 stream >> weight;
1164 int italic; 1173 int italic;
1165 stream >> italic; 1174 stream >> italic;
1166 if ( tabs->view(id) ) 1175 if ( tabs->view(id) )
1167 tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); 1176 tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
1168 qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic ); 1177 qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic );
1169 } 1178 }
1179 else if ( msg == "setBusyIndicatorType(QString)" ) {
1180 QString type;
1181 stream >> type;
1182 tabs->setBusyIndicatorType(type);
1183 }
1170} 1184}
1171 1185
1172void Launcher::storageChanged() 1186void Launcher::storageChanged()
1173{ 1187{
1174 if ( in_lnk_props ) { 1188 if ( in_lnk_props ) {
1175 got_lnk_change = TRUE; 1189 got_lnk_change = TRUE;
1176 lnk_change = QString::null; 1190 lnk_change = QString::null;
1177 } else { 1191 } else {
1178 updateLink( QString::null ); 1192 updateLink( QString::null );
1179 } 1193 }
1180} 1194}
1181 1195
1182 1196
1183bool Launcher::mkdir(const QString &localPath) 1197bool Launcher::mkdir(const QString &localPath)
1184{ 1198{
1185 QDir fullDir(localPath); 1199 QDir fullDir(localPath);
1186 if (fullDir.exists()) 1200 if (fullDir.exists())
1187 return true; 1201 return true;
1188 1202
1189 // at this point the directory doesn't exist 1203 // at this point the directory doesn't exist
1190 // go through the directory tree and start creating the direcotories 1204 // go through the directory tree and start creating the direcotories
1191 // that don't exist; if we can't create the directories, return false 1205 // that don't exist; if we can't create the directories, return false
1192 1206
1193 QString dirSeps = "/"; 1207 QString dirSeps = "/";
1194 int dirIndex = localPath.find(dirSeps); 1208 int dirIndex = localPath.find(dirSeps);
1195 QString checkedPath; 1209 QString checkedPath;
1196 1210
1197 // didn't find any seps; weird, use the cur dir instead 1211 // didn't find any seps; weird, use the cur dir instead
1198 if (dirIndex == -1) { 1212 if (dirIndex == -1) {
1199 //qDebug("No seperators found in path %s", localPath.latin1()); 1213 //qDebug("No seperators found in path %s", localPath.latin1());
1200 checkedPath = QDir::currentDirPath(); 1214 checkedPath = QDir::currentDirPath();
1201 } 1215 }
1202 1216
1203 while (checkedPath != localPath) { 1217 while (checkedPath != localPath) {
1204 // no more seperators found, use the local path 1218 // no more seperators found, use the local path
1205 if (dirIndex == -1) 1219 if (dirIndex == -1)
1206 checkedPath = localPath; 1220 checkedPath = localPath;
1207 else { 1221 else {
1208 // the next directory to check 1222 // the next directory to check
1209 checkedPath = localPath.left(dirIndex) + "/"; 1223 checkedPath = localPath.left(dirIndex) + "/";
1210 // advance the iterator; the next dir seperator 1224 // advance the iterator; the next dir seperator
1211 dirIndex = localPath.find(dirSeps, dirIndex+1); 1225 dirIndex = localPath.find(dirSeps, dirIndex+1);
1212 } 1226 }
1213 1227
1214 QDir checkDir(checkedPath); 1228 QDir checkDir(checkedPath);
1215 if (!checkDir.exists()) { 1229 if (!checkDir.exists()) {
1216 //qDebug("mkdir making dir %s", checkedPath.latin1()); 1230 //qDebug("mkdir making dir %s", checkedPath.latin1());
1217 1231
diff --git a/core/launcher/launcher.h b/core/launcher/launcher.h
index e3881ea..89bf6f3 100644
--- a/core/launcher/launcher.h
+++ b/core/launcher/launcher.h
@@ -18,97 +18,97 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef LAUNCHER_H 20#ifndef LAUNCHER_H
21#define LAUNCHER_H 21#define LAUNCHER_H
22 22
23#include <qpe/config.h> 23#include <qpe/config.h>
24#include <qmainwindow.h> 24#include <qmainwindow.h>
25#include <qtabbar.h> 25#include <qtabbar.h>
26#include <qstringlist.h> 26#include <qstringlist.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qlist.h> 28#include <qlist.h>
29#include <qpe/palmtopuidgen.h> 29#include <qpe/palmtopuidgen.h>
30#include "launcherview.h" 30#include "launcherview.h"
31 31
32class AppLnk; 32class AppLnk;
33class AppLnkSet; 33class AppLnkSet;
34class DocLnkSet; 34class DocLnkSet;
35class QWidgetStack; 35class QWidgetStack;
36class StorageInfo; 36class StorageInfo;
37class SyncDialog; 37class SyncDialog;
38 38
39class CategoryTabBar : public QTabBar 39class CategoryTabBar : public QTabBar
40{ 40{
41 Q_OBJECT 41 Q_OBJECT
42public: 42public:
43 CategoryTabBar( QWidget *parent=0, const char *name=0 ); 43 CategoryTabBar( QWidget *parent=0, const char *name=0 );
44 ~CategoryTabBar(); 44 ~CategoryTabBar();
45 45
46protected slots: 46protected slots:
47 virtual void layoutTabs(); 47 virtual void layoutTabs();
48 48
49protected: 49protected:
50 void paint ( QPainter *p, QTab *t, bool f ) const; 50 void paint ( QPainter *p, QTab *t, bool f ) const;
51 void paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const; 51 void paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const;
52}; 52};
53 53
54class CategoryTabWidget : public QVBox { 54class CategoryTabWidget : public QVBox {
55 // can't use a QTabWidget, since it won't let us set the frame style. 55 // can't use a QTabWidget, since it won't let us set the frame style.
56 Q_OBJECT 56 Q_OBJECT
57public: 57public:
58 CategoryTabWidget( QWidget* parent ); 58 CategoryTabWidget( QWidget* parent );
59 void initializeCategories(AppLnkSet* rootFolder, AppLnkSet* docFolder, 59 void initializeCategories(AppLnkSet* rootFolder, AppLnkSet* docFolder,
60 const QList<FileSystem> &); 60 const QList<FileSystem> &);
61 void updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs); 61 void updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs);
62 void updateLink(const QString& linkfile); 62 void updateLink(const QString& linkfile);
63 void setBusy(bool on); 63 void setBusy(bool on);
64 QString getAllDocLinkInfo() const; 64 QString getAllDocLinkInfo() const;
65 LauncherView *view( const QString &id ); 65 LauncherView *view( const QString &id );
66 66 void setBusyIndicatorType ( const QString &type );
67signals: 67signals:
68 void selected(const QString&); 68 void selected(const QString&);
69 void clicked(const AppLnk*); 69 void clicked(const AppLnk*);
70 void rightPressed(AppLnk*); 70 void rightPressed(AppLnk*);
71 71
72public slots: 72public slots:
73 void nextTab(); 73 void nextTab();
74 void prevTab(); 74 void prevTab();
75 75
76protected slots: 76protected slots:
77 void tabProperties(); 77 void tabProperties();
78 78
79protected: 79protected:
80 void setTabAppearance( const QString &id, Config &cfg ); 80 void setTabAppearance( const QString &id, Config &cfg );
81 void paletteChange( const QPalette &p ); 81 void paletteChange( const QPalette &p );
82 82
83private: 83private:
84 CategoryTabBar* categoryBar; 84 CategoryTabBar* categoryBar;
85 QWidgetStack* stack; 85 QWidgetStack* stack;
86 LauncherView* docview; 86 LauncherView* docview;
87 QStringList ids; 87 QStringList ids;
88 int tabs; 88 int tabs;
89 LauncherView* newView( const QString&, const QPixmap& pm, const QString& label ); 89 LauncherView* newView( const QString&, const QPixmap& pm, const QString& label );
90 void addItem( const QString& ); 90 void addItem( const QString& );
91}; 91};
92 92
93class Launcher : public QMainWindow 93class Launcher : public QMainWindow
94{ 94{
95 Q_OBJECT 95 Q_OBJECT
96 friend class LauncherPrivate; 96 friend class LauncherPrivate;
97public: 97public:
98 Launcher( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 98 Launcher( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
99 ~Launcher(); 99 ~Launcher();
100 100
101 static QString appsFolderName(); 101 static QString appsFolderName();
102 102
103 virtual void showMaximized(); 103 virtual void showMaximized();
104 static bool mkdir(const QString &path); 104 static bool mkdir(const QString &path);
105 105
106public slots: 106public slots:
107 void viewSelected(const QString&); 107 void viewSelected(const QString&);
108 void select( const AppLnk * ); 108 void select( const AppLnk * );
109 void externalSelected( const AppLnk *); 109 void externalSelected( const AppLnk *);
110 void properties( AppLnk * ); 110 void properties( AppLnk * );
111 void nextView(); 111 void nextView();
112 112
113signals: 113signals:
114 void executing( const AppLnk * ); 114 void executing( const AppLnk * );
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index e15b150..fa46543 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -7,185 +7,195 @@
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "launcherview.h" 21#include "launcherview.h"
22 22
23#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
24#include <qpe/applnk.h> 24#include <qpe/applnk.h>
25#include <qpe/qpedebug.h> 25#include <qpe/qpedebug.h>
26#include <qpe/categories.h> 26#include <qpe/categories.h>
27#include <qpe/categoryselect.h> 27#include <qpe/categoryselect.h>
28#include <qpe/menubutton.h> 28#include <qpe/menubutton.h>
29#include <qpe/mimetype.h> 29#include <qpe/mimetype.h>
30#include <qpe/resource.h> 30#include <qpe/resource.h>
31#include <qpe/qpetoolbar.h> 31#include <qpe/qpetoolbar.h>
32//#include <qtopia/private/palmtoprecord.h> 32//#include <qtopia/private/palmtoprecord.h>
33 33
34#include <qtimer.h> 34#include <qtimer.h>
35#include <qtextstream.h> 35#include <qtextstream.h>
36#include <qdict.h> 36#include <qdict.h>
37#include <qfile.h> 37#include <qfile.h>
38#include <qfileinfo.h> 38#include <qfileinfo.h>
39#include <qhbox.h> 39#include <qhbox.h>
40#include <qiconview.h> 40#include <qiconview.h>
41#include <qpainter.h> 41#include <qpainter.h>
42#include <qregexp.h> 42#include <qregexp.h>
43#include <qtoolbutton.h> 43#include <qtoolbutton.h>
44#include <qimage.h> 44#include <qimage.h>
45 45
46 46
47class BgPixmap 47class BgPixmap
48{ 48{
49public: 49public:
50 BgPixmap( const QPixmap &p ) : pm(p), ref(1) {} 50 BgPixmap( const QPixmap &p ) : pm(p), ref(1) {}
51 QPixmap pm; 51 QPixmap pm;
52 int ref; 52 int ref;
53}; 53};
54 54
55enum BusyIndicatorType {
56 BIT_Normal = 0,
57 BIT_Blinking
58};
59
55static QMap<QString,BgPixmap*> *bgCache = 0; 60static QMap<QString,BgPixmap*> *bgCache = 0;
56 61
57class LauncherIconView : public QIconView { 62class LauncherIconView : public QIconView {
58public: 63public:
59 LauncherIconView( QWidget* parent, const char* name=0 ) : 64 LauncherIconView( QWidget* parent, const char* name=0 ) :
60 QIconView(parent,name), 65 QIconView(parent,name),
61 tf(""), 66 tf(""),
62 cf(0), 67 cf(0),
63 bsy(0), 68 bsy(0),
64 bigIcns(TRUE), 69 bigIcns(TRUE),
65 bgColor(white) 70 bgColor(white)
66 { 71 {
67 sortmeth = Name; 72 sortmeth = Name;
68 hidden.setAutoDelete(TRUE); 73 hidden.setAutoDelete(TRUE);
69 ike = FALSE; 74 ike = FALSE;
70 busytimer = 0; 75 busytimer = 0;
71 calculateGrid( Bottom ); 76 calculateGrid( Bottom );
72 } 77 }
73 78
74 ~LauncherIconView() 79 ~LauncherIconView()
75 { 80 {
76#if 0 // debuggery 81#if 0 // debuggery
77 QListIterator<AppLnk> it(hidden); 82 QListIterator<AppLnk> it(hidden);
78 AppLnk* l; 83 AppLnk* l;
79 while ((l=it.current())) { 84 while ((l=it.current())) {
80 ++it; 85 ++it;
81 //qDebug("%p: hidden (should remove)",l); 86 //qDebug("%p: hidden (should remove)",l);
82 } 87 }
83#endif 88#endif
84 } 89 }
90
91 void setBusyIndicatorType ( BusyIndicatorType t ) { busyType = t; }
85 92
86 QPixmap* busyPixmap() const { return (QPixmap*)&bpm[::abs(busystate)]; } 93 QPixmap* busyPixmap() const { return (QPixmap*)&bpm[::abs(busystate)]; }
87 QIconViewItem* busyItem() const { return bsy; } 94 QIconViewItem* busyItem() const { return bsy; }
88 void setBigIcons( bool bi ) { bigIcns = bi; } 95 void setBigIcons( bool bi ) { bigIcns = bi; }
89 96
90 void updateCategoriesAndMimeTypes(); 97 void updateCategoriesAndMimeTypes();
91 98
92 void doAutoScroll() 99 void doAutoScroll()
93 { 100 {
94 // We don't want rubberbanding (yet) 101 // We don't want rubberbanding (yet)
95 } 102 }
96 103
97 void setBusy(bool on) 104 void setBusy(bool on)
98 { 105 {
99 QIconViewItem *c = on ? currentItem() : 0; 106 QIconViewItem *c = on ? currentItem() : 0;
100 qDebug ( "set busy %d -> %s", on, c ? c-> text ().latin1() : "(null)" );
101 107
102 if ( bsy != c ) { 108 if ( bsy != c ) {
103 QIconViewItem *oldbsy = bsy; 109 QIconViewItem *oldbsy = bsy;
104 bsy = c; 110 bsy = c;
105 111
106 if ( oldbsy ) 112 if ( oldbsy )
107 oldbsy-> repaint ( ); 113 oldbsy-> repaint ( );
108 114
109 if ( bsy ) { 115 if ( bsy ) {
110 QPixmap *src = bsy-> QIconViewItem::pixmap(); 116 QPixmap *src = bsy-> QIconViewItem::pixmap();
111 for ( int i = 0; i <= 5; i++ ) { 117 for ( int i = 0; i <= 5; i++ ) {
112 QImage img = src->convertToImage(); 118 QImage img = src->convertToImage();
113 QRgb* rgb; 119 QRgb* rgb;
114 int count; 120 int count;
115 if ( img.depth() == 32 ) { 121 if ( img.depth() == 32 ) {
116 rgb = (QRgb*)img.bits(); 122 rgb = (QRgb*)img.bits();
117 count = img.bytesPerLine()/sizeof(QRgb)*img.height(); 123 count = img.bytesPerLine()/sizeof(QRgb)*img.height();
118 } else { 124 } else {
119 rgb = img.colorTable(); 125 rgb = img.colorTable();
120 count = img.numColors(); 126 count = img.numColors();
121 } 127 }
122 int rc, gc, bc; 128 int rc, gc, bc;
123 int bs = ::abs ( i * 10 ) + 25; 129 int bs = ::abs ( i * 10 ) + 25;
124 colorGroup().highlight().rgb( &rc, &gc, &bc ); 130 colorGroup().highlight().rgb( &rc, &gc, &bc );
125 rc = rc * bs / 100; 131 rc = rc * bs / 100;
126 gc = gc * bs / 100; 132 gc = gc * bs / 100;
127 bc = bc * bs / 100; 133 bc = bc * bs / 100;
128 134
129 for ( int r = 0; r < count; r++, rgb++ ) { 135 for ( int r = 0; r < count; r++, rgb++ ) {
130 int ri = rc + qRed ( *rgb ) * ( 100 - bs ) / 100; 136 int ri = rc + qRed ( *rgb ) * ( 100 - bs ) / 100;
131 int gi = gc + qGreen ( *rgb ) * ( 100 - bs ) / 100; 137 int gi = gc + qGreen ( *rgb ) * ( 100 - bs ) / 100;
132 int bi = bc + qBlue ( *rgb ) * ( 100 - bs ) / 100; 138 int bi = bc + qBlue ( *rgb ) * ( 100 - bs ) / 100;
133 int ai = qAlpha ( *rgb ); 139 int ai = qAlpha ( *rgb );
134 *rgb = qRgba ( ri, gi, bi, ai ); 140 *rgb = qRgba ( ri, gi, bi, ai );
135 } 141 }
136 142
137 bpm [i].convertFromImage( img ); 143 bpm [i].convertFromImage( img );
138 } 144 }
139 busystate = 0; 145 if ( busyType == BIT_Blinking ) {
140 if ( busytimer ) 146 busystate = 0;
141 killTimer ( busytimer ); 147 if ( busytimer )
142 timerEvent ( 0 ); 148 killTimer ( busytimer );
143 busytimer = startTimer ( 200 ); 149 busytimer = startTimer ( 200 );
150 }
151 else
152 busystate = 3;
153 timerEvent ( 0 );
144 } 154 }
145 else { 155 else {
146 killTimer ( busytimer ); 156 killTimer ( busytimer );
147 busytimer = 0; 157 busytimer = 0;
148 } 158 }
149 } 159 }
150 } 160 }
151 161
152 virtual void timerEvent ( QTimerEvent *te ) 162 virtual void timerEvent ( QTimerEvent *te )
153 { 163 {
154 if ( !te || ( te-> timerId ( ) == busytimer )) { 164 if ( !te || ( te-> timerId ( ) == busytimer )) {
155 if ( bsy ) { 165 if ( bsy ) {
156 busystate++; 166 busystate++;
157 if ( busystate > 5 ) 167 if ( busystate > 5 )
158 busystate = -4; 168 busystate = -4;
159 169
160 QScrollView::updateContents ( bsy-> pixmapRect ( false )); 170 QScrollView::updateContents ( bsy-> pixmapRect ( false ));
161 } 171 }
162 } 172 }
163 } 173 }
164 174
165 bool inKeyEvent() const { return ike; } 175 bool inKeyEvent() const { return ike; }
166 void keyPressEvent(QKeyEvent* e) 176 void keyPressEvent(QKeyEvent* e)
167 { 177 {
168 ike = TRUE; 178 ike = TRUE;
169 if ( e->key() == Key_F33 /* OK button */ || e->key() == Key_Space ) 179 if ( e->key() == Key_F33 /* OK button */ || e->key() == Key_Space )
170 returnPressed(currentItem()); 180 returnPressed(currentItem());
171 QIconView::keyPressEvent(e); 181 QIconView::keyPressEvent(e);
172 ike = FALSE; 182 ike = FALSE;
173 } 183 }
174 184
175 void addItem(AppLnk* app, bool resort=TRUE); 185 void addItem(AppLnk* app, bool resort=TRUE);
176 bool removeLink(const QString& linkfile); 186 bool removeLink(const QString& linkfile);
177 187
178 QStringList mimeTypes() const; 188 QStringList mimeTypes() const;
179 QStringList categories() const; 189 QStringList categories() const;
180 190
181 void clear() 191 void clear()
182 { 192 {
183 mimes.clear(); 193 mimes.clear();
184 cats.clear(); 194 cats.clear();
185 QIconView::clear(); 195 QIconView::clear();
186 hidden.clear(); 196 hidden.clear();
187 } 197 }
188 198
189 void addCatsAndMimes(AppLnk* app) 199 void addCatsAndMimes(AppLnk* app)
190 { 200 {
191 // QStringList c = app->categories(); 201 // QStringList c = app->categories();
@@ -292,96 +302,97 @@ public:
292protected: 302protected:
293 303
294 void styleChange( QStyle &old ) 304 void styleChange( QStyle &old )
295 { 305 {
296 QIconView::styleChange( old ); 306 QIconView::styleChange( old );
297 calculateGrid( itemTextPos() ); 307 calculateGrid( itemTextPos() );
298 } 308 }
299 309
300 void calculateGrid( ItemTextPos pos ) 310 void calculateGrid( ItemTextPos pos )
301 { 311 {
302 int dw = QApplication::desktop()->width(); 312 int dw = QApplication::desktop()->width();
303 int viewerWidth = dw-style().scrollBarExtent().width(); 313 int viewerWidth = dw-style().scrollBarExtent().width();
304 if ( pos == Bottom ) { 314 if ( pos == Bottom ) {
305 int cols = 3; 315 int cols = 3;
306 if ( viewerWidth <= 200 ) 316 if ( viewerWidth <= 200 )
307 cols = 2; 317 cols = 2;
308 else if ( viewerWidth >= 400 ) 318 else if ( viewerWidth >= 400 )
309 cols = viewerWidth/96; 319 cols = viewerWidth/96;
310 setSpacing( 4 ); 320 setSpacing( 4 );
311 setGridX( (viewerWidth-(cols+1)*spacing())/cols ); 321 setGridX( (viewerWidth-(cols+1)*spacing())/cols );
312 setGridY( fontMetrics().height()*2+24 ); 322 setGridY( fontMetrics().height()*2+24 );
313 } else { 323 } else {
314 int cols = 2; 324 int cols = 2;
315 if ( viewerWidth < 150 ) 325 if ( viewerWidth < 150 )
316 cols = 1; 326 cols = 1;
317 else if ( viewerWidth >= 400 ) 327 else if ( viewerWidth >= 400 )
318 cols = viewerWidth/150; 328 cols = viewerWidth/150;
319 setSpacing( 2 ); 329 setSpacing( 2 );
320 setGridX( (viewerWidth-(cols+1)*spacing())/cols ); 330 setGridX( (viewerWidth-(cols+1)*spacing())/cols );
321 setGridY( fontMetrics().height()+2 ); 331 setGridY( fontMetrics().height()+2 );
322 } 332 }
323 } 333 }
324 334
325private: 335private:
326 QList<AppLnk> hidden; 336 QList<AppLnk> hidden;
327 QDict<void> mimes; 337 QDict<void> mimes;
328 QDict<void> cats; 338 QDict<void> cats;
329 SortMethod sortmeth; 339 SortMethod sortmeth;
330 QRegExp tf; 340 QRegExp tf;
331 int cf; 341 int cf;
332 QIconViewItem* bsy; 342 QIconViewItem* bsy;
333 bool ike; 343 bool ike;
334 bool bigIcns; 344 bool bigIcns;
335 QPixmap bgPixmap; 345 QPixmap bgPixmap;
336 QPixmap bpm [6]; 346 QPixmap bpm [6];
337 QColor bgColor; 347 QColor bgColor;
338 int busytimer; 348 int busytimer;
339 int busystate; 349 int busystate;
350 BusyIndicatorType busyType;
340}; 351};
341 352
342 353
343bool LauncherView::bsy=FALSE; 354bool LauncherView::bsy=FALSE;
344 355
345void LauncherView::setBusy(bool on) 356void LauncherView::setBusy(bool on)
346{ 357{
347 icons->setBusy(on); 358 icons->setBusy(on);
348} 359}
349 360
350class LauncherItem : public QIconViewItem 361class LauncherItem : public QIconViewItem
351{ 362{
352public: 363public:
353 LauncherItem( QIconView *parent, AppLnk* applnk, bool bigIcon=TRUE ); 364 LauncherItem( QIconView *parent, AppLnk* applnk, bool bigIcon=TRUE );
354 ~LauncherItem() 365 ~LauncherItem()
355 { 366 {
356 LauncherIconView* liv = (LauncherIconView*)iconView(); 367 LauncherIconView* liv = (LauncherIconView*)iconView();
357 if ( liv->busyItem() == this ) 368 if ( liv->busyItem() == this )
358 liv->setBusy(FALSE); 369 liv->setBusy(FALSE);
359 delete app; 370 delete app;
360 } 371 }
361 372
362 AppLnk* appLnk() const { return app; } 373 AppLnk* appLnk() const { return app; }
363 AppLnk* takeAppLnk() { AppLnk* r=app; app=0; return r; } 374 AppLnk* takeAppLnk() { AppLnk* r=app; app=0; return r; }
364 375
365 virtual int compare ( QIconViewItem * i ) const; 376 virtual int compare ( QIconViewItem * i ) const;
366 377
367 void paintItem( QPainter *p, const QColorGroup &cg ) 378 void paintItem( QPainter *p, const QColorGroup &cg )
368 { 379 {
369 LauncherIconView* liv = (LauncherIconView*)iconView(); 380 LauncherIconView* liv = (LauncherIconView*)iconView();
370 QBrush oldBrush( liv->itemTextBackground() ); 381 QBrush oldBrush( liv->itemTextBackground() );
371 QColorGroup mycg( cg ); 382 QColorGroup mycg( cg );
372 if ( liv->currentItem() == this ) { 383 if ( liv->currentItem() == this ) {
373 liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) ); 384 liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) );
374 mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) ); 385 mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) );
375 } 386 }
376 QIconViewItem::paintItem(p,mycg); 387 QIconViewItem::paintItem(p,mycg);
377 if ( liv->currentItem() == this ) 388 if ( liv->currentItem() == this )
378 liv->setItemTextBackground( oldBrush ); 389 liv->setItemTextBackground( oldBrush );
379 } 390 }
380 391
381 virtual QPixmap* pixmap () const 392 virtual QPixmap* pixmap () const
382 { 393 {
383 const LauncherIconView* liv = (LauncherIconView*)iconView(); 394 const LauncherIconView* liv = (LauncherIconView*)iconView();
384 if ( (const LauncherItem *)liv->busyItem() == this ) 395 if ( (const LauncherItem *)liv->busyItem() == this )
385 return liv->busyPixmap(); 396 return liv->busyPixmap();
386 return QIconViewItem::pixmap(); 397 return QIconViewItem::pixmap();
387 } 398 }
@@ -868,48 +879,56 @@ void LauncherView::internalPopulate( AppLnkSet *folder, const QString& typefilte
868 icons->setTypeFilter(typefilter,FALSE); 879 icons->setTypeFilter(typefilter,FALSE);
869 880
870 while ( it.current() ) { 881 while ( it.current() ) {
871 // show only the icons for existing files 882 // show only the icons for existing files
872 if (QFile(it.current()->file()).exists() || ( it.current()->file().left(4) == "http" )) { 883 if (QFile(it.current()->file()).exists() || ( it.current()->file().left(4) == "http" )) {
873 icons->addItem(*it,FALSE); 884 icons->addItem(*it,FALSE);
874 } 885 }
875 else { 886 else {
876 //maybe insert some .desktop file deletion code later 887 //maybe insert some .desktop file deletion code later
877 //maybe dir specific 888 //maybe dir specific
878 } 889 }
879 ++it; 890 ++it;
880 } 891 }
881 892
882 icons->sort(); 893 icons->sort();
883} 894}
884 895
885bool LauncherView::removeLink(const QString& linkfile) 896bool LauncherView::removeLink(const QString& linkfile)
886{ 897{
887 return icons->removeLink(linkfile); 898 return icons->removeLink(linkfile);
888} 899}
889 900
890void LauncherView::sort() 901void LauncherView::sort()
891{ 902{
892 icons->sort(); 903 icons->sort();
893} 904}
894 905
895void LauncherView::addItem(AppLnk* app, bool resort) 906void LauncherView::addItem(AppLnk* app, bool resort)
896{ 907{
897 icons->addItem(app,resort); 908 icons->addItem(app,resort);
898} 909}
899 910
900void LauncherView::setFileSystems(const QList<FileSystem> &) 911void LauncherView::setFileSystems(const QList<FileSystem> &)
901{ 912{
902 // ### does nothing now... 913 // ### does nothing now...
903} 914}
904 915
905void LauncherView::paletteChange( const QPalette &p ) 916void LauncherView::paletteChange( const QPalette &p )
906{ 917{
907 icons->unsetPalette(); 918 icons->unsetPalette();
908 QVBox::paletteChange( p ); 919 QVBox::paletteChange( p );
909 if ( bgType == Ruled ) 920 if ( bgType == Ruled )
910 setBackgroundType( Ruled, QString::null ); 921 setBackgroundType( Ruled, QString::null );
911 QColorGroup cg = icons->colorGroup(); 922 QColorGroup cg = icons->colorGroup();
912 cg.setColor( QColorGroup::Text, textCol ); 923 cg.setColor( QColorGroup::Text, textCol );
913 icons->setPalette( QPalette(cg,cg,cg) ); 924 icons->setPalette( QPalette(cg,cg,cg) );
914} 925}
915 926
927
928void LauncherView::setBusyIndicatorType ( const QString &type )
929{
930 if ( type. lower ( ) == "blink" )
931 icons-> setBusyIndicatorType ( BIT_Blinking );
932 else
933 icons-> setBusyIndicatorType ( BIT_Normal );
934}
diff --git a/core/launcher/launcherview.h b/core/launcher/launcherview.h
index 2fb37b6..194e4a2 100644
--- a/core/launcher/launcherview.h
+++ b/core/launcher/launcherview.h
@@ -20,83 +20,86 @@
20#ifndef LAUNCHERVIEW_H 20#ifndef LAUNCHERVIEW_H
21#define LAUNCHERVIEW_H 21#define LAUNCHERVIEW_H
22 22
23#include <qpe/storage.h> 23#include <qpe/storage.h>
24 24
25#include <qvbox.h> 25#include <qvbox.h>
26 26
27class AppLnk; 27class AppLnk;
28class AppLnkSet; 28class AppLnkSet;
29class CategorySelect; 29class CategorySelect;
30class LauncherIconView; 30class LauncherIconView;
31class QIconView; 31class QIconView;
32class QIconViewItem; 32class QIconViewItem;
33class MenuButton; 33class MenuButton;
34class QComboBox; 34class QComboBox;
35 35
36class LauncherView : public QVBox 36class LauncherView : public QVBox
37{ 37{
38 Q_OBJECT 38 Q_OBJECT
39 39
40public: 40public:
41 LauncherView( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 41 LauncherView( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
42 ~LauncherView(); 42 ~LauncherView();
43 43
44 bool removeLink(const QString& linkfile); 44 bool removeLink(const QString& linkfile);
45 void addItem(AppLnk* app, bool resort=TRUE); 45 void addItem(AppLnk* app, bool resort=TRUE);
46 void sort(); 46 void sort();
47 47
48 void setFileSystems(const QList<FileSystem> &); 48 void setFileSystems(const QList<FileSystem> &);
49 void setToolsEnabled(bool); 49 void setToolsEnabled(bool);
50 void updateTools(); 50 void updateTools();
51 51
52 void setBusy(bool); 52 void setBusy(bool);
53 53
54 QString getAllDocLinkInfo() const; 54 QString getAllDocLinkInfo() const;
55 enum ViewMode { Icon, List }; 55 enum ViewMode { Icon, List };
56 void setViewMode( ViewMode m ); 56 void setViewMode( ViewMode m );
57 ViewMode viewMode() const { return vmode; } 57 ViewMode viewMode() const { return vmode; }
58 58
59 enum BackgroundType { Ruled, SolidColor, Image }; 59 enum BackgroundType { Ruled, SolidColor, Image };
60 void setBackgroundType( BackgroundType t, const QString & ); 60 void setBackgroundType( BackgroundType t, const QString & );
61 BackgroundType backgroundType() const { return bgType; } 61 BackgroundType backgroundType() const { return bgType; }
62 62
63 void setTextColor( const QColor & ); 63 void setTextColor( const QColor & );
64 QColor textColor() const { return textCol; } 64 QColor textColor() const { return textCol; }
65 65
66 void setViewFont( const QFont & ); 66 void setViewFont( const QFont & );
67 67
68 void setBusyIndicatorType ( const QString &type );
69
68public slots: 70public slots:
69 void populate( AppLnkSet *folder, const QString& categoryfilter ); 71 void populate( AppLnkSet *folder, const QString& categoryfilter );
70 72
71signals: 73signals:
72 void clicked( const AppLnk * ); 74 void clicked( const AppLnk * );
73 void rightPressed( AppLnk * ); 75 void rightPressed( AppLnk * );
74 76
75protected slots: 77protected slots:
76 void selectionChanged(); 78 void selectionChanged();
77 void returnPressed( QIconViewItem *item ); 79 void returnPressed( QIconViewItem *item );
78 void itemClicked( int, QIconViewItem * ); 80 void itemClicked( int, QIconViewItem * );
79 void itemPressed( int, QIconViewItem * ); 81 void itemPressed( int, QIconViewItem * );
80 void sortBy(int); 82 void sortBy(int);
81 void showType(int); 83 void showType(int);
82 void showCategory( int ); 84 void showCategory( int );
83 void resizeEvent(QResizeEvent *); 85 void resizeEvent(QResizeEvent *);
84 86
85protected: 87protected:
86 void internalPopulate( AppLnkSet *, const QString& categoryfilter ); 88 void internalPopulate( AppLnkSet *, const QString& categoryfilter );
87 void paletteChange( const QPalette & ); 89 void paletteChange( const QPalette & );
88 90
89private: 91private:
90 static bool bsy; 92 static bool bsy;
91 QWidget* tools; 93 QWidget* tools;
92 LauncherIconView* icons; 94 LauncherIconView* icons;
93 QComboBox *typemb; 95 QComboBox *typemb;
94 QStringList typelist; 96 QStringList typelist;
95 CategorySelect *catmb; 97 CategorySelect *catmb;
96 ViewMode vmode; 98 ViewMode vmode;
97 BackgroundType bgType; 99 BackgroundType bgType;
98 QString bgName; 100 QString bgName;
99 QColor textCol; 101 QColor textCol;
102 int busyType;
100}; 103};
101 104
102#endif // LAUNCHERVIEW_H 105#endif // LAUNCHERVIEW_H