aboutsummaryrefslogtreecommitdiff
path: root/src/util.cpp
blob: a9788384633f1f599030c215f03ac758a1ca5016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * 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;
}