-rw-r--r-- | library/resource.cpp | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/library/resource.cpp b/library/resource.cpp index b31876f..3b5e9ec 100644 --- a/library/resource.cpp +++ b/library/resource.cpp @@ -16,35 +16,37 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_MIMEEXT #include <qpe/qpeapplication.h> #include "resource.h" #include "mimetype.h" #include <qdir.h> #include <qpixmapcache.h> // this namespace is just a workaround for a gcc bug // gcc exports inline functions in the generated file // inlinepics_p.h +#ifndef LIBQPE_NO_INLINE_IMAGES namespace { #include "inlinepics_p.h" } +#endif static bool g_notUseSet = ::getenv("OVERWRITE_ICON_SET"); /*! \class Resource resource.h \brief The Resource class provides access to named resources. The resources may be provided from files or other sources. The allSounds() function returns a list of all the sounds available. A particular sound can be searched for using findSound(). Images can be loaded with loadImage(), loadPixmap(), loadBitmap() and loadIconSet(). \ingroup qtopiaemb @@ -83,43 +85,53 @@ QPixmap Resource::loadPixmap( const QString &pix ) QBitmap Resource::loadBitmap( const QString &pix ) { QBitmap bm; bm = loadPixmap(pix); return bm; } /*! 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; +#ifdef LIBQPE_NO_INLINE_IMAGES + QString picsPathInline = picsPath + "inline/"; + // Common case optimizations... + f = picsPathInline + pix + ".png"; + if ( QFile( f ).exists() ) + return f; + f = picsPathInline + pix + ".xpm"; + if ( QFile( f ).exists() ) + return f; +#endif + // 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(); } // Finally, no (or existing) extension... if ( QFile( picsPath + pix ).exists() ) return picsPath + pix; @@ -150,46 +162,58 @@ QString Resource::findSound( const QString &name ) /*! Returns a list of all sound names. */ QStringList Resource::allSounds() { QDir resourcedir( QPEApplication::qpeDir() + "sounds/", "*.wav" ); QStringList entries = resourcedir.entryList(); QStringList result; for (QStringList::Iterator i=entries.begin(); i != entries.end(); ++i) result.append((*i).replace(QRegExp("\\.wav"),"")); return result; } static QImage load_image(const QString &name) { + QImage img; + if (g_notUseSet ) { // try file - QImage img; QString f = Resource::findPixmap(name); if ( !f.isEmpty() ) img.load(f); +#ifndef LIBQPE_NO_INLINE_IMAGES if (img.isNull() ) img = qembed_findImage(name.latin1() ); +#endif return img; } else{ - QImage img = qembed_findImage(name.latin1()); - - if ( img.isNull() ) { +#ifndef LIBQPE_NO_INLINE_IMAGES + img = qembed_findImage(name.latin1()); +#else + QString f = Resource::findPixmap( "/inline/" + name ); + if ( !f.isEmpty() ) + { + img.load(f); + return img; + } +#endif + if ( img.isNull() ) + { // No inlined image, try file QString f = Resource::findPixmap(name); if ( !f.isEmpty() ) img.load(f); } return img; } } /*! Returns the QImage called \a name. You should avoid including any filename type extension (e.g. .png, .xpm). */ QImage Resource::loadImage( const QString &name) { #ifndef QT_NO_DEPTH_32 // have alpha-blended pixmaps |