summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2004-04-19 09:16:15 (UTC)
committer alwin <alwin>2004-04-19 09:16:15 (UTC)
commite3ca538f7ce2e7b7df2f29f263778acc342d51db (patch) (side-by-side diff)
treecb3e3c769ae12542d24eff7d17168635ddef65af /noncore
parent0b59a16b5a5a179c46ddb3f8c585dbca59b2826e (diff)
downloadopie-e3ca538f7ce2e7b7df2f29f263778acc342d51db.zip
opie-e3ca538f7ce2e7b7df2f29f263778acc342d51db.tar.gz
opie-e3ca538f7ce2e7b7df2f29f263778acc342d51db.tar.bz2
re-enabled the cache as designed.
for that, pixcache has now a method setting the size of cache (parameter count of pix) and it will switched between the different views. setPixmap is overloaded that way, that we don't store the pix inside the item but calling calcRect which is accessing the cached pixmap. voila. Zecke: Should we make a configure item where users can setup how much pix-previews should cache? Should we setup a thumbnail cache like .xvpics?
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp26
-rw-r--r--noncore/graphics/opie-eye/lib/imagecache.cpp6
-rw-r--r--noncore/graphics/opie-eye/lib/imagecache.h5
3 files changed, 27 insertions, 10 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index 039f53f..d546b64 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -49,13 +49,15 @@ namespace {
QPixmap* pixmap()const;
QString path()const { return m_path; }
bool isDir()const { return m_isDir; }
void setText( const QString& );
bool textOnly()const{return m_textOnly;}
void setTextOnly(bool how){m_textOnly=how;}
+ /* just for starting recalc of item rect! */
virtual void setPixmap( const QPixmap & icon, bool recalc, bool redraw = TRUE );
+ /* just for starting recalc of item rect! */
virtual void setPixmap( const QPixmap & icon);
protected:
mutable QPixmap* m_pix;
private:
@@ -96,18 +98,18 @@ namespace {
_unkPix = new QPixmap( Resource::loadPixmap( "UnknownDocument" ) );
}
inline void IconViewItem::setPixmap( const QPixmap & icon, bool recalc, bool redraw)
{
m_Pixset = true;
- QIconViewItem::setPixmap(icon,recalc,redraw);
+ calcRect(text());
}
inline void IconViewItem::setPixmap( const QPixmap & icon)
{
m_Pixset = true;
- QIconViewItem::setPixmap(icon);
+ calcRect(text());
}
inline QPixmap* IconViewItem::pixmap()const {
// qWarning( "Name is " + m_path.right( 15 ) + " rect is %d %d %d %d | %d %d",
// rect().x(),rect().y(),rect().width(),rect().height(),
// iconView()->contentsX(), iconView()->contentsY());
@@ -122,19 +124,16 @@ namespace {
if (!m_noInfo && !g_stringInf.contains( m_path ) ) {
currentView()->dirLister()->imageInfo( m_path );
g_stringInf.insert( m_path, const_cast<IconViewItem*>(this));
}
m_pix = PPixmapCache::self()->cachedImage( m_path, 64, 64 );
- if (!m_pix && !g_stringPix.contains( m_path )&&!m_Pixset) {
+ if (!m_pix && !g_stringPix.contains( m_path )) {
currentView()->dirLister()->thumbNail( m_path, 64, 64 );
g_stringPix.insert( m_path, const_cast<IconViewItem*>(this));
}
- if (m_Pixset) {
- return QIconViewItem::pixmap();
- }
return m_pix ? m_pix : _unkPix;
}
}
inline void IconViewItem::setText( const QString& str ) {
QString text = QIconViewItem::text()+"\n"+str;
m_noInfo = true;
@@ -406,14 +405,18 @@ void PIconView::addFiles( const QStringList& lst) {
QStringList::ConstIterator it;
IconViewItem * _iv;
QPixmap*m_pix = 0;
for (it=lst.begin(); it!= lst.end(); ++it ) {
m_pix = PPixmapCache::self()->cachedImage( m_path+"/"+(*it), 64, 64 );
_iv = new IconViewItem( m_view, m_path+"/"+(*it), (*it) );
- if (m_mode==3) _iv->setTextOnly(true);
- if (m_pix) _iv->setPixmap(*m_pix);
+ if (m_mode==3) {
+ _iv->setTextOnly(true);
+ _iv->setPixmap(QPixmap());
+ } else {
+ if (m_pix) _iv->setPixmap(*m_pix);
+ }
}
}
/*
* user clicked on the item. Change dir or view
@@ -589,20 +592,23 @@ void PIconView::resizeEvent( QResizeEvent* re ) {
void PIconView::calculateGrid() {
odebug << "Calc grid: x=" << m_view->gridX() << " y=" << m_view->gridY() << oendl;
odebug << "Size of view: " << m_view->size() << oendl;
switch (m_mode) {
case 2:
- m_view->setGridX(80);
- m_view->setGridY(80);
+ m_view->setGridX(50);
+ m_view->setGridY(20);
+ PPixmapCache::self()->setMaxImages(40);
break;
case 3:
m_view->setGridX(m_view->width());
m_view->setGridY(8);
+ PPixmapCache::self()->setMaxImages(2);
break;
case 1:
default:
m_view->setGridX(m_view->width());
m_view->setGridY(80);
+ PPixmapCache::self()->setMaxImages(20);
break;
}
}
diff --git a/noncore/graphics/opie-eye/lib/imagecache.cpp b/noncore/graphics/opie-eye/lib/imagecache.cpp
index 3b74a83..f1042a4 100644
--- a/noncore/graphics/opie-eye/lib/imagecache.cpp
+++ b/noncore/graphics/opie-eye/lib/imagecache.cpp
@@ -59,12 +59,18 @@ PPixmapCache::PPixmapCache() {
setMaxCost( 64*64*QPixmap::defaultDepth()/8*20 );
}
PPixmapCache::~PPixmapCache() {
}
+void PPixmapCache::setMaxImages(unsigned int aMax)
+{
+ m_MaxImages = aMax;
+ setMaxCost( 64*64*QPixmap::defaultDepth()/8*m_MaxImages);
+}
+
PPixmapCache* PPixmapCache::self() {
if ( !_pxmCache )
_pxmCache = new PPixmapCache;
return _pxmCache;
}
diff --git a/noncore/graphics/opie-eye/lib/imagecache.h b/noncore/graphics/opie-eye/lib/imagecache.h
index 076ecd3..939247a 100644
--- a/noncore/graphics/opie-eye/lib/imagecache.h
+++ b/noncore/graphics/opie-eye/lib/imagecache.h
@@ -25,17 +25,22 @@ public:
class PPixmapCache : public QCache<QPixmap> {
private:
PPixmapCache();
~PPixmapCache();
+
+ unsigned int m_MaxImages;
+
public:
static PPixmapCache *self();
QPixmap* cachedImage( const QString& path, int width, int height );
void insertImage( const QString& path, const QPixmap &, int width, int height );
void insertImage( const QString& path, const QPixmap *, int width, int height );
+ void setMaxImages(unsigned int aMax);
+ unsigned int maxImages()const{return m_MaxImages;}
};
inline void PPixmapCache::insertImage( const QString& path, const QPixmap& p, int width, int height ) {
insertImage( path, new QPixmap( p ), width, height );
}