File indexing completed on 2024-04-21 03:50:05
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org> 0004 // 0005 0006 #include "GeoCluePositionProviderPlugin.h" 0007 0008 #include "GeoCute/PositionProvider.h" 0009 0010 0011 0012 using namespace Marble; 0013 0014 QString GeoCluePositionProviderPlugin::name() const 0015 { 0016 return tr( "GeoClue position provider Plugin" ); 0017 } 0018 0019 QString GeoCluePositionProviderPlugin::nameId() const 0020 { 0021 return QStringLiteral("GeoClue"); 0022 } 0023 0024 QString GeoCluePositionProviderPlugin::guiString() const 0025 { 0026 return tr( "GeoClue" ); 0027 } 0028 0029 QString GeoCluePositionProviderPlugin::description() const 0030 { 0031 return tr( "Reports the position via the GeoClue Location Framework." ); 0032 } 0033 0034 QIcon GeoCluePositionProviderPlugin::icon() const 0035 { 0036 return QIcon(); 0037 } 0038 0039 void GeoCluePositionProviderPlugin::initialize() 0040 { 0041 m_positionProvider = GeoCute::PositionProvider::detailed(); 0042 if (m_positionProvider) { 0043 connect( m_positionProvider, SIGNAL(positionChanged(GeoCute::Position)), 0044 SLOT(updatePosition(GeoCute::Position)) ); 0045 connect( m_positionProvider, SIGNAL(statusChanged(GeoCute::Status)), 0046 SLOT(updateStatus(GeoCute::Status)) ); 0047 } 0048 } 0049 0050 bool GeoCluePositionProviderPlugin::isInitialized() const 0051 { 0052 return m_positionProvider; 0053 } 0054 0055 PositionProviderPlugin* GeoCluePositionProviderPlugin::newInstance() const 0056 { 0057 return new GeoCluePositionProviderPlugin; 0058 } 0059 0060 PositionProviderStatus GeoCluePositionProviderPlugin::status() const 0061 { 0062 return m_status; 0063 } 0064 0065 GeoDataCoordinates GeoCluePositionProviderPlugin::position() const 0066 { 0067 return m_position; 0068 } 0069 0070 GeoDataAccuracy GeoCluePositionProviderPlugin::accuracy() const 0071 { 0072 return m_accuracy; 0073 } 0074 0075 GeoCluePositionProviderPlugin::GeoCluePositionProviderPlugin() : m_positionProvider(0) 0076 { 0077 } 0078 0079 GeoCluePositionProviderPlugin::~GeoCluePositionProviderPlugin() 0080 { 0081 delete m_positionProvider; 0082 } 0083 0084 void GeoCluePositionProviderPlugin::updatePosition(GeoCute::Position newPosition) 0085 { 0086 m_position = GeoDataCoordinates(newPosition.longitude, newPosition.latitude, 0087 newPosition.altitude, GeoDataCoordinates::Degree); 0088 m_accuracy.level = static_cast<GeoDataAccuracy::Level>(newPosition.accuracy.level); 0089 m_accuracy.horizontal = newPosition.accuracy.horizontal; 0090 m_accuracy.vertical = newPosition.accuracy.vertical; 0091 0092 emit positionChanged(m_position, m_accuracy); 0093 } 0094 0095 void GeoCluePositionProviderPlugin::updateStatus(GeoCute::Status newStatus) 0096 { 0097 m_status = static_cast<PositionProviderStatus>(newStatus); 0098 0099 emit statusChanged(m_status); 0100 } 0101 0102 #include "moc_GeoCluePositionProviderPlugin.cpp"