summaryrefslogtreecommitdiffstats
path: root/helper.cpp
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-17 17:36:23 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-17 17:36:23 +0000
commita477a1998c03bc0e7251463aff5486e3c0872d23 (patch)
tree1de3c2d32f1f1811a7dcc2058bfaf26c18f7e296 /helper.cpp
parent1b1e48aa11c4518e100004dac594540e6024fa68 (diff)
downloadSheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.gz
SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.bz2
SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.zip
Huge changes:
-Created an application icon and one for archives -implemented database configuration dialog -implemented listeditor -implemented covereditor -implemented md5sum helper -implemented archivefilewidget -Debugging spree: fixed SQL-statements and ListModel git-svn-id: file:///var/svn/repos2/shemov/trunk@389 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'helper.cpp')
-rw-r--r--helper.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/helper.cpp b/helper.cpp
index 116efa5..baaacbb 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -7,6 +7,14 @@
#include <QString>
#include <QByteArray>
+#include <QFileInfo>
+#include <QFile>
+
+#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
+#include <md5.h>
+#include <files.h>
+#include <filters.h>
+#include <hex.h>
#include "helper.h"
@@ -35,5 +43,37 @@ namespace Helper {
return retval;
}
}
+
+ const QString md5Sum(const QString &path){
+ QFileInfo info(path);
+ if(!info.exists() || !info.isFile()){
+ return QString();
+ }
+
+ using namespace CryptoPP;
+ Weak::MD5 hash;
+ std::string res;
+ QString retval;
+ if(info.size() < (5 * 1024 * 1024)){
+ FileSource f(qPrintable(path), true, new HashFilter(hash, new HexEncoder(new StringSink(res))));
+ retval = QString::fromStdString(res).toLower();
+ }else{
+ QFile file(path);
+ file.open(QIODevice::ReadOnly);
+ int offset = info.size() / 3;
+ file.seek(offset);
+ int numBytes = 512 * 1024;
+ char *data = new char[numBytes];
+ int read = file.read(data, numBytes);
+ if(read != numBytes){
+ delete [] data;
+ return QString();
+ }
+ StringSource s((byte*)data, numBytes, true, new HashFilter(hash, new HexEncoder(new StringSink(res))));
+ retval = QString::fromStdString(res).toLower();
+ delete [] data;
+ }
+ return retval;
+ }
}