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"