summaryrefslogtreecommitdiff
path: root/core/launcher
Unidiff
Diffstat (limited to 'core/launcher') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcher.cpp18
-rw-r--r--core/launcher/launcherview.cpp127
-rw-r--r--core/launcher/launcherview.h1
3 files changed, 70 insertions, 76 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 010a2e9..5ec1cf8 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -336,54 +336,54 @@ void LauncherTabWidget::setProgressStyle()
336 docLoadingWidgetProgress->setFrameShape( QProgressBar::Box ); 336 docLoadingWidgetProgress->setFrameShape( QProgressBar::Box );
337 docLoadingWidgetProgress->setFrameShadow( QProgressBar::Plain ); 337 docLoadingWidgetProgress->setFrameShadow( QProgressBar::Plain );
338 docLoadingWidgetProgress->setMargin( 1 ); 338 docLoadingWidgetProgress->setMargin( 1 );
339 docLoadingWidgetProgress->setLineWidth( 1 ); 339 docLoadingWidgetProgress->setLineWidth( 1 );
340 } 340 }
341} 341}
342 342
343/* 343/*
344 * FIXME 344 * FIXME
345 * The following NULL check is triggered by inserting, then removing a tab on the fly 345 * The following NULL check is triggered by inserting, then removing a tab on the fly
346 * as you would if you had removable media (which I do). Without this check 346 * as you would if you had removable media (which I do). Without this check
347 * the first app launched after a tab removal causes qpe to Segfault. 347 * the first app launched after a tab removal causes qpe to Segfault.
348 * This obviously has a more sinister cause, but this works around it with no 348 * This obviously has a more sinister cause, but this works around it with no
349 * obvious adverse effects. Please FIXME 349 * obvious adverse effects. Please FIXME
350 * bkc - 17/6/2004 350 * bkc - 17/6/2004
351 * 351 *
352 */ 352 */
353 353
354void LauncherTabWidget::setBusy(bool on) 354void LauncherTabWidget::setBusy(bool on)
355{ 355{
356 if ( on ) 356 if ( on )
357 currentView()->setBusy(TRUE); 357 currentView()->setBusy(TRUE);
358 else { 358 else {
359 for ( int i = 0; i < categoryBar->count(); i++ ) { 359 for ( int i = 0; i < categoryBar->count(); i++ ) {
360 if (categoryBar->tab(i)) { 360 if (categoryBar->tab(i)) {
361 LauncherView *view = ((LauncherTab *)categoryBar->tab(i))->view; 361 LauncherView *view = ((LauncherTab *)categoryBar->tab(i))->view;
362 view->setBusy( FALSE ); 362 view->setBusy( FALSE );
363 } else { 363 } else {
364 odebug << "Averting Disaster with tab " << i << " == NULL! " << oendl; 364 odebug << "Averting Disaster with tab " << i << " == NULL! " << oendl;
365 } 365 }
366 } 366 }
367 } 367 }
368} 368}
369 369
370void LauncherTabWidget::setBusyIndicatorType( const QString& str ) { 370void LauncherTabWidget::setBusyIndicatorType( const QString& str ) {
371 for (int i = 0; i < categoryBar->count(); i++ ) { 371 for (int i = 0; i < categoryBar->count(); i++ ) {
372 LauncherView* view = static_cast<LauncherTab*>( categoryBar->tab(i) )->view; 372 LauncherView* view = static_cast<LauncherTab*>( categoryBar->tab(i) )->view;
373 view->setBusyIndicatorType( str ); 373 view->setBusyIndicatorType( str );
374 } 374 }
375} 375}
376 376
377LauncherView *LauncherTabWidget::currentView(void) 377LauncherView *LauncherTabWidget::currentView(void)
378{ 378{
379 return (LauncherView*)stack->visibleWidget(); 379 return (LauncherView*)stack->visibleWidget();
380} 380}
381 381
382 382
383 383
384void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray &data) 384void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray &data)
385{ 385{
386 QDataStream stream( data, IO_ReadOnly ); 386 QDataStream stream( data, IO_ReadOnly );
387 if ( msg == "setTabView(QString,int)" ) { 387 if ( msg == "setTabView(QString,int)" ) {
388 QString id; 388 QString id;
389 stream >> id; 389 stream >> id;
@@ -580,51 +580,53 @@ void Launcher::select( const AppLnk *appLnk )
580 } else { 580 } else {
581 if ( appLnk->exec().isNull() ) { 581 if ( appLnk->exec().isNull() ) {
582 int i = QMessageBox::information(this,tr("No application"), 582 int i = QMessageBox::information(this,tr("No application"),
583 tr("<p>No application is defined for this document." 583 tr("<p>No application is defined for this document."
584 "<p>Type is %1.").arg(appLnk->type()), tr("OK"), tr("View as text"), 0, 0, 1); 584 "<p>Type is %1.").arg(appLnk->type()), tr("OK"), tr("View as text"), 0, 0, 1);
585 585
586 /* ### Fixme */ 586 /* ### Fixme */
587 if ( i == 1 ) 587 if ( i == 1 )
588 Global::execute("textedit",appLnk->file()); 588 Global::execute("textedit",appLnk->file());
589 589
590 return; 590 return;
591 } 591 }
592 tabs->setBusy(TRUE); 592 tabs->setBusy(TRUE);
593 emit executing( appLnk ); 593 emit executing( appLnk );
594 appLnk->execute(); 594 appLnk->execute();
595 } 595 }
596} 596}
597 597
598void Launcher::properties( AppLnk *appLnk ) 598void Launcher::properties( AppLnk *appLnk )
599{ 599{
600 if ( appLnk->type() == "Folder" ) { // No tr 600 if ( appLnk->type() == "Folder" ) { // No tr
601 // Not supported: flat is simpler for the user 601 // Not supported: flat is simpler for the user
602 } else { 602 } else {
603/* ### libqtopia FIXME also moving docLnks... */ 603/* ### libqtopia FIXME also moving docLnks... */
604 LnkProperties prop(appLnk,0 ); 604 LnkProperties prop(appLnk,0 );
605 605
606 QPEApplication::execDialog( &prop ); 606 if (QPEApplication::execDialog( &prop )==QDialog::Accepted && tabs->currentView()==tabs->docView()) {
607 tabs->docView()->updateTools();
608 }
607 } 609 }
608} 610}
609 611
610void Launcher::storageChanged( const QList<FileSystem> & ) 612void Launcher::storageChanged( const QList<FileSystem> & )
611{ 613{
612 // ### update combo boxes if we had a combo box for the storage type 614 // ### update combo boxes if we had a combo box for the storage type
613} 615}
614 616
615void Launcher::systemMessage( const QCString &msg, const QByteArray &data) 617void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
616{ 618{
617 QDataStream stream( data, IO_ReadOnly ); 619 QDataStream stream( data, IO_ReadOnly );
618 if ( msg == "busy()" ) { 620 if ( msg == "busy()" ) {
619 tb->startWait(); 621 tb->startWait();
620 } else if ( msg == "notBusy(QString)" ) { 622 } else if ( msg == "notBusy(QString)" ) {
621 QString app; 623 QString app;
622 stream >> app; 624 stream >> app;
623 tabs->setBusy(FALSE); 625 tabs->setBusy(FALSE);
624 tb->stopWait(app); 626 tb->stopWait(app);
625 } else if (msg == "applyStyle()") { 627 } else if (msg == "applyStyle()") {
626 tabs->currentView()->relayout(); 628 tabs->currentView()->relayout();
627 } 629 }
628} 630}
629 631
630// These are the update functions from the server 632// These are the update functions from the server
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index 72313e3..ff26133 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -110,49 +110,49 @@ private:
110 iconstate_t m_EyeImageSet; 110 iconstate_t m_EyeImageSet;
111}; 111};
112 112
113LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk, bool bigIcon ) 113LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk, bool bigIcon )
114 : QIconViewItem( parent, applnk->name(), 114 : QIconViewItem( parent, applnk->name(),
115 bigIcon ? applnk->bigPixmap() :applnk->pixmap() ), 115 bigIcon ? applnk->bigPixmap() :applnk->pixmap() ),
116 isBigIcon( bigIcon ), 116 isBigIcon( bigIcon ),
117 iteration(0), 117 iteration(0),
118 app(applnk), // Takes ownership 118 app(applnk), // Takes ownership
119 psize( (bigIcon ? applnk->bigPixmap().width() :applnk->pixmap().width() ) ), 119 psize( (bigIcon ? applnk->bigPixmap().width() :applnk->pixmap().width() ) ),
120 m_iPixmap(), 120 m_iPixmap(),
121 m_EyeImage(false), 121 m_EyeImage(false),
122 m_EyeImageSet(BASE_ICON) 122 m_EyeImageSet(BASE_ICON)
123{ 123{
124 if (applnk->type().lower().startsWith("image/") && applnk->exec().contains("opie-eye",false)) { 124 if (applnk->type().lower().startsWith("image/") && applnk->exec().contains("opie-eye",false)) {
125 m_EyeImage = true; 125 m_EyeImage = true;
126 m_iPixmap = (bigIcon ? applnk->bigPixmap():applnk->pixmap()); 126 m_iPixmap = (bigIcon ? applnk->bigPixmap():applnk->pixmap());
127 } 127 }
128} 128}
129 129
130LauncherItem::~LauncherItem() 130LauncherItem::~LauncherItem()
131{ 131{
132 LauncherIconView* liv = (LauncherIconView*)iconView(); 132 LauncherIconView* liv = (LauncherIconView*)iconView();
133 if ( liv->busyItem() == this ) 133 if ( liv->busyItem() == this )
134 liv->setBusy(FALSE); 134 liv->setBusy(FALSE);
135 delete app; 135 delete app;
136} 136}
137 137
138QPixmap*LauncherItem::pixmap()const 138QPixmap*LauncherItem::pixmap()const
139{ 139{
140 if (m_EyeImage && m_EyeImageSet == BASE_ICON) { 140 if (m_EyeImage && m_EyeImageSet == BASE_ICON) {
141 LauncherIconView* liv = (LauncherIconView*)iconView(); 141 LauncherIconView* liv = (LauncherIconView*)iconView();
142 liv->requestEyePix(this); 142 liv->requestEyePix(this);
143 } 143 }
144 return QIconViewItem::pixmap(); 144 return QIconViewItem::pixmap();
145} 145}
146 146
147int LauncherItem::compare ( QIconViewItem * i ) const 147int LauncherItem::compare ( QIconViewItem * i ) const
148{ 148{
149 LauncherIconView* view = (LauncherIconView*)iconView(); 149 LauncherIconView* view = (LauncherIconView*)iconView();
150 return view->compare(app,((LauncherItem *)i)->appLnk()); 150 return view->compare(app,((LauncherItem *)i)->appLnk());
151} 151}
152 152
153void LauncherItem::paintItem( QPainter *p, const QColorGroup &cg ) 153void LauncherItem::paintItem( QPainter *p, const QColorGroup &cg )
154{ 154{
155 LauncherIconView* liv = (LauncherIconView*)iconView(); 155 LauncherIconView* liv = (LauncherIconView*)iconView();
156 QBrush oldBrush( liv->itemTextBackground() ); 156 QBrush oldBrush( liv->itemTextBackground() );
157 QColorGroup mycg( cg ); 157 QColorGroup mycg( cg );
158 if ( liv->currentItem() == this ) { 158 if ( liv->currentItem() == this ) {
@@ -255,48 +255,49 @@ void LauncherItem::resetIcon()
255void LauncherItem::setEyePixmap(const QPixmap&aIcon) 255void LauncherItem::setEyePixmap(const QPixmap&aIcon)
256{ 256{
257 if (!isEyeImage()) return; 257 if (!isEyeImage()) return;
258 m_iPixmap = aIcon; 258 m_iPixmap = aIcon;
259 setPixmap(aIcon); 259 setPixmap(aIcon);
260 m_EyeImageSet = EYE_ICON; 260 m_EyeImageSet = EYE_ICON;
261} 261}
262 262
263//=========================================================================== 263//===========================================================================
264// Implemantation of LauncherIconview start 264// Implemantation of LauncherIconview start
265//=========================================================================== 265//===========================================================================
266LauncherIconView::LauncherIconView( QWidget* parent, const char* name ) 266LauncherIconView::LauncherIconView( QWidget* parent, const char* name )
267 : QIconView(parent,name),tf(""),cf(0),bsy(0),busyTimer(0),bigIcns(TRUE),bgColor(white) 267 : QIconView(parent,name),tf(""),cf(0),bsy(0),busyTimer(0),bigIcns(TRUE),bgColor(white)
268{ 268{
269 m_EyeCallBack = 0; 269 m_EyeCallBack = 0;
270 sortmeth = Name; 270 sortmeth = Name;
271 hidden.setAutoDelete(TRUE); 271 hidden.setAutoDelete(TRUE);
272 ike = FALSE; 272 ike = FALSE;
273 calculateGrid( Bottom ); 273 calculateGrid( Bottom );
274 connect(&m_eyeTimer,SIGNAL(timeout()),this,SLOT(stopEyeTimer())); 274 connect(&m_eyeTimer,SIGNAL(timeout()),this,SLOT(stopEyeTimer()));
275} 275}
276 276
277LauncherIconView::~LauncherIconView() 277LauncherIconView::~LauncherIconView()
278{ 278{
279 odebug << "LauncherIconView::~LauncherIconView()" << oendl;
279#if 0 // debuggery 280#if 0 // debuggery
280 QListIterator<AppLnk> it(hidden); 281 QListIterator<AppLnk> it(hidden);
281 AppLnk* l; 282 AppLnk* l;
282 while ((l=it.current())) { 283 while ((l=it.current())) {
283 ++it; 284 ++it;
284 //odebug << "" << l << ": hidden (should remove)" << oendl; 285 //odebug << "" << l << ": hidden (should remove)" << oendl;
285 } 286 }
286#endif 287#endif
287} 288}
288 289
289int LauncherIconView::compare(const AppLnk* a, const AppLnk* b) 290int LauncherIconView::compare(const AppLnk* a, const AppLnk* b)
290{ 291{
291 switch (sortmeth) { 292 switch (sortmeth) {
292 case Name: 293 case Name:
293 return a->name().lower().compare(b->name().lower()); 294 return a->name().lower().compare(b->name().lower());
294 case Date: { 295 case Date: {
295 QFileInfo fa(a->linkFileKnown() ? a->linkFile() : a->file()); 296 QFileInfo fa(a->linkFileKnown() ? a->linkFile() : a->file());
296 QFileInfo fb(b->linkFileKnown() ? b->linkFile() : b->file()); 297 QFileInfo fb(b->linkFileKnown() ? b->linkFile() : b->file());
297 return fa.lastModified().secsTo(fb.lastModified()); 298 return fa.lastModified().secsTo(fb.lastModified());
298 } 299 }
299 case Type: 300 case Type:
300 return a->type().compare(b->type()); 301 return a->type().compare(b->type());
301 } 302 }
302 return 0; 303 return 0;
@@ -408,96 +409,87 @@ QStringList LauncherIconView::mimeTypes() const
408 while (it.current()) { 409 while (it.current()) {
409 r.append(it.currentKey()); 410 r.append(it.currentKey());
410 ++it; 411 ++it;
411 } 412 }
412 r.sort(); 413 r.sort();
413 return r; 414 return r;
414} 415}
415 416
416LauncherItem*LauncherIconView::findDocItem(const QString&fname) 417LauncherItem*LauncherIconView::findDocItem(const QString&fname)
417{ 418{
418 LauncherItem* item = (LauncherItem*)firstItem(); 419 LauncherItem* item = (LauncherItem*)firstItem();
419 while (item) { 420 while (item) {
420 if (item->appLnk()->file()==fname) { 421 if (item->appLnk()->file()==fname) {
421 break; 422 break;
422 } 423 }
423 item = (LauncherItem*)item->nextItem(); 424 item = (LauncherItem*)item->nextItem();
424 } 425 }
425 return item; 426 return item;
426} 427}
427 428
428void LauncherIconView::setEyePixmap(const QPixmap&aPixmap,const QString&aFile,int width) 429void LauncherIconView::setEyePixmap(const QPixmap&aPixmap,const QString&aFile,int width)
429{ 430{
430 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize(); 431 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize();
431 if (s!=width) return; 432 if (s!=width) return;
432 LauncherItem*item = 0; 433 LauncherItem*item = findDocItem(aFile);
433 QMap<QString,LauncherItem*>::Iterator it;
434 if ( ( it = m_itemCache.find(aFile))!=m_itemCache.end()) {
435 item = it.data();
436 m_itemCache.remove(it);
437 } else {
438 item = findDocItem(aFile);
439 }
440 if (!item||!item->isEyeImage()) return; 434 if (!item||!item->isEyeImage()) return;
441 item->setEyePixmap(aPixmap); 435 item->setEyePixmap(aPixmap);
442} 436}
443 437
444void LauncherIconView::checkCallback() 438void LauncherIconView::checkCallback()
445{ 439{
446 if (!m_EyeCallBack) { 440 if (!m_EyeCallBack) {
447 m_EyeCallBack = new LauncherThumbReceiver(); 441 m_EyeCallBack = new LauncherThumbReceiver();
448 connect(m_EyeCallBack,SIGNAL(sig_Thumbnail(const QPixmap&,const QString&,int)), 442 connect(m_EyeCallBack,SIGNAL(sig_Thumbnail(const QPixmap&,const QString&,int)),
449 this,SLOT(setEyePixmap(const QPixmap&,const QString&,int))); 443 this,SLOT(setEyePixmap(const QPixmap&,const QString&,int)));
450 m_eyeTimer.changeInterval(600000); 444 m_eyeTimer.changeInterval(600000);
451 } 445 }
452} 446}
453 447
454void LauncherIconView::addCheckItem(AppLnk* app) 448void LauncherIconView::addCheckItem(AppLnk* app)
455{ 449{
456 LauncherItem*item = new LauncherItem( this, app, bigIcns ); 450 LauncherItem*item = new LauncherItem( this, app, bigIcns );
457 if (item->isEyeImage()) { 451 if (item->isEyeImage()) {
458 checkCallback(); 452 checkCallback();
459 } 453 }
460} 454}
461 455
462void LauncherIconView::requestEyePix(const LauncherItem*item) 456void LauncherIconView::requestEyePix(const LauncherItem*item)
463{ 457{
464 if (!item) return; 458 if (!item) return;
465 if (item->isEyeImage()) { 459 if (item->isEyeImage()) {
466 checkCallback(); 460 checkCallback();
467 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize(); 461 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize();
468 m_itemCache[item->appLnk()->file()]=(LauncherItem*)item;
469 m_EyeCallBack->requestThumb(item->appLnk()->file(),s,s); 462 m_EyeCallBack->requestThumb(item->appLnk()->file(),s,s);
470 } 463 }
471} 464}
472 465
473void LauncherIconView::stopEyeTimer() 466void LauncherIconView::stopEyeTimer()
474{ 467{
475 if (m_EyeCallBack) { 468 if (m_EyeCallBack) {
476 delete m_EyeCallBack; 469 delete m_EyeCallBack;
477 m_EyeCallBack=0; 470 m_EyeCallBack=0;
478 } 471 }
479 m_itemCache.clear();
480 m_eyeTimer.stop(); 472 m_eyeTimer.stop();
481} 473}
482 474
483void LauncherIconView::addItem(AppLnk* app, bool resort) 475void LauncherIconView::addItem(AppLnk* app, bool resort)
484{ 476{
485 addCatsAndMimes(app); 477 addCatsAndMimes(app);
486 if ( (tf.isEmpty() || tf.match(app->type()) >= 0) 478 if ( (tf.isEmpty() || tf.match(app->type()) >= 0)
487 && (cf == 0 || app->categories().contains(cf) 479 && (cf == 0 || app->categories().contains(cf)
488 || cf == -1 && app->categories().count() == 0 ) ) { 480 || cf == -1 && app->categories().count() == 0 ) ) {
489 addCheckItem(app); 481 addCheckItem(app);
490 } else { 482 } else {
491 hidden.append(app); 483 hidden.append(app);
492 } 484 }
493 if ( resort ){ 485 if ( resort ){
494 sort(); 486 sort();
495 } 487 }
496} 488}
497 489
498void LauncherIconView::updateCategoriesAndMimeTypes() 490void LauncherIconView::updateCategoriesAndMimeTypes()
499{ 491{
500 mimes.clear(); 492 mimes.clear();
501 cats.clear(); 493 cats.clear();
502 LauncherItem* item = (LauncherItem*)firstItem(); 494 LauncherItem* item = (LauncherItem*)firstItem();
503 while (item) { 495 while (item) {
@@ -681,169 +673,169 @@ LauncherView::~LauncherView()
681 673
682 674
683bool LauncherView::bsy=FALSE; 675bool LauncherView::bsy=FALSE;
684 676
685void LauncherView::setBusy(bool on) 677void LauncherView::setBusy(bool on)
686{ 678{
687 icons->setBusy(on); 679 icons->setBusy(on);
688} 680}
689 681
690void LauncherView::setBusyIndicatorType( const QString& type ) { 682void LauncherView::setBusyIndicatorType( const QString& type ) {
691 if ( type. lower ( ) == "animated" ) 683 if ( type. lower ( ) == "animated" )
692 icons->setBusyIndicatorType( BIT_Animated ) ; 684 icons->setBusyIndicatorType( BIT_Animated ) ;
693 else 685 else
694 icons->setBusyIndicatorType( BIT_Normal ) ; 686 icons->setBusyIndicatorType( BIT_Normal ) ;
695} 687}
696 688
697void LauncherView::hideIcons() 689void LauncherView::hideIcons()
698{ 690{
699 icons->hide(); 691 icons->hide();
700} 692}
701 693
702void LauncherView::setToolsEnabled(bool y) 694void LauncherView::setToolsEnabled(bool y)
703{ 695{
704 if ( !y != !tools ) { 696 if ( !y != !tools ) {
705 if ( y ) { 697 if ( y ) {
706 tools = new QHBox(this); 698 tools = new QHBox(this);
707 699 // Type filter
708 // Type filter 700 typemb = new QComboBox(tools);
709 typemb = new QComboBox(tools); 701 QSizePolicy p = typemb->sizePolicy();
710 QSizePolicy p = typemb->sizePolicy(); 702 p.setHorData(QSizePolicy::Expanding);
711 p.setHorData(QSizePolicy::Expanding); 703 typemb->setSizePolicy(p);
712 typemb->setSizePolicy(p); 704 // Category filter
713 705 updateTools();
714 // Category filter 706 tools->show();
715 updateTools(); 707 } else {
716 tools->show(); 708 delete tools;
717 709 tools = 0;
718 } else { 710 }
719 delete tools;
720 tools = 0;
721 }
722 } 711 }
723} 712}
724 713
725void LauncherView::updateTools() 714void LauncherView::updateTools()
726{ 715{
727 disconnect( typemb, SIGNAL(activated(int)), 716 disconnect( typemb, SIGNAL(activated(int)),
728 this, SLOT(showType(int)) ); 717 this, SLOT(showType(int)) );
729 if ( catmb ) disconnect( catmb, SIGNAL(signalSelected(int)), 718 if ( catmb ) {
730 this, SLOT(showCategory(int)) ); 719 disconnect( catmb, SIGNAL(signalSelected(int)),this,SLOT(showCategory(int)));
720 }
731 721
732 // ### I want to remove this 722 // ### I want to remove this
733 icons->updateCategoriesAndMimeTypes(); 723 icons->updateCategoriesAndMimeTypes();
734 724
735 QString prev; 725 QString prev;
736 726
737 // Type filter 727 // Type filter
738 QStringList types; 728 QStringList types;
739 typelist = icons->mimeTypes(); 729 typelist = icons->mimeTypes();
740 for (QStringList::ConstIterator it = typelist.begin(); it!=typelist.end(); ++it) { 730 for (QStringList::ConstIterator it = typelist.begin(); it!=typelist.end(); ++it) {
741 QString t = *it; 731 QString t = *it;
742 if ( t.left(12) == "application/" ) { 732 if ( t.left(12) == "application/" ) {
743 MimeType mt(t); 733 MimeType mt(t);
744 const AppLnk* app = mt.application(); 734 const AppLnk* app = mt.application();
745 if ( app ) 735 if ( app )
746 t = app->name(); 736 t = app->name();
747 else 737 else
748 t = t.mid(12); 738 t = t.mid(12);
749 } else { 739 } else {
750 t[0] = t[0].upper(); 740 t[0] = t[0].upper();
751 } 741 }
752 types += t; 742 types += t;
753 } 743 }
754 types << tr("All types"); 744 types << tr("All types");
755 prev = typemb->currentText(); 745 prev = typemb->currentText();
756 typemb->clear(); 746 typemb->clear();
757 typemb->insertStringList(types); 747 typemb->insertStringList(types);
758 for (int i=0; i<typemb->count(); i++) { 748 for (int i=0; i<typemb->count(); i++) {
759 if ( typemb->text(i) == prev ) { 749 if ( typemb->text(i) == prev ) {
760 typemb->setCurrentItem(i); 750 typemb->setCurrentItem(i);
761 break; 751 break;
752 }
762 } 753 }
754 if ( prev.isNull() ) {
755 typemb->setCurrentItem(typemb->count()-1);
763 } 756 }
764 if ( prev.isNull() )
765 typemb->setCurrentItem(typemb->count()-1);
766 757
767 int pcat = catmb ? catmb->currentCategory() : -2; 758 int pcat = catmb ? catmb->currentCategory() : -2;
768 if ( !catmb ) 759 if ( !catmb )
769 catmb = new CategorySelect(tools); 760 catmb = new CategorySelect(tools);
770 Categories cats( 0 ); 761 Categories cats( 0 );
771 cats.load( categoryFileName() ); 762 cats.load( categoryFileName() );
772 QArray<int> vl( 0 ); 763 QArray<int> vl( 0 );
773 catmb->setCategories( vl, "Document View", // No tr 764 catmb->setCategories( vl, "Document View", // No tr
774 tr("Document View") ); 765 tr("Document View") );
775 catmb->setRemoveCategoryEdit( TRUE ); 766 catmb->setRemoveCategoryEdit( TRUE );
776 catmb->setAllCategories( TRUE ); 767 catmb->setAllCategories( TRUE );
777 catmb->setCurrentCategory(pcat); 768 catmb->setCurrentCategory(pcat);
778 769
779 // if type has changed we need to redisplay 770 // if type has changed we need to redisplay
780 if ( typemb->currentText() != prev ) 771 if ( typemb->currentText() != prev )
781 showType( typemb->currentItem() ); 772 showType( typemb->currentItem() );
782 773
783 connect(typemb, SIGNAL(activated(int)), this, SLOT(showType(int))); 774 connect(typemb, SIGNAL(activated(int)), this, SLOT(showType(int)));
784 connect(catmb, SIGNAL(signalSelected(int)), this, SLOT(showCategory(int))); 775 connect(catmb, SIGNAL(signalSelected(int)), this, SLOT(showCategory(int)));
785} 776}
786 777
787void LauncherView::sortBy(int s) 778void LauncherView::sortBy(int s)
788{ 779{
789 icons->setSortMethod((LauncherIconView::SortMethod)s); 780 icons->setSortMethod((LauncherIconView::SortMethod)s);
790} 781}
791 782
792void LauncherView::showType(int t) 783void LauncherView::showType(int t)
793{ 784{
794 if ( t >= (int)typelist.count() ) { 785 if ( t >= (int)typelist.count() ) {
795 icons->setTypeFilter("",TRUE); 786 icons->setTypeFilter("",TRUE);
796 } else { 787 } else {
797 QString ty = typelist[t]; 788 QString ty = typelist[t];
798 if ( !ty.contains('/') ) 789 if ( !ty.contains('/') )
799 ty += "/*"; 790 ty += "/*";
800 icons->setTypeFilter(ty,TRUE); 791 icons->setTypeFilter(ty,TRUE);
801 } 792 }
802} 793}
803 794
804void LauncherView::showCategory( int c ) 795void LauncherView::showCategory( int c )
805{ 796{
806 icons->setCategoryFilter( c, TRUE ); 797 icons->setCategoryFilter( c, TRUE );
807} 798}
808 799
809void LauncherView::setViewMode( ViewMode m ) 800void LauncherView::setViewMode( ViewMode m )
810{ 801{
802 odebug << "LauncherView::setViewMode( ViewMode m )" << oendl;
811 if ( vmode != m ) { 803 if ( vmode != m ) {
812 bool bigIcons = m == Icon; 804 bool bigIcons = m == Icon;
813 icons->viewport()->setUpdatesEnabled( FALSE ); 805 icons->viewport()->setUpdatesEnabled( FALSE );
814 icons->setBigIcons( bigIcons ); 806 icons->setBigIcons( bigIcons );
815 switch ( m ) { 807 switch ( m ) {
816 case List: 808 case List:
817 icons->setItemTextPos( QIconView::Right ); 809 icons->setItemTextPos( QIconView::Right );
818 break; 810 break;
819 case Icon: 811 case Icon:
820 icons->setItemTextPos( QIconView::Bottom ); 812 icons->setItemTextPos( QIconView::Bottom );
821 break; 813 break;
822 } 814 }
823 icons->hideOrShowItems( FALSE ); 815 icons->hideOrShowItems( FALSE );
824 icons->viewport()->setUpdatesEnabled( TRUE ); 816 icons->viewport()->setUpdatesEnabled( TRUE );
825 vmode = m; 817 vmode = m;
826 } 818 }
827} 819}
828 820
829// 821//
830// User images may require scaling. 822// User images may require scaling.
831// 823//
832QImage LauncherView::loadBackgroundImage(QString &bgName) 824QImage LauncherView::loadBackgroundImage(QString &bgName)
833{ 825{
834 QImageIO imgio; 826 QImageIO imgio;
835 QSize ds = qApp->desktop()->size(); // should be launcher, not desktop 827 QSize ds = qApp->desktop()->size(); // should be launcher, not desktop
836 bool further_scaling = TRUE; 828 bool further_scaling = TRUE;
837 829
838 imgio.setFileName( bgName ); 830 imgio.setFileName( bgName );
839 imgio.setParameters("GetHeaderInformation"); 831 imgio.setParameters("GetHeaderInformation");
840 832
841 if (imgio.read() == FALSE) { 833 if (imgio.read() == FALSE) {
842 return imgio.image(); 834 return imgio.image();
843 } 835 }
844 836
845 if (imgio.image().width() < ds.width() && 837 if (imgio.image().width() < ds.width() &&
846 imgio.image().height() < ds.height()) { 838 imgio.image().height() < ds.height()) {
847 further_scaling = FALSE; 839 further_scaling = FALSE;
848 } 840 }
849 841
@@ -1025,48 +1017,49 @@ void LauncherView::itemClicked( int btn, QIconViewItem *item )
1025 AppLnk *appLnk = ((LauncherItem *)item)->appLnk(); 1017 AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
1026 if ( btn == LeftButton ) { 1018 if ( btn == LeftButton ) {
1027 // Make sure it's the item we execute that gets highlighted 1019 // Make sure it's the item we execute that gets highlighted
1028 icons->setCurrentItem( item ); 1020 icons->setCurrentItem( item );
1029 emit clicked( appLnk ); 1021 emit clicked( appLnk );
1030 } 1022 }
1031 item->setSelected(FALSE); 1023 item->setSelected(FALSE);
1032 } 1024 }
1033} 1025}
1034 1026
1035void LauncherView::itemPressed( int btn, QIconViewItem *item ) 1027void LauncherView::itemPressed( int btn, QIconViewItem *item )
1036{ 1028{
1037 if ( item ) { 1029 if ( item ) {
1038 AppLnk *appLnk = ((LauncherItem *)item)->appLnk(); 1030 AppLnk *appLnk = ((LauncherItem *)item)->appLnk();
1039 if ( btn == RightButton ) 1031 if ( btn == RightButton )
1040 emit rightPressed( appLnk ); 1032 emit rightPressed( appLnk );
1041 else if ( btn == ShiftButton ) 1033 else if ( btn == ShiftButton )
1042 emit rightPressed( appLnk ); 1034 emit rightPressed( appLnk );
1043 item->setSelected(FALSE); 1035 item->setSelected(FALSE);
1044 } 1036 }
1045} 1037}
1046 1038
1047void LauncherView::removeAllItems() 1039void LauncherView::removeAllItems()
1048{ 1040{
1041 odebug << "LauncherView::removeAllItems()" << oendl;
1049 icons->clear(); 1042 icons->clear();
1050} 1043}
1051 1044
1052bool LauncherView::removeLink(const QString& linkfile) 1045bool LauncherView::removeLink(const QString& linkfile)
1053{ 1046{
1054 return icons->removeLink(linkfile); 1047 return icons->removeLink(linkfile);
1055} 1048}
1056 1049
1057void LauncherView::setSortEnabled( bool v ) 1050void LauncherView::setSortEnabled( bool v )
1058{ 1051{
1059 icons->setSorting( v ); 1052 icons->setSorting( v );
1060 if ( v ) 1053 if ( v )
1061 sort(); 1054 sort();
1062} 1055}
1063 1056
1064void LauncherView::setUpdatesEnabled( bool u ) 1057void LauncherView::setUpdatesEnabled( bool u )
1065{ 1058{
1066 icons->setUpdatesEnabled( u ); 1059 icons->setUpdatesEnabled( u );
1067} 1060}
1068 1061
1069void LauncherView::sort() 1062void LauncherView::sort()
1070{ 1063{
1071 icons->sort(); 1064 icons->sort();
1072} 1065}
@@ -1147,35 +1140,35 @@ LauncherThumbReceiver::~LauncherThumbReceiver()
1147 } 1140 }
1148} 1141}
1149 1142
1150void LauncherThumbReceiver::recieve( const QCString&str, const QByteArray&at ) 1143void LauncherThumbReceiver::recieve( const QCString&str, const QByteArray&at )
1151{ 1144{
1152 PixmapInfos pixinfos; 1145 PixmapInfos pixinfos;
1153 QDataStream stream( at, IO_ReadOnly ); 1146 QDataStream stream( at, IO_ReadOnly );
1154 1147
1155 /* we are just interested in thumbmails */ 1148 /* we are just interested in thumbmails */
1156 if ( str == "pixmapsHandled(PixmapList)" ) 1149 if ( str == "pixmapsHandled(PixmapList)" )
1157 stream >> pixinfos; 1150 stream >> pixinfos;
1158 1151
1159 for ( PixmapInfos::Iterator it = pixinfos.begin(); it != pixinfos.end(); ++it ) { 1152 for ( PixmapInfos::Iterator it = pixinfos.begin(); it != pixinfos.end(); ++it ) {
1160 emit sig_Thumbnail((*it).pixmap,(*it).file,(*it).width); 1153 emit sig_Thumbnail((*it).pixmap,(*it).file,(*it).width);
1161 } 1154 }
1162} 1155}
1163 1156
1164void LauncherThumbReceiver::requestThumb(const QString&file,int width,int height) 1157void LauncherThumbReceiver::requestThumb(const QString&file,int width,int height)
1165{ 1158{
1166 PixmapInfo rItem; 1159 PixmapInfo rItem;
1167 rItem.file = file; 1160 rItem.file = file;
1168 rItem.width = width; 1161 rItem.width = width;
1169 rItem.height = height; 1162 rItem.height = height;
1170 m_inThumbNail.append(rItem); 1163 m_inThumbNail.append(rItem);
1171 QTimer::singleShot(0, this, SLOT(sendRequest())); 1164 QTimer::singleShot(2, this, SLOT(sendRequest()));
1172} 1165}
1173 1166
1174void LauncherThumbReceiver::sendRequest() 1167void LauncherThumbReceiver::sendRequest()
1175{ 1168{
1176 if (m_inThumbNail.count()>0) { 1169 if (m_inThumbNail.count()>0) {
1177 QCopEnvelope env("QPE/opie-eye_slave", "pixmapInfos(PixmapInfos)" ); 1170 QCopEnvelope env("QPE/opie-eye_slave", "pixmapInfos(PixmapInfos)" );
1178 env << m_inThumbNail; 1171 env << m_inThumbNail;
1179 m_inThumbNail.clear(); 1172 m_inThumbNail.clear();
1180 } 1173 }
1181} 1174}
diff --git a/core/launcher/launcherview.h b/core/launcher/launcherview.h
index 94c367c..6d94539 100644
--- a/core/launcher/launcherview.h
+++ b/core/launcher/launcherview.h
@@ -219,28 +219,27 @@ protected:
219 219
220protected slots: 220protected slots:
221 void setEyePixmap(const QPixmap&,const QString&,int width); 221 void setEyePixmap(const QPixmap&,const QString&,int width);
222 void stopEyeTimer(); 222 void stopEyeTimer();
223 223
224private: 224private:
225 QList<AppLnk> hidden; 225 QList<AppLnk> hidden;
226 QDict<void> mimes; 226 QDict<void> mimes;
227 QDict<void> cats; 227 QDict<void> cats;
228 SortMethod sortmeth; 228 SortMethod sortmeth;
229 QRegExp tf; 229 QRegExp tf;
230 int cf; 230 int cf;
231 LauncherItem* bsy; 231 LauncherItem* bsy;
232 int busyTimer; 232 int busyTimer;
233 bool ike; 233 bool ike;
234 bool bigIcns; 234 bool bigIcns;
235 QPixmap bgPixmap; 235 QPixmap bgPixmap;
236 QColor bgColor; 236 QColor bgColor;
237 LauncherThumbReceiver*m_EyeCallBack; 237 LauncherThumbReceiver*m_EyeCallBack;
238#ifdef USE_ANIMATED_BUSY_ICON_OVERLAY 238#ifdef USE_ANIMATED_BUSY_ICON_OVERLAY
239 QPixmap busyPix; 239 QPixmap busyPix;
240#endif 240#endif
241 BusyIndicatorType busyType; 241 BusyIndicatorType busyType;
242 QTimer m_eyeTimer; 242 QTimer m_eyeTimer;
243 QMap<QString,LauncherItem*> m_itemCache;
244}; 243};
245 244
246#endif // LAUNCHERVIEW_H 245#endif // LAUNCHERVIEW_H