1/*
2 * Copyright (C) 2010, 2011, 2012 Research In Motion Limited. All rights reserved.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19#include "config.h"
20#include "DeviceOrientationClientBlackBerry.h"
21
22#include "DeviceOrientationController.h"
23#include "WebPage_p.h"
24#include <BlackBerryPlatformDeviceOrientationTracker.h>
25
26using namespace WebCore;
27
28DeviceOrientationClientBlackBerry::DeviceOrientationClientBlackBerry(BlackBerry::WebKit::WebPagePrivate* webPagePrivate)
29    : m_webPagePrivate(webPagePrivate)
30    , m_tracker(0)
31    , m_controller(0)
32{
33}
34
35DeviceOrientationClientBlackBerry::~DeviceOrientationClientBlackBerry()
36{
37    if (m_tracker)
38        m_tracker->destroy();
39}
40
41void DeviceOrientationClientBlackBerry::setController(DeviceOrientationController* controller)
42{
43    m_controller = controller;
44}
45
46void DeviceOrientationClientBlackBerry::deviceOrientationControllerDestroyed()
47{
48    delete this;
49}
50
51void DeviceOrientationClientBlackBerry::startUpdating()
52{
53    if (m_tracker)
54        m_tracker->resume();
55    else
56        m_tracker = BlackBerry::Platform::DeviceOrientationTracker::create(this);
57}
58
59void DeviceOrientationClientBlackBerry::stopUpdating()
60{
61    if (m_tracker)
62        m_tracker->suspend();
63}
64
65DeviceOrientationData* DeviceOrientationClientBlackBerry::lastOrientation() const
66{
67    return m_currentOrientation.get();
68}
69
70void DeviceOrientationClientBlackBerry::onOrientation(const BlackBerry::Platform::DeviceOrientationEvent* event)
71{
72    m_currentOrientation = DeviceOrientationData::create(true, event->alpha, true, event->beta, true, event->gamma);
73    if (!m_controller)
74        return;
75
76    m_controller->didChangeDeviceOrientation(lastOrientation());
77}
78