summaryrefslogtreecommitdiff
path: root/Tools/MiniBrowser
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
commitad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (patch)
treeb34b0daceb7c8e7fdde4b4ec43650ab7caadb0a9 /Tools/MiniBrowser
parent03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (diff)
downloadqtwebkit-ad0d549d4cc13433f77c1ac8f0ab379c83d93f28.tar.gz
Imported WebKit commit bb52bf3c0119e8a128cd93afe5572413a8617de9 (http://svn.webkit.org/repository/webkit/trunk@108790)
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r--Tools/MiniBrowser/Configurations/Base.xcconfig5
-rw-r--r--Tools/MiniBrowser/gtk/BrowserWindow.c75
-rw-r--r--Tools/MiniBrowser/gtk/GNUmakefile.am2
-rw-r--r--Tools/MiniBrowser/mac/BrowserWindowController.m3
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.pro2
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.qrc2
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.cpp30
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowserApplication.h5
-rw-r--r--Tools/MiniBrowser/qt/qml/AuthenticationDialog.qml70
-rw-r--r--Tools/MiniBrowser/qt/qml/BrowserWindow.qml2
-rw-r--r--Tools/MiniBrowser/qt/qml/DialogLineInput.qml1
-rw-r--r--Tools/MiniBrowser/qt/qml/ProxyAuthenticationDialog.qml35
12 files changed, 211 insertions, 21 deletions
diff --git a/Tools/MiniBrowser/Configurations/Base.xcconfig b/Tools/MiniBrowser/Configurations/Base.xcconfig
index 7c3e8afab..72079287f 100644
--- a/Tools/MiniBrowser/Configurations/Base.xcconfig
+++ b/Tools/MiniBrowser/Configurations/Base.xcconfig
@@ -36,6 +36,11 @@ WARNING_CFLAGS = -Wall -W -Wno-unused-parameter
LINKER_DISPLAYS_MANGLED_NAMES = YES;
VALID_ARCHS = i386 x86_64;
+CLANG_CXX_LIBRARY = $(CLANG_CXX_LIBRARY_$(TARGET_MAC_OS_X_VERSION_MAJOR));
+CLANG_CXX_LIBRARY_1060 = libstdc++;
+CLANG_CXX_LIBRARY_1070 = libc++;
+CLANG_CXX_LIBRARY_1080 = libc++;
+CLANG_CXX_LIBRARY_1090 = libc++;
REAL_PLATFORM_NAME = $(REAL_PLATFORM_NAME_$(PLATFORM_NAME));
REAL_PLATFORM_NAME_ = $(REAL_PLATFORM_NAME_macosx);
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c
index 4d6bde488..74518444c 100644
--- a/Tools/MiniBrowser/gtk/BrowserWindow.c
+++ b/Tools/MiniBrowser/gtk/BrowserWindow.c
@@ -42,6 +42,8 @@ struct _BrowserWindow {
GtkWidget *uriEntry;
GtkWidget *backItem;
GtkWidget *forwardItem;
+ GtkWidget *zoomInItem;
+ GtkWidget *zoomOutItem;
GtkWidget *statusLabel;
GtkWidget *settingsDialog;
WebKitWebView *webView;
@@ -53,6 +55,9 @@ struct _BrowserWindowClass {
};
static const char *defaultWindowTitle = "WebKitGTK+ MiniBrwoser";
+static const gdouble minimumZoomLevel = 0.5;
+static const gdouble maximumZoomLevel = 3;
+static const gdouble zoomStep = 1.2;
static gint windowCount = 0;
G_DEFINE_TYPE(BrowserWindow, browser_window, GTK_TYPE_WINDOW)
@@ -75,6 +80,11 @@ static void activateUriEntryCallback(BrowserWindow *window)
webkit_web_view_load_uri(window->webView, gtk_entry_get_text(GTK_ENTRY(window->uriEntry)));
}
+static void reloadCallback(BrowserWindow *window)
+{
+ webkit_web_view_reload(window->webView);
+}
+
static void goBackCallback(BrowserWindow *window)
{
webkit_web_view_go_back(window->webView);
@@ -162,9 +172,6 @@ static GtkWidget *browserWindowCreateBackForwardMenu(BrowserWindow *window, GLis
gtk_widget_show(menuItem);
}
- /* FIXME: This shoulnd't be necessary when didMouseMoveOverElement
- * is implemented in WebKit2 GTK+ API.
- */
g_signal_connect(menu, "hide", G_CALLBACK(resetStatusText), window);
return menu;
@@ -255,6 +262,50 @@ static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision
return TRUE;
}
+static void webViewMouseTargetChanged(WebKitWebView *webView, WebKitHitTestResult *hitTestResult, guint mouseModifiers, BrowserWindow *window)
+{
+ if (!webkit_hit_test_result_context_is_link(hitTestResult)) {
+ browserWindowSetStatusText(window, NULL);
+ return;
+ }
+ browserWindowSetStatusText(window, webkit_hit_test_result_get_link_uri(hitTestResult));
+}
+
+static gboolean browserWindowCanZoomIn(BrowserWindow *window)
+{
+ gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) * zoomStep;
+ return zoomLevel < maximumZoomLevel;
+}
+
+static gboolean browserWindowCanZoomOut(BrowserWindow *window)
+{
+ gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) / zoomStep;
+ return zoomLevel > minimumZoomLevel;
+}
+
+static void browserWindowUpdateZoomActions(BrowserWindow *window)
+{
+ gtk_widget_set_sensitive(window->zoomInItem, browserWindowCanZoomIn(window));
+ gtk_widget_set_sensitive(window->zoomOutItem, browserWindowCanZoomOut(window));
+}
+
+static void webViewZoomLevelChanged(GObject *object, GParamSpec *paramSpec, BrowserWindow *window)
+{
+ browserWindowUpdateZoomActions(window);
+}
+
+static void zoomInCallback(BrowserWindow *window)
+{
+ gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) * zoomStep;
+ webkit_web_view_set_zoom_level(window->webView, zoomLevel);
+}
+
+static void zoomOutCallback(BrowserWindow *window)
+{
+ gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) / zoomStep;
+ webkit_web_view_set_zoom_level(window->webView, zoomLevel);
+}
+
static void browserWindowFinalize(GObject *gObject)
{
G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject);
@@ -323,6 +374,18 @@ static void browser_window_init(BrowserWindow *window)
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
gtk_widget_show(GTK_WIDGET(item));
+ item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
+ window->zoomOutItem = GTK_WIDGET(item);
+ g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomOutCallback), window);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+ gtk_widget_show(GTK_WIDGET(item));
+
+ item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
+ window->zoomInItem = GTK_WIDGET(item);
+ g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomInCallback), window);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
+ gtk_widget_show(GTK_WIDGET(item));
+
item = gtk_tool_item_new();
gtk_tool_item_set_expand(item, TRUE);
gtk_container_add(GTK_CONTAINER(item), window->uriEntry);
@@ -331,7 +394,7 @@ static void browser_window_init(BrowserWindow *window)
gtk_widget_show(GTK_WIDGET(item));
item = gtk_tool_button_new_from_stock(GTK_STOCK_OK);
- g_signal_connect_swapped(item, "clicked", G_CALLBACK(activateUriEntryCallback), (gpointer)window);
+ g_signal_connect_swapped(item, "clicked", G_CALLBACK(reloadCallback), window);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
gtk_widget_show(GTK_WIDGET(item));
@@ -348,12 +411,16 @@ static void browserWindowConstructed(GObject *gObject)
{
BrowserWindow *window = BROWSER_WINDOW(gObject);
+ browserWindowUpdateZoomActions(window);
+
g_signal_connect(window->webView, "notify::uri", G_CALLBACK(webViewURIChanged), window);
g_signal_connect(window->webView, "notify::estimated-load-progress", G_CALLBACK(webViewLoadProgressChanged), window);
g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window);
g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window);
g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window);
g_signal_connect(window->webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window);
+ g_signal_connect(window->webView, "mouse-target-changed", G_CALLBACK(webViewMouseTargetChanged), window);
+ g_signal_connect(window->webView, "notify::zoom-level", G_CALLBACK(webViewZoomLevelChanged), window);
WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView);
g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window);
diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am
index 2a020f6e5..9e42e194f 100644
--- a/Tools/MiniBrowser/gtk/GNUmakefile.am
+++ b/Tools/MiniBrowser/gtk/GNUmakefile.am
@@ -1,5 +1,7 @@
+if ENABLE_WEBKIT2
noinst_PROGRAMS += \
Programs/MiniBrowser
+endif
Programs_MiniBrowser_CPPFLAGS = \
-I$(srcdir)/Source \
diff --git a/Tools/MiniBrowser/mac/BrowserWindowController.m b/Tools/MiniBrowser/mac/BrowserWindowController.m
index b6a30f17b..5dbd5a7dd 100644
--- a/Tools/MiniBrowser/mac/BrowserWindowController.m
+++ b/Tools/MiniBrowser/mac/BrowserWindowController.m
@@ -606,9 +606,10 @@ static void runOpenPanel(WKPageRef page, WKFrameRef frame, WKOpenPanelParameters
processDidExit,
didChangeBackForwardList,
0, // shouldGoToBackForwardItem
- 0, // didFailToInitializePlugin
+ 0, // didFailToInitializePlugin
didDetectXSSForFrame,
0, // didNewFirstVisuallyNonEmptyLayout
+ 0, // willGoToBackForwardListItem
};
WKPageSetPageLoaderClient(_webView.pageRef, &loadClient);
diff --git a/Tools/MiniBrowser/qt/MiniBrowser.pro b/Tools/MiniBrowser/qt/MiniBrowser.pro
index 32389f2e8..f2290c86b 100644
--- a/Tools/MiniBrowser/qt/MiniBrowser.pro
+++ b/Tools/MiniBrowser/qt/MiniBrowser.pro
@@ -24,7 +24,7 @@ DESTDIR = $${ROOT_BUILD_DIR}/bin
CONFIG += qtwebkit qtwebkit-private
-QT += network declarative widgets quick
+QT += network declarative quick
macx: QT += xml
RESOURCES += MiniBrowser.qrc
diff --git a/Tools/MiniBrowser/qt/MiniBrowser.qrc b/Tools/MiniBrowser/qt/MiniBrowser.qrc
index d71d41fc5..272350e7d 100644
--- a/Tools/MiniBrowser/qt/MiniBrowser.qrc
+++ b/Tools/MiniBrowser/qt/MiniBrowser.qrc
@@ -9,6 +9,7 @@
<file>icons/touch.png</file>
<file>icons/touchpoint.png</file>
<file>qml/AlertDialog.qml</file>
+ <file>qml/AuthenticationDialog.qml</file>
<file>qml/BrowserWindow.qml</file>
<file>qml/ConfirmDialog.qml</file>
<file>qml/Dialog.qml</file>
@@ -17,6 +18,7 @@
<file>qml/ItemSelector.qml</file>
<file>qml/MockTouchPoint.qml</file>
<file>qml/PromptDialog.qml</file>
+ <file>qml/ProxyAuthenticationDialog.qml</file>
<file>qml/ViewportInfoItem.qml</file>
<file>useragentlist.txt</file>
<file>icons/favicon.png</file>
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
index 57a55928b..2ec95adbd 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp
@@ -35,7 +35,6 @@
#include <QEvent>
#include <QMouseEvent>
#include <QTouchEvent>
-#include <QApplication>
static inline bool isTouchEvent(const QEvent* event)
{
@@ -63,13 +62,14 @@ static inline bool isMouseEvent(const QEvent* event)
}
MiniBrowserApplication::MiniBrowserApplication(int& argc, char** argv)
- : QApplication(argc, argv)
+ : QGuiApplication(argc, argv)
, m_realTouchEventReceived(false)
, m_pendingFakeTouchEventCount(0)
, m_isRobotized(false)
, m_robotTimeoutSeconds(0)
, m_robotExtraTimeSeconds(0)
, m_windowOptions(this)
+ , m_holdingControl(false)
{
setOrganizationName("Nokia");
setApplicationName("QtMiniBrowser");
@@ -80,23 +80,28 @@ MiniBrowserApplication::MiniBrowserApplication(int& argc, char** argv)
bool MiniBrowserApplication::notify(QObject* target, QEvent* event)
{
+ if(QInputEvent* ie = static_cast<QInputEvent*>(event))
+ m_holdingControl = ie->modifiers().testFlag(Qt::ControlModifier);
+ else
+ m_holdingControl = false;
+
// We try to be smart, if we received real touch event, we are probably on a device
// with touch screen, and we should not have touch mocking.
if (!event->spontaneous() || m_realTouchEventReceived || !m_windowOptions.touchMockingEnabled())
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
if (isTouchEvent(event) && static_cast<QTouchEvent*>(event)->deviceType() == QTouchEvent::TouchScreen) {
if (m_pendingFakeTouchEventCount)
--m_pendingFakeTouchEventCount;
else
m_realTouchEventReceived = true;
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
}
BrowserWindow* browserWindow = qobject_cast<BrowserWindow*>(target);
if (!browserWindow)
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
// In QML events are propagated through parents. But since the WebView
// may consume key events, a shortcut might never reach the top QQuickItem.
@@ -139,16 +144,16 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event)
break;
case QEvent::MouseMove:
if (!mouseEvent->buttons() || !m_touchPoints.contains(mouseEvent->buttons()))
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
touchPoint.id = mouseEvent->buttons();
touchPoint.state = Qt::TouchPointMoved;
break;
case QEvent::MouseButtonRelease:
touchPoint.state = Qt::TouchPointReleased;
touchPoint.id = mouseEvent->button();
- if (mouseEvent->modifiers().testFlag(Qt::ControlModifier)) {
+ if (m_holdingControl) {
m_heldTouchPoints.insert(touchPoint.id);
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
}
break;
default:
@@ -167,7 +172,7 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event)
sendTouchEvent(browserWindow);
}
- return QApplication::notify(target, event);
+ return QGuiApplication::notify(target, event);
}
void MiniBrowserApplication::sendTouchEvent(BrowserWindow* browserWindow)
@@ -182,14 +187,13 @@ void MiniBrowserApplication::sendTouchEvent(BrowserWindow* browserWindow)
m_pendingFakeTouchEventCount++;
QWindowSystemInterface::handleTouchEvent(browserWindow, device, m_touchPoints.values());
- bool holdingControl = QApplication::keyboardModifiers().testFlag(Qt::ControlModifier);
if (QQuickWebViewExperimental::flickableViewportEnabled())
- browserWindow->updateVisualMockTouchPoints(holdingControl ? m_touchPoints.values() : QList<QWindowSystemInterface::TouchPoint>());
+ browserWindow->updateVisualMockTouchPoints(m_holdingControl ? m_touchPoints.values() : QList<QWindowSystemInterface::TouchPoint>());
// Get rid of touch-points that are no longer valid
foreach (const QWindowSystemInterface::TouchPoint& touchPoint, m_touchPoints) {
- if (touchPoint.state == Qt::TouchPointReleased)
- m_touchPoints.remove(touchPoint.id);
+ if (touchPoint.state == Qt::TouchPointReleased)
+ m_touchPoints.remove(touchPoint.id);
}
}
diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.h b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
index b5565855e..0441fadd7 100644
--- a/Tools/MiniBrowser/qt/MiniBrowserApplication.h
+++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.h
@@ -33,7 +33,7 @@
#include <QObject>
#include <QStringList>
#include <QtDeclarative>
-#include <QtWidgets/QApplication>
+#include <QGuiApplication>
#include <QTouchEvent>
#include <QUrl>
#include "qwindowsysteminterface_qpa.h"
@@ -84,7 +84,7 @@ private:
QSize m_windowSize;
};
-class MiniBrowserApplication : public QApplication {
+class MiniBrowserApplication : public QGuiApplication {
Q_OBJECT
public:
@@ -113,6 +113,7 @@ private:
QSet<int> m_heldTouchPoints;
WindowOptions m_windowOptions;
+ bool m_holdingControl;
};
QML_DECLARE_TYPE(WindowOptions);
diff --git a/Tools/MiniBrowser/qt/qml/AuthenticationDialog.qml b/Tools/MiniBrowser/qt/qml/AuthenticationDialog.qml
new file mode 100644
index 000000000..1d88d3f15
--- /dev/null
+++ b/Tools/MiniBrowser/qt/qml/AuthenticationDialog.qml
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import QtQuick 2.0
+
+Dialog {
+ id: dialog
+
+ title: "Authentication required."
+ message: model.hostname + " requires authentication."
+
+ height: 250
+
+ DialogLineInput {
+ id: input
+ width: dialog.width - 30
+ text: model.prefilledUsername
+
+ onAccepted: model.accept(input.text, passwordInput.text)
+ }
+
+ DialogLineInput {
+ id: passwordInput
+ text: ""
+ width: dialog.width - 30
+ echoMode: TextInput.PasswordEchoOnEdit
+
+ onAccepted: model.accept(input.text, passwordInput.text)
+ }
+
+ Row {
+ id: buttonRow
+ spacing: 5
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ DialogButton {
+ text: "OK"
+ onClicked: model.accept(input.text, passwordInput.text)
+ }
+
+ DialogButton {
+ text: "Cancel"
+ onClicked: model.reject()
+ }
+ }
+}
diff --git a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
index 65999dd32..3268d03f4 100644
--- a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
+++ b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml
@@ -310,6 +310,8 @@ Rectangle {
experimental.alertDialog: AlertDialog { }
experimental.confirmDialog: ConfirmDialog { }
experimental.promptDialog: PromptDialog { }
+ experimental.authenticationDialog: AuthenticationDialog { }
+ experimental.proxyAuthenticationDialog: ProxyAuthenticationDialog { }
}
ViewportInfoItem {
diff --git a/Tools/MiniBrowser/qt/qml/DialogLineInput.qml b/Tools/MiniBrowser/qt/qml/DialogLineInput.qml
index 1c85ff962..84faa5510 100644
--- a/Tools/MiniBrowser/qt/qml/DialogLineInput.qml
+++ b/Tools/MiniBrowser/qt/qml/DialogLineInput.qml
@@ -31,6 +31,7 @@ Rectangle {
id: dialogLineInput
property alias text: input.text
+ property alias echoMode: input.echoMode
signal accepted()
height: 20
diff --git a/Tools/MiniBrowser/qt/qml/ProxyAuthenticationDialog.qml b/Tools/MiniBrowser/qt/qml/ProxyAuthenticationDialog.qml
new file mode 100644
index 000000000..ae27f2653
--- /dev/null
+++ b/Tools/MiniBrowser/qt/qml/ProxyAuthenticationDialog.qml
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import QtQuick 2.0
+
+AuthenticationDialog {
+ id: dialog
+
+ title: "Proxy authentication required."
+ message: model.hostname + ":" + model.port + " requires authentication."
+}