Show sorted game entries on CMA (PSV side).
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "cmautils.h"
|
||||
#include "qlistdb.h"
|
||||
#include "cmaobject.h"
|
||||
#include "sforeader.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QDirIterator>
|
||||
@@ -28,6 +29,30 @@
|
||||
#include <QThread>
|
||||
#include <QDebug>
|
||||
|
||||
static bool nameLessThan(const QFileInfo &v1, const QFileInfo &v2)
|
||||
{
|
||||
if(v1.isDir() && v2.isDir()) {
|
||||
SfoReader sfo;
|
||||
QString t1, t2;
|
||||
|
||||
if(sfo.load(v1.absoluteFilePath() + QDir::separator() + "sce_sys" + QDir::separator() + "param.sfo") ||
|
||||
sfo.load(v1.absoluteFilePath() + QDir::separator() + "PARAM.SFO")) {
|
||||
t1 = QString(sfo.value("TITLE", ""));
|
||||
}
|
||||
|
||||
if(sfo.load(v2.absoluteFilePath() + QDir::separator() + "sce_sys" + QDir::separator() + "param.sfo") ||
|
||||
sfo.load(v2.absoluteFilePath() + QDir::separator() + "PARAM.SFO")) {
|
||||
t2 = QString(sfo.value("TITLE", ""));
|
||||
}
|
||||
|
||||
if(!t1.isEmpty() && !t2.isEmpty()) {
|
||||
return t1 < t2;
|
||||
}
|
||||
}
|
||||
|
||||
return v1.absoluteFilePath() < v2.absoluteFilePath();
|
||||
}
|
||||
|
||||
QListDB::QListDB(QObject *obj_parent) :
|
||||
Database(obj_parent)
|
||||
{
|
||||
@@ -151,7 +176,6 @@ int QListDB::create()
|
||||
}
|
||||
|
||||
qDebug("Added objects for OHFI 0x%02X: %i", ohfi_array[i], dir_count);
|
||||
|
||||
total_objects += dir_count;
|
||||
object_list[ohfi_array[i]] = list;
|
||||
}
|
||||
@@ -215,6 +239,10 @@ int QListDB::recursiveScanRootDirectory(root_list &list, CMAObject *obj_parent,
|
||||
dir.setSorting(QDir::Name | QDir::DirsFirst);
|
||||
QFileInfoList qsl = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot, QDir::Time);
|
||||
|
||||
if(obj_parent && !obj_parent->parent) {
|
||||
qSort(qsl.begin(), qsl.end(), nameLessThan);
|
||||
}
|
||||
|
||||
foreach(const QFileInfo &info, qsl) {
|
||||
|
||||
if(!continueOperation()) {
|
||||
|
Reference in New Issue
Block a user