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 };