Cleanup: Remove hash field from picture-structure

The hash field in the picture-structure was in principle non-operational.
It was set on loading, but never actually changed. The authoritative
hash comes from the filename->hash map.

Therefore, make this explicit by removing the hash field from the
picture structure.

Instead of filling the picture structure on loading, add the
hash directly to the filename->hash map. This is done in the
register_hash() function, which does not overwrite old entries.
I.e. the local hash has priority over the save-file. This
policy might be refined in the future.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-02-18 16:22:34 +01:00 committed by Lubomir I. Ivanov
parent e5dcd9fc16
commit bdc470a80e
8 changed files with 61 additions and 46 deletions

View file

@ -44,8 +44,6 @@ void TestPicture::addPicture()
QVERIFY(pic1->longitude.udeg == 11334500);
QVERIFY(pic2->offset.seconds == 1321);
QVERIFY(pic1->hash == NULL);
QVERIFY(pic2->hash == NULL);
QByteArray hash1 = hashFile(localFilePath(pic1->filename));
QByteArray hash2 = hashFile(localFilePath(pic2->filename));
learnHash(pic1->filename, PIC1_NAME, hash1);
@ -54,8 +52,8 @@ void TestPicture::addPicture()
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));
QCOMPARE(localFilePath(pic1->filename), QString(PIC1_NAME));
QCOMPARE(localFilePath(pic2->filename), QString(PIC2_NAME));
}