summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2012-12-18 12:50:50 +0100
committerTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-02-27 23:55:56 +0100
commitb960424195634c00673d499e4719ccb4f8704ad0 (patch)
tree92dbe82a5ce08f2392423258f0176d7d157587a2 /src
parent5abe9aa435c316b845f4cf5f6a930eefd449f4e1 (diff)
iOS: add global function 'isQtApplication'
Several places in the code we need to check if the plugin is running as a cross-platform Qt application or inside a native app. So we refactor this function to qiosglobal so we can access it from everywhere. Change-Id: I78db0dcde71b7d281868ce304867c8f876caef2a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/ios/qiosglobal.h1
-rw-r--r--src/plugins/platforms/ios/qiosglobal.mm13
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm2
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm2
4 files changed, 16 insertions, 2 deletions
diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h
index cf4c89cfad..7a23a2a485 100644
--- a/src/plugins/platforms/ios/qiosglobal.h
+++ b/src/plugins/platforms/ios/qiosglobal.h
@@ -49,6 +49,7 @@
QT_BEGIN_NAMESPACE
+bool isQtApplication();
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 30138acc1b..a8a89a1637 100644
--- a/src/plugins/platforms/ios/qiosglobal.mm
+++ b/src/plugins/platforms/ios/qiosglobal.mm
@@ -40,10 +40,23 @@
****************************************************************************/
#include "qiosglobal.h"
+#include "qiosapplicationdelegate.h"
#include <QtGui/qscreen.h>
QT_BEGIN_NAMESPACE
+bool isQtApplication()
+{
+ // Returns true if the plugin is in full control of the whole application. This means
+ // that we control the application delegate and the top view controller, and can take
+ // actions that impacts all parts of the application. The opposite means that we are
+ // embedded inside a native iOS application, and should be more focused on playing along
+ // with native UIControls, and less inclined to change structures that lies outside the
+ // scope of our QWindows/UIViews.
+ static bool isQt = ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]);
+ return isQt;
+}
+
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 87ddc63f4a..fdf2f31ea1 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -139,7 +139,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex)
const qreal millimetersPerInch = 25.4;
m_physicalSize = QSizeF(m_geometry.size()) / unscaledDpi * millimetersPerInch;
- if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) {
+ 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));
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm
index 9b10ba4e1c..af184e2e7b 100644
--- a/src/plugins/platforms/ios/qioswindow.mm
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -196,7 +196,7 @@ QIOSWindow::QIOSWindow(QWindow *window)
, m_glData()
, m_devicePixelRatio(1.0)
{
- if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]])
+ if (isQtApplication())
[[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view];
setWindowState(window->windowState());