summaryrefslogtreecommitdiff
authoralwin <alwin>2004-11-07 19:37:17 (UTC)
committer alwin <alwin>2004-11-07 19:37:17 (UTC)
commit9218d2bf841e1f999475c86ba602dc1cd7e338f6 (patch) (side-by-side diff)
treeeb02e9dc2d1d4e8188f2c7cf8260d81298352117
parentc7eb493b3c2efa871104b27b6abf487da94f33f6 (diff)
downloadopie-9218d2bf841e1f999475c86ba602dc1cd7e338f6.zip
opie-9218d2bf841e1f999475c86ba602dc1cd7e338f6.tar.gz
opie-9218d2bf841e1f999475c86ba602dc1cd7e338f6.tar.bz2
try to improve the icon scaling
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index f173ecc..5472ead 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -81,74 +81,77 @@ namespace {
void setText( const QString& );
};
/*
* If we request an Image or String
* we add it to the map
*/
static QMap<QString, IconViewItem*> g_stringInf;
static QMap<QString, IconViewItem*> g_stringPix;
IconViewItem::IconViewItem( QIconView* view,const QString& path,
const QString& name, int a_iconsize, bool isDir)
: QIconViewItem( view, name ), m_path( path ), m_isDir( isDir ),
m_noInfo( false ),m_textOnly(false),m_Pixset(false)
{
m_iconsize = a_iconsize;
if ( isDir ) {
if (!_dirPix ) {
_dirPix = new QPixmap( Resource::loadPixmap("advancedfm/FileBrowser"));
}
} else {
if (!_unkPix ) {
_unkPix = new QPixmap( Resource::loadPixmap( "UnknownDocument" ) );
}
}
check_pix();
}
inline void IconViewItem::check_pix()const
{
if (_dirPix && _dirPix->width()>m_iconsize) {
- QPixmap*Pix = new QPixmap(*_dirPix);
- Pix->resize(m_iconsize,m_iconsize);
- delete _dirPix;
- _dirPix = Pix;
+ QImage Pix = _dirPix->convertToImage();
+ *_dirPix = Pix.smoothScale(m_iconsize,m_iconsize);
}
if (!_cpyPix && _unkPix) {
if (_unkPix->width()>=m_iconsize) {
- _cpyPix = new QPixmap(*_unkPix);
- if (_unkPix->width()>m_iconsize)
- _cpyPix->resize(m_iconsize,m_iconsize);
+ QImage Pix = _unkPix->convertToImage();
+ _cpyPix = new QPixmap();
+ if (_unkPix->width()>m_iconsize) {
+ *_cpyPix = Pix.smoothScale(m_iconsize,m_iconsize);
+ } else {
+ _cpyPix->convertFromImage(Pix);
+ }
+
} else {
_cpyPix = new QPixmap(m_iconsize,m_iconsize);
_cpyPix->fill();
QPainter pa(_cpyPix);
int offset = (m_iconsize-_unkPix->width())/2;
int offy = (m_iconsize-_unkPix->height())/2;
if (offy<0) offy=0;
pa.drawPixmap(offset,offy,*_unkPix);
pa.end();
}
}
}
inline void IconViewItem::setPixmap( const QPixmap & , bool, bool )
{
m_Pixset = true;
calcRect(text());
}
inline void IconViewItem::setPixmap( const QPixmap & )
{
m_Pixset = true;
calcRect(text());
}
inline QPixmap* IconViewItem::pixmap()const {
// owarn << "Name is " << m_path.right( 15 ) << " rect is " << rect().x() << " " << rect().y()
// << " " << rect().width() << " " << rect().height() << " | " << iconView()->contentsX()
// << " " << iconView()->contentsY() << oendl;
if (textOnly()&&!m_isDir) {
if (!_emptyPix) _emptyPix = new QPixmap(0,0,1);
return _emptyPix;