fixed sorting in ComicModel

This commit is contained in:
Luis Ángel San Martín 2014-12-27 18:38:20 +01:00
parent 26b64d1254
commit acaa4e0f24

View File

@ -534,20 +534,37 @@ void ComicModel::setupModelData(QSqlQuery &sqlquery)
i = _data.end(); i = _data.end();
i--; i--;
if(numberCurrent != max) if(numberCurrent != max) //sort the current item by issue number
{ {
while ((lessThan =numberCurrent < numberLast) && i != _data.begin()) while ((lessThan =numberCurrent < numberLast) && i != _data.begin())
{ {
i--; i--;
numberLast = max; numberLast = max;
if(!(*i)->data(ComicModel::Number).isNull()) if(!(*i)->data(ComicModel::Number).isNull())
numberLast = (*i)->data(ComicModel::Number).toInt(); numberLast = (*i)->data(ComicModel::Number).toInt();
} }
if(lessThan)
_data.insert(i,currentItem);
else
{
if(numberCurrent == numberLast)
if(currentItem->data(ComicModel::IsBis).toBool())
{
_data.insert(++i,currentItem);
}
else
_data.insert(i,currentItem);
else
_data.insert(++i,currentItem);
}
continue;
} }
else
else //sort the current item by title
{ {
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == max) while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == max)
{ {
i--; i--;
nameLast = (*i)->data(ComicModel::FileName).toString(); nameLast = (*i)->data(ComicModel::FileName).toString();
@ -557,29 +574,16 @@ void ComicModel::setupModelData(QSqlQuery &sqlquery)
numberLast = (*i)->data(ComicModel::Number).toInt(); numberLast = (*i)->data(ComicModel::Number).toInt();
} }
} if(numberLast != max)
if(!lessThan) //si se ha encontrado un elemento menor que current, se inserta justo despu�s _data.insert(++i,currentItem);
{ else
if(numberCurrent != max) if(lessThan)
{ _data.insert(i,currentItem);
if(numberCurrent == numberLast) else
if(currentItem->data(ComicModel::IsBis).toBool()) _data.insert(++i,currentItem);
{ continue;
_data.insert(++i,currentItem);
}
else
_data.insert(i,currentItem);
else
_data.insert(++i,currentItem);
}
else
_data.insert(++i,currentItem);
}
else
{
_data.insert(i,currentItem);
}
}
} }
} }
} }