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() const14QString GeoCluePositionProviderPlugin::name() const 15 { 16 return tr( "GeoClue position provider Plugin" ); 17 } 18 nameId() const19QString GeoCluePositionProviderPlugin::nameId() const 20 { 21 return QStringLiteral("GeoClue"); 22 } 23 guiString() const24QString GeoCluePositionProviderPlugin::guiString() const 25 { 26 return tr( "GeoClue" ); 27 } 28 description() const29QString GeoCluePositionProviderPlugin::description() const 30 { 31 return tr( "Reports the position via the GeoClue Location Framework." ); 32 } 33 icon() const34QIcon GeoCluePositionProviderPlugin::icon() const 35 { 36 return QIcon(); 37 } 38 initialize()39void 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() const50bool GeoCluePositionProviderPlugin::isInitialized() const 51 { 52 return m_positionProvider; 53 } 54 newInstance() const55PositionProviderPlugin* GeoCluePositionProviderPlugin::newInstance() const 56 { 57 return new GeoCluePositionProviderPlugin; 58 } 59 status() const60PositionProviderStatus GeoCluePositionProviderPlugin::status() const 61 { 62 return m_status; 63 } 64 position() const65GeoDataCoordinates GeoCluePositionProviderPlugin::position() const 66 { 67 return m_position; 68 } 69 accuracy() const70GeoDataAccuracy GeoCluePositionProviderPlugin::accuracy() const 71 { 72 return m_accuracy; 73 } 74 GeoCluePositionProviderPlugin()75GeoCluePositionProviderPlugin::GeoCluePositionProviderPlugin() : m_positionProvider(0) 76 { 77 } 78 ~GeoCluePositionProviderPlugin()79GeoCluePositionProviderPlugin::~GeoCluePositionProviderPlugin() 80 { 81 delete m_positionProvider; 82 } 83 updatePosition(GeoCute::Position newPosition)84void 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)95void 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