2 * This file is part of CameraPlus.
4 * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #include "orientation.h"
22 #include <qmorientation.h>
25 Orientation::Orientation(QObject *parent) :
27 m_orientation(new MeeGo::QmOrientation(this)),
28 m_direction(Unknown) {
30 QObject::connect(m_orientation, SIGNAL(orientationChanged(const MeeGo::QmOrientationReading&)),
31 this, SLOT(orientationChanged(const MeeGo::QmOrientationReading&)));
33 if (m_orientation->requestSession(MeeGo::QmSensor::SessionTypeListen)
34 == MeeGo::QmSensor::SessionTypeNone) {
35 qDebug() << "Failed to get listen session:" << m_orientation->lastError();
39 Orientation::~Orientation() {
40 m_orientation->stop();
43 bool Orientation::isActive() const {
44 return m_orientation->isRunning();
47 void Orientation::setActive(bool active) {
48 if (active == isActive()) {
53 m_orientation->start();
54 orientationChanged(m_orientation->orientation());
57 m_orientation->stop();
58 m_direction = Unknown;
60 emit orientationChanged();
66 Orientation::OrientationDirection Orientation::orientation() const {
70 void Orientation::orientationChanged(const MeeGo::QmOrientationReading& value) {
71 OrientationDirection direction = Unknown;
73 switch (value.value) {
74 case MeeGo::QmOrientation::BottomUp:
75 direction = InvertedLandscape;
78 case MeeGo::QmOrientation::BottomDown:
79 direction = Landscape;
82 case MeeGo::QmOrientation::LeftUp:
86 case MeeGo::QmOrientation::RightUp:
87 direction = InvertedPortrait;
95 if (direction != m_direction) {
96 m_direction = direction;
97 emit orientationChanged();