1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 17:52:10 +02:00

Added non-blocking javascript alerts/confirms/prompts (with option to

block additional alerts on page)
fixed proper history restoring on restoring closed tabs
This commit is contained in:
nowrep 2011-05-22 10:47:03 +02:00
parent 3e13ea8442
commit 9fb119fc95
17 changed files with 1023 additions and 141 deletions

Binary file not shown.

View File

@ -118,7 +118,9 @@ SOURCES += main.cpp\
tools/iconprovider.cpp \
network/networkproxyfactory.cpp \
tools/closedtabsmanager.cpp \
other/statusbarmessage.cpp
other/statusbarmessage.cpp \
tools/buttonbox.cpp \
tools/widget.cpp
HEADERS += 3rdparty/squeezelabel.h \
3rdparty/qtwin.h \
@ -196,7 +198,9 @@ HEADERS += 3rdparty/squeezelabel.h \
tools/iconprovider.h \
network/networkproxyfactory.h \
tools/closedtabsmanager.h \
other/statusbarmessage.h
other/statusbarmessage.h \
tools/buttonbox.h \
tools/widget.h
FORMS += \
preferences/autofillmanager.ui \
@ -224,7 +228,10 @@ FORMS += \
tools/docktitlebarwidget.ui \
sidebar/bookmarkssidebar.ui \
sidebar/historysidebar.ui \
desktopnotifications/desktopnotification.ui
desktopnotifications/desktopnotification.ui \
webview/jsconfirm.ui \
webview/jsalert.ui \
webview/jsprompt.ui
RESOURCES += \
data/icons.qrc \

18
src/tools/buttonbox.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "buttonbox.h"
ButtonBox::ButtonBox(QWidget *parent) :
QDialogButtonBox(parent)
, m_clickedButton(QDialogButtonBox::RejectRole)
{
connect(this, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
}
void ButtonBox::buttonClicked(QAbstractButton *button)
{
m_clickedButton = buttonRole(button);
}
QDialogButtonBox::ButtonRole ButtonBox::clickedButtonRole()
{
return m_clickedButton;
}

26
src/tools/buttonbox.h Normal file
View File

@ -0,0 +1,26 @@
#ifndef BUTTONBOX_H
#define BUTTONBOX_H
#include <QDialogButtonBox>
#include <QAbstractButton>
class ButtonBox : public QDialogButtonBox
{
Q_OBJECT
public:
explicit ButtonBox(QWidget *parent = 0);
ButtonRole clickedButtonRole();
signals:
public slots:
private slots:
void buttonClicked(QAbstractButton* button);
private:
QDialogButtonBox::ButtonRole m_clickedButton;
};
#endif // BUTTONBOX_H

View File

@ -16,7 +16,7 @@ void ClosedTabsManager::saveView(WebView* view)
tab.url = view->url();
tab.title = view->title();
QDataStream tabHistoryStream(&tab.history, QIODevice::WriteOnly);
tabHistoryStream << view->history();
tabHistoryStream << *view->history();
m_closedTabs.prepend(tab);
}

11
src/tools/widget.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
}
void Widget::slotResize(const QSize &size)
{
resize(size);
}

19
src/tools/widget.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
signals:
public slots:
void slotResize(const QSize &size);
};
#endif // WIDGET_H

233
src/webview/jsalert.ui Normal file
View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>jsAlert</class>
<widget class="QWidget" name="jsAlert">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>554</width>
<height>374</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true"/>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>109</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>172</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>172</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QFrame" name="frame_2">
<property name="styleSheet">
<string notr="true">#frame_2 {
background-color: #f3f3f3;
border: 1px solid black;
border-top: 0px;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="ButtonBox" name="buttonBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="preventAlerts">
<property name="text">
<string>Prevent this page from creating additional dialogs</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>109</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QFrame" name="frame">
<property name="styleSheet">
<string notr="true">#frame {
border: 1px solid black;
border-bottom: 0px;
background-color: white;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="margin">
<number>20</number>
</property>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="message">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ButtonBox</class>
<extends>QDialogButtonBox</extends>
<header>buttonbox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

193
src/webview/jsconfirm.ui Normal file
View File

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>jsConfirm</class>
<widget class="QWidget" name="jsConfirm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>529</width>
<height>344</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true"/>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="spacing">
<number>0</number>
</property>
<item row="2" column="1">
<widget class="QFrame" name="frame">
<property name="styleSheet">
<string notr="true">#frame {
border: 1px solid black;
border-bottom: 0px;
background-color: white;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="margin">
<number>20</number>
</property>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="message">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1">
<widget class="QFrame" name="frame_2">
<property name="styleSheet">
<string notr="true">#frame_2 {
background-color: #f3f3f3;
border: 1px solid black;
border-top: 0px;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="ButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ButtonBox</class>
<extends>QDialogButtonBox</extends>
<header>buttonbox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

208
src/webview/jsprompt.ui Normal file
View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>jsPrompt</class>
<widget class="QWidget" name="jsPrompt">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true"/>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>65</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QFrame" name="frame">
<property name="styleSheet">
<string notr="true">#frame {
border: 1px solid black;
border-bottom: 0px;
background-color: white;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>20</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<item row="0" column="0">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QLabel" name="message">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QFrame" name="frame_2">
<property name="styleSheet">
<string notr="true">#frame_2 {
background-color: #f3f3f3;
border: 1px solid black;
border-top: 0px;
}</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="ButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>65</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ButtonBox</class>
<extends>QDialogButtonBox</extends>
<header>buttonbox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -22,11 +22,16 @@
#include "downloadmanager.h"
#include "webpluginfactory.h"
#include "mainapplication.h"
#include "ui_jsconfirm.h"
#include "ui_jsalert.h"
#include "ui_jsprompt.h"
#include "widget.h"
WebPage::WebPage(WebView* parent, QupZilla* mainClass)
: QWebPage(parent)
,p_QupZilla(mainClass)
,m_view(parent)
,m_blockAlerts(false)
// ,m_isOpeningNextWindowAsNewTab(false)
{
setForwardUnsupportedContent(true);
@ -35,6 +40,13 @@ WebPage::WebPage(WebView* parent, QupZilla* mainClass)
connect(this, SIGNAL(loadStarted()), this, SLOT(loadingStarted()));
}
void WebPage::loadingStarted()
{
m_adBlockedEntries.clear();
m_blockAlerts = false;
//m_SslCert.clear();
}
void WebPage::handleUnsupportedContent(QNetworkReply* reply)
{
if (!reply)
@ -85,10 +97,9 @@ bool WebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest &r
}
if (type == QWebPage::NavigationTypeFormResubmitted) {
QMessageBox::StandardButton button = QMessageBox::warning(view(), tr("Confirmation"),
tr("To show this page, QupZilla must resend request witch do it again "
"(like searching on making an shoping, witch has been already done."), QMessageBox::Yes | QMessageBox::No);
if (button != QMessageBox::Yes)
bool result = javaScriptConfirm(frame, tr("To show this page, QupZilla must resend request which do it again \n"
"(like searching on making an shoping, witch has been already done.)"));
if (!result)
return false;
}
@ -255,6 +266,126 @@ bool WebPage::extension(Extension extension, const ExtensionOption* option, Exte
return true;
}
bool WebPage::javaScriptPrompt(QWebFrame* originatingFrame, const QString &msg, const QString &defaultValue, QString* result)
{
WebView* _view = (WebView*)originatingFrame->page()->view();
Widget* widget = new Widget(_view->webTab());
Ui_jsPrompt* ui = new Ui_jsPrompt();
ui->setupUi(widget);
ui->message->setText(msg);
ui->lineEdit->setText(defaultValue);
ui->lineEdit->setFocus();
widget->resize(originatingFrame->page()->viewportSize());
widget->show();
connect(_view, SIGNAL(viewportResized(QSize)), widget, SLOT(slotResize(QSize)));
connect(ui->lineEdit, SIGNAL(returnPressed()), ui->buttonBox->button(QDialogButtonBox::Ok), SLOT(animateClick()));
QWebElement bodyElement = originatingFrame->findFirstElement("body");
if (!bodyElement.isNull()) {
QString height = QString::number(originatingFrame->contentsSize().height());
QString width = QString::number(originatingFrame->contentsSize().width());
bodyElement.prependInside("<span id='qupzilla-background-content' style='display: block;background: #6b6b6b;"
"position: absolute;opacity: .9;filter: alpha(opacity=90);top: 0px;"
"left: 0px;z-index: 998;overflow: hidden;width:"+width+"px; height:"+height+"px;'> </span>");
} else {
widget->setAutoFillBackground(true);
}
QEventLoop eLoop;
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), &eLoop, SLOT(quit()) );
eLoop.exec();
QString x = ui->lineEdit->text();
bool _result = ui->buttonBox->clickedButtonRole() == QDialogButtonBox::AcceptRole;
*result = x;
delete widget;
originatingFrame->findFirstElement("span[id=\"qupzilla-background-content\"]").removeFromDocument();
_view->setFocus();
return _result;
}
bool WebPage::javaScriptConfirm(QWebFrame* originatingFrame, const QString &msg)
{
WebView* _view = (WebView*)originatingFrame->page()->view();
Widget* widget = new Widget(_view->webTab());
Ui_jsConfirm* ui = new Ui_jsConfirm();
ui->setupUi(widget);
ui->message->setText(msg);
ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus();
widget->resize(originatingFrame->page()->viewportSize());
widget->show();
connect(_view, SIGNAL(viewportResized(QSize)), widget, SLOT(slotResize(QSize)));
QWebElement bodyElement = originatingFrame->findFirstElement("body");
if (!bodyElement.isNull()) {
QString height = QString::number(originatingFrame->contentsSize().height());
QString width = QString::number(originatingFrame->contentsSize().width());
bodyElement.prependInside("<span id='qupzilla-background-content' style='display: block;background: #6b6b6b;"
"position: absolute;opacity: .9;filter: alpha(opacity=90);top: 0px;"
"left: 0px;z-index: 998;overflow: hidden;width:"+width+"px; height:"+height+"px;'> </span>");
} else {
widget->setAutoFillBackground(true);
}
QEventLoop eLoop;
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), &eLoop, SLOT(quit()) );
eLoop.exec();
bool result = ui->buttonBox->clickedButtonRole() == QDialogButtonBox::AcceptRole;
delete widget;
originatingFrame->findFirstElement("span[id=\"qupzilla-background-content\"]").removeFromDocument();
_view->setFocus();
return result;
}
void WebPage::javaScriptAlert(QWebFrame* originatingFrame, const QString &msg)
{
if (m_blockAlerts)
return;
WebView* _view = (WebView*)originatingFrame->page()->view();
Widget* widget = new Widget(_view->webTab());
Ui_jsAlert* ui = new Ui_jsAlert();
ui->setupUi(widget);
ui->message->setText(msg);
ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus();
widget->resize(originatingFrame->page()->viewportSize());
widget->show();
connect(_view, SIGNAL(viewportResized(QSize)), widget, SLOT(slotResize(QSize)));
QWebElement bodyElement = originatingFrame->findFirstElement("body");
if (!bodyElement.isNull()) {
QString height = QString::number(originatingFrame->contentsSize().height());
QString width = QString::number(originatingFrame->contentsSize().width());
bodyElement.prependInside("<span id='qupzilla-background-content' style='display: block;background: #6b6b6b;"
"position: absolute;opacity: .9;filter: alpha(opacity=90);top: 0px;"
"left: 0px;z-index: 998;overflow: hidden;width:"+width+"px; height:"+height+"px;'> </span>");
} else {
widget->setAutoFillBackground(true);
}
QEventLoop eLoop;
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), &eLoop, SLOT(quit()) );
eLoop.exec();
m_blockAlerts = ui->preventAlerts->isChecked();
delete widget;
originatingFrame->findFirstElement("span[id=\"qupzilla-background-content\"]").removeFromDocument();
_view->setFocus();
}
WebPage::~WebPage()
{
setNetworkAccessManager(0);

View File

@ -49,8 +49,10 @@ public:
void setSSLCertificate(const QSslCertificate &cert);
QSslCertificate sslCertificate();
QString userAgentForUrl(const QUrl &url) const;
virtual bool supportsExtension(Extension extension) const { return (extension == ErrorPageExtension); }
virtual bool extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output = 0);
bool javaScriptPrompt(QWebFrame* originatingFrame, const QString &msg, const QString &defaultValue, QString* result);
bool javaScriptConfirm(QWebFrame* originatingFrame, const QString &msg);
void javaScriptAlert(QWebFrame* originatingFrame, const QString &msg);
void addAdBlockRule(const QString &filter, const QUrl &url);
QList<AdBlockedEntry> adBlockedEntries() { return m_adBlockedEntries; }
@ -58,9 +60,11 @@ public:
protected slots:
QWebPage* createWindow(QWebPage::WebWindowType type);
void handleUnsupportedContent(QNetworkReply* url);
void loadingStarted() { m_adBlockedEntries.clear(); /*m_SslCert.clear();*/ }
void loadingStarted();
protected:
private:
virtual bool supportsExtension(Extension extension) const { return (extension == ErrorPageExtension); }
virtual bool extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output = 0);
bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest &request, NavigationType type);
QupZilla* p_QupZilla;
@ -70,6 +74,7 @@ protected:
QSslCertificate m_SslCert;
QList<QSslCertificate> m_SslCerts;
QList<AdBlockedEntry> m_adBlockedEntries;
bool m_blockAlerts;
// bool m_isOpeningNextWindowAsNewTab;
};

View File

@ -30,7 +30,7 @@ WebTab::WebTab(QupZilla* mainClass, QWidget* parent)
setLayout(m_layout);
m_layout->setContentsMargins(0,0,0,0);
m_layout->setSpacing(0);
m_view = new WebView(p_QupZilla);
m_view = new WebView(p_QupZilla, this);
m_layout->addWidget(m_view);
setAutoFillBackground(true); // We don't want this transparent

View File

@ -33,8 +33,8 @@
#include "webtab.h"
#include "statusbarmessage.h"
WebView::WebView(QupZilla* mainClass, QWidget* parent)
: QWebView(parent)
WebView::WebView(QupZilla* mainClass, WebTab* webTab)
: QWebView()
,p_QupZilla(mainClass)
,m_progress(0)
,m_isLoading(false)
@ -43,8 +43,10 @@ WebView::WebView(QupZilla* mainClass, QWidget* parent)
,m_lastUrl(QUrl())
,m_wantsClose(false)
,m_page(new WebPage(this, p_QupZilla))
,m_webTab(webTab)
,m_mouseTrack(false)
,m_navigationVisible(false)
,m_mouseWheelEnabled(true)
//,m_loadingTimer(0)
{
m_networkProxy = new NetworkManagerProxy(p_QupZilla);
@ -94,6 +96,12 @@ WebPage* WebView::webPage() const
return m_page;
}
WebTab* WebView::webTab() const
{
return m_webTab;
}
bool WebView::isCurrent()
{
if (!tabWidget())
@ -374,6 +382,12 @@ void WebView::mousePressEvent(QMouseEvent* event)
}
}
void WebView::resizeEvent(QResizeEvent *event)
{
QWebView::resizeEvent(event);
emit viewportResized(m_page->viewportSize());
}
void WebView::mouseReleaseEvent(QMouseEvent* event)
{
//Workaround for crash in mouseReleaseEvent when closing tab from javascript :/
@ -680,6 +694,7 @@ void WebView::wheelEvent(QWheelEvent* event)
event->accept();
return;
}
if (m_mouseWheelEnabled)
QWebView::wheelEvent(event);
}

View File

@ -35,12 +35,13 @@ class QupZilla;
class TabWidget;
class WebPage;
class NetworkManagerProxy;
class WebTab;
class WebView : public QWebView
{
Q_OBJECT
public:
explicit WebView(QupZilla* mainClass, QWidget* parent = 0);
explicit WebView(QupZilla* mainClass, WebTab* webTab);
~WebView();
bool isLoading() { return m_isLoading;}
int getLoading() { return m_progress; }
@ -51,12 +52,14 @@ public:
QString title() const;
void reload();
WebPage* webPage() const;
WebTab* webTab() const;
QString getIp() { return m_currentIp; }
QLabel* animationLoading(int index, bool addMovie);
QIcon siteIcon();
void addNotification(QWidget* notif);
bool hasRss() { return !m_rss.isEmpty(); }
QList<QPair<QString,QString> > getRss() { return m_rss; } //FIXME: Make RSS as struct
void setMouseWheelEnabled(bool state) { m_mouseWheelEnabled = state; }
static QUrl guessUrlFromString(const QString &string);
static bool isUrlValid(const QUrl &url);
@ -110,6 +113,7 @@ private:
void contextMenuEvent(QContextMenuEvent* event);
void wheelEvent(QWheelEvent* event);
void mouseMoveEvent(QMouseEvent* event);
void resizeEvent(QResizeEvent* event);
TabWidget* tabWidget() const;
bool isCurrent();
void applyZoom();
@ -128,10 +132,12 @@ private:
QIcon m_siteIcon;
WebPage* m_page;
WebTab* m_webTab;
NetworkManagerProxy* m_networkProxy;
bool m_mouseTrack;
bool m_navigationVisible;
bool m_mouseWheelEnabled;
//QTimer* m_loadingTimer; //Too confusing
signals:
@ -142,6 +148,7 @@ signals:
void changed();
void ipChanged(QString ip);
void showNotification(QWidget* notif);
void viewportResized(QSize size);
};
#endif // WEBVIEW_H

View File

@ -1186,12 +1186,12 @@ nebyl nalezen!</translation>
<context>
<name>MainApplication</name>
<message>
<location filename="../src/app/mainapplication.cpp" line="506"/>
<location filename="../src/app/mainapplication.cpp" line="517"/>
<source>Last session crashed</source>
<translation>Poslední relace spadla</translation>
</message>
<message>
<location filename="../src/app/mainapplication.cpp" line="507"/>
<location filename="../src/app/mainapplication.cpp" line="518"/>
<source>&lt;b&gt;QupZilla crashed :-(&lt;/b&gt;&lt;br/&gt;Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state?</source>
<translation>&lt;b&gt;QupZilla spadla :-(&lt;/b&gt;&lt;br/&gt;Oops, poslední relace QupZilly skončila jejím pádem. Velice se omlouváme. Přejete si obnovit uložený stav?</translation>
</message>
@ -3211,33 +3211,33 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.</
<context>
<name>TabWidget</name>
<message>
<location filename="../src/webview/tabwidget.cpp" line="126"/>
<location filename="../src/webview/tabwidget.cpp" line="128"/>
<source>Show list of opened tabs</source>
<translation>Zobrazit seznam otevřených panelů</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="131"/>
<location filename="../src/webview/tabwidget.cpp" line="133"/>
<source>Add Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="177"/>
<location filename="../src/webview/tabwidget.cpp" line="179"/>
<source>Loading...</source>
<translation>Načítám...</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="180"/>
<location filename="../src/webview/tabwidget.cpp" line="290"/>
<location filename="../src/webview/tabwidget.cpp" line="182"/>
<location filename="../src/webview/tabwidget.cpp" line="308"/>
<source>No Named Page</source>
<translation>Bezejmenná stránka</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="196"/>
<location filename="../src/webview/tabwidget.cpp" line="198"/>
<source>Actually You have %1 opened tabs</source>
<translation>Dohromady máte otevřeno %1 panelů</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="329"/>
<location filename="../src/webview/tabwidget.cpp" line="346"/>
<location filename="../src/webview/tabwidget.h" line="61"/>
<source>New tab</source>
<translation>Nový panel</translation>
@ -3264,92 +3264,89 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.</
<context>
<name>WebPage</name>
<message>
<location filename="../src/webview/webpage.cpp" line="88"/>
<source>Confirmation</source>
<translation>Potvrzení</translation>
<location filename="../src/webview/webpage.cpp" line="100"/>
<source>To show this page, QupZilla must resend request which do it again
(like searching on making an shoping, witch has been already done.)</source>
<translation>Pro zobrazení této stránky musí QupZilla znovu odeslat požadavek na server
(jako např. hledaní při nakupování, které již bylo provedeno.)</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="89"/>
<source>To show this page, QupZilla must resend request witch do it again (like searching on making an shoping, witch has been already done.</source>
<translation>Pro zobrazení této stránky musí QupZilla znovu odeslat požadavek, který zopakuje akci (jako např. hledání nebo potvrzení objednávky), která byla provedena již dříve.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="155"/>
<location filename="../src/webview/webpage.cpp" line="166"/>
<source>Server refused the connection</source>
<translation>Server odmítl spojení</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="158"/>
<location filename="../src/webview/webpage.cpp" line="169"/>
<source>Server closed the connection</source>
<translation>Server ukončil spojení</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="161"/>
<location filename="../src/webview/webpage.cpp" line="172"/>
<source>Server not found</source>
<translation>Server nenalezen</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="164"/>
<location filename="../src/webview/webpage.cpp" line="175"/>
<source>Connection timed out</source>
<translation>Spojení vypršelo</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="167"/>
<location filename="../src/webview/webpage.cpp" line="178"/>
<source>Untrusted connection</source>
<translation>Nedůvěryhodné spojení</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="177"/>
<location filename="../src/webview/webpage.cpp" line="188"/>
<source>AdBlocked Content</source>
<translation>AdBlock obsah</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="189"/>
<location filename="../src/webview/webpage.cpp" line="200"/>
<source>Blocked by rule &lt;i&gt;%1&lt;/i&gt;</source>
<translation>Blokováno pravidlem &lt;i&gt;%1&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="208"/>
<location filename="../src/webview/webpage.cpp" line="219"/>
<source>Content Access Denied</source>
<translation>Odmítnut přístup k obsahu</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="213"/>
<location filename="../src/webview/webpage.cpp" line="224"/>
<source>Unknown error</source>
<translation>Neznámá chyba</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="218"/>
<location filename="../src/webview/webpage.cpp" line="229"/>
<source>Error code %1</source>
<translation>Chybový kód %1</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="229"/>
<location filename="../src/webview/webpage.cpp" line="240"/>
<source>Failed loading page</source>
<translation>Chyba při načítání stránky</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="248"/>
<location filename="../src/webview/webpage.cpp" line="259"/>
<source>QupZilla can&apos;t load page from %1.</source>
<translation>QupZilla nemůže načíst stránku ze serveru %1.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="249"/>
<location filename="../src/webview/webpage.cpp" line="260"/>
<source>Check the address for typing errors such as &lt;b&gt;ww.&lt;/b&gt;example.com instead of &lt;b&gt;www.&lt;/b&gt;example.com</source>
<translation>Zkontrolujte, zda je adresa napsána správně a neobsahuje chyby jako &lt;b&gt;ww.&lt;/b&gt;server.cz místo &lt;b&gt;www&lt;/b&gt;.server.cz</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="250"/>
<location filename="../src/webview/webpage.cpp" line="261"/>
<source>If you are unable to load any pages, check your computer&apos;s network connection.</source>
<translation>Pokud se vám nezobrazují ani ostatní stránky, zkontrolujte síťové připojení svého počítače.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="251"/>
<location filename="../src/webview/webpage.cpp" line="262"/>
<source>If your computer or network is protected by a firewall or proxy, make sure that QupZilla is permitted to access the Web.</source>
<translation>Pokud je váš počítač chráněn firewallem a nebo proxy serverem, zkontrolujte, zda QupZilla přístup na Internet.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="252"/>
<location filename="../src/webview/webpage.cpp" line="263"/>
<source>Try Again</source>
<translation>Zkusit znovu</translation>
</message>
@ -3357,141 +3354,149 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.</
<context>
<name>WebView</name>
<message>
<location filename="../src/webview/webview.cpp" line="141"/>
<location filename="../src/webview/webview.cpp" line="149"/>
<source>Loading...</source>
<translation>Načítám...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="432"/>
<location filename="../src/webview/webview.cpp" line="446"/>
<source>Open link in new &amp;tab</source>
<translation>Otevřít odkaz v novém &amp;panelu</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="433"/>
<location filename="../src/webview/webview.cpp" line="447"/>
<source>Open link in new &amp;window</source>
<translation>Otevřít odkaz v novém &amp;okně</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="435"/>
<location filename="../src/webview/webview.cpp" line="449"/>
<source>B&amp;ookmark link</source>
<translation>Přidat odkaz do &amp;ložek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="436"/>
<location filename="../src/webview/webview.cpp" line="450"/>
<source>&amp;Save link as...</source>
<translation>&amp;Uložit odkaz jako...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="438"/>
<location filename="../src/webview/webview.cpp" line="452"/>
<source>&amp;Copy link address</source>
<translation>&amp;Kopírovat adresu odkazu</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="447"/>
<location filename="../src/webview/webview.cpp" line="461"/>
<source>Show i&amp;mage</source>
<translation>Zobrazit &amp;obrázek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="448"/>
<location filename="../src/webview/webview.cpp" line="462"/>
<source>Copy im&amp;age</source>
<translation>&amp;Kopírovat obrázek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="449"/>
<location filename="../src/webview/webview.cpp" line="463"/>
<source>Copy image ad&amp;dress</source>
<translation>Kopírovat adr&amp;esu obrázku</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="497"/>
<location filename="../src/webview/webview.cpp" line="511"/>
<source>S&amp;top</source>
<translation>&amp;Zastavit</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="511"/>
<location filename="../src/webview/webview.cpp" line="525"/>
<source>Show info ab&amp;out site</source>
<translation>Zobrazit &amp;informace o stránce</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="512"/>
<location filename="../src/webview/webview.cpp" line="526"/>
<source>Show Web &amp;Inspector</source>
<translation>Zobrazit Web &amp;Inspektor</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="521"/>
<location filename="../src/webview/webview.cpp" line="535"/>
<source>Search &quot;%1 ..&quot; on &amp;Google</source>
<translation>Hledat &quot;%1 ..&quot; na &amp;Googlu</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="451"/>
<location filename="../src/webview/webview.cpp" line="465"/>
<source>&amp;Save image as...</source>
<translation>&amp;Uložit obrázek jako...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="86"/>
<location filename="../src/webview/webview.cpp" line="88"/>
<source>Failed loading page</source>
<translation>Chyba při načítání stránky</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="468"/>
<location filename="../src/webview/webview.cpp" line="482"/>
<source>&amp;Back</source>
<translation>&amp;Zpět</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="476"/>
<location filename="../src/webview/webview.cpp" line="490"/>
<source>&amp;Forward</source>
<translation>&amp;Vpřed</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="490"/>
<location filename="../src/webview/webview.cpp" line="504"/>
<source>&amp;Reload</source>
<translation>&amp;Obnovit</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="501"/>
<location filename="../src/webview/webview.cpp" line="515"/>
<source>Book&amp;mark page</source>
<translation>Přidat stránku do &amp;ložek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="502"/>
<location filename="../src/webview/webview.cpp" line="516"/>
<source>&amp;Save page as...</source>
<translation>&amp;Uložit stránku jako...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="505"/>
<location filename="../src/webview/webview.cpp" line="519"/>
<source>Select &amp;all</source>
<translation>Vyb&amp;rat vše</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="510"/>
<location filename="../src/webview/webview.cpp" line="524"/>
<source>Show so&amp;urce code</source>
<translation>Zobrazit zdrojový &amp;d</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="739"/>
<location filename="../src/webview/webview.cpp" line="754"/>
<source>No Named Page</source>
<translation>Bezejmenná stránka</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="364"/>
<location filename="../src/webview/webview.cpp" line="368"/>
<location filename="../src/webview/webview.cpp" line="544"/>
<location filename="../src/webview/webview.cpp" line="372"/>
<location filename="../src/webview/webview.cpp" line="376"/>
<location filename="../src/webview/webview.cpp" line="558"/>
<source>New tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="437"/>
<location filename="../src/webview/webview.cpp" line="451"/>
<source>Send link...</source>
<translation>Odeslat odkaz...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="452"/>
<location filename="../src/webview/webview.cpp" line="466"/>
<source>Send image...</source>
<translation>Odeslat obrázek...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="503"/>
<location filename="../src/webview/webview.cpp" line="517"/>
<source>Send page...</source>
<translation>Odeslat stránku...</translation>
</message>
</context>
<context>
<name>jsAlert</name>
<message>
<location filename="../src/webview/jsalert.ui" line="132"/>
<source>Prevent this page from creating additional dialogs</source>
<translation>Zabránit stránce ve vytváření dalších dialogů</translation>
</message>
</context>
</TS>

View File

@ -1188,12 +1188,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>MainApplication</name>
<message>
<location filename="../src/app/mainapplication.cpp" line="506"/>
<location filename="../src/app/mainapplication.cpp" line="517"/>
<source>Last session crashed</source>
<translation>Posledná relácia spadla</translation>
</message>
<message>
<location filename="../src/app/mainapplication.cpp" line="507"/>
<location filename="../src/app/mainapplication.cpp" line="518"/>
<source>&lt;b&gt;QupZilla crashed :-(&lt;/b&gt;&lt;br/&gt;Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state?</source>
<translation>&lt;b&gt;QupZilla spadla :-(&lt;/b&gt;&lt;br/&gt;Oops, posledná relácia QupZilly skončila chybou. Prepáčte. Chcete obnoviť uložený stav?</translation>
</message>
@ -3211,33 +3211,33 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.</tran
<context>
<name>TabWidget</name>
<message>
<location filename="../src/webview/tabwidget.cpp" line="126"/>
<location filename="../src/webview/tabwidget.cpp" line="128"/>
<source>Show list of opened tabs</source>
<translation>Zobraziť zoznam otvorených panelov</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="131"/>
<location filename="../src/webview/tabwidget.cpp" line="133"/>
<source>Add Tab</source>
<translation>Pridať panel</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="177"/>
<location filename="../src/webview/tabwidget.cpp" line="179"/>
<source>Loading...</source>
<translation>Nahrávam...</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="180"/>
<location filename="../src/webview/tabwidget.cpp" line="290"/>
<location filename="../src/webview/tabwidget.cpp" line="182"/>
<location filename="../src/webview/tabwidget.cpp" line="308"/>
<source>No Named Page</source>
<translation>Stránka bez mena</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="196"/>
<location filename="../src/webview/tabwidget.cpp" line="198"/>
<source>Actually You have %1 opened tabs</source>
<translation>Momentálne otvorených %1 panelov</translation>
</message>
<message>
<location filename="../src/webview/tabwidget.cpp" line="329"/>
<location filename="../src/webview/tabwidget.cpp" line="346"/>
<location filename="../src/webview/tabwidget.h" line="61"/>
<source>New tab</source>
<translation>Nový panel</translation>
@ -3264,92 +3264,88 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.</tran
<context>
<name>WebPage</name>
<message>
<location filename="../src/webview/webpage.cpp" line="88"/>
<source>Confirmation</source>
<translation>Potvrdenie</translation>
<location filename="../src/webview/webpage.cpp" line="100"/>
<source>To show this page, QupZilla must resend request which do it again
(like searching on making an shoping, witch has been already done.)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="89"/>
<source>To show this page, QupZilla must resend request witch do it again (like searching on making an shoping, witch has been already done.</source>
<translation>Na zobrazenie tejto stránky musí QuipZilla znovu odoslať požiadavok, ktorý zopakuje akciu (napr. hľadanie alebo potvrdenie objednávky), ktorá bola vykonaná skorej.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="155"/>
<location filename="../src/webview/webpage.cpp" line="166"/>
<source>Server refused the connection</source>
<translation>Server odmietol spojenie</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="158"/>
<location filename="../src/webview/webpage.cpp" line="169"/>
<source>Server closed the connection</source>
<translation>Server ukončil spojenie</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="161"/>
<location filename="../src/webview/webpage.cpp" line="172"/>
<source>Server not found</source>
<translation>Server nebol nájdený</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="164"/>
<location filename="../src/webview/webpage.cpp" line="175"/>
<source>Connection timed out</source>
<translation>Spojenie vypršalo</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="167"/>
<location filename="../src/webview/webpage.cpp" line="178"/>
<source>Untrusted connection</source>
<translation>Nedôveryhodné spojenie</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="177"/>
<location filename="../src/webview/webpage.cpp" line="188"/>
<source>AdBlocked Content</source>
<translation>AdBlock obsah</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="189"/>
<location filename="../src/webview/webpage.cpp" line="200"/>
<source>Blocked by rule &lt;i&gt;%1&lt;/i&gt;</source>
<translation>Blokováno pravidlom &lt;i&gt;%1&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="208"/>
<location filename="../src/webview/webpage.cpp" line="219"/>
<source>Content Access Denied</source>
<translation>Odmietnuť prístup k obsahu</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="213"/>
<location filename="../src/webview/webpage.cpp" line="224"/>
<source>Unknown error</source>
<translation>Neznáma chyba</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="218"/>
<location filename="../src/webview/webpage.cpp" line="229"/>
<source>Error code %1</source>
<translation>Chybový kód %1</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="229"/>
<location filename="../src/webview/webpage.cpp" line="240"/>
<source>Failed loading page</source>
<translation>Chyba pri načítaní stránky</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="248"/>
<location filename="../src/webview/webpage.cpp" line="259"/>
<source>QupZilla can&apos;t load page from %1.</source>
<translation>QupZilla nemôže načítať stránku zo serveru %1.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="249"/>
<location filename="../src/webview/webpage.cpp" line="260"/>
<source>Check the address for typing errors such as &lt;b&gt;ww.&lt;/b&gt;example.com instead of &lt;b&gt;www.&lt;/b&gt;example.com</source>
<translation>Skontrolujte, či je adresa napísaná správne a neobsahuje chyby ako &lt;b&gt;ww.&lt;/b&gt;server.sk miesto &lt;b&gt;www.&lt;/b&gt;server.sk</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="250"/>
<location filename="../src/webview/webpage.cpp" line="261"/>
<source>If you are unable to load any pages, check your computer&apos;s network connection.</source>
<translation>Pokiaľ sa vám nezobrazujú ani ostatné stránky, tak skontrolujte sieťové pripojenie svojho počítača.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="251"/>
<location filename="../src/webview/webpage.cpp" line="262"/>
<source>If your computer or network is protected by a firewall or proxy, make sure that QupZilla is permitted to access the Web.</source>
<translation>Pokiaľ je váš počítač chránený firewallom alebo proxy severom, tak skontrolujte či QupZilla prístup na internet.</translation>
</message>
<message>
<location filename="../src/webview/webpage.cpp" line="252"/>
<location filename="../src/webview/webpage.cpp" line="263"/>
<source>Try Again</source>
<translation>Skúsiť znova</translation>
</message>
@ -3357,141 +3353,149 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.</tran
<context>
<name>WebView</name>
<message>
<location filename="../src/webview/webview.cpp" line="141"/>
<location filename="../src/webview/webview.cpp" line="149"/>
<source>Loading...</source>
<translation>Načítavam...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="432"/>
<location filename="../src/webview/webview.cpp" line="446"/>
<source>Open link in new &amp;tab</source>
<translation>Otvoriť odkaz na &amp;novom panely</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="433"/>
<location filename="../src/webview/webview.cpp" line="447"/>
<source>Open link in new &amp;window</source>
<translation>Otvoriť odkaz v novom &amp;okne</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="435"/>
<location filename="../src/webview/webview.cpp" line="449"/>
<source>B&amp;ookmark link</source>
<translation>Pridať odkaz do &amp;záložiek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="436"/>
<location filename="../src/webview/webview.cpp" line="450"/>
<source>&amp;Save link as...</source>
<translation>&amp;Uložiť odkaz...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="438"/>
<location filename="../src/webview/webview.cpp" line="452"/>
<source>&amp;Copy link address</source>
<translation>&amp;Kopírovať adresu odkazu</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="447"/>
<location filename="../src/webview/webview.cpp" line="461"/>
<source>Show i&amp;mage</source>
<translation>Zobraziť o&amp;brázok</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="448"/>
<location filename="../src/webview/webview.cpp" line="462"/>
<source>Copy im&amp;age</source>
<translation>&amp;Kopírovať obrázok</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="449"/>
<location filename="../src/webview/webview.cpp" line="463"/>
<source>Copy image ad&amp;dress</source>
<translation>Kopírovať adres&amp;u obrázku</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="497"/>
<location filename="../src/webview/webview.cpp" line="511"/>
<source>S&amp;top</source>
<translation>&amp;Zastaviť</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="511"/>
<location filename="../src/webview/webview.cpp" line="525"/>
<source>Show info ab&amp;out site</source>
<translation>Zobraziť &amp;informácie o stránke</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="512"/>
<location filename="../src/webview/webview.cpp" line="526"/>
<source>Show Web &amp;Inspector</source>
<translation>Zobraziť Web inšpe&amp;ktora</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="521"/>
<location filename="../src/webview/webview.cpp" line="535"/>
<source>Search &quot;%1 ..&quot; on &amp;Google</source>
<translation>Hľadať &quot;%1 ..&quot; na &amp;Googli</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="451"/>
<location filename="../src/webview/webview.cpp" line="465"/>
<source>&amp;Save image as...</source>
<translation>&amp;Uložiť obrázok ako...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="86"/>
<location filename="../src/webview/webview.cpp" line="88"/>
<source>Failed loading page</source>
<translation>Chyba pri načítaní stránky</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="468"/>
<location filename="../src/webview/webview.cpp" line="482"/>
<source>&amp;Back</source>
<translation>&amp;Späť</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="476"/>
<location filename="../src/webview/webview.cpp" line="490"/>
<source>&amp;Forward</source>
<translation>&amp;Dopredu</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="490"/>
<location filename="../src/webview/webview.cpp" line="504"/>
<source>&amp;Reload</source>
<translation>&amp;Obnoviť</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="501"/>
<location filename="../src/webview/webview.cpp" line="515"/>
<source>Book&amp;mark page</source>
<translation>Pridať s&amp;tránku do záložiek</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="502"/>
<location filename="../src/webview/webview.cpp" line="516"/>
<source>&amp;Save page as...</source>
<translation>&amp;Uložiť stránku ako...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="505"/>
<location filename="../src/webview/webview.cpp" line="519"/>
<source>Select &amp;all</source>
<translation>Vybrať &amp;etko</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="510"/>
<location filename="../src/webview/webview.cpp" line="524"/>
<source>Show so&amp;urce code</source>
<translation>Zobraziť zdro&amp;jový kód</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="739"/>
<location filename="../src/webview/webview.cpp" line="754"/>
<source>No Named Page</source>
<translation>Stránka bez mena</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="364"/>
<location filename="../src/webview/webview.cpp" line="368"/>
<location filename="../src/webview/webview.cpp" line="544"/>
<location filename="../src/webview/webview.cpp" line="372"/>
<location filename="../src/webview/webview.cpp" line="376"/>
<location filename="../src/webview/webview.cpp" line="558"/>
<source>New tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="437"/>
<location filename="../src/webview/webview.cpp" line="451"/>
<source>Send link...</source>
<translation>Odoslať odkaz...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="452"/>
<location filename="../src/webview/webview.cpp" line="466"/>
<source>Send image...</source>
<translation>Odoslať obrázok...</translation>
</message>
<message>
<location filename="../src/webview/webview.cpp" line="503"/>
<location filename="../src/webview/webview.cpp" line="517"/>
<source>Send page...</source>
<translation>Odoslať stránku...</translation>
</message>
</context>
<context>
<name>jsAlert</name>
<message>
<location filename="../src/webview/jsalert.ui" line="132"/>
<source>Prevent this page from creating additional dialogs</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>