• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • positionprovider
  • geoclue
  • GeoCute
PositionProvider.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2009 Eckhart Wörner <ewoerner@kde.org>
9 //
10 
11 #include "PositionProvider_p.h"
12 
13 #include <QList>
14 #include <QVariant>
15 #include <QDBusReply>
16 
17 #include "MasterClient.h"
18 
19 
20 
21 using namespace GeoCute;
22 
23 PositionProvider::Private::Private(PositionProvider& parent,
24  const QString& service, const QString& path)
25  : interface(service, path, interfaceName), parent(parent)
26 {
27  // Get an initial position
28  interface.callWithCallback("GetPosition", QList<QVariant>(), &parent,
29  SLOT(positionChangedCall(QDBusMessage)), 0);
30  // Stay informed about future position changes
31  interface.connect("PositionChanged", &parent,
32  SLOT(positionChangedCall(QDBusMessage)));
33 }
34 
35 void PositionProvider::Private::positionChangedCall(QDBusMessage message)
36 {
37  // FIXME: Check the number of arguments
38  // FIXME: Make sure all result members are actually filled
39  Position result;
40  result.fields
41  = static_cast<PositionFields>(message.arguments()[0].toInt());
42  result.timestamp.setTime_t(message.arguments()[1].toInt());
43  result.latitude = message.arguments()[2].toDouble();
44  result.longitude = message.arguments()[3].toDouble();
45  result.altitude = message.arguments()[4].toDouble();
46  currentPosition = result;
47  if (result.fields != PositionFieldNone)
48  emit parent.positionChanged(result);
49 }
50 
51 
52 
53 PositionProvider::PositionProvider(const QString& service, const QString& path,
54  QObject* parent)
55  : Provider(service, path, parent), d(new Private(*this, service, path))
56 {
57 }
58 
59 PositionProvider::~PositionProvider()
60 {
61  delete d;
62 }
63 
64 PositionProvider* PositionProvider::detailed()
65 {
66  // FIXME: The following code has been replaced for the moment
67  // because it leads to a crash in geoclue-master
68  MasterClient mc;
69  mc.setRequirements(GeoCute::AccuracyLevelNone, 0,
70  GeoCute::SignallingRequired, GeoCute::ResourceAll);
71  return mc.positionProvider();
72  // Return a specific GeoClue provider
73  // return new PositionProvider("example.provider.hostip", "/");
74 }
75 
76 Position PositionProvider::position() const
77 {
78  return d->currentPosition;
79 }
80 
81 
82 
83 #include "PositionProvider.moc"
interfaceName
static const QString interfaceName
Definition: MasterClient_p.h:23
GeoCute::Position
Definition: Position.h:34
GeoCute::PositionProvider::Private::currentPosition
Position currentPosition
Definition: PositionProvider_p.h:33
GeoCute::PositionProvider
Definition: PositionProvider.h:26
GeoCute::PositionProvider::position
Position position() const
Definition: PositionProvider.cpp:76
GeoCute::PositionProvider::Private::positionChangedCall
void positionChangedCall(QDBusMessage message)
Definition: PositionProvider.cpp:35
GeoCute::Position::timestamp
QDateTime timestamp
Definition: Position.h:41
QDBusMessage::arguments
QList< QVariant > arguments() const
GeoCute::ResourceAll
Definition: MasterClient.h:28
GeoCute::MasterClient::positionProvider
PositionProvider * positionProvider()
Definition: MasterClient.cpp:59
GeoCute::Position::fields
PositionFields fields
Definition: Position.h:38
GeoCute::PositionProvider::Private::Private
Private(PositionProvider &parent, const QString &service, const QString &path)
Definition: PositionProvider.cpp:23
GeoCute::SignallingRequired
Definition: MasterClient.h:33
GeoCute::MasterClient::setRequirements
void setRequirements(AccuracyLevel, int min_time, SignallingFlags, ResourceFlags)
Definition: MasterClient.cpp:50
GeoCute::Position::longitude
qreal longitude
Definition: Position.h:40
QObject
GeoCute::SimpleDBusInterface::connect
void connect(const QString &name, QObject *receiver, const char *slot)
Definition: SimpleDBusInterface.cpp:70
GeoCute::PositionProvider::Private::interface
SimpleDBusInterface interface
Definition: PositionProvider_p.h:32
QString
QList< QVariant >
GeoCute::PositionProvider::~PositionProvider
~PositionProvider()
Definition: PositionProvider.cpp:59
GeoCute::PositionProvider::detailed
static PositionProvider * detailed()
Definition: PositionProvider.cpp:64
GeoCute::Position::latitude
qreal latitude
Definition: Position.h:39
MasterClient.h
GeoCute::PositionProvider::Private
Definition: PositionProvider_p.h:25
GeoCute::AccuracyLevelNone
Definition: AccuracyLevel.h:20
QDBusMessage
GeoCute::PositionProvider::PositionProvider
PositionProvider(const QString &service, const QString &path, QObject *parent=0)
Definition: PositionProvider.cpp:53
GeoCute::MasterClient
Definition: MasterClient.h:38
GeoCute::Position::altitude
qreal altitude
Definition: Position.h:37
GeoCute::Provider
Definition: Provider.h:24
QObject::parent
QObject * parent() const
GeoCute::SimpleDBusInterface::callWithCallback
void callWithCallback(const QString &message, const QList< QVariant > &args, QObject *receiver, const char *returnMethod, const char *errorMethod) const
Definition: SimpleDBusInterface.cpp:60
PositionProvider_p.h
QDateTime::setTime_t
void setTime_t(uint seconds)
GeoCute::PositionFieldNone
Definition: Position.h:25
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal