diff options
author | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2013-10-03 16:38:18 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-03 18:17:53 +0200 |
commit | f6dc1316289542280d6cac4898458f28157999f7 (patch) | |
tree | 30aeb05f1e03cbbe9602d013e24171736b43e0d4 /src/plugins/platforms/ios | |
parent | 2844be2434c720e17ec1aaaf1ea9b555e8e04fcb (diff) |
iOS: Implement QPlatformServices to handle opening URLs
Change-Id: Ie644df16b919d6def1435dc5f3665ba3f62fb055
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src/plugins/platforms/ios')
-rw-r--r-- | src/plugins/platforms/ios/ios.pro | 6 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosintegration.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosintegration.mm | 10 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosservices.h | 57 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosservices.mm | 69 |
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 |