diff --git a/examples/webengine/quicknanobrowser/quicknanobrowser.pro b/examples/webengine/quicknanobrowser/quicknanobrowser.pro index 0ea2e60e219ce16cabbda922d6ea63c23026e1fc..b5a26cc683cfaf6ff0a11b152c08a33390bca8ab 100644 --- a/examples/webengine/quicknanobrowser/quicknanobrowser.pro +++ b/examples/webengine/quicknanobrowser/quicknanobrowser.pro @@ -1,8 +1,6 @@ TEMPLATE = app TARGET = quicknanobrowser -macx: CONFIG -= app_bundle - HEADERS = quickwindow.h \ util.h SOURCES = quickwindow.cpp \ diff --git a/examples/webengine/quicknanobrowser/quickwindow.qml b/examples/webengine/quicknanobrowser/quickwindow.qml index 183e41f4f16352e0940dbb84d709f48af336087a..ea637e44b2588bf788b9717a5138bb68f2972b81 100644 --- a/examples/webengine/quicknanobrowser/quickwindow.qml +++ b/examples/webengine/quicknanobrowser/quickwindow.qml @@ -40,7 +40,6 @@ import QtQuick 2.1 import QtWebEngine 1.0 -import QtWebEngine.experimental 1.0 import QtQuick.Controls 1.0 import QtQuick.Controls.Styles 1.0 import QtQuick.Layouts 1.0 @@ -52,27 +51,16 @@ ApplicationWindow { function load(url) { currentWebView.url = url } property Item currentWebView: tabs.currentIndex < tabs.count ? tabs.getTab(tabs.currentIndex).item : null - property bool isFullScreen: visibility == Window.FullScreen - onIsFullScreenChanged: { - // This is for the case where the system forces us to leave fullscreen. - if (currentWebView) - currentWebView.state = isFullScreen ? "FullScreen" : "" - } - height: 600 width: 800 visible: true title: currentWebView && currentWebView.title - // Make sure the Qt.WindowFullscreenButtonHint is set on Mac. - Component.onCompleted: flags = flags | Qt.WindowFullscreenButtonHint - // Create a styleItem to determine the platform. // When using style "mac", ToolButtons are not supposed to accept focus. StyleItem { id: styleItem } property bool platformIsMac: styleItem.style == "mac" - Action { id: focus shortcut: "Ctrl+L" @@ -106,14 +94,6 @@ ApplicationWindow { } } - Action { - shortcut: "Escape" - onTriggered: { - if (browserWindow.isFullScreen) - browserWindow.showNormal() - } - } - toolBar: ToolBar { id: navigationBar RowLayout { @@ -196,51 +176,7 @@ ApplicationWindow { id: tabComponent WebEngineView { id: webEngineView - function adoptHandle(viewHandle) { experimental.adoptHandle(viewHandle) } - focus: true - - states: [ - State { - name: "FullScreen" - PropertyChanges { - target: tabs - frameVisible: false - tabsVisible: false - } - PropertyChanges { - target: navigationBar - visible: false - } - } - ] - - experimental { - isFullScreen: webEngineView.state == "FullScreen" && browserWindow.isFullScreen - onFullScreenRequested: { - if (fullScreen) { - webEngineView.state = "FullScreen" - browserWindow.showFullScreen(); - } else { - webEngineView.state = "" - browserWindow.showNormal(); - } - } - - onNewViewRequested: { - if (request.popup) - print("Warning: Blocked a popup window.") - else if (request.destination == WebEngineView.NewViewInTab) { - var tab = tabs.createEmptyTab() - request.openIn(tab.item) - } else { - var component = Qt.createComponent("quickwindow.qml") - var window = component.createObject() - request.openIn(window.currentWebView) - } - } - extraContextMenuEntriesComponent: ContextMenuExtras {} - } } } } diff --git a/examples/webengine/quicknanobrowser/resources.qrc b/examples/webengine/quicknanobrowser/resources.qrc index 1befb4fd1c3d1952b21de87da993f516eb365b10..54920772660df359895ec98f6e405eeb4510ceea 100644 --- a/examples/webengine/quicknanobrowser/resources.qrc +++ b/examples/webengine/quicknanobrowser/resources.qrc @@ -1,7 +1,6 @@ <!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="/"> <file>quickwindow.qml</file> - <file>ContextMenuExtras.qml</file> </qresource> <qresource prefix="icons"> <file alias="go-next.png">icons/go-next.png</file> diff --git a/examples/webengine/quicknanobrowser/util.h b/examples/webengine/quicknanobrowser/util.h index ea0ae8b2eeabc6eb289bb8c881b736e444547e84..bad41d6a75023b5a69f6336552ad60cad504266d 100644 --- a/examples/webengine/quicknanobrowser/util.h +++ b/examples/webengine/quicknanobrowser/util.h @@ -59,7 +59,7 @@ QUrl startupUrl() QUrl ret; QStringList args(qApp->arguments()); args.takeFirst(); - Q_FOREACH(const QString& arg, args) { + Q_FOREACH (const QString& arg, args) { if (arg.startsWith(QLatin1Char('-'))) continue; ret = urlFromUserInput(arg); diff --git a/examples/webengine/quicknanobrowser/ContextMenuExtras.qml b/tests/quicktestbrowser/ContextMenuExtras.qml similarity index 100% rename from examples/webengine/quicknanobrowser/ContextMenuExtras.qml rename to tests/quicktestbrowser/ContextMenuExtras.qml diff --git a/tests/quicktestbrowser/main.cpp b/tests/quicktestbrowser/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6c2f91de6dd9397800213f7e725429cc692bbc96 --- /dev/null +++ b/tests/quicktestbrowser/main.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "quickwindow.h" +#ifndef QT_NO_WIDGETS +#include <QtWidgets/QApplication> +typedef QApplication Application; +#else +#include <QtGui/QGuiApplication> +typedef QGuiApplication Application; +#endif +#include <QtQuick/private/qsgcontext_p.h> + +int main(int argc, char **argv) +{ + Application app(argc, argv); + + // This is currently needed by all QtWebEngine application using the HW accelerated QQuickWebView. + // It enables sharing between the QOpenGLContext of all QQuickWindows of the application. + // We have to do so until we expose a public API for it, or chose enable it by default in Qt 5.3.0. + QOpenGLContext shareContext; + shareContext.create(); + QSGContext::setSharedOpenGLContext(&shareContext); + + ApplicationEngine appEngine; + + return app.exec(); +} diff --git a/tests/quicktestbrowser/quicktestbrowser.pro b/tests/quicktestbrowser/quicktestbrowser.pro new file mode 100644 index 0000000000000000000000000000000000000000..83baa73f16a4f55fe28c47ce6c70474430d45da5 --- /dev/null +++ b/tests/quicktestbrowser/quicktestbrowser.pro @@ -0,0 +1,21 @@ +TEMPLATE = app +TARGET = quicktestbrowser + +macx: CONFIG -= app_bundle + +HEADERS = quickwindow.h \ + util.h +SOURCES = quickwindow.cpp \ + main.cpp + +OTHER_FILES += ContextMenuExtras.qml \ + quickwindow.qml + +RESOURCES += resources.qrc + +QT += qml quick +QT_PRIVATE += quick-private gui-private core-private + +qtHaveModule(widgets) { + QT += widgets # QApplication is required to get native styling with QtQuickControls +} diff --git a/tests/quicktestbrowser/quickwindow.cpp b/tests/quicktestbrowser/quickwindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ec7b6f94a9448478ba53b9a3ce0d751930e172a4 --- /dev/null +++ b/tests/quicktestbrowser/quickwindow.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "quickwindow.h" + +#include "util.h" + +#include <QFileInfo> +#include <QObject> +#include <QQmlContext> +#include <QQmlEngine> +#include <QUrl> + +class Utils : public QObject { + Q_OBJECT +public: + Utils(QObject* parent = 0) : QObject(parent) { } + Q_INVOKABLE static QUrl fromUserInput(const QString& userInput) { return urlFromUserInput(userInput); } +}; + +#include "quickwindow.moc" + +ApplicationEngine::ApplicationEngine() +{ + rootContext()->setContextProperty("utils", new Utils(this)); + load(QUrl("qrc:/quickwindow.qml")); + QMetaObject::invokeMethod(rootObjects().first(), "load", Q_ARG(QVariant, startupUrl())); +} diff --git a/tests/quicktestbrowser/quickwindow.h b/tests/quicktestbrowser/quickwindow.h new file mode 100644 index 0000000000000000000000000000000000000000..ed25a23b8bac16d96d60f0e78671cd24360f4af0 --- /dev/null +++ b/tests/quicktestbrowser/quickwindow.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUICKWINDOW_H +#define QUICKWINDOW_H + +#include <QQmlApplicationEngine> + +class QWebEngineView; + +class ApplicationEngine : public QQmlApplicationEngine { + Q_OBJECT +public: + ApplicationEngine(); +}; + +#endif // QUICKWINDOW_H diff --git a/tests/quicktestbrowser/quickwindow.qml b/tests/quicktestbrowser/quickwindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..183e41f4f16352e0940dbb84d709f48af336087a --- /dev/null +++ b/tests/quicktestbrowser/quickwindow.qml @@ -0,0 +1,247 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * 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. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "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 THE COPYRIGHT +** OWNER 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." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 +import QtWebEngine 1.0 +import QtWebEngine.experimental 1.0 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 +import QtQuick.Layouts 1.0 +import QtQuick.Window 2.1 +import QtQuick.Controls.Private 1.0 + +ApplicationWindow { + id: browserWindow + function load(url) { currentWebView.url = url } + property Item currentWebView: tabs.currentIndex < tabs.count ? tabs.getTab(tabs.currentIndex).item : null + + property bool isFullScreen: visibility == Window.FullScreen + onIsFullScreenChanged: { + // This is for the case where the system forces us to leave fullscreen. + if (currentWebView) + currentWebView.state = isFullScreen ? "FullScreen" : "" + } + + height: 600 + width: 800 + visible: true + title: currentWebView && currentWebView.title + + // Make sure the Qt.WindowFullscreenButtonHint is set on Mac. + Component.onCompleted: flags = flags | Qt.WindowFullscreenButtonHint + + // Create a styleItem to determine the platform. + // When using style "mac", ToolButtons are not supposed to accept focus. + StyleItem { id: styleItem } + property bool platformIsMac: styleItem.style == "mac" + + + Action { + id: focus + shortcut: "Ctrl+L" + onTriggered: { + addressBar.forceActiveFocus(); + addressBar.selectAll(); + } + } + Action { + shortcut: "Ctrl+R" + onTriggered: { + if (currentWebView) + currentWebView.reload() + } + } + Action { + shortcut: "Ctrl+T" + onTriggered: { + tabs.createEmptyTab() + addressBar.forceActiveFocus(); + addressBar.selectAll(); + } + } + Action { + shortcut: "Ctrl+W" + onTriggered: { + if (tabs.count == 1) + browserWindow.close() + else + tabs.removeTab(tabs.currentIndex) + } + } + + Action { + shortcut: "Escape" + onTriggered: { + if (browserWindow.isFullScreen) + browserWindow.showNormal() + } + } + + toolBar: ToolBar { + id: navigationBar + RowLayout { + anchors.fill: parent; + ToolButton { + id: backButton + iconSource: "icons/go-previous.png" + onClicked: currentWebView.goBack() + enabled: currentWebView && currentWebView.canGoBack + activeFocusOnTab: !browserWindow.platformIsMac + } + ToolButton { + id: forwardButton + iconSource: "icons/go-next.png" + onClicked: currentWebView.goForward() + enabled: currentWebView && currentWebView.canGoForward + activeFocusOnTab: !browserWindow.platformIsMac + } + ToolButton { + id: reloadButton + iconSource: currentWebView && currentWebView.loading ? "icons/process-stop.png" : "icons/view-refresh.png" + onClicked: currentWebView && currentWebView.loading ? currentWebView.stop() : currentWebView.reload() + activeFocusOnTab: !browserWindow.platformIsMac + } + TextField { + id: addressBar + Image { + anchors.verticalCenter: addressBar.verticalCenter; + x: 5 + z: 2 + id: faviconImage + width: 16; height: 16 + source: currentWebView && currentWebView.icon + } + style: TextFieldStyle { + padding { + left: 26; + } + } + focus: true + Layout.fillWidth: true + text: currentWebView && currentWebView.url + onAccepted: currentWebView.url = utils.fromUserInput(text) + } + } + ProgressBar { + id: progressBar + height: 3 + anchors { + left: parent.left + top: parent.bottom + right: parent.right + leftMargin: -parent.leftMargin + rightMargin: -parent.rightMargin + } + style: ProgressBarStyle { + background: Item {} + } + z: -2; + minimumValue: 0 + maximumValue: 100 + value: (currentWebView && currentWebView.loadProgress < 100) ? currentWebView.loadProgress : 0 + } + } + + TabView { + id: tabs + function createEmptyTab() { + var tab = addTab("", tabComponent) + // We must do this first to make sure that tab.active gets set so that tab.item gets instantiated immediately. + tabs.currentIndex = tabs.count - 1 + tab.title = Qt.binding(function() { return tab.item.title }) + return tab + } + + anchors.fill: parent + Component.onCompleted: createEmptyTab() + + Component { + id: tabComponent + WebEngineView { + id: webEngineView + function adoptHandle(viewHandle) { experimental.adoptHandle(viewHandle) } + + focus: true + + states: [ + State { + name: "FullScreen" + PropertyChanges { + target: tabs + frameVisible: false + tabsVisible: false + } + PropertyChanges { + target: navigationBar + visible: false + } + } + ] + + experimental { + isFullScreen: webEngineView.state == "FullScreen" && browserWindow.isFullScreen + onFullScreenRequested: { + if (fullScreen) { + webEngineView.state = "FullScreen" + browserWindow.showFullScreen(); + } else { + webEngineView.state = "" + browserWindow.showNormal(); + } + } + + onNewViewRequested: { + if (request.popup) + print("Warning: Blocked a popup window.") + else if (request.destination == WebEngineView.NewViewInTab) { + var tab = tabs.createEmptyTab() + request.openIn(tab.item) + } else { + var component = Qt.createComponent("quickwindow.qml") + var window = component.createObject() + request.openIn(window.currentWebView) + } + } + extraContextMenuEntriesComponent: ContextMenuExtras {} + } + } + } + } +} diff --git a/tests/quicktestbrowser/resources.qrc b/tests/quicktestbrowser/resources.qrc new file mode 100644 index 0000000000000000000000000000000000000000..166d2bc1e0dd05ef6e8449e8dea3231d6395f20c --- /dev/null +++ b/tests/quicktestbrowser/resources.qrc @@ -0,0 +1,13 @@ +<!DOCTYPE RCC><RCC version="1.0"> + <qresource prefix="/"> + <file>quickwindow.qml</file> + <file>ContextMenuExtras.qml</file> + </qresource> + <qresource prefix="icons"> + <!-- To the risk of this breaking more often, do not duplicate the resources since this application won't be deployed --> + <file alias="go-next.png">../../examples/webengine/quicknanobrowser/icons/go-next.png</file> + <file alias="go-previous.png">../../examples/webengine/quicknanobrowser/icons/go-previous.png</file> + <file alias="process-stop.png">../../examples/webengine/quicknanobrowser/icons/process-stop.png</file> + <file alias="view-refresh.png">../../examples/webengine/quicknanobrowser/icons/view-refresh.png</file> + </qresource> +</RCC> diff --git a/tests/quicktestbrowser/util.h b/tests/quicktestbrowser/util.h new file mode 100644 index 0000000000000000000000000000000000000000..bad41d6a75023b5a69f6336552ad60cad504266d --- /dev/null +++ b/tests/quicktestbrowser/util.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef UTIL_H +#define UTIL_H + +#include <QtCore/QCoreApplication> +#include <QtCore/QFileInfo> +#include <QtCore/QUrl> +#include <QtCore/QStringList> + +QUrl urlFromUserInput(const QString& userInput) +{ + QFileInfo fileInfo(userInput); + if (fileInfo.exists()) + return QUrl(fileInfo.absoluteFilePath()); + return QUrl::fromUserInput(userInput); +} + +QUrl startupUrl() +{ + QUrl ret; + QStringList args(qApp->arguments()); + args.takeFirst(); + Q_FOREACH (const QString& arg, args) { + if (arg.startsWith(QLatin1Char('-'))) + continue; + ret = urlFromUserInput(arg); + if (ret.isValid()) + return ret; + } + return QUrl(QStringLiteral("http://qt-project.org/")); +} + + +#endif // UTIL_H diff --git a/tests/tests.pro b/tests/tests.pro index 42fe80815f8b2715e95d47d806f79d47b7ac8368..2144a15e3d311ce74bf50d485d1b06f2c8e1849e 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -1,3 +1,3 @@ TEMPLATE = subdirs -SUBDIRS += auto +SUBDIRS += auto quicktestbrowser