59 |
60 |
60 |
61 |
61 QStringList DataManager::entryList( |
62 QStringList DataManager::entryList( |
62 const QString & subDirectory, |
63 const QString & subDirectory, |
63 QDir::Filters filters, |
64 QDir::Filters filters, |
64 const QStringList & nameFilters |
65 const QStringList & nameFilters, |
|
66 bool withDLC |
65 ) const |
67 ) const |
66 { |
68 { |
67 QDir tmpDir(QString("physfs://%1").arg(subDirectory)); |
69 QDir tmpDir(QString("physfs://%1").arg(subDirectory)); |
68 QStringList result = tmpDir.entryList(nameFilters, filters); |
70 QStringList result = tmpDir.entryList(nameFilters, filters); |
69 |
71 |
70 // sort case-insensitive |
72 // sort case-insensitive |
71 QMap<QString, QString> sortedFileNames; |
73 QMap<QString, QString> sortedFileNames; |
|
74 QString absolutePath = datadir->absolutePath().toLocal8Bit().data(); |
72 foreach ( QString fn, result) |
75 foreach ( QString fn, result) |
73 { |
76 { |
74 sortedFileNames.insert(fn.toLower(), fn); |
77 // Filter out DLC entries if desired |
|
78 QString realDir = PHYSFS_getRealDir(QString(subDirectory + "/" + fn).toLocal8Bit().data()); |
|
79 if(withDLC || realDir == absolutePath) |
|
80 sortedFileNames.insert(fn.toLower(), fn); |
75 } |
81 } |
76 result = sortedFileNames.values(); |
82 result = sortedFileNames.values(); |
77 |
83 |
78 return result; |
84 return result; |
79 } |
85 } |