1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-24 04:36:34 +01:00

[StatusBarIcons] Added JavaScript icon to manage JavaScript settings.

This commit is contained in:
nowrep 2013-05-26 18:15:24 +02:00
parent 5e929d764f
commit 9725f53bbf
10 changed files with 198 additions and 18 deletions

View File

@ -85,9 +85,6 @@ public:
void showNavigationBar(QWidget* bar);
WebTab* weTab();
WebTab* weTab(int index);
TabBar* getTabBar() const;
ClosedTabsManager* closedTabsManager() const;
QList<WebTab*> allTabs(bool withPinned = true);
@ -134,6 +131,9 @@ private slots:
void tabMoved(int before, int after);
private:
WebTab* weTab();
WebTab* weTab(int index);
inline bool validIndex(int index) const { return index >= 0 && index < count(); }
void tabInserted(int index);

View File

@ -4,11 +4,13 @@ TARGET = $$qtLibraryTarget(StatusBarIcons)
SOURCES += statusbariconsplugin.cpp \
sbi_iconsmanager.cpp \
sbi_imagesicon.cpp
sbi_imagesicon.cpp \
sbi_javascripticon.cpp
HEADERS += statusbariconsplugin.h \
sbi_iconsmanager.h \
sbi_imagesicon.h
sbi_imagesicon.h \
sbi_javascripticon.h
RESOURCES += statusbaricons.qrc

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

View File

@ -17,6 +17,7 @@
* ============================================================ */
#include "sbi_iconsmanager.h"
#include "sbi_imagesicon.h"
#include "sbi_javascripticon.h"
#include "qupzilla.h"
#include <QDebug>
@ -66,7 +67,6 @@ void SBI_IconsManager::destroyIcons()
void SBI_IconsManager::mainWindowCreated(QupZilla* window)
{
typedef QWidget SBI_JavaScriptIcon;
typedef QWidget SBI_NetworkIcon;
if (m_showImagesIcon) {
@ -76,7 +76,7 @@ void SBI_IconsManager::mainWindowCreated(QupZilla* window)
}
if (m_showJavaScriptIcon) {
SBI_JavaScriptIcon* w = new SBI_JavaScriptIcon;
SBI_JavaScriptIcon* w = new SBI_JavaScriptIcon(window);
window->statusBar()->addPermanentWidget(w);
m_windows[window].append(w);
}

View File

@ -57,7 +57,6 @@ void SBI_ImagesIcon::showMenu(const QPoint &point)
boldFont.setBold(true);
QMenu menu;
menu.addAction(m_icon, tr("Current page settings"))->setFont(boldFont);
if (currentPageSettings()->testAttribute(QWebSettings::AutoLoadImages)) {
@ -85,7 +84,7 @@ void SBI_ImagesIcon::toggleLoadingImages()
// We should reload page on disabling images
if (current) {
p_QupZilla->tabWidget()->weTab()->reload();
p_QupZilla->weView()->reload();
}
updateIcon();
@ -105,13 +104,13 @@ void SBI_ImagesIcon::setGlobalLoadingImages(bool enable)
// We should reload page on disabling images
if (!enable) {
p_QupZilla->tabWidget()->weTab()->reload();
p_QupZilla->weView()->reload();
}
}
QWebSettings* SBI_ImagesIcon::currentPageSettings()
{
return p_QupZilla->tabWidget()->weTab()->view()->page()->settings();
return p_QupZilla->weView()->page()->settings();
}
void SBI_ImagesIcon::updateIcon()

View File

@ -0,0 +1,95 @@
/* ============================================================
* StatusBarIcons - Extra icons in statusbar for QupZilla
* Copyright (C) 2013 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sbi_javascripticon.h"
#include "qupzilla.h"
#include "tabwidget.h"
#include "tabbedwebview.h"
#include "webpage.h"
#include "jsoptions.h"
#include <QGraphicsColorizeEffect>
#include <QWebSettings>
#include <QMenu>
SBI_JavaScriptIcon::SBI_JavaScriptIcon(QupZilla* window)
: ClickableLabel(window)
, p_QupZilla(window)
{
setCursor(Qt::PointingHandCursor);
setToolTip(tr("Modify JavaScript settings per-site and globally"));
m_icon = QIcon::fromTheme("application-x-javascript", QIcon(":sbi/data/javascript.png"));
setPixmap(m_icon.pixmap(16));
connect(p_QupZilla->tabWidget(), SIGNAL(currentChanged(int)), this, SLOT(updateIcon()));
connect(this, SIGNAL(clicked(QPoint)), this, SLOT(showMenu(QPoint)));
}
void SBI_JavaScriptIcon::showMenu(const QPoint &point)
{
QFont boldFont = font();
boldFont.setBold(true);
QMenu menu;
menu.addAction(m_icon, tr("Current page settings"))->setFont(boldFont);
if (currentPageSettings()->testAttribute(QWebSettings::JavascriptEnabled)) {
menu.addAction(tr("Disable JavaScript (temporarily)"), this, SLOT(toggleJavaScript()));
}
else {
menu.addAction(tr("Enable JavaScript (temporarily)"), this, SLOT(toggleJavaScript()));
}
menu.addSeparator();
menu.addAction(m_icon, tr("Global settings"))->setFont(boldFont);
menu.addAction(tr("Manage JavaScript settings"), this, SLOT(openJavaScriptSettings()));
menu.exec(point);
}
void SBI_JavaScriptIcon::updateIcon()
{
if (currentPageSettings()->testAttribute(QWebSettings::JavascriptEnabled)) {
setGraphicsEffect(0);
}
else {
QGraphicsColorizeEffect* effect = new QGraphicsColorizeEffect(this);
effect->setColor(Qt::gray);
setGraphicsEffect(effect);
}
}
void SBI_JavaScriptIcon::toggleJavaScript()
{
bool current = currentPageSettings()->testAttribute(QWebSettings::JavascriptEnabled);
currentPageSettings()->setAttribute(QWebSettings::JavascriptEnabled, !current);
p_QupZilla->weView()->reload();
updateIcon();
}
void SBI_JavaScriptIcon::openJavaScriptSettings()
{
JsOptions dialog(p_QupZilla);
dialog.exec();
}
QWebSettings* SBI_JavaScriptIcon::currentPageSettings()
{
return p_QupZilla->weView()->page()->settings();
}

View File

@ -0,0 +1,50 @@
/* ============================================================
* StatusBarIcons - Extra icons in statusbar for QupZilla
* Copyright (C) 2013 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef SBI_JAVASCRIPTICON_H
#define SBI_JAVASCRIPTICON_H
#include <QIcon>
#include "clickablelabel.h"
class QWebSettings;
class QupZilla;
class SBI_JavaScriptIcon : public ClickableLabel
{
Q_OBJECT
public:
explicit SBI_JavaScriptIcon(QupZilla* window);
private slots:
void showMenu(const QPoint &point);
void updateIcon();
void toggleJavaScript();
void openJavaScriptSettings();
private:
QWebSettings* currentPageSettings();
QupZilla* p_QupZilla;
QIcon m_icon;
};
#endif // SBI_JAVASCRIPTICON_H

View File

@ -2,5 +2,6 @@
<qresource prefix="/sbi">
<file>data/icon.png</file>
<file>data/images.png</file>
<file>data/javascript.png</file>
</qresource>
</RCC>

View File

@ -34,7 +34,7 @@ PluginSpec StatusBarIconsPlugin::pluginSpec()
spec.name = "StatusBar Icons";
spec.info = "Icons in statusbar providing various actions";
spec.description = "Adds additional icons to statusbar";
spec.version = "0.1.0";
spec.version = "0.1.5";
spec.author = "David Rosca <nowrep@gmail.com>";
spec.icon = QPixmap(":sbi/data/icon.png");
spec.hasSettings = false;

View File

@ -4,34 +4,67 @@
<context>
<name>SBI_ImagesIcon</name>
<message>
<location filename="../sbi_imagesicon.cpp" line="37"/>
<location filename="../sbi_imagesicon.cpp" line="36"/>
<source>Modify images loading settings per-site and globally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_imagesicon.cpp" line="57"/>
<location filename="../sbi_imagesicon.cpp" line="60"/>
<source>Current page settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_imagesicon.cpp" line="60"/>
<location filename="../sbi_imagesicon.cpp" line="63"/>
<source>Disable loading images (temporarily)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_imagesicon.cpp" line="63"/>
<location filename="../sbi_imagesicon.cpp" line="66"/>
<source>Enable loading images (temporarily)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_imagesicon.cpp" line="67"/>
<location filename="../sbi_imagesicon.cpp" line="70"/>
<source>Global settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_imagesicon.cpp" line="69"/>
<location filename="../sbi_imagesicon.cpp" line="72"/>
<source>Automatically load images</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SBI_JavaScriptIcon</name>
<message>
<location filename="../sbi_javascripticon.cpp" line="34"/>
<source>Modify JavaScript settings per-site and globally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_javascripticon.cpp" line="49"/>
<source>Current page settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_javascripticon.cpp" line="52"/>
<source>Disable JavaScript (temporarily)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_javascripticon.cpp" line="55"/>
<source>Enable JavaScript (temporarily)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_javascripticon.cpp" line="59"/>
<source>Global settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../sbi_javascripticon.cpp" line="60"/>
<source>Manage JavaScript settings</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>