diff options
Diffstat (limited to 'staging/smolblok/filtermanager.cpp')
-rw-r--r-- | staging/smolblok/filtermanager.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/staging/smolblok/filtermanager.cpp b/staging/smolblok/filtermanager.cpp new file mode 100644 index 0000000..05beb59 --- /dev/null +++ b/staging/smolblok/filtermanager.cpp @@ -0,0 +1,27 @@ +#include "filtermanager.hpp" +#include "filterlist.h" +#include <QFile> + +Filter *FilterManager::addSubscription(const QString &filename, const QUrl &url) +{ + if(filename.isEmpty() && url.isEmpty()) { + return nullptr; + } + + QFile f(filename); + if(!f.exists()) { + // TODO download file + return nullptr; + } + + if(!f.open(QIODevice::ReadOnly | QIODevice::Text)) { + return nullptr; + } + + try { + auto *filter = new AdblockPlus::FilterList(f); + return filter; + } catch(std::exception &) { + return nullptr; + } +} |