-rw-r--r-- | library/applnk.cpp | 60 | ||||
-rw-r--r-- | library/resource.cpp | 11 |
2 files changed, 54 insertions, 17 deletions
diff --git a/library/applnk.cpp b/library/applnk.cpp index 1c1a227..80f2c62 100644 --- a/library/applnk.cpp +++ b/library/applnk.cpp @@ -983,2 +983,39 @@ void AppLnk::removeLinkFile() +class AppLnkImagePrivate { +public : + AppLnkImagePrivate( const QString & ImageName ) { + IconName = ImageName; + Small = 0; + Big = 0; + } + ~AppLnkImagePrivate( ) { + if ( Small ) delete Small; + if ( Big ) delete Big; + } + + inline QPixmap * small( void ) { + if( ! Small ) { + QImage unscaledIcon = Resource::loadImage( IconName ); + // works as long as smallSize remains static + Small = new QPixmap(); + Small->convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); + } + return Small; + } + + inline QPixmap * big( void ) { + if( ! Big ) { + QImage unscaledIcon = Resource::loadImage( IconName ); + // works as long as bigSize remains static + Big = new QPixmap(); + Big->convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); + } + return Big; + } + + QString IconName; + QPixmap * Small; + QPixmap * Big; +}; + class AppLnkSetPrivate { @@ -988,3 +1025,2 @@ public: typPix.setAutoDelete(TRUE); - typPixBig.setAutoDelete(TRUE); typName.setAutoDelete(TRUE); @@ -992,4 +1028,3 @@ public: - QDict<QPixmap> typPix; - QDict<QPixmap> typPixBig; + QDict<AppLnkImagePrivate> typPix; QDict<QString> typName; @@ -1092,10 +1127,7 @@ void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QStrin if ( !typ.isEmpty() ) { - QString iconFile = config.readEntry( "Icon", "AppsIcon" ); - QImage unscaledIcon = Resource::loadImage( iconFile ); - QPixmap pm, bpm; - pm.convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); - bpm.convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); - d->typPix.insert(typ, new QPixmap(pm)); - d->typPixBig.insert(typ, new QPixmap(bpm)); + d->typPix.insert( typ, + new AppLnkImagePrivate( config.readEntry( "Icon", "AppsIcon" ) ) + ); d->typName.insert(typ, new QString(typNameLocal)); + } @@ -1194,4 +1226,4 @@ QPixmap AppLnkSet::typePixmap( const QString& t ) const { - QPixmap *pm = d->typPix.find(t); - return pm ? *pm : QPixmap(); + AppLnkImagePrivate *alip = d->typPix.find(t); + return alip ? *(alip->small()) : QPixmap(); } @@ -1206,4 +1238,4 @@ QPixmap AppLnkSet::typeBigPixmap( const QString& t ) const { - QPixmap *pm = d->typPixBig.find(t); - return pm ? *pm : QPixmap(); + AppLnkImagePrivate *alip = d->typPix.find(t); + return alip ? *(alip->big()) : QPixmap(); } diff --git a/library/resource.cpp b/library/resource.cpp index cfa0d26..b31876f 100644 --- a/library/resource.cpp +++ b/library/resource.cpp @@ -61,10 +61,16 @@ static bool g_notUseSet = ::getenv("OVERWRITE_ICON_SET"); */ +#include <stdio.h> QPixmap Resource::loadPixmap( const QString &pix ) { - QPixmap pm; + QPixmap pm; // null pixmap QString key="QPE_"+pix; if ( !QPixmapCache::find(key,pm) ) { - pm.convertFromImage(loadImage(pix)); + QImage I = loadImage(pix); + if( I.isNull() ) { + qWarning( "Could not load %s", pix.latin1() ); + } else { + pm.convertFromImage(I); QPixmapCache::insert(key,pm); } + } return pm; @@ -103,3 +109,2 @@ QString Resource::findPixmap( const QString &pix ) - // All formats... |