summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/resource.cpp49
1 files changed, 39 insertions, 10 deletions
diff --git a/library/resource.cpp b/library/resource.cpp
index a093e2f..18139b9 100644
--- a/library/resource.cpp
+++ b/library/resource.cpp
@@ -87,6 +87,40 @@ QBitmap Resource::loadBitmap( const QString &pix )
return bm;
}
+/*
+ * @internal
+ * Parse the extensions only once. If the MimeType mapping
+ * changes we will still use the old extensions, applications
+ * will need to be restarted to be aware of new extensions...
+ * For now it seems ok to have that limitation, if that is a wrong
+ * assumption we will need to invalidate this list
+ */
+QStringList *opie_image_extension_List = 0;
+static void clean_opie_image_extension_List() {
+ delete opie_image_extension_List;
+ opie_image_extension_List = 0;
+}
+
+QStringList opie_imageExtensions() {
+ /*
+ * File extensions (e.g jpeg JPG jpg) are not
+ * parsed yet
+ */
+ if ( !opie_image_extension_List ) {
+ opie_image_extension_List = new QStringList();
+ qAddPostRoutine( clean_opie_image_extension_List );
+
+ QStrList fileFormats = QImageIO::inputFormats();
+ QString ff = fileFormats.first();
+ while ( fileFormats.current() ) {
+ *opie_image_extension_List += MimeType("image/"+ff.lower()).extensions();
+ ff = fileFormats.next();
+ }
+ }
+
+ return *opie_image_extension_List; // QShared so it should be efficient
+}
+
/*!
Returns the filename of a pixmap called \a pix. You should avoid including
any filename type extension (e.g. .png, .xpm).
@@ -107,16 +141,11 @@ QString Resource::findPixmap( const QString &pix )
return f;
// All formats...
- QStrList fileFormats = QImageIO::inputFormats();
- QString ff = fileFormats.first();
- while ( fileFormats.current() ) {
- QStringList exts = MimeType("image/"+ff.lower()).extensions();
- for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
- QString f = picsPath + pix + "." + *it;
- if ( QFile(f).exists() )
- return f;
- }
- ff = fileFormats.next();
+ QStringList exts = opie_imageExtensions();
+ for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
+ QString f = picsPath + pix + "." + *it;
+ if ( QFile(f).exists() )
+ return f;
}
// Finally, no (or existing) extension...