summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/applnk.cpp84
1 files changed, 43 insertions, 41 deletions
diff --git a/library/applnk.cpp b/library/applnk.cpp
index 80f2c62..c82d3b9 100644
--- a/library/applnk.cpp
+++ b/library/applnk.cpp
@@ -431,86 +431,88 @@ AppLnk& AppLnk::operator=(const AppLnk &copy)
431 431
432 432
433 mName = copy.mName; 433 mName = copy.mName;
434 434
435 /* remove for Qtopia 3.0 -zecke */ 435 /* remove for Qtopia 3.0 -zecke */
436 mPixmap = copy.mPixmap; 436 mPixmap = copy.mPixmap;
437 mBigPixmap = copy.mBigPixmap; 437 mBigPixmap = copy.mBigPixmap;
438 438
439 mExec = copy.mExec; 439 mExec = copy.mExec;
440 mType = copy.mType; 440 mType = copy.mType;
441 mRotation = copy.mRotation; 441 mRotation = copy.mRotation;
442 mComment = copy.mComment; 442 mComment = copy.mComment;
443 mFile = copy.mFile; 443 mFile = copy.mFile;
444 mLinkFile = copy.mLinkFile; 444 mLinkFile = copy.mLinkFile;
445 mIconFile = copy.mIconFile; 445 mIconFile = copy.mIconFile;
446 mMimeTypes = copy.mMimeTypes; 446 mMimeTypes = copy.mMimeTypes;
447 mMimeTypeIcons = copy.mMimeTypeIcons; 447 mMimeTypeIcons = copy.mMimeTypeIcons;
448 mId = 0; 448 mId = 0;
449 d = new AppLnkPrivate(); 449 d = new AppLnkPrivate();
450 d->mCat = copy.d->mCat; 450 d->mCat = copy.d->mCat;
451 d->mCatList = copy.d->mCatList; 451 d->mCatList = copy.d->mCatList;
452 d->mPixmaps = copy.d->mPixmaps; 452 d->mPixmaps = copy.d->mPixmaps;
453 453
454 return *this; 454 return *this;
455} 455}
456/*! 456/*!
457 protected internally to share code 457 protected internally to share code
458 should I document that at all? 458 should I document that at all?
459 I don't know the TT style for that 459 I don't know the TT style for that
460*/ 460*/
461const QPixmap& AppLnk::pixmap( int pos, int size ) const { 461const QPixmap& AppLnk::pixmap( int pos, int size ) const {
462 if ( d->mPixmaps[pos].isNull() ) { 462 if ( d->mPixmaps[pos].isNull() ) {
463 AppLnk* that = (AppLnk*)this; 463 AppLnk* that = (AppLnk*)this;
464 if ( mIconFile.isEmpty() ) { 464 if ( mIconFile.isEmpty() ) {
465 MimeType mt(type()); 465 MimeType mt(type());
466 that->d->mPixmaps[pos] = pos ? mt.bigPixmap() : mt.pixmap(); 466 that->d->mPixmaps[pos] = pos ? mt.bigPixmap() : mt.pixmap();
467 if ( that->d->mPixmaps[pos].isNull() ) 467 if ( that->d->mPixmaps[pos].isNull() )
468 that->d->mPixmaps[pos].convertFromImage( 468 that->d->mPixmaps[pos].convertFromImage(
469 Resource::loadImage("UnknownDocument") 469 Resource::loadImage("UnknownDocument")
470 .smoothScale( size, size ) ); 470 .smoothScale( size, size ) );
471 return that->d->mPixmaps[pos]; 471 return that->d->mPixmaps[pos];
472 } 472 }
473 QImage unscaledIcon = Resource::loadImage( that->mIconFile ); 473
474 if ( unscaledIcon.isNull() ) { 474 QImage unscaledIcon = Resource::loadImage( that->mIconFile );
475 // qDebug( "Cannot find icon: %s", that->mIconFile.latin1() ); 475 if ( unscaledIcon.isNull() ) {
476 that->d->mPixmaps[pos].convertFromImage( 476 // qDebug( "Cannot find icon: %s", that->mIconFile.latin1() );
477 Resource::loadImage("UnknownDocument") 477 that->d->mPixmaps[pos].convertFromImage(
478 .smoothScale( size, size ) ); 478 Resource::loadImage("UnknownDocument")
479 } else { 479 .smoothScale( size, size ) );
480 that->d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); 480 } else {
481 that->d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); 481 that->d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) );
482 } 482 that->d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) );
483 return that->d->mPixmaps[pos]; 483 }
484 return that->d->mPixmaps[pos];
484 } 485 }
486
485 return d->mPixmaps[pos]; 487 return d->mPixmaps[pos];
486} 488}
487 489
488/*! 490/*!
489 Returns a small pixmap associated with the application. 491 Returns a small pixmap associated with the application.
490 492
491 \sa bigPixmap() setIcon() 493 \sa bigPixmap() setIcon()
492*/ 494*/
493const QPixmap& AppLnk::pixmap() const 495const QPixmap& AppLnk::pixmap() const
494{ 496{
495 if ( d->mPixmaps[0].isNull() ) { 497 if ( d->mPixmaps[0].isNull() ) {
496 return pixmap(AppLnkPrivate::Normal, smallSize ); 498 return pixmap(AppLnkPrivate::Normal, smallSize );
497 } 499 }
498 return d->mPixmaps[0]; 500 return d->mPixmaps[0];
499} 501}
500 502
501/*! 503/*!
502 Returns a large pixmap associated with the application. 504 Returns a large pixmap associated with the application.
503 505
504 \sa pixmap() setIcon() 506 \sa pixmap() setIcon()
505*/ 507*/
506const QPixmap& AppLnk::bigPixmap() const 508const QPixmap& AppLnk::bigPixmap() const
507{ 509{
508 if ( d->mPixmaps[1].isNull() ) { 510 if ( d->mPixmaps[1].isNull() ) {
509 return pixmap( AppLnkPrivate::Big, bigSize ); 511 return pixmap( AppLnkPrivate::Big, bigSize );
510 } 512 }
511 return d->mPixmaps[1]; 513 return d->mPixmaps[1];
512} 514}
513 515
514/*! 516/*!
515 Returns the type of the AppLnk. For applications, games and 517 Returns the type of the AppLnk. For applications, games and
516 settings the type is \c Application; for documents the type is the 518 settings the type is \c Application; for documents the type is the
@@ -955,91 +957,91 @@ void AppLnk::removeFiles()
955#ifndef QT_NO_COP 957#ifndef QT_NO_COP
956 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 958 QCopEnvelope e("QPE/System", "linkChanged(QString)");
957 if ( linkFileKnown() ) 959 if ( linkFileKnown() )
958 e << linkFile(); 960 e << linkFile();
959 else 961 else
960 e << file(); 962 e << file();
961#endif 963#endif
962 } else if ( valid ) { 964 } else if ( valid ) {
963 // restore link 965 // restore link
964 writeLink(); 966 writeLink();
965 } 967 }
966 } 968 }
967} 969}
968 970
969/*! 971/*!
970 Deletes the linkFile(), leaving any file() untouched. 972 Deletes the linkFile(), leaving any file() untouched.
971 973
972 \sa removeFiles() 974 \sa removeFiles()
973*/ 975*/
974void AppLnk::removeLinkFile() 976void AppLnk::removeLinkFile()
975{ 977{
976 if ( isValid() && linkFileKnown() && QFile::remove(linkFile()) ) { 978 if ( isValid() && linkFileKnown() && QFile::remove(linkFile()) ) {
977#ifndef QT_NO_COP 979#ifndef QT_NO_COP
978 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 980 QCopEnvelope e("QPE/System", "linkChanged(QString)");
979 e << linkFile(); 981 e << linkFile();
980#endif 982#endif
981 } 983 }
982} 984}
983 985
984class AppLnkImagePrivate { 986class AppLnkImagePrivate {
985public : 987public :
986 AppLnkImagePrivate( const QString & ImageName ) { 988 AppLnkImagePrivate( const QString & ImageName ) {
987 IconName = ImageName; 989 IconName = ImageName;
988 Small = 0; 990 Small = 0;
989 Big = 0; 991 Big = 0;
990 } 992 }
991 ~AppLnkImagePrivate( ) { 993 ~AppLnkImagePrivate( ) {
992 if ( Small ) delete Small; 994 if ( Small ) delete Small;
993 if ( Big ) delete Big; 995 if ( Big ) delete Big;
994 } 996 }
995 997
996 inline QPixmap * small( void ) { 998 inline QPixmap * small( void ) {
997 if( ! Small ) { 999 if( ! Small ) {
998 QImage unscaledIcon = Resource::loadImage( IconName ); 1000 QImage unscaledIcon = Resource::loadImage( IconName );
999 // works as long as smallSize remains static 1001 // works as long as smallSize remains static
1000 Small = new QPixmap(); 1002 Small = new QPixmap();
1001 Small->convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); 1003 Small->convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) );
1002 } 1004 }
1003 return Small; 1005 return Small;
1004 } 1006 }
1005 1007
1006 inline QPixmap * big( void ) { 1008 inline QPixmap * big( void ) {
1007 if( ! Big ) { 1009 if( ! Big ) {
1008 QImage unscaledIcon = Resource::loadImage( IconName ); 1010 QImage unscaledIcon = Resource::loadImage( IconName );
1009 // works as long as bigSize remains static 1011 // works as long as bigSize remains static
1010 Big = new QPixmap(); 1012 Big = new QPixmap();
1011 Big->convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); 1013 Big->convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) );
1012 } 1014 }
1013 return Big; 1015 return Big;
1014 } 1016 }
1015 1017
1016 QString IconName; 1018 QString IconName;
1017 QPixmap * Small; 1019 QPixmap * Small;
1018 QPixmap * Big; 1020 QPixmap * Big;
1019}; 1021};
1020 1022
1021class AppLnkSetPrivate { 1023class AppLnkSetPrivate {
1022public: 1024public:
1023 AppLnkSetPrivate() 1025 AppLnkSetPrivate()
1024 { 1026 {
1025 typPix.setAutoDelete(TRUE); 1027 typPix.setAutoDelete(TRUE);
1026 typName.setAutoDelete(TRUE); 1028 typName.setAutoDelete(TRUE);
1027 } 1029 }
1028 1030
1029 QDict<AppLnkImagePrivate> typPix; 1031 QDict<AppLnkImagePrivate> typPix;
1030 QDict<QString> typName; 1032 QDict<QString> typName;
1031}; 1033};
1032 1034
1033/*! 1035/*!
1034 \class AppLnkSet applnk.h 1036 \class AppLnkSet applnk.h
1035 \brief The AppLnkSet class is a set of AppLnk objects. 1037 \brief The AppLnkSet class is a set of AppLnk objects.
1036*/ 1038*/
1037 1039
1038/*! 1040/*!
1039 \fn QStringList AppLnkSet::types() const 1041 \fn QStringList AppLnkSet::types() const
1040 1042
1041 Returns the list of \link applnk.html#Types types\endlink in the set. 1043 Returns the list of \link applnk.html#Types types\endlink in the set.
1042 1044
1043 For applications, games and settings the type is \c Application; 1045 For applications, games and settings the type is \c Application;
1044 for documents the type is the document's MIME type. 1046 for documents the type is the document's MIME type.
1045 1047
@@ -1096,65 +1098,65 @@ void AppLnkSet::detachChildren()
1096 1098
1097/*! 1099/*!
1098 Destroys the set, deleting all the AppLnk objects it contains. 1100 Destroys the set, deleting all the AppLnk objects it contains.
1099 1101
1100 \sa detachChildren() 1102 \sa detachChildren()
1101*/ 1103*/
1102AppLnkSet::~AppLnkSet() 1104AppLnkSet::~AppLnkSet()
1103{ 1105{
1104 QListIterator<AppLnk> it( mApps ); 1106 QListIterator<AppLnk> it( mApps );
1105 for ( ; it.current(); ) { 1107 for ( ; it.current(); ) {
1106 AppLnk* a = *it; 1108 AppLnk* a = *it;
1107 ++it; 1109 ++it;
1108 a->mId = 0; 1110 a->mId = 0;
1109 delete a; 1111 delete a;
1110 } 1112 }
1111 delete d; 1113 delete d;
1112} 1114}
1113 1115
1114void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QString& typName, int depth) 1116void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QString& typName, int depth)
1115{ 1117{
1116 depth++; 1118 depth++;
1117 if ( depth > 10 ) 1119 if ( depth > 10 )
1118 return; 1120 return;
1119 1121
1120 QDir dir( dr ); 1122 QDir dir( dr );
1121 QString typNameLocal = typName; 1123 QString typNameLocal = typName;
1122 1124
1123 if ( dir.exists( ".directory" ) ) { 1125 if ( dir.exists( ".directory" ) ) {
1124 Config config( dr + "/.directory", Config::File ); 1126 Config config( dr + "/.directory", Config::File );
1125 config.setGroup( "Desktop Entry" ); 1127 config.setGroup( "Desktop Entry" );
1126 typNameLocal = config.readEntry( "Name", typNameLocal ); 1128 typNameLocal = config.readEntry( "Name", typNameLocal );
1127 if ( !typ.isEmpty() ) { 1129 if ( !typ.isEmpty() ) {
1128 d->typPix.insert( typ, 1130 d->typPix.insert( typ,
1129 new AppLnkImagePrivate( config.readEntry( "Icon", "AppsIcon" ) ) 1131 new AppLnkImagePrivate( config.readEntry( "Icon", "AppsIcon" ) )
1130 ); 1132 );
1131 d->typName.insert(typ, new QString(typNameLocal)); 1133 d->typName.insert(typ, new QString(typNameLocal));
1132 1134
1133 } 1135 }
1134 } 1136 }
1135 1137
1136 const QFileInfoList *list = dir.entryInfoList(); 1138 const QFileInfoList *list = dir.entryInfoList();
1137 if ( list ) { 1139 if ( list ) {
1138 QFileInfo* fi; 1140 QFileInfo* fi;
1139 bool cadded=FALSE; 1141 bool cadded=FALSE;
1140 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) { 1142 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) {
1141 QString bn = fi->fileName(); 1143 QString bn = fi->fileName();
1142 // qDebug("findChildren "+bn); 1144 // qDebug("findChildren "+bn);
1143 if ( bn[0] != '.' && bn != "CVS" ) { 1145 if ( bn[0] != '.' && bn != "CVS" ) {
1144 if ( fi->isDir() ) { 1146 if ( fi->isDir() ) {
1145 QString c = typ.isNull() ? bn : typ+"/"+bn; 1147 QString c = typ.isNull() ? bn : typ+"/"+bn;
1146 QString d = typNameLocal.isNull() ? bn : typNameLocal+"/"+bn; 1148 QString d = typNameLocal.isNull() ? bn : typNameLocal+"/"+bn;
1147 findChildren(fi->filePath(), c, d, depth ); 1149 findChildren(fi->filePath(), c, d, depth );
1148 } else { 1150 } else {
1149 if ( fi->extension(FALSE) == "desktop" ) { 1151 if ( fi->extension(FALSE) == "desktop" ) {
1150 AppLnk* app = new AppLnk( fi->filePath() ); 1152 AppLnk* app = new AppLnk( fi->filePath() );
1151#ifdef QT_NO_QWS_MULTIPROCESS 1153#ifdef QT_NO_QWS_MULTIPROCESS
1152 if ( !Global::isBuiltinCommand( app->exec() ) ) 1154 if ( !Global::isBuiltinCommand( app->exec() ) )
1153 delete app; 1155 delete app;
1154 else 1156 else
1155#endif 1157#endif
1156 { 1158 {
1157 if ( !typ.isEmpty() ) { 1159 if ( !typ.isEmpty() ) {
1158 if ( !cadded ) { 1160 if ( !cadded ) {
1159 typs.append(typ); 1161 typs.append(typ);
1160 cadded = TRUE; 1162 cadded = TRUE;