rssguard/src/librssguard/network-web/adblock/adblockicon.cpp
2021-09-20 08:31:55 +02:00

62 lines
1.6 KiB
C++

// For license of this file, see <project-root-folder>/LICENSE.md.
#include "network-web/adblock/adblockicon.h"
#include "gui/dialogs/formmain.h"
#include "gui/webbrowser.h"
#include "gui/webviewer.h"
#include "miscellaneous/application.h"
#include "network-web/adblock/adblockmanager.h"
#include "network-web/webpage.h"
#include <QMenu>
AdBlockIcon::AdBlockIcon(AdBlockManager* parent) : QAction(parent), m_manager(parent) {
setToolTip(tr("AdBlock lets you block unwanted content on web pages"));
setText(QSL("AdBlock"));
setMenu(new QMenu());
connect(m_manager, &AdBlockManager::enabledChanged, this, &AdBlockIcon::setIcon);
connect(m_manager, &AdBlockManager::processTerminated, this, [this]() {
setIcon(false);
});
connect(menu(), &QMenu::aboutToShow, this, [this]() {
createMenu();
});
connect(this, &QAction::triggered, m_manager, &AdBlockManager::showDialog);
emit m_manager->enabledChanged(m_manager->isEnabled());
}
AdBlockIcon::~AdBlockIcon() {
if (menu() != nullptr) {
menu()->deleteLater();
}
}
void AdBlockIcon::createMenu(QMenu* menu) {
if (menu == nullptr) {
menu = qobject_cast<QMenu*>(sender());
if (menu == nullptr) {
return;
}
}
menu->clear();
menu->addAction(tr("Show AdBlock &settings"), m_manager, &AdBlockManager::showDialog);
}
void AdBlockIcon::showMenu(QPoint pos) {
QMenu menu;
createMenu(&menu);
menu.exec(pos);
}
void AdBlockIcon::setIcon(bool adblock_enabled) {
QAction::setIcon(adblock_enabled
? qApp->icons()->miscIcon(QSL(ADBLOCK_ICON_ACTIVE))
: qApp->icons()->miscIcon(QSL(ADBLOCK_ICON_DISABLED)));
}