/* * 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 #include bool smolblok::registerFormatPlugin(const QString &format, const QString &filename) { if(format.isEmpty() || filename.isEmpty()) { return false; } auto *plugin = new QPluginLoader(filename); if(!plugin->load()) { delete plugin; return false; } auto *instance = qobject_cast(plugin->instance()); if(instance == nullptr) { delete plugin; return false; } m_formats[format] = PluginInfo{ plugin, instance }; return false; } 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; }