[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/gwenview
From: Aurélien Gâteau <aurelien.gateau () free ! fr>
Date: 2008-06-26 15:54:24
Message-ID: 1214495664.772447.27340.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 824722 by gateau:
Introduced a ThumbnailSize enum, and use it in ThumbnailLoadJob.
M +2 -1 app/thumbnailviewhelper.cpp
M +22 -32 lib/thumbnailloadjob.cpp
M +6 -5 lib/thumbnailloadjob.h
A lib/thumbnailsize.cpp [License: GPL (v2+)]
A lib/thumbnailsize.h [License: GPL (v2+)]
M +4 -4 tests/thumbnailloadjobtest.cpp
--- trunk/KDE/kdegraphics/gwenview/app/thumbnailviewhelper.cpp #824721:824722
@@ -89,8 +89,9 @@
filteredList << item;
}
if (filteredList.size() > 0) {
+ ThumbnailSize::Enum size = ThumbnailSize::fromPixelSize(THUMBNAIL_SIZE);
if (!d->mThumbnailLoadJob) {
- d->mThumbnailLoadJob = new ThumbnailLoadJob(filteredList, THUMBNAIL_SIZE);
+ d->mThumbnailLoadJob = new ThumbnailLoadJob(filteredList, size);
connect(d->mThumbnailLoadJob, SIGNAL(thumbnailLoaded(const KFileItem&, const \
QPixmap&, const QSize&)), SIGNAL(thumbnailLoaded(const KFileItem&, const \
QPixmap&))); d->mThumbnailLoadJob->start();
--- trunk/KDE/kdegraphics/gwenview/lib/thumbnailloadjob.cpp #824721:824722
@@ -74,10 +74,6 @@
#endif
-static const int THUMBNAILSIZE_MIN = 48;
-static const int THUMBNAILSIZE_NORMAL = 128;
-static const int THUMBNAILSIZE_LARGE = 256;
-
static QString generateOriginalUri(const KUrl& url_) {
KUrl url = url_;
// Don't include the password if any
@@ -86,7 +82,7 @@
}
-static QString generateThumbnailPath(const QString& uri, int size) {
+static QString generateThumbnailPath(const QString& uri, ThumbnailSize::Enum size) {
KMD5 md5( QFile::encodeName(uri) );
QString baseDir=ThumbnailLoadJob::thumbnailBaseDir(size);
return baseDir + QString(QFile::encodeName( md5.hexDigest())) + ".png";
@@ -104,7 +100,7 @@
const QString& originalUri, time_t originalTime, int originalSize, const QString& \
originalMimeType, const QString& pixPath,
const QString& thumbnailPath,
- int size)
+ ThumbnailSize::Enum size)
{
QMutexLocker lock( &mMutex );
assert( mPixPath.isNull());
@@ -171,6 +167,7 @@
mImage = QImage();
bool loaded=false;
bool needCaching=true;
+ int pixelSize = ThumbnailSize::pixelSize(mThumbnailSize);
// If it's a Jpeg, try to load a small image directly from the file
if (isJpeg()) {
@@ -181,8 +178,8 @@
mImage = content.thumbnail();
if( !mImage.isNull()
- && ( mImage.width() >= mThumbnailSize // don't use small thumbnails
- || mImage.height() >= mThumbnailSize )) {
+ && ( mImage.width() >= pixelSize // don't use small thumbnails
+ || mImage.height() >= pixelSize )) {
loaded = true;
needCaching = false;
}
@@ -203,13 +200,12 @@
if (originalImage.load(mPixPath)) {
mOriginalWidth=originalImage.width();
mOriginalHeight=originalImage.height();
- int thumbSize=mThumbnailSize<=THUMBNAILSIZE_NORMAL ? THUMBNAILSIZE_NORMAL : \
THUMBNAILSIZE_LARGE;
- if (qMax(mOriginalWidth, mOriginalHeight)<=thumbSize ) {
+ if (qMax(mOriginalWidth, mOriginalHeight)<=pixelSize ) {
mImage=originalImage;
needCaching = false;
} else {
- mImage = originalImage.scaled(thumbSize, thumbSize, Qt::KeepAspectRatio);
+ mImage = originalImage.scaled(pixelSize, pixelSize, Qt::KeepAspectRatio);
}
loaded = true;
}
@@ -285,7 +281,7 @@
jpeg_read_header(&cinfo, true);
// Get image size and check if we need a thumbnail
- int size= mThumbnailSize <= THUMBNAILSIZE_NORMAL ? THUMBNAILSIZE_NORMAL : \
THUMBNAILSIZE_LARGE; + int size = ThumbnailSize::pixelSize(mThumbnailSize);
int imgSize = qMax(cinfo.image_width, cinfo.image_height);
if (imgSize<=size) {
@@ -374,12 +370,15 @@
}
-QString ThumbnailLoadJob::thumbnailBaseDir(int size) {
+QString ThumbnailLoadJob::thumbnailBaseDir(ThumbnailSize::Enum size) {
QString dir = thumbnailBaseDir();
- if (size<=THUMBNAILSIZE_NORMAL) {
- dir+="normal/";
- } else {
- dir+="large/";
+ switch (size) {
+ case ThumbnailSize::Normal:
+ dir += "normal/";
+ break;
+ case ThumbnailSize::Large:
+ dir += "large/";
+ break;
}
return dir;
}
@@ -387,8 +386,8 @@
void ThumbnailLoadJob::deleteImageThumbnail(const KUrl& url) {
QString uri=generateOriginalUri(url);
- QFile::remove(generateThumbnailPath(uri, THUMBNAILSIZE_NORMAL));
- QFile::remove(generateThumbnailPath(uri, THUMBNAILSIZE_LARGE));
+ QFile::remove(generateThumbnailPath(uri, ThumbnailSize::Normal));
+ QFile::remove(generateThumbnailPath(uri, ThumbnailSize::Large));
}
@@ -397,7 +396,7 @@
// ThumbnailLoadJob implementation
//
//------------------------------------------------------------------------
-ThumbnailLoadJob::ThumbnailLoadJob(const KFileItemList& items, int size)
+ThumbnailLoadJob::ThumbnailLoadJob(const KFileItemList& items, ThumbnailSize::Enum \
size) : KIO::Job()
, mState( STATE_NEXTTHUMB )
, mThumbnailSize(size)
@@ -405,7 +404,7 @@
LOG((int)this);
mBrokenPixmap = KIconLoader::global()->loadIcon("image-missing",
- KIconLoader::NoGroup, THUMBNAILSIZE_MIN);
+ KIconLoader::NoGroup, 48);
// Look for images and store the items in our todo list
Q_ASSERT(!items.empty());
@@ -665,7 +664,7 @@
mState=STATE_PREVIEWJOB;
KFileItemList list;
list.append(mCurrentItem);
- KIO::Job* job=KIO::filePreview(list, mThumbnailSize);
+ KIO::Job* job=KIO::filePreview(list, ThumbnailSize::pixelSize(mThumbnailSize));
//job->ui()->setWindow(KApplication::kApplication()->activeWindow());
connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
this, SLOT(slotGotPreview(const KFileItem&, const QPixmap&)) );
@@ -691,16 +690,7 @@
void ThumbnailLoadJob::emitThumbnailLoaded(const QImage& img, const QSize& size) {
LOG(mCurrentItem.url());
- int biggestDimension=qMax(img.width(), img.height());
-
- QImage thumbImg;
- if (biggestDimension>mThumbnailSize) {
- // Scale down thumbnail if necessary
- thumbImg = img.scaled(mThumbnailSize, mThumbnailSize, Qt::KeepAspectRatio);
- } else {
- thumbImg = img;
- }
- QPixmap thumb = QPixmap::fromImage(thumbImg);
+ QPixmap thumb = QPixmap::fromImage(img);
emit thumbnailLoaded(mCurrentItem, thumb, size);
}
--- trunk/KDE/kdegraphics/gwenview/lib/thumbnailloadjob.h #824721:824722
@@ -38,6 +38,7 @@
#include <kfileitem.h>
// Local
+#include <lib/thumbnailsize.h>
namespace Gwenview {
class ThumbnailThread : public QThread {
@@ -52,7 +53,7 @@
const QString& originalMimeType,
const QString& pixPath,
const QString& thumbnailPath,
- int size);
+ ThumbnailSize::Enum size);
void cancel();
@@ -78,7 +79,7 @@
int mOriginalHeight;
QMutex mMutex;
QWaitCondition mCond;
- int mThumbnailSize;
+ ThumbnailSize::Enum mThumbnailSize;
bool mCancel;
};
@@ -91,7 +92,7 @@
/**
* Create a job for determining the pixmaps of the images in the @p itemList
*/
- ThumbnailLoadJob(const KFileItemList& itemList, int size);
+ ThumbnailLoadJob(const KFileItemList& itemList, ThumbnailSize::Enum size);
virtual ~ThumbnailLoadJob();
/**
@@ -127,7 +128,7 @@
/**
* Returns the thumbnail base dir, for the @p size
*/
- static QString thumbnailBaseDir(int size);
+ static QString thumbnailBaseDir(ThumbnailSize::Enum size);
/**
@@ -172,7 +173,7 @@
QString mTempPath;
// Thumbnail size
- int mThumbnailSize;
+ ThumbnailSize::Enum mThumbnailSize;
QPixmap mBrokenPixmap;
--- trunk/KDE/kdegraphics/gwenview/tests/thumbnailloadjobtest.cpp #824721:824722
@@ -83,7 +83,7 @@
KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
list << item;
}
- QPointer<ThumbnailLoadJob> job = new ThumbnailLoadJob(list, 128);
+ QPointer<ThumbnailLoadJob> job = new ThumbnailLoadJob(list, ThumbnailSize::Normal);
// FIXME: job->exec() causes a double free(), so wait for the job to be
// deleted instead
//job->exec();
@@ -92,7 +92,7 @@
QTest::qWait(100);
}
- QDir thumbnailDir = ThumbnailLoadJob::thumbnailBaseDir(128);
+ QDir thumbnailDir = ThumbnailLoadJob::thumbnailBaseDir(ThumbnailSize::Normal);
// There should be 2 files, because small.png is too small to have a
// thumbnail
QStringList entryList = thumbnailDir.entryList(QStringList("*.png"));
@@ -112,7 +112,7 @@
KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
list << item;
- QPointer<ThumbnailLoadJob> job = new ThumbnailLoadJob(list, 128);
+ QPointer<ThumbnailLoadJob> job = new ThumbnailLoadJob(list, ThumbnailSize::Normal);
// FIXME: job->exec() causes a double free(), so wait for the job to be
// deleted instead
//job->exec();
@@ -121,7 +121,7 @@
QTest::qWait(100);
}
- QDir thumbnailDir = ThumbnailLoadJob::thumbnailBaseDir(128);
+ QDir thumbnailDir = ThumbnailLoadJob::thumbnailBaseDir(ThumbnailSize::Normal);
QStringList entryList = thumbnailDir.entryList(QStringList("*.png"));
QCOMPARE(entryList.count(), 1);
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic