summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/ios/plugin.pro2
-rw-r--r--src/plugins/platforms/ios/qiosorientationlistener.h66
-rw-r--r--src/plugins/platforms/ios/qiosorientationlistener.mm130
-rw-r--r--src/plugins/platforms/ios/qiosscreen.h6
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm90
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.mm2
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm3
7 files changed, 96 insertions, 203 deletions
diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro
index 1be24d920d..a51ac39e03 100644
--- a/src/plugins/platforms/ios/plugin.pro
+++ b/src/plugins/platforms/ios/plugin.pro
@@ -14,7 +14,6 @@ OBJECTIVE_SOURCES = \
qioseventdispatcher.mm \
qiosbackingstore.mm \
qiosapplicationdelegate.mm \
- qiosorientationlistener.mm \
qiosviewcontroller.mm \
qioscontext.mm \
qiosinputcontext.mm \
@@ -27,7 +26,6 @@ HEADERS = \
qioseventdispatcher.h \
qiosbackingstore.h \
qiosapplicationdelegate.h \
- qiosorientationlistener.h \
qiosviewcontroller.h \
qioscontext.h \
qiosinputcontext.h \
diff --git a/src/plugins/platforms/ios/qiosorientationlistener.h b/src/plugins/platforms/ios/qiosorientationlistener.h
deleted file mode 100644
index 9d2e902ce1..0000000000
--- a/src/plugins/platforms/ios/qiosorientationlistener.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** 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 QIOSORIENTATIONLISTENER_H
-#define QIOSORIENTATIONLISTENER_H
-
-#include <UIKit/UIKit.h>
-#include <qpa/qplatformscreen.h>
-
-QT_BEGIN_NAMESPACE
-
-class QIOSScreen;
-Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation);
-UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation);
-
-QT_END_NAMESPACE
-
-@interface QIOSOrientationListener : NSObject {
- @public
- QIOSScreen *m_screen;
- Qt::ScreenOrientation m_orientation;
-}
-- (id) initWithQIOSScreen:(QIOSScreen *)screen;
-
-@end
-
-#endif
-
diff --git a/src/plugins/platforms/ios/qiosorientationlistener.mm b/src/plugins/platforms/ios/qiosorientationlistener.mm
deleted file mode 100644
index 264b77f14f..0000000000
--- a/src/plugins/platforms/ios/qiosorientationlistener.mm
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** 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 "qiosorientationlistener.h"
-#include "qiosscreen.h"
-#include <qpa/qwindowsysteminterface.h>
-
-QT_BEGIN_NAMESPACE
-
-Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation)
-{
- Qt::ScreenOrientation qtOrientation;
- switch (uiDeviceOrientation) {
- case UIDeviceOrientationPortraitUpsideDown:
- qtOrientation = Qt::InvertedPortraitOrientation;
- break;
- case UIDeviceOrientationLandscapeLeft:
- qtOrientation = Qt::InvertedLandscapeOrientation;
- break;
- case UIDeviceOrientationLandscapeRight:
- qtOrientation = Qt::LandscapeOrientation;
- break;
- case UIDeviceOrientationFaceUp:
- case UIDeviceOrientationFaceDown:
- qtOrientation = static_cast<Qt::ScreenOrientation>(-1); // not supported ATM.
- break;
- default:
- qtOrientation = Qt::PortraitOrientation;
- break;
- }
- return qtOrientation;
-}
-
-UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation)
-{
- UIDeviceOrientation uiOrientation;
- switch (qtOrientation) {
- case Qt::LandscapeOrientation:
- uiOrientation = UIDeviceOrientationLandscapeRight;
- break;
- case Qt::InvertedLandscapeOrientation:
- uiOrientation = UIDeviceOrientationLandscapeLeft;
- break;
- case Qt::InvertedPortraitOrientation:
- uiOrientation = UIDeviceOrientationPortraitUpsideDown;
- break;
- case Qt::PrimaryOrientation:
- case Qt::PortraitOrientation:
- default:
- uiOrientation = UIDeviceOrientationPortrait;
- break;
- }
- return uiOrientation;
-}
-
-QT_END_NAMESPACE
-
-@implementation QIOSOrientationListener
-
-- (id) initWithQIOSScreen:(QIOSScreen *)screen
-{
- self = [super init];
- if (self) {
- m_screen = screen;
- m_orientation = convertToQtOrientation([UIDevice currentDevice].orientation);
- [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
- [[NSNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(orientationChanged:)
- name:@"UIDeviceOrientationDidChangeNotification" object:nil];
- }
- return self;
-}
-
-- (void) dealloc
-{
- [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
- [super dealloc];
-}
-
-- (void) orientationChanged:(NSNotification *)notification
-{
- Q_UNUSED(notification);
- Qt::ScreenOrientation qtOrientation = convertToQtOrientation([UIDevice currentDevice].orientation);
- if (qtOrientation != -1) {
- m_orientation = qtOrientation;
- QWindowSystemInterface::handleScreenOrientationChange(m_screen->screen(), m_orientation);
- }
-}
-
-@end
-
diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h
index e05a6cd6a1..17a5c3149a 100644
--- a/src/plugins/platforms/ios/qiosscreen.h
+++ b/src/plugins/platforms/ios/qiosscreen.h
@@ -45,10 +45,14 @@
#include <UIKit/UIKit.h>
#include <qpa/qplatformscreen.h>
-#include <qiosorientationlistener.h>
+
+@class QIOSOrientationListener;
QT_BEGIN_NAMESPACE
+Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation);
+UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation);
+
class QIOSScreen : public QPlatformScreen
{
public:
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm
index f4cade2e6d..02d719eaf1 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -45,8 +45,96 @@
#include <sys/sysctl.h>
+@interface QIOSOrientationListener : NSObject {
+ @public
+ QIOSScreen *m_screen;
+}
+- (id) initWithQIOSScreen:(QIOSScreen *)screen;
+@end
+
+@implementation QIOSOrientationListener
+
+- (id) initWithQIOSScreen:(QIOSScreen *)screen
+{
+ self = [super init];
+ if (self) {
+ m_screen = screen;
+ [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(orientationChanged:)
+ name:@"UIDeviceOrientationDidChangeNotification" object:nil];
+ }
+ return self;
+}
+
+- (void) dealloc
+{
+ [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
+ [[NSNotificationCenter defaultCenter]
+ removeObserver:self
+ name:@"UIDeviceOrientationDidChangeNotification" object:nil];
+ [super dealloc];
+}
+
+- (void) orientationChanged:(NSNotification *)notification
+{
+ Q_UNUSED(notification);
+ Qt::ScreenOrientation orientation = toQtScreenOrientation([UIDevice currentDevice].orientation);
+ if (orientation != -1)
+ QWindowSystemInterface::handleScreenOrientationChange(m_screen->screen(), orientation);
+}
+
+@end
+
QT_BEGIN_NAMESPACE
+Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation)
+{
+ Qt::ScreenOrientation qtOrientation;
+ switch (uiDeviceOrientation) {
+ case UIDeviceOrientationPortraitUpsideDown:
+ qtOrientation = Qt::InvertedPortraitOrientation;
+ break;
+ case UIDeviceOrientationLandscapeLeft:
+ qtOrientation = Qt::InvertedLandscapeOrientation;
+ break;
+ case UIDeviceOrientationLandscapeRight:
+ qtOrientation = Qt::LandscapeOrientation;
+ break;
+ case UIDeviceOrientationFaceUp:
+ case UIDeviceOrientationFaceDown:
+ qtOrientation = static_cast<Qt::ScreenOrientation>(-1); // not supported ATM.
+ break;
+ default:
+ qtOrientation = Qt::PortraitOrientation;
+ break;
+ }
+ return qtOrientation;
+}
+
+UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation)
+{
+ UIDeviceOrientation uiOrientation;
+ switch (qtOrientation) {
+ case Qt::LandscapeOrientation:
+ uiOrientation = UIDeviceOrientationLandscapeRight;
+ break;
+ case Qt::InvertedLandscapeOrientation:
+ uiOrientation = UIDeviceOrientationLandscapeLeft;
+ break;
+ case Qt::InvertedPortraitOrientation:
+ uiOrientation = UIDeviceOrientationPortraitUpsideDown;
+ break;
+ case Qt::PrimaryOrientation:
+ case Qt::PortraitOrientation:
+ default:
+ uiOrientation = UIDeviceOrientationPortrait;
+ break;
+ }
+ return uiOrientation;
+}
+
/*!
Returns the model identifier of the device.
@@ -137,7 +225,7 @@ Qt::ScreenOrientation QIOSScreen::nativeOrientation() const
Qt::ScreenOrientation QIOSScreen::orientation() const
{
- return m_orientationListener ? m_orientationListener->m_orientation : nativeOrientation();
+ return toQtScreenOrientation([UIDevice currentDevice].orientation);
}
void QIOSScreen::setOrientationUpdateMask(Qt::ScreenOrientations mask)
diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm
index fe9e02666f..8c280d11d9 100644
--- a/src/plugins/platforms/ios/qiosviewcontroller.mm
+++ b/src/plugins/platforms/ios/qiosviewcontroller.mm
@@ -69,7 +69,7 @@
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
Q_UNUSED(fromInterfaceOrientation);
- Qt::ScreenOrientation orientation = convertToQtOrientation(self.interfaceOrientation);
+ Qt::ScreenOrientation orientation = toQtScreenOrientation(self.interfaceOrientation);
if (orientation == -1)
return;
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm
index a2901efd1d..cc016da106 100644
--- a/src/plugins/platforms/ios/qioswindow.mm
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -43,7 +43,6 @@
#include "qioscontext.h"
#include "qiosscreen.h"
#include "qiosapplicationdelegate.h"
-#include "qiosorientationlistener.h"
#include "qiosviewcontroller.h"
#import <QuartzCore/CAEAGLLayer.h>
@@ -272,7 +271,7 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio
{
// Keep the status bar in sync with content orientation. This will ensure
// that the task bar (and associated gestures) are aligned correctly:
- UIDeviceOrientation uiOrientation = convertToUIOrientation(orientation);
+ UIDeviceOrientation uiOrientation = fromQtScreenOrientation(orientation);
[[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO];
}