-rw-r--r-- | library/resource.cpp | 35 | ||||
-rw-r--r-- | library/resource.h | 11 |
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 | */ | ||
32 | bool 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 |
33 | namespace { | 39 | namespace { |
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> |
63 | QPixmap Resource::loadPixmap( const QString &pix ) | 69 | QPixmap 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 | ||
45 | extern bool qpe_fast_findPixmap; | ||
45 | // Inline for compatibility with SHARP ROMs | 46 | // Inline for compatibility with SHARP ROMs |
46 | inline QIconSet Resource::loadIconSet( const QString &pix ) | 47 | inline 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 |