summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/ios/ios.pro6
-rw-r--r--src/plugins/platforms/ios/qiosintegration.h4
-rw-r--r--src/plugins/platforms/ios/qiosintegration.mm10
-rw-r--r--src/plugins/platforms/ios/qiosservices.h57
-rw-r--r--src/plugins/platforms/ios/qiosservices.mm69
5 files changed, 144 insertions, 2 deletions
diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro
index 9b53974998..72716e6a4c 100644
--- a/src/plugins/platforms/ios/ios.pro
+++ b/src/plugins/platforms/ios/ios.pro
@@ -20,7 +20,8 @@ OBJECTIVE_SOURCES = \
qioscontext.mm \
qiosinputcontext.mm \
qiostheme.mm \
- qiosglobal.mm
+ qiosglobal.mm \
+ qiosservices.mm
HEADERS = \
qiosintegration.h \
@@ -34,6 +35,7 @@ HEADERS = \
qioscontext.h \
qiosinputcontext.h \
qiostheme.h \
- qiosglobal.h
+ qiosglobal.h \
+ qiosservices.h
#HEADERS = qiossoftwareinputhandler.h
diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h
index af99dc4b93..c655d8d3bf 100644
--- a/src/plugins/platforms/ios/qiosintegration.h
+++ b/src/plugins/platforms/ios/qiosintegration.h
@@ -50,6 +50,8 @@
QT_BEGIN_NAMESPACE
+class QIOSServices;
+
class QIOSIntegration : public QPlatformIntegration, public QPlatformNativeInterface
{
public:
@@ -65,6 +67,7 @@ public:
QPlatformFontDatabase *fontDatabase() const;
QPlatformInputContext *inputContext() const;
+ QPlatformServices *services() const Q_DECL_OVERRIDE;
QVariant styleHint(StyleHint hint) const;
@@ -83,6 +86,7 @@ private:
QPlatformScreen *m_screen;
QTouchDevice *m_touchDevice;
QIOSApplicationState m_applicationState;
+ QIOSServices *m_platformServices;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm
index acf33d5e1c..b9bb82a326 100644
--- a/src/plugins/platforms/ios/qiosintegration.mm
+++ b/src/plugins/platforms/ios/qiosintegration.mm
@@ -48,6 +48,7 @@
#include "qioscontext.h"
#include "qiosinputcontext.h"
#include "qiostheme.h"
+#include "qiosservices.h"
#include <QtPlatformSupport/private/qcoretextfontdatabase_p.h>
#include <QDir>
@@ -60,6 +61,7 @@ QIOSIntegration::QIOSIntegration()
: m_fontDatabase(new QCoreTextFontDatabase)
, m_inputContext(new QIOSInputContext)
, m_screen(new QIOSScreen(QIOSScreen::MainScreen))
+ , m_platformServices(new QIOSServices)
{
if (![UIApplication sharedApplication]) {
qWarning()
@@ -91,6 +93,9 @@ QIOSIntegration::~QIOSIntegration()
delete m_screen;
m_screen = 0;
+
+ delete m_platformServices;
+ m_platformServices = 0;
}
bool QIOSIntegration::hasCapability(Capability cap) const
@@ -143,6 +148,11 @@ QPlatformInputContext *QIOSIntegration::inputContext() const
return m_inputContext;
}
+QPlatformServices *QIOSIntegration::services() const
+{
+ return m_platformServices;
+}
+
QVariant QIOSIntegration::styleHint(StyleHint hint) const
{
switch (hint) {
diff --git a/src/plugins/platforms/ios/qiosservices.h b/src/plugins/platforms/ios/qiosservices.h
new file mode 100644
index 0000000000..692b3a0b99
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosservices.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the plugins 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 QIOSSERVICES_H
+#define QIOSSERVICES_H
+#include <qpa/qplatformservices.h>
+
+QT_BEGIN_NAMESPACE
+
+class QIOSServices : public QPlatformServices
+{
+public:
+ bool openUrl(const QUrl &url);
+ bool openDocument(const QUrl &url);
+};
+
+QT_END_NAMESPACE
+
+#endif // QIOSSERVICES_H
diff --git a/src/plugins/platforms/ios/qiosservices.mm b/src/plugins/platforms/ios/qiosservices.mm
new file mode 100644
index 0000000000..32203aeb71
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosservices.mm
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the plugins 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 "qiosservices.h"
+
+#include <QtCore/qurl.h>
+
+#import <UIKit/UIApplication.h>
+
+QT_BEGIN_NAMESPACE
+
+bool QIOSServices::openUrl(const QUrl &url)
+{
+ if (url.scheme().isEmpty())
+ return openDocument(url);
+
+ NSURL *nsUrl = url.toNSURL();
+
+ if (![[UIApplication sharedApplication] canOpenURL:nsUrl])
+ return false;
+
+ return [[UIApplication sharedApplication] openURL:nsUrl];
+}
+
+bool QIOSServices::openDocument(const QUrl &url)
+{
+ // FIXME: Implement using UIDocumentInteractionController
+ return QPlatformServices::openDocument(url);
+}
+
+QT_END_NAMESPACE