summaryrefslogtreecommitdiff
path: root/library
authorzecke <zecke>2004-12-26 13:40:21 (UTC)
committer zecke <zecke>2004-12-26 13:40:21 (UTC)
commit99b055b572f64f180751b3a43440796d1bf9fc4f (patch) (side-by-side diff)
tree2caf1b3d3e9ecec68d616880d4a354033574b8c0 /library
parentd8f38f36ad533f93d46c8ff883c6b42f15c96c28 (diff)
downloadopie-99b055b572f64f180751b3a43440796d1bf9fc4f.zip
opie-99b055b572f64f180751b3a43440796d1bf9fc4f.tar.gz
opie-99b055b572f64f180751b3a43440796d1bf9fc4f.tar.bz2
Merge the way we insert Images into the PixmapCache
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/resource.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/library/resource.cpp b/library/resource.cpp
index cfa0d26..43fdc60 100644
--- a/library/resource.cpp
+++ b/library/resource.cpp
@@ -62,10 +62,35 @@ static bool g_notUseSet = ::getenv("OVERWRITE_ICON_SET");
QPixmap Resource::loadPixmap( const QString &pix )
{
QPixmap pm;
- QString key="QPE_"+pix;
- if ( !QPixmapCache::find(key,pm) ) {
- pm.convertFromImage(loadImage(pix));
- QPixmapCache::insert(key,pm);
+
+ // Give the pixmaps some kind of namespace in the pixmapcache
+ int index = pix.find('/');
+ QString appName1 = qApp->argv()[0];
+ appName1 = appName1.replace(QRegExp(".*/"),"");
+ QString appName2 = pix.left(index);
+
+ if ( appName2 == "" || appName2 == pix || appName2 == "icons" )
+ appName2 = "Global";
+
+ QString appKey1 = "_QPE_" + appName1 + "_" + pix;
+ QString appKey2 = "_QPE_" + appName2 + "_" + pix.mid(index+1);
+
+ if ( !QPixmapCache::find(appKey1, pm) ) {
+ if ( !QPixmapCache::find(appKey2, pm) ) {
+ QImage img;
+ QString f = findPixmap( pix );
+ if ( !f.isEmpty() ) {
+ img.load(f);
+ if ( !img.isNull() ) {
+ pm.convertFromImage(img);
+ if ( f.contains(appName1) ) {
+ QPixmapCache::insert( appKey1, pm);
+ } else {
+ QPixmapCache::insert( appKey2, pm);
+ }
+ }
+ }
+ }
}
return pm;
}