File indexing completed on 2024-05-12 16:23:45
0001 // SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #pragma once 0006 0007 #include <QNetworkAccessManager> 0008 0009 class AdblockFilterListsManager : public QObject 0010 { 0011 Q_OBJECT 0012 0013 public: 0014 AdblockFilterListsManager(QObject *parent = nullptr); 0015 0016 struct FilterList { 0017 QString name; 0018 QUrl url; 0019 }; 0020 0021 /// filterListPath always returns an existing path to a filter list directory 0022 static QString filterListPath(); 0023 0024 void refreshLists(); 0025 Q_SIGNAL void refreshFinished(); 0026 0027 const QVector<FilterList> &filterLists() const; 0028 0029 void addFilterList(const QString &name, const QUrl &url); 0030 void removeFilterList(const int index); 0031 0032 private: 0033 Q_SLOT void handleListFetched(QNetworkReply *reply); 0034 0035 static QVector<FilterList> loadFromConfig(); 0036 static void writeToConfig(const QVector<FilterList> &filters); 0037 0038 QVector<FilterList> m_filterLists; 0039 QNetworkAccessManager m_networkManager; 0040 int m_runningRequests = 0; 0041 };