29#include <QInputDialog>
34 , m_currentTreeWidget(nullptr)
35 , m_currentSubscription(nullptr)
38 setAttribute(Qt::WA_DeleteOnClose);
44 tabWidget->setDocumentMode(
false);
46 adblockCheckBox->setChecked(m_manager->
isEnabled());
48 auto* menu =
new QMenu(buttonOptions);
49 m_actionAddRule = menu->addAction(tr(
"Add Rule"),
this, &AdBlockDialog::addRule);
50 m_actionRemoveRule = menu->addAction(tr(
"Remove Rule"),
this, &AdBlockDialog::removeRule);
52 m_actionAddSubscription = menu->addAction(tr(
"Add Subscription"),
this, &AdBlockDialog::addSubscription);
53 m_actionRemoveSubscription = menu->addAction(tr(
"Remove Subscription"),
this, &AdBlockDialog::removeSubscription);
56 menu->addAction(tr(
"Learn about writing rules..."),
this, &AdBlockDialog::learnAboutRules);
58 buttonOptions->setMenu(menu);
59 connect(menu, &QMenu::aboutToShow,
this, &AdBlockDialog::aboutToShowMenu);
61 connect(adblockCheckBox, &QAbstractButton::toggled,
this, &AdBlockDialog::enableAdBlock);
62 connect(search, &QLineEdit::textChanged,
this, &AdBlockDialog::filterString);
63 connect(tabWidget, &QTabWidget::currentChanged,
this, &AdBlockDialog::currentChanged);
64 connect(buttonBox, &QDialogButtonBox::accepted,
this, &QWidget::close);
68 buttonBox->setFocus();
78 for (
int i = 0;
i < tabWidget->count(); ++
i) {
79 auto* treeWidget = qobject_cast<AdBlockTreeWidget*>(tabWidget->widget(
i));
81 if (subscription == treeWidget->subscription()) {
82 treeWidget->showRule(rule);
83 tabWidget->setCurrentIndex(
i);
89void AdBlockDialog::addRule()
94void AdBlockDialog::removeRule()
99void AdBlockDialog::addSubscription()
102 if (dialog.exec() != QDialog::Accepted) {
106 QString title = dialog.title();
107 QString url = dialog.url();
111 int index = tabWidget->insertTab(tabWidget->count() - 1, tree, subscription->title());
113 tabWidget->setCurrentIndex(index);
117void AdBlockDialog::removeSubscription()
120 delete m_currentTreeWidget;
124void AdBlockDialog::currentChanged(
int index)
127 m_currentTreeWidget = qobject_cast<AdBlockTreeWidget*>(tabWidget->widget(index));
128 m_currentSubscription = m_currentTreeWidget->
subscription();
132void AdBlockDialog::filterString(
const QString &
string)
134 if (m_currentTreeWidget && adblockCheckBox->isChecked()) {
139void AdBlockDialog::enableAdBlock(
bool state)
148void AdBlockDialog::aboutToShowMenu()
150 bool subscriptionEditable = m_currentSubscription && m_currentSubscription->
canEditRules();
151 bool subscriptionRemovable = m_currentSubscription && m_currentSubscription->
canBeRemoved();
153 m_actionAddRule->setEnabled(subscriptionEditable);
154 m_actionRemoveRule->setEnabled(subscriptionEditable);
155 m_actionRemoveSubscription->setEnabled(subscriptionRemovable);
158void AdBlockDialog::learnAboutRules()
160 mApp->addNewTab(QUrl(
QSL(
"http://adblockplus.org/en/filters")));
163void AdBlockDialog::loadSubscriptions()
165 for (
int i = 0;
i < tabWidget->count(); ++
i) {
166 auto* treeWidget = qobject_cast<AdBlockTreeWidget*>(tabWidget->widget(
i));
167 treeWidget->refresh();
171void AdBlockDialog::load()
173 if (m_loaded || !adblockCheckBox->isChecked()) {
180 tabWidget->addTab(tree, subscription->title());
185 QTimer::singleShot(50,
this, &AdBlockDialog::loadSubscriptions);
void showRule(const AdBlockRule *rule) const
AdBlockDialog(QWidget *parent=nullptr)
void setEnabled(bool enabled)
AdBlockSubscription * addSubscription(const QString &title, const QString &url)
bool removeSubscription(AdBlockSubscription *subscription)
QList< AdBlockSubscription * > subscriptions() const
void updateAllSubscriptions()
AdBlockSubscription * subscription() const
virtual bool canBeRemoved() const
virtual bool canEditRules() const