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 #include "adblockfilterlistsmodel.h"
0006 
0007 #include "adblockfilterlistsmanager.h"
0008 #include "adblockurlinterceptor.h"
0009 #include "angelfishsettings.h"
0010 
0011 AdblockFilterListsModel::AdblockFilterListsModel(QObject *parent)
0012     : QAbstractListModel(parent)
0013 {
0014     connect(&m_manager, &AdblockFilterListsManager::refreshFinished, this, &AdblockFilterListsModel::refreshFinished);
0015     connect(&m_manager, &AdblockFilterListsManager::refreshFinished, this, &AdblockFilterListsModel::resetAdblock);
0016 }
0017 
0018 QVariant AdblockFilterListsModel::data(const QModelIndex &index, int role) const
0019 {
0020     switch (role) {
0021     case Qt::DisplayRole:
0022         return m_manager.filterLists().at(index.row()).name;
0023     case Role::Url:
0024         return m_manager.filterLists().at(index.row()).url;
0025     }
0026 
0027     return {};
0028 }
0029 
0030 QHash<int, QByteArray> AdblockFilterListsModel::roleNames() const
0031 {
0032     return {{Qt::DisplayRole, "displayName"}, {Role::Url, "url"}};
0033 }
0034 
0035 int AdblockFilterListsModel::rowCount(const QModelIndex &parent) const
0036 {
0037     return parent.isValid() ? 0 : m_manager.filterLists().size();
0038 }
0039 
0040 void AdblockFilterListsModel::addFilterList(const QString &name, const QUrl &url)
0041 {
0042     const auto currentSize = m_manager.filterLists().size();
0043     beginInsertRows({}, currentSize, currentSize);
0044     m_manager.addFilterList(name, url);
0045     endInsertRows();
0046 }
0047 
0048 void AdblockFilterListsModel::removeFilterList(const int index)
0049 {
0050     beginRemoveRows({}, index, index);
0051     m_manager.removeFilterList(index);
0052     endRemoveRows();
0053 }
0054 
0055 void AdblockFilterListsModel::refreshLists()
0056 {
0057     m_manager.refreshLists();
0058 }
0059 
0060 void AdblockFilterListsModel::resetAdblock()
0061 {
0062     AdblockUrlInterceptor::instance().resetAdblock();
0063 }
0064 
0065 #include "moc_adblockfilterlistsmodel.cpp"