summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/applnk.cpp60
-rw-r--r--library/resource.cpp11
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...