diff options
-rw-r--r-- | core/imagedownloader.cpp | 3 | ||||
-rw-r--r-- | core/qthelper.cpp | 5 | ||||
-rw-r--r-- | core/qthelper.h | 2 | ||||
-rw-r--r-- | desktop-widgets/divelistview.cpp | 6 | ||||
-rw-r--r-- | tests/testpicture.cpp | 19 |
5 files changed, 21 insertions, 14 deletions
diff --git a/core/imagedownloader.cpp b/core/imagedownloader.cpp index 3b55dfd06..e486830d2 100644 --- a/core/imagedownloader.cpp +++ b/core/imagedownloader.cpp @@ -71,8 +71,7 @@ void ImageDownloader::saveImage(QNetworkReply *reply, bool &success) stream.writeRawData(imageData.data(), imageData.length()); imageFile.waitForBytesWritten(-1); imageFile.close(); - add_hash(imageFile.fileName(), hash.result()); - learnHash(picture, hash.result()); + learnHash(QString(picture->filename), imageFile.fileName(), hash.result()); } // This should be called to make the picture actually show. // Problem is DivePictureModel is not in core. diff --git a/core/qthelper.cpp b/core/qthelper.cpp index 0029ca13a..e03f86739 100644 --- a/core/qthelper.cpp +++ b/core/qthelper.cpp @@ -1149,12 +1149,13 @@ QByteArray hashFile(const QString filename) } } -void learnHash(const struct picture *picture, QByteArray hash) +void learnHash(const QString &originalName, const QString &localName, const QByteArray &hash) { if (hash.isNull()) return; + add_hash(localName, hash); QMutexLocker locker(&hashOfMutex); - hashOf[QString(picture->filename)] = hash; + hashOf[originalName] = hash; } static bool haveHash(const QString &filename) diff --git a/core/qthelper.h b/core/qthelper.h index a71960c86..948ca234d 100644 --- a/core/qthelper.h +++ b/core/qthelper.h @@ -40,7 +40,7 @@ void hashPicture(struct picture *picture); extern "C" char *hashstring(const char *filename); QString localFilePath(const QString originalFilename); QString fileFromHash(const char *hash); -void learnHash(const struct picture *picture, QByteArray hash); +void learnHash(const QString &originalName, const QString &localName, const QByteArray &hash); weight_t string_to_weight(const char *str); depth_t string_to_depth(const char *str); pressure_t string_to_pressure(const char *str); diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 104b65a63..b32493a5d 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -1000,11 +1000,7 @@ void DiveListView::loadImageFromURL(QUrl url) stream.writeRawData(imageData.data(), imageData.length()); imageFile.waitForBytesWritten(-1); imageFile.close(); - add_hash(imageFile.fileName(), hash.result()); - struct picture picture; - picture.hash = NULL; - picture.filename = strdup(url.toString().toUtf8().data()); - learnHash(&picture, hash.result()); + learnHash(url.toString(), imageFile.fileName(), hash.result()); matchImagesToDives(QStringList(url.toString())); } } diff --git a/tests/testpicture.cpp b/tests/testpicture.cpp index 94b1fe0ee..752166cd4 100644 --- a/tests/testpicture.cpp +++ b/tests/testpicture.cpp @@ -12,6 +12,11 @@ void TestPicture::initTestCase() Q_INIT_RESOURCE(subsurface); } +#define PIC1_NAME "/dives/images/wreck.jpg" +#define PIC2_NAME "/dives/images/data_after_EOI.jpg" +#define PIC1_HASH "929ad9499b7ae7a9e39ef63eb6c239604ac2adfa" +#define PIC2_HASH "fa8bd48f8f24017a81e1204f52300bd98b43d4a7" + void TestPicture::addPicture() { struct dive *dive; @@ -41,10 +46,16 @@ void TestPicture::addPicture() QVERIFY(pic1->hash == NULL); QVERIFY(pic2->hash == NULL); - learnHash(pic1, hashFile(localFilePath(pic1->filename))); - learnHash(pic2, hashFile(localFilePath(pic2->filename))); - QCOMPARE(hashstring(pic1->filename), "929ad9499b7ae7a9e39ef63eb6c239604ac2adfa"); - QCOMPARE(hashstring(pic2->filename), "fa8bd48f8f24017a81e1204f52300bd98b43d4a7"); + QByteArray hash1 = hashFile(localFilePath(pic1->filename)); + QByteArray hash2 = hashFile(localFilePath(pic2->filename)); + learnHash(pic1->filename, PIC1_NAME, hash1); + learnHash(pic2->filename, PIC2_NAME, hash2); + QCOMPARE(hashstring(pic1->filename), PIC1_HASH); + QCOMPARE(hashstring(pic2->filename), PIC2_HASH); + QCOMPARE(hashstring(PIC1_NAME), PIC1_HASH); + QCOMPARE(hashstring(PIC2_NAME), PIC2_HASH); + QCOMPARE(fileFromHash(PIC1_HASH), QString(PIC1_NAME)); + QCOMPARE(fileFromHash(PIC2_HASH), QString(PIC2_NAME)); } |