aboutsummaryrefslogtreecommitdiff
path: root/staging/smolblok/filtermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging/smolblok/filtermanager.cpp')
-rw-r--r--staging/smolblok/filtermanager.cpp27
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;
+ }
+}