summaryrefslogtreecommitdiff
path: root/library/resource.cpp
Side-by-side diff
Diffstat (limited to 'library/resource.cpp') (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
@@ -74,62 +74,91 @@ QPixmap Resource::loadPixmap( const QString &pix )
}
}
return pm;
}
/*!
Returns the QBitmap called \a pix. You should avoid including
any filename type extension (e.g. .png, .xpm).
*/
QBitmap Resource::loadBitmap( const QString &pix )
{
QBitmap bm;
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).
Normally you will use loadPixmap() rather than this function.
*/
QString Resource::findPixmap( const QString &pix )
{
QString picsPath = QPEApplication::qpeDir() + "pics/";
QString f;
// Common case optimizations...
f = picsPath + pix + ".png";
if ( QFile( f ).exists() )
return f;
f = picsPath + pix + ".xpm";
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() )
return picsPath + pix;
//qDebug("Cannot find pixmap: %s", pix.latin1());
return QString();
}
/*!
Returns a sound file for a sound called \a name.
You should avoid including any filename type extension (e.g. .wav),
as the system will search for only those fileformats which are supported
by the library.