summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2012-11-16 09:24:41 +0100
committerTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-02-27 23:55:45 +0100
commitfa731cddd16aed426f7c73bf4807475f0b087d4c (patch)
treebc9e03ad6a0f9ad5b5bc9746eb8bb1e0eda8a645
parent72f66a8ee57ad3865d25e0157179d042a474cfff (diff)
iOS: add QIOSViewController
We need our own viewcontroller to better control which orientations iOS can enter, and also ito be able to stop auto-rotation. We stop auto-rotation to happend by default, since this is how Qt wants it (it is seen as the responsibility of the application). Change-Id: Id07a96e355396752fffd28984af528aeb0b7c3e3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-rw-r--r--src/plugins/platforms/ios/plugin.pro2
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.h46
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.mm60
-rw-r--r--src/plugins/platforms/ios/qtmain.mm3
-rw-r--r--src/plugins/platforms/ios/qtmain.pro5
5 files changed, 114 insertions, 2 deletions
diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro
index ab49115ed3..12c5c6db01 100644
--- a/src/plugins/platforms/ios/plugin.pro
+++ b/src/plugins/platforms/ios/plugin.pro
@@ -15,6 +15,7 @@ OBJECTIVE_SOURCES = \
qiosbackingstore.mm \
qiosapplicationdelegate.mm \
qiosorientationlistener.mm \
+ qiosviewcontroller.mm \
qioscontext.mm
HEADERS = \
@@ -25,6 +26,7 @@ HEADERS = \
qiosbackingstore.h \
qiosapplicationdelegate.h \
qiosorientationlistener.h \
+ qiosviewcontroller.h \
qioscontext.h
#HEADERS = qiossoftwareinputhandler.h
diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h
new file mode 100644
index 0000000000..d5a61cb3f4
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosviewcontroller.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#import <UIKit/UIKit.h>
+
+@interface QIOSViewController : UIViewController
+@end
+
diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm
new file mode 100644
index 0000000000..5381b3a21e
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosviewcontroller.mm
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#import "qiosviewcontroller.h"
+
+@implementation QIOSViewController
+
+- (BOOL)shouldAutorotate
+{
+ return NO;
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+ // We need to tell iOS that we support all orientations in order to set
+ // status bar orientation when application content orientation changes.
+ // But we return 'NO' above when asked if we 'shouldAutorotate':
+ return UIInterfaceOrientationMaskAll;
+}
+
+@end
+
diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm
index 9b4ce9918e..61756edc93 100644
--- a/src/plugins/platforms/ios/qtmain.mm
+++ b/src/plugins/platforms/ios/qtmain.mm
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
int main(int argc, char *argv[])
{
@@ -58,7 +59,7 @@ extern int qt_main(int argc, char *argv[]);
if (!self.window) {
// If not, we create one ourselves
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- UIViewController *controller = [[UIViewController alloc] init];
+ QIOSViewController *controller = [[QIOSViewController alloc] init];
self.window.rootViewController = controller;
controller.view = [[UIView alloc] init];
diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro
index 49ada385bb..7c4c4ab398 100644
--- a/src/plugins/platforms/ios/qtmain.pro
+++ b/src/plugins/platforms/ios/qtmain.pro
@@ -3,4 +3,7 @@ TARGET = qiosmain
PLUGIN_TYPE = platforms
load(qt_plugin)
-OBJECTIVE_SOURCES = qtmain.mm
+OBJECTIVE_SOURCES = qtmain.mm \
+ qiosviewcontroller.mm
+
+HEADERS = qiosviewcontroller.h