From e3ddde47b3423d20d0e1fe0e2f57d11211844e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sat, 16 Nov 2013 13:09:28 +0100 Subject: [PATCH] fixed update process --- YACReaderLibrary/db_helper.cpp | 2 +- YACReaderLibrary/library_creator.cpp | 40 +++++++++++++++++++++++++--- common/qnaturalsorting.cpp | 5 ++++ common/qnaturalsorting.h | 4 ++- 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 04a3c424..dd97c3a5 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -349,7 +349,7 @@ QList DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDat i--; nameLast = (*i)->name; } - if(lessThan>0) //si se ha encontrado un elemento menor que current, se inserta justo después + if(lessThan>=0) //si se ha encontrado un elemento menor que current, se inserta justo después list.insert(++i,currentItem); else list.insert(i,currentItem); diff --git a/YACReaderLibrary/library_creator.cpp b/YACReaderLibrary/library_creator.cpp index 405200e8..9eb3302c 100644 --- a/YACReaderLibrary/library_creator.cpp +++ b/YACReaderLibrary/library_creator.cpp @@ -223,20 +223,46 @@ void LibraryCreator::insertComic(const QString & relativePath,const QFileInfo & void LibraryCreator::update(QDir dirS) { + //QLOG_TRACE() << "Updating" << dirS.absolutePath(); + //QLOG_TRACE() << "Getting info from dir" << dirS.absolutePath(); dirS.setNameFilters(_nameFilter); - dirS.setFilter(QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot); - dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware|QDir::DirsFirst); - QFileInfoList listS = dirS.entryInfoList(); + dirS.setFilter(QDir::AllDirs|QDir::NoDotAndDotDot); + dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware); + QFileInfoList listSFolders = dirS.entryInfoList(); + dirS.setFilter(QDir::Files|QDir::NoDotAndDotDot); + dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware); + QFileInfoList listSFiles = dirS.entryInfoList(); + qSort(listSFolders.begin(),listSFolders.end(),naturalSortLessThanCIFileInfo); + qSort(listSFiles.begin(),listSFiles.end(),naturalSortLessThanCIFileInfo); + + QFileInfoList listS; + listS.append(listSFolders); + listS.append(listSFiles); + //QLOG_DEBUG() << "---------------------------------------------------------"; + //foreach(QFileInfo info,listS) + // QLOG_DEBUG() << info.fileName(); + + //QLOG_TRACE() << "END Getting info from dir" << dirS.absolutePath(); + + //QLOG_TRACE() << "Getting info from DB" << dirS.absolutePath(); QList folders = DBHelper::getFoldersFromParent(_currentPathFolders.last().id,_database); QList comics = DBHelper::getComicsFromParent(_currentPathFolders.last().id,_database); + //QLOG_TRACE() << "END Getting info from DB" << dirS.absolutePath(); QList listD; + qSort(folders.begin(),folders.end(),naturalSortLessThanCILibraryItem); + qSort(comics.begin(),comics.end(),naturalSortLessThanCILibraryItem); listD.append(folders); listD.append(comics); - + //QLOG_DEBUG() << "---------------------------------------------------------"; + //foreach(LibraryItem * info,listD) + // QLOG_DEBUG() << info->name; + //QLOG_DEBUG() << "---------------------------------------------------------"; int lenghtS = listS.size(); int lenghtD = listD.size(); + //QLOG_DEBUG() << "S len" << lenghtS << "D len" << lenghtD; + //QLOG_DEBUG() << "---------------------------------------------------------"; bool updated; int i,j; @@ -247,6 +273,7 @@ void LibraryCreator::update(QDir dirS) updated = false; if(i>=lenghtS) //finished source files/dirs { + //QLOG_WARN() << "finished source files/dirs" << dirS.absolutePath(); //delete listD //from j for(;j=lenghtD) //finished library files/dirs { + //QLOG_WARN() << "finished library files/dirs" << dirS.absolutePath(); //create listS //from i for(;i dest" << nameS << nameD; DBHelper::removeFromDB(fileInfoD,_database); j++; } @@ -357,6 +388,7 @@ void LibraryCreator::update(QDir dirS) { if(nameS!="/.yacreaderlibrary") //skip .yacreaderlibrary folder { + //QLOG_WARN() << "one of them(or both) is a file" << nameS << nameD; #ifdef Q_OS_MAC QStringList src = _source.split("/"); QString filePath = fileInfoS.absoluteFilePath(); diff --git a/common/qnaturalsorting.cpp b/common/qnaturalsorting.cpp index 63dad477..97cbd5b0 100644 --- a/common/qnaturalsorting.cpp +++ b/common/qnaturalsorting.cpp @@ -255,3 +255,8 @@ bool naturalSortLessThanCIFileInfo(const QFileInfo & left,const QFileInfo & righ { return naturalSortLessThanCI(left.fileName(),right.fileName()); } + +bool naturalSortLessThanCILibraryItem(LibraryItem * left, LibraryItem * right) +{ + return naturalSortLessThanCI(left->name,right->name); +} diff --git a/common/qnaturalsorting.h b/common/qnaturalsorting.h index d1eb0163..9a84f96a 100644 --- a/common/qnaturalsorting.h +++ b/common/qnaturalsorting.h @@ -5,9 +5,11 @@ #include #include +#include "library_item.h" bool naturalSortLessThanCS( const QString &left, const QString &right ); bool naturalSortLessThanCI( const QString &left, const QString &right ); bool naturalSortLessThanCIFileInfo(const QFileInfo & left,const QFileInfo & right); +bool naturalSortLessThanCILibraryItem(LibraryItem * left, LibraryItem * right); -#endif \ No newline at end of file +#endif