author | zecke <zecke> | 2005-02-22 23:06:10 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-02-22 23:06:10 (UTC) |
commit | ff2fdaf1a8e8a17ce756c0413102b37705e0c646 (patch) (side-by-side diff) | |
tree | 654cf3e0322bab0594f15dc5b3e3ab704184b59f | |
parent | 9e755f078a806d6c81e1dbdbc54d12888041bbff (diff) | |
download | opie-ff2fdaf1a8e8a17ce756c0413102b37705e0c646.zip opie-ff2fdaf1a8e8a17ce756c0413102b37705e0c646.tar.gz opie-ff2fdaf1a8e8a17ce756c0413102b37705e0c646.tar.bz2 |
-Request Image Type extensions (e.g jpg, png, JPEG, PNG, tiff) from
MimeType only once (we need to see when and where to invalidate it)
-Create a method for it to parse it once and clean up at the end
-rw-r--r-- | library/resource.cpp | 49 |
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 @@ -86,8 +86,42 @@ QBitmap Resource::loadBitmap( const QString &pix ) bm = loadPixmap(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). @@ -106,18 +140,13 @@ QString Resource::findPixmap( const QString &pix ) if ( QFile( f ).exists() ) 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... if ( QFile( picsPath + pix ).exists() ) |