/*
 * This file is part of smolbote. It's copyrighted by the contributors recorded
 * in the version control history of the file, available from its original
 * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote
 *
 * SPDX-License-Identifier: GPL-3.0
 */

#include "util.h"
#include <QDir>
#include <QFileInfo>

#define ListSeparator QLatin1Literal(";")

const QStringList Util::files(const QString &location, const QStringList &nameFilters)
{
    if(location.isEmpty())
        return QStringList();

    QStringList filelist;

    // check if location is a list of locations (contains a ';')
    if(location.contains(ListSeparator)) {
        const QStringList locations = location.split(ListSeparator);

        for(const QString &l : locations) {
            filelist.append(Util::files(l, nameFilters));
        }

        return filelist;
    }

    const QFileInfo info(location);

    // check if location is a folder
    if(info.isDir()) {
        const auto entryList = QDir(info.absoluteFilePath()).entryInfoList(nameFilters, QDir::Files | QDir::Readable, QDir::Time);
        for(const QFileInfo &entryInfo : entryList) {
            filelist.append(entryInfo.absoluteFilePath());
        }
    } else if(info.isFile()) {
        filelist.append(info.absoluteFilePath());
    }

    return filelist;
}