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"