summaryrefslogtreecommitdiffstats
path: root/ksquirrel/sq_dirthumbs.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 19:31:25 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 19:31:25 +0000
commit6afd9d8dddbe9e450690e05d498a503c00333a5e (patch)
treeee3eaca74e8e33dd66f24f5fb6c1431d7a9ff429 /ksquirrel/sq_dirthumbs.cpp
downloadksquirrel-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.cpp104
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());
+}