fixed update process

This commit is contained in:
Luis Ángel San Martín 2013-11-16 13:09:28 +01:00
parent 9b3085f8d1
commit e3ddde47b3
4 changed files with 45 additions and 6 deletions

View File

@ -349,7 +349,7 @@ QList<LibraryItem *> 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);

View File

@ -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<LibraryItem *> folders = DBHelper::getFoldersFromParent(_currentPathFolders.last().id,_database);
QList<LibraryItem *> comics = DBHelper::getComicsFromParent(_currentPathFolders.last().id,_database);
//QLOG_TRACE() << "END Getting info from DB" << dirS.absolutePath();
QList <LibraryItem *> 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;j++)
{
@ -258,6 +285,7 @@ void LibraryCreator::update(QDir dirS)
}
if(j>=lenghtD) //finished library files/dirs
{
//QLOG_WARN() << "finished library files/dirs" << dirS.absolutePath();
//create listS //from i
for(;i<lenghtS;i++)
{
@ -322,8 +350,10 @@ void LibraryCreator::update(QDir dirS)
else
if(comparation < 0) //nameS doesn't exist on DB
{
if(nameS!="/.yacreaderlibrary")
{
//QLOG_WARN() << "dir source < dest" << nameS << nameD;
#ifdef Q_OS_MAC
QStringList src = _source.split("/");
QString filePath = fileInfoS.absoluteFilePath();
@ -346,6 +376,7 @@ void LibraryCreator::update(QDir dirS)
{
if(nameS!="/.yacreaderlibrary")
{
//QLOG_WARN() << "dir source > 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();

View File

@ -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);
}

View File

@ -5,9 +5,11 @@
#include <QString>
#include <QFileInfo>
#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
#endif