diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 19:31:25 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 19:31:25 +0000 |
commit | 6afd9d8dddbe9e450690e05d498a503c00333a5e (patch) | |
tree | ee3eaca74e8e33dd66f24f5fb6c1431d7a9ff429 /ksquirrel/sq_dirthumbs.cpp | |
download | ksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.tar.gz ksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.zip |
Added KDE3 version of ksquirrel photo manager
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ksquirrel@1094446 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ksquirrel/sq_dirthumbs.cpp')
-rw-r--r-- | ksquirrel/sq_dirthumbs.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/ksquirrel/sq_dirthumbs.cpp b/ksquirrel/sq_dirthumbs.cpp new file mode 100644 index 0000000..ddeed59 --- /dev/null +++ b/ksquirrel/sq_dirthumbs.cpp @@ -0,0 +1,104 @@ +/*************************************************************************** + sq_dirthumbs.cpp - description + ------------------- + begin : ??? Jul 18 2007 + copyright : (C) 2007 by Baryshev Dmitry + email : ksquirrel.iv@gmail.com + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_UTIME_H +#include <sys/types.h> +#include <utime.h> +#endif + +#include <qimage.h> +#include <qfileinfo.h> +#include <qdatetime.h> + +#include <kurl.h> +#include <kmdcodec.h> + +#include "sq_dirthumbs.h" +#include "sq_thumbnailinfo.h" + +SQ_DirThumbs::SQ_DirThumbs() : SQ_Dir() +{ + setRoot(); +} + +SQ_DirThumbs::~SQ_DirThumbs() +{} + +/* + * Save thumbnail to storage. + */ +void SQ_DirThumbs::saveThumbnail(const KURL &url, SQ_Thumbnail &thumb) +{ + QString ab = absPath(url); + + if(!thumb.thumbnail.isNull() && needUpdate(ab, thumb.originalTime)) + { + // thumbnail standard tags + thumb.thumbnail.setText("Thumb::Image::Width", 0, QString::number(thumb.w)); + thumb.thumbnail.setText("Thumb::Image::Height", 0, QString::number(thumb.h)); + thumb.thumbnail.setText("Thumb::URI", 0, url.prettyURL()); + thumb.thumbnail.setText("Thumb::MTime", 0, QString::number(thumb.originalTime)); + thumb.thumbnail.setText("Software", 0, "KSquirrel"); + + thumb.thumbnail.save(ab, sqdirThumbFormat, sqdirThumbQuality); + +#ifdef HAVE_UTIME_H + struct utimbuf ut; + ut.actime = thumb.originalTime; + ut.modtime = thumb.originalTime; + utime((const char *)ab, &ut); +#endif + } +} + +QString SQ_DirThumbs::absPath(const KURL &relurl) +{ + KMD5 md5(QFile::encodeName(relurl.prettyURL())); + + QString ext = QString::fromLatin1(".%1").arg(sqdirThumbFormat); + + return m_orig + QDir::separator() + QString(md5.hexDigest()) + ext.lower(); +} + +void SQ_DirThumbs::setRoot() +{ + m_orig = QDir::cleanDirPath(homeDirPath() + QDir::separator() + QString::fromLatin1(".thumbnails")); + QDir::mkdir(m_orig); + + m_orig = QDir::cleanDirPath(m_orig + QDir::separator() + QString::fromLatin1("normal")); + QDir::mkdir(m_orig); +} + +void SQ_DirThumbs::removeFile(const KURL &url) +{ + // determine absolute path and remove file + QFile::remove(absPath(url)); +} + +bool SQ_DirThumbs::needUpdate(const QString &turl, time_t tm) +{ + QFileInfo fthumbpath(turl); + + QDateTime dt_orig; + dt_orig.setTime_t(tm); + + return (dt_orig > fthumbpath.lastModified()); +} |