summaryrefslogtreecommitdiffstats
path: root/src/browserwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/browserwindow.cpp')
-rw-r--r--src/browserwindow.cpp138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/browserwindow.cpp b/src/browserwindow.cpp
new file mode 100644
index 0000000..5823014
--- /dev/null
+++ b/src/browserwindow.cpp
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtBrowser project.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** 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 The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPLv2 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+**
+** 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 "browserwindow.h"
+#include "utils.h"
+
+#include <QList>
+#include <QQmlContext>
+#include <QQmlEngine>
+#include <QQuickItem>
+#include <QRectF>
+#include <QUrl>
+#include <QVariant>
+
+namespace {
+
+static QUrl startupUrl()
+{
+ QUrl ret;
+ QStringList args(qApp->arguments());
+ args.takeFirst();
+ Q_FOREACH (const QString& arg, args) {
+ if (arg.startsWith(QLatin1Char('-')))
+ continue;
+ ret = Utils::fromUserInput(arg);
+ if (ret.isValid())
+ return ret;
+ }
+ return QUrl(QStringLiteral("http://qt.io/"));
+}
+
+}
+
+void BrowserWindow::ensureProfileInstance()
+{
+ if (m_lazyProfileInstance)
+ return;
+ QQmlComponent *component = new QQmlComponent(engine(), this);
+
+ component->setData(
+ QByteArrayLiteral("import QtQuick 2.0\n"
+ "import QtWebEngine 1.1\n"
+ "WebEngineProfile {\n"
+ " storageName: \"YABProfile\"\n"
+ "}")
+ , QUrl());
+ m_lazyProfileInstance = component->create(engine()->rootContext());
+ Q_ASSERT(m_lazyProfileInstance);
+ QQmlEngine::setObjectOwnership(m_lazyProfileInstance, QQmlEngine::JavaScriptOwnership);
+}
+
+QObject *BrowserWindow::defaultProfile()
+{
+ ensureProfileInstance();
+ return m_lazyProfileInstance;
+}
+
+BrowserWindow::BrowserWindow(QWindow *)
+ : m_lazyProfileInstance(0)
+{
+ setTitle("Yet Another Browser");
+ setFlags(Qt::Window | Qt::WindowTitleHint);
+ setResizeMode(QQuickView::SizeRootObjectToView);
+ setColor(Qt::black);
+
+ engine()->rootContext()->setContextProperty("engine", new Utils(this));
+ setSource(QUrl("qrc:///qml/BrowserWindow.qml"));
+}
+
+BrowserWindow::~BrowserWindow()
+{
+}
+
+void BrowserWindow::updateVisualMockTouchPoints(const QList<QTouchEvent::TouchPoint>& touchPoints)
+{
+ if (touchPoints.isEmpty()) {
+ // Hide all touch indicator items.
+ foreach (QQuickItem* item, m_activeMockComponents.values())
+ item->setProperty("pressed", false);
+
+ return;
+ }
+
+ foreach (const QTouchEvent::TouchPoint& touchPoint, touchPoints) {
+ QQuickItem* mockTouchPointItem = m_activeMockComponents.value(touchPoint.id());
+
+ if (!mockTouchPointItem) {
+ QQmlComponent touchMockPointComponent(engine(), QUrl("qrc:///qml/MockTouchPoint.qml"));
+ mockTouchPointItem = qobject_cast<QQuickItem*>(touchMockPointComponent.create());
+ Q_ASSERT(mockTouchPointItem);
+ m_activeMockComponents.insert(touchPoint.id(), mockTouchPointItem);
+ mockTouchPointItem->setProperty("pointId", QVariant(touchPoint.id()));
+ mockTouchPointItem->setParent(rootObject());
+ mockTouchPointItem->setParentItem(rootObject());
+ }
+
+ QRectF touchRect = touchPoint.rect();
+ mockTouchPointItem->setX(touchRect.center().x());
+ mockTouchPointItem->setY(touchRect.center().y());
+ mockTouchPointItem->setWidth(touchRect.width());
+ mockTouchPointItem->setHeight(touchRect.height());
+ mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state() != Qt::TouchPointReleased));
+ }
+}