QTfrontend/util/DataManager.cpp
changeset 12295 ac57d564efce
parent 11046 47a8c19ecb60
child 13284 b504131f7405
equal deleted inserted replaced
12294:0deabf747b8f 12295:ac57d564efce
    29 #include <QColor>
    29 #include <QColor>
    30 
    30 
    31 #include "hwconsts.h"
    31 #include "hwconsts.h"
    32 #include "HWApplication.h"
    32 #include "HWApplication.h"
    33 #include "sdlkeys.h"
    33 #include "sdlkeys.h"
       
    34 #include "physfs.h"
    34 
    35 
    35 #include "DataManager.h"
    36 #include "DataManager.h"
    36 
    37 
    37 #include "GameStyleModel.h"
    38 #include "GameStyleModel.h"
    38 #include "HatModel.h"
    39 #include "HatModel.h"
    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 }