diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2012-12-19 09:15:27 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2013-02-27 23:55:58 +0100 |
commit | 2dea9fdc3a04ccc9759427c6450e88cb78003381 (patch) | |
tree | 48760334249361e3deae29a3cbf245e6b8f6f407 /src/plugins/platforms/ios | |
parent | ac0f6d1a349748ff82e1710c33e91e6b3f179a58 (diff) |
iOS: add convenience function to get to the root QIOSViewController
It seems that we need to access our view controller from many
places, and the syntax to do so is tricky to remember. So lets
just add it to our global functions, with the added bonus of a
using a little cache.
Note: many of these functions could be made inline, but since one
concern of the plugin will be the end size of the app, I prefer
to trade size for speed at this point. We can always change this
later.
Change-Id: I578ea9ae8218d23d635b7728a930763ca53c4eaa
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src/plugins/platforms/ios')
-rw-r--r-- | src/plugins/platforms/ios/qiosglobal.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosglobal.mm | 8 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosscreen.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qioswindow.mm | 2 |
4 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 849d9bce37..86377e7c64 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -47,9 +47,13 @@ #import <QtGui/qguiapplication.h> #import "qiosscreen.h" +@class QIOSViewController; + QT_BEGIN_NAMESPACE bool isQtApplication(); +QIOSViewController *rootViewController(); + CGRect toCGRect(const QRect &rect); QRect fromCGRect(const CGRect &rect); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 69547fb2a1..cf69d8fdef 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -41,6 +41,7 @@ #include "qiosglobal.h" #include "qiosapplicationdelegate.h" +#include "qiosviewcontroller.h" #include <QtGui/qscreen.h> QT_BEGIN_NAMESPACE @@ -57,6 +58,13 @@ bool isQtApplication() return isQt; } +QIOSViewController *rootViewController() +{ + static QIOSViewController *c = isQtApplication() ? + static_cast<QIOSViewController *>([UIApplication sharedApplication].delegate.window.rootViewController) : nil; + return c; +} + CGRect toCGRect(const QRect &rect) { return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index a0403a0d69..5905f1630e 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -44,6 +44,7 @@ #include "qioswindow.h" #include <qpa/qwindowsysteminterface.h> #include "qiosapplicationdelegate.h" +#include "qiosviewcontroller.h" #include <sys/sysctl.h> @@ -141,8 +142,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) if (isQtApplication()) { // When in a non-mixed environment, let QScreen follow the current interface orientation: - UIViewController *controller = [UIApplication sharedApplication].delegate.window.rootViewController; - setPrimaryOrientation(toQtScreenOrientation(controller.interfaceOrientation)); + setPrimaryOrientation(toQtScreenOrientation(rootViewController().interfaceOrientation)); } [pool release]; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index af184e2e7b..71816f7d94 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -197,7 +197,7 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_devicePixelRatio(1.0) { if (isQtApplication()) - [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; + [rootViewController().view addSubview:m_view]; setWindowState(window->windowState()); |