mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
fixed getSortedComicsFromParent
This commit is contained in:
parent
38f934e4c6
commit
f67a7c25ac
@ -1,6 +1,7 @@
|
||||
|
||||
#include <QtGui>
|
||||
#include <QtDebug>
|
||||
#include <limits>
|
||||
|
||||
#include "tableitem.h"
|
||||
#include "tablemodel.h"
|
||||
@ -270,7 +271,7 @@ QString TableModel::getComicPath(QModelIndex mi)
|
||||
return _data.at(mi.row())->data(TableModel::Path).toString();
|
||||
return "";
|
||||
}
|
||||
#define NUMBER_MAX 99999999
|
||||
|
||||
void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
{
|
||||
TableItem * currentItem;
|
||||
@ -291,7 +292,8 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
QString nameLast = last->data(TableModel::FileName).toString();
|
||||
QString nameCurrent = currentItem->data(TableModel::FileName).toString();
|
||||
int numberLast,numberCurrent;
|
||||
numberLast = numberCurrent = NUMBER_MAX; //TODO change by std limit
|
||||
int max = (std::numeric_limits<int>::max)();
|
||||
numberLast = numberCurrent = max; //TODO change by std limit
|
||||
|
||||
if(!last->data(TableModel::Number).isNull())
|
||||
numberLast = last->data(TableModel::Number).toInt();
|
||||
@ -303,12 +305,12 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
i = _data.end();
|
||||
i--;
|
||||
|
||||
if(numberCurrent != NUMBER_MAX)
|
||||
if(numberCurrent != max)
|
||||
{
|
||||
while ((lessThan =numberCurrent < numberLast) && i != _data.begin())
|
||||
{
|
||||
i--;
|
||||
numberLast = NUMBER_MAX; //TODO change by std limit
|
||||
numberLast = max;
|
||||
|
||||
if(!(*i)->data(TableModel::Number).isNull())
|
||||
numberLast = (*i)->data(TableModel::Number).toInt();
|
||||
@ -316,11 +318,11 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == 99999999)
|
||||
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == max)
|
||||
{
|
||||
i--;
|
||||
nameLast = (*i)->data(TableModel::FileName).toString();
|
||||
numberLast = NUMBER_MAX; //TODO change by std limit
|
||||
numberLast = max;
|
||||
|
||||
if(!(*i)->data(TableModel::Number).isNull())
|
||||
numberLast = (*i)->data(TableModel::Number).toInt();
|
||||
@ -329,7 +331,7 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
}
|
||||
if(!lessThan) //si se ha encontrado un elemento menor que current, se inserta justo después
|
||||
{
|
||||
if(numberCurrent != NUMBER_MAX)
|
||||
if(numberCurrent != max)
|
||||
{
|
||||
if(numberCurrent == numberLast)
|
||||
if(currentItem->data(TableModel::IsBis).toBool())
|
||||
|
@ -383,7 +383,7 @@ QList<LibraryItem *> DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDat
|
||||
QList<LibraryItem *>::iterator i;
|
||||
i = list.end();
|
||||
i--;
|
||||
while ((0 > (lessThan = nameCurrent.localeAwareCompare(nameLast))) && i != list.begin())
|
||||
while ((0 > (lessThan = naturalSortLessThanCI(nameCurrent,nameLast))) && i != list.begin())
|
||||
{
|
||||
i--;
|
||||
nameLast = (*i)->name;
|
||||
@ -398,7 +398,7 @@ QList<LibraryItem *> DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDat
|
||||
|
||||
return list;
|
||||
}
|
||||
//TODO sort using natural sorting and issue number
|
||||
|
||||
QList<ComicDB> DBHelper::getSortedComicsFromParent(qulonglong parentId, QSqlDatabase & db)
|
||||
{
|
||||
|
||||
@ -430,18 +430,66 @@ QList<ComicDB> DBHelper::getSortedComicsFromParent(qulonglong parentId, QSqlData
|
||||
ComicDB last = static_cast<ComicDB>(list.back());
|
||||
QString nameLast = last.name;
|
||||
QString nameCurrent = currentItem.name;
|
||||
|
||||
int numberLast,numberCurrent;
|
||||
int max = (std::numeric_limits<int>::max)();
|
||||
numberLast = numberCurrent = max; //TODO change by std limit
|
||||
|
||||
if(last.info.number!=NULL)
|
||||
numberLast = *last.info.number;
|
||||
|
||||
if(currentItem.info.number!=NULL)
|
||||
numberCurrent = *currentItem.info.number;
|
||||
|
||||
QList<ComicDB>::iterator i;
|
||||
i = list.end();
|
||||
i--;
|
||||
while ((0 > (lessThan = nameCurrent.localeAwareCompare(nameLast))) && i != list.begin()) //se usa la misma ordenación que en QDir
|
||||
|
||||
if(numberCurrent != max)
|
||||
{
|
||||
i--;
|
||||
nameLast = (*i).name;
|
||||
while ((lessThan =numberCurrent < numberLast) && i != list.begin())
|
||||
{
|
||||
i--;
|
||||
numberLast = max;
|
||||
|
||||
if((*i).info.number != NULL)
|
||||
numberLast = *(*i).info.number;
|
||||
}
|
||||
}
|
||||
if(lessThan>0) //si se ha encontrado un elemento menor que current, se inserta justo después
|
||||
list.insert(++i,currentItem);
|
||||
else
|
||||
{
|
||||
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != list.begin() && numberLast == max)
|
||||
{
|
||||
i--;
|
||||
nameLast = (*i).name;
|
||||
numberLast = max;
|
||||
|
||||
if((*i).info.number != NULL)
|
||||
numberLast = *(*i).info.number;
|
||||
}
|
||||
|
||||
}
|
||||
if(!lessThan) //si se ha encontrado un elemento menor que current, se inserta justo después
|
||||
{
|
||||
if(numberCurrent != max)
|
||||
{
|
||||
if(numberCurrent == numberLast)
|
||||
if(currentItem.info.isBis)
|
||||
{
|
||||
list.insert(++i,currentItem);
|
||||
}
|
||||
else
|
||||
list.insert(i,currentItem);
|
||||
else
|
||||
list.insert(++i,currentItem);
|
||||
}
|
||||
else
|
||||
list.insert(++i,currentItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
list.insert(i,currentItem);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user