summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/resource.cpp35
-rw-r--r--library/resource.h11
2 files changed, 33 insertions, 13 deletions
diff --git a/library/resource.cpp b/library/resource.cpp
index 18139b9..da09892 100644
--- a/library/resource.cpp
+++ b/library/resource.cpp
@@ -20,16 +20,22 @@
20 20
21#define QTOPIA_INTERNAL_MIMEEXT 21#define QTOPIA_INTERNAL_MIMEEXT
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include "resource.h" 23#include "resource.h"
24#include "mimetype.h" 24#include "mimetype.h"
25#include <qdir.h> 25#include <qdir.h>
26#include <qpixmapcache.h> 26#include <qpixmapcache.h>
27 27
28/*
29 * enable or disable the search for the icon without .png or .xpm
30 * suffix. We would use MimeType to lookup possible extensions...
31 */
32bool qpe_fast_findPixmap = false; // visible in libqpe
33
28// this namespace is just a workaround for a gcc bug 34// this namespace is just a workaround for a gcc bug
29// gcc exports inline functions in the generated file 35// gcc exports inline functions in the generated file
30// inlinepics_p.h 36// inlinepics_p.h
31 37
32#ifndef LIBQPE_NO_INLINE_IMAGES 38#ifndef LIBQPE_NO_INLINE_IMAGES
33namespace { 39namespace {
34#include "inlinepics_p.h" 40#include "inlinepics_p.h"
35} 41}
@@ -60,23 +66,25 @@ namespace {
60 any filename type extension (e.g. .png, .xpm). 66 any filename type extension (e.g. .png, .xpm).
61*/ 67*/
62#include <stdio.h> 68#include <stdio.h>
63QPixmap Resource::loadPixmap( const QString &pix ) 69QPixmap Resource::loadPixmap( const QString &pix )
64{ 70{
65 QPixmap pm; // null pixmap 71 QPixmap pm; // null pixmap
66 QString key="QPE_"+pix; 72 QString key="QPE_"+pix;
67 if ( !QPixmapCache::find(key,pm) ) { 73 if ( !QPixmapCache::find(key,pm) ) {
68 QImage I = loadImage(pix); 74 QImage I = loadImage(pix);
69 if( I.isNull() ) { 75 if( I.isNull() ) {
70 qWarning( "Could not load %s", pix.latin1() ); 76 qWarning( "Could not load %s", pix.latin1() );
71 } else { 77 } else {
72 pm.convertFromImage(I); 78 pm.convertFromImage(I);
73 QPixmapCache::insert(key,pm); 79 QPixmapCache::insert(key,pm);
74 } 80 }
81 }else {
82 qWarning("In Cache for %s pixmap %s", qApp->argv()[0], pix.local8Bit().data() );
75 } 83 }
76 return pm; 84 return pm;
77} 85}
78 86
79/*! 87/*!
80 Returns the QBitmap called \a pix. You should avoid including 88 Returns the QBitmap called \a pix. You should avoid including
81 any filename type extension (e.g. .png, .xpm). 89 any filename type extension (e.g. .png, .xpm).
82*/ 90*/
@@ -135,27 +143,30 @@ QString Resource::findPixmap( const QString &pix )
135 // Common case optimizations... 143 // Common case optimizations...
136 f = picsPath + pix + ".png"; 144 f = picsPath + pix + ".png";
137 if ( QFile( f ).exists() ) 145 if ( QFile( f ).exists() )
138 return f; 146 return f;
139 f = picsPath + pix + ".xpm"; 147 f = picsPath + pix + ".xpm";
140 if ( QFile( f ).exists() ) 148 if ( QFile( f ).exists() )
141 return f; 149 return f;
142 150
143 // All formats... 151 if ( !qpe_fast_findPixmap ) {
144 QStringList exts = opie_imageExtensions(); 152 printf("Doing slow search for %s %s\n", qApp->argv()[0], pix.local8Bit().data() );
145 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) { 153 // All formats...
146 QString f = picsPath + pix + "." + *it; 154 QStringList exts = opie_imageExtensions();
147 if ( QFile(f).exists() ) 155 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
148 return f; 156 QString f = picsPath + pix + "." + *it;
149 } 157 if ( QFile(f).exists() )
158 return f;
159 }
150 160
151 // Finally, no (or existing) extension... 161 // Finally, no (or existing) extension...
152 if ( QFile( picsPath + pix ).exists() ) 162 if ( QFile( picsPath + pix ).exists() )
153 return picsPath + pix; 163 return picsPath + pix;
164 }
154 165
155 //qDebug("Cannot find pixmap: %s", pix.latin1()); 166 //qDebug("Cannot find pixmap: %s", pix.latin1());
156 return QString(); 167 return QString();
157} 168}
158 169
159/*! 170/*!
160 Returns a sound file for a sound called \a name. 171 Returns a sound file for a sound called \a name.
161 172
diff --git a/library/resource.h b/library/resource.h
index 1f1ba9a..4a3502a 100644
--- a/library/resource.h
+++ b/library/resource.h
@@ -37,21 +37,30 @@ public:
37 static QString findPixmap( const QString &name ); 37 static QString findPixmap( const QString &name );
38 38
39 static QIconSet loadIconSet( const QString &name ); 39 static QIconSet loadIconSet( const QString &name );
40 40
41 static QString findSound( const QString &name ); 41 static QString findSound( const QString &name );
42 static QStringList allSounds(); 42 static QStringList allSounds();
43}; 43};
44 44
45extern bool qpe_fast_findPixmap;
45// Inline for compatibility with SHARP ROMs 46// Inline for compatibility with SHARP ROMs
46inline QIconSet Resource::loadIconSet( const QString &pix ) 47inline QIconSet Resource::loadIconSet( const QString &pix )
47{ 48{
49 /*
50 * disable the slow load
51 */
52 bool oldMode = qpe_fast_findPixmap;
53 qpe_fast_findPixmap = true;
54
48 QPixmap dpm = loadPixmap( pix + "_disabled" ); 55 QPixmap dpm = loadPixmap( pix + "_disabled" );
49 QPixmap pm = loadPixmap( pix ); 56 QPixmap pm = loadPixmap( pix );
50 QIconSet is( pm ); 57 QIconSet is( pm );
51 if ( !dpm.isNull() ) 58 if ( !dpm.isNull() )
52 is.setPixmap( dpm, pm.width() <= 22 ? QIconSet::Small : QIconSet::Large, QIconSet::Disabled ); 59 is.setPixmap( dpm, pm.width() <= 22 ? QIconSet::Small : QIconSet::Large, QIconSet::Disabled );
60
61 qpe_fast_findPixmap = oldMode;
53 return is; 62 return is;
54} 63}
55 64
56 65
57#endif 66#endif