aboutsummaryrefslogtreecommitdiff
path: root/staging/smolblok/smolblok.cpp
blob: 465c348a3e195524d5494ece07135c65038d8a43 (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
/*
 * 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://library.iserlohn-fortress.net/aqua/smolbote.git
 *
 * SPDX-License-Identifier: GPL-3.0
 */

#include "smolblok.hpp"
#include <QFile>
#include <QSettings>

bool smolblok::addSubscriptions(const QString &filename)
{
    if(filename.isEmpty()) {
        return false;
    }

    QSettings listconf(filename, QSettings::IniFormat);

    for(auto &group : listconf.childGroups()) {
        listconf.beginGroup(group);
        const auto *loader = m_formats.value(listconf.value("Format").toString()).instance;
        if(loader != nullptr) {
            QFile f(listconf.value("File").toString());
            if(!f.exists()) {
                continue;
            }

            auto *list = loader->load(f);
            f.seek(0);
            if(loader->parse(list, f)) {
                m_subscriptions.addFilterList(list);
            }
        }
        listconf.endGroup();
    }
    return false;
}