1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org>
4 //
5 
6 #include "GeoCluePositionProviderPlugin.h"
7 
8 #include "GeoCute/PositionProvider.h"
9 
10 
11 
12 using namespace Marble;
13 
name() const14 QString GeoCluePositionProviderPlugin::name() const
15 {
16     return tr( "GeoClue position provider Plugin" );
17 }
18 
nameId() const19 QString GeoCluePositionProviderPlugin::nameId() const
20 {
21     return QStringLiteral("GeoClue");
22 }
23 
guiString() const24 QString GeoCluePositionProviderPlugin::guiString() const
25 {
26     return tr( "GeoClue" );
27 }
28 
description() const29 QString GeoCluePositionProviderPlugin::description() const
30 {
31     return tr( "Reports the position via the GeoClue Location Framework." );
32 }
33 
icon() const34 QIcon GeoCluePositionProviderPlugin::icon() const
35 {
36     return QIcon();
37 }
38 
initialize()39 void GeoCluePositionProviderPlugin::initialize()
40 {
41     m_positionProvider = GeoCute::PositionProvider::detailed();
42     if (m_positionProvider) {
43         connect( m_positionProvider, SIGNAL(positionChanged(GeoCute::Position)),
44                  SLOT(updatePosition(GeoCute::Position)) );
45         connect( m_positionProvider, SIGNAL(statusChanged(GeoCute::Status)),
46                  SLOT(updateStatus(GeoCute::Status)) );
47     }
48 }
49 
isInitialized() const50 bool GeoCluePositionProviderPlugin::isInitialized() const
51 {
52     return m_positionProvider;
53 }
54 
newInstance() const55 PositionProviderPlugin* GeoCluePositionProviderPlugin::newInstance() const
56 {
57     return new GeoCluePositionProviderPlugin;
58 }
59 
status() const60 PositionProviderStatus GeoCluePositionProviderPlugin::status() const
61 {
62     return m_status;
63 }
64 
position() const65 GeoDataCoordinates GeoCluePositionProviderPlugin::position() const
66 {
67     return m_position;
68 }
69 
accuracy() const70 GeoDataAccuracy GeoCluePositionProviderPlugin::accuracy() const
71 {
72     return m_accuracy;
73 }
74 
GeoCluePositionProviderPlugin()75 GeoCluePositionProviderPlugin::GeoCluePositionProviderPlugin() : m_positionProvider(0)
76 {
77 }
78 
~GeoCluePositionProviderPlugin()79 GeoCluePositionProviderPlugin::~GeoCluePositionProviderPlugin()
80 {
81     delete m_positionProvider;
82 }
83 
updatePosition(GeoCute::Position newPosition)84 void GeoCluePositionProviderPlugin::updatePosition(GeoCute::Position newPosition)
85 {
86     m_position = GeoDataCoordinates(newPosition.longitude, newPosition.latitude,
87                                     newPosition.altitude, GeoDataCoordinates::Degree);
88     m_accuracy.level = static_cast<GeoDataAccuracy::Level>(newPosition.accuracy.level);
89     m_accuracy.horizontal = newPosition.accuracy.horizontal;
90     m_accuracy.vertical = newPosition.accuracy.vertical;
91 
92     emit positionChanged(m_position, m_accuracy);
93 }
94 
updateStatus(GeoCute::Status newStatus)95 void GeoCluePositionProviderPlugin::updateStatus(GeoCute::Status newStatus)
96 {
97     m_status = static_cast<PositionProviderStatus>(newStatus);
98 
99     emit statusChanged(m_status);
100 }
101 
102 #include "moc_GeoCluePositionProviderPlugin.cpp"
103