Check the file size when updating and only compare the dates if it's enabled

This commit is contained in:
Luis Ángel San Martín 2023-06-07 22:42:40 +02:00
parent 5dac3e1402
commit fa10409a31
2 changed files with 8 additions and 2 deletions

View File

@ -40,12 +40,14 @@ void LibraryCreator::createLibrary(const QString &source, const QString &target)
void LibraryCreator::updateLibrary(const QString &source, const QString &target) void LibraryCreator::updateLibrary(const QString &source, const QString &target)
{ {
checkModifiedDatesOnUpdate = settings->value(COMPARE_MODIFIED_DATE_ON_LIBRARY_UPDATES, false).toBool();
partialUpdate = false; partialUpdate = false;
processLibrary(source, target); processLibrary(source, target);
} }
void LibraryCreator::updateFolder(const QString &source, const QString &target, const QString &sourceFolder, const QModelIndex &dest) void LibraryCreator::updateFolder(const QString &source, const QString &target, const QString &sourceFolder, const QModelIndex &dest)
{ {
checkModifiedDatesOnUpdate = settings->value(COMPARE_MODIFIED_DATE_ON_LIBRARY_UPDATES, false).toBool();
partialUpdate = true; partialUpdate = true;
folderDestinationModelIndex = dest; folderDestinationModelIndex = dest;
@ -571,14 +573,17 @@ void LibraryCreator::update(QDir dirS)
{ {
DBHelper::removeFromDB(fileInfoD, _database); DBHelper::removeFromDB(fileInfoD, _database);
j++; j++;
} else // same file } else // file with the same name
{ {
if (fileInfoS.isFile() && !fileInfoD->isDir()) { if (fileInfoS.isFile() && !fileInfoD->isDir()) {
auto comicDB = static_cast<ComicDB *>(fileInfoD); auto comicDB = static_cast<ComicDB *>(fileInfoD);
auto lastModified = fileInfoS.lastModified().toSecsSinceEpoch(); auto lastModified = fileInfoS.lastModified().toSecsSinceEpoch();
auto added = comicDB->info.added.toULongLong(); auto added = comicDB->info.added.toULongLong();
if (added > 0 && added < lastModified) { auto sizeHasChanged = comicDB->getFileSize() != fileInfoS.size();
auto hasBeenModified = added > 0 && added < lastModified && checkModifiedDatesOnUpdate;
if (sizeHasChanged || hasBeenModified) {
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
QStringList src = _source.split("/"); QStringList src = _source.split("/");
QString filePath = fileInfoS.absoluteFilePath(); QString filePath = fileInfoS.absoluteFilePath();

View File

@ -56,6 +56,7 @@ private:
bool partialUpdate; bool partialUpdate;
QModelIndex folderDestinationModelIndex; QModelIndex folderDestinationModelIndex;
QSettings *settings; QSettings *settings;
bool checkModifiedDatesOnUpdate;
signals: signals:
void finished(); void finished();