• 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
  • render
  • gpsinfo
GpsInfo.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 2011 Thibaut Gridel <tgridel@free.fr>
9 //
10 
11 #include "GpsInfo.h"
12 
13 #include "ui_GpsInfoPlugin.h"
14 
15 #include "MarbleDebug.h"
16 #include "MarbleLocale.h"
17 #include "MarbleModel.h"
18 #include "PositionTracking.h"
19 #include "WidgetGraphicsItem.h"
20 #include "MarbleGraphicsGridLayout.h"
21 #include "ViewportParams.h"
22 
23 namespace Marble
24 {
25 
26 GpsInfo::GpsInfo()
27  : AbstractFloatItem( 0 ),
28  m_locale( 0 ),
29  m_widgetItem( 0 )
30 {
31 }
32 
33 GpsInfo::GpsInfo( const MarbleModel *marbleModel )
34  : AbstractFloatItem( marbleModel, QPointF( 10.5, 110 ), QSizeF( 135.0, 80.0 ) ),
35  m_locale( 0 ),
36  m_widgetItem( 0 )
37 {
38  setVisible( false );
39 }
40 
41 GpsInfo::~GpsInfo()
42 {
43 }
44 
45 QStringList GpsInfo::backendTypes() const
46 {
47  return QStringList( "GpsInfo" );
48 }
49 
50 QString GpsInfo::name() const
51 {
52  return tr("GpsInfo");
53 }
54 
55 QString GpsInfo::guiString() const
56 {
57  return tr("&GpsInfo");
58 }
59 
60 QString GpsInfo::nameId() const
61 {
62  return QString( "GpsInfo" );
63 }
64 
65 QString GpsInfo::version() const
66 {
67  return "1.0";
68 }
69 
70 QString GpsInfo::description() const
71 {
72  return tr("This is a float item that provides Gps Information.");
73 }
74 
75 QString GpsInfo::copyrightYears() const
76 {
77  return "2011";
78 }
79 
80 QList<PluginAuthor> GpsInfo::pluginAuthors() const
81 {
82  return QList<PluginAuthor>()
83  << PluginAuthor( "Thibaut Gridel", "tgridel@free.fr" );
84 }
85 
86 QIcon GpsInfo::icon () const
87 {
88  return QIcon(":/icons/gps.png");
89 }
90 
91 void GpsInfo::initialize ()
92 {
93  if ( !m_widgetItem )
94  {
95  QWidget *widget = new QWidget;
96  m_widget.setupUi( widget );
97  m_widgetItem = new WidgetGraphicsItem( this );
98  m_widgetItem->setWidget( widget );
99 
100  MarbleGraphicsGridLayout *layout = new MarbleGraphicsGridLayout( 1, 1 );
101  layout->addItem( m_widgetItem, 0, 0 );
102  setLayout( layout );
103  setPadding( 0 );
104 
105  m_locale = MarbleGlobal::getInstance()->locale();
106  connect( marbleModel()->positionTracking(), SIGNAL(gpsLocation(GeoDataCoordinates,qreal)),
107  this, SLOT(updateLocation(GeoDataCoordinates,qreal)) );
108  }
109 }
110 
111 bool GpsInfo::isInitialized () const
112 {
113  return m_widgetItem;
114 }
115 
116 void GpsInfo::updateLocation( GeoDataCoordinates coordinates, qreal)
117 {
118  PositionTracking *tracking = marbleModel()->positionTracking();
119  qreal speed = tracking->speed();
120  qreal direction = tracking->direction();
121  qreal altitude = coordinates.altitude();
122  qreal precision = tracking->accuracy().horizontal;
123  QString speedString;
124  QString distanceString;
125 
126  switch ( m_locale->measurementSystem() ) {
127  case MarbleLocale::ImperialSystem:
128  //miles per hour
129  speedString = tr("mph");
130  speed *= HOUR2SEC * METER2KM * KM2MI;
131  distanceString = tr("ft");
132  altitude *= M2FT;
133  precision *= M2FT;
134  break;
135 
136  case MarbleLocale::MetricSystem:
137  //kilometers per hour
138  speedString = tr("km/h");
139  speed *= HOUR2SEC * METER2KM;
140  distanceString = tr("m");
141  break;
142 
143  case MarbleLocale::NauticalSystem:
144  // nm per hour (knots)
145  speedString = tr("kt");
146  speed *= HOUR2SEC * METER2KM * KM2NM;
147  distanceString = tr("nm");
148  break;
149  }
150 
151  m_widget.SpeedValue->setText( QString( " %1 %2" )
152  .arg( QLocale().toString(speed, 'f', 1 ) )
153  .arg( speedString ) );
154  m_widget.AltitudeValue->setText( QString( " %1 %2" )
155  .arg( QLocale().toString(altitude, 'f', 1 ) )
156  .arg( distanceString ) );
157  m_widget.DirectionValue->setText( QString( " %1 %2" )
158  .arg( QLocale().toString(direction, 'f', 1 ) )
159  .arg( "d" ) );
160  m_widget.PrecisionValue->setText( QString( " %1 %2" )
161  .arg( QLocale().toString(precision, 'f', 1 ) )
162  .arg( distanceString ) );
163 
164  int const minimumWidth = m_widgetItem->widget()->sizeHint().width();
165  if ( size().width() < minimumWidth ) {
166  m_widgetItem->setSize( QSizeF( minimumWidth, size().height() ) );
167  }
168 
169  update();
170  emit repaintNeeded();
171 }
172 
173 }
174 
175 Q_EXPORT_PLUGIN2( GpsInfo, Marble::GpsInfo )
176 
177 #include "GpsInfo.moc"
Marble::PositionTracking::direction
qreal direction() const
provides direction of the gps device in degrees with geographical north
Definition: PositionTracking.cpp:234
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
QWidget
Marble::GpsInfo
The class that displays Position Tracking info.
Definition: GpsInfo.h:37
Marble::GpsInfo::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: GpsInfo.cpp:86
Marble::WidgetGraphicsItem::setWidget
void setWidget(QWidget *widget)
Definition: WidgetGraphicsItem.cpp:48
Marble::MarbleLocale::NauticalSystem
Definition: MarbleLocale.h:40
tracking
Definition: position-tracking.qml:12
Marble::MarbleLocale::measurementSystem
MarbleLocale::MeasurementSystem measurementSystem() const
Definition: MarbleLocale.cpp:45
Marble::MarbleGraphicsItem::setSize
void setSize(const QSizeF &size)
Set the size of the item.
Definition: MarbleGraphicsItem.cpp:197
Marble::RenderPlugin::repaintNeeded
void repaintNeeded(QRegion dirtyRegion=QRegion())
This signal is emitted if an update of the view is needed.
Marble::GpsInfo::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: GpsInfo.cpp:80
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::HOUR2SEC
const qreal HOUR2SEC
Definition: MarbleGlobal.h:235
Marble::MarbleGraphicsItem::size
QSizeF size() const
Returns the size of the item.
Definition: MarbleGraphicsItem.cpp:136
Marble::MarbleGraphicsItem::setLayout
void setLayout(AbstractMarbleGraphicsLayout *layout)
Set the layout of the graphics item.
Definition: MarbleGraphicsItem.cpp:146
Marble::MarbleGraphicsGridLayout::addItem
void addItem(ScreenGraphicsItem *item, int row, int column)
Definition: MarbleGraphicsGridLayout.cpp:74
MarbleDebug.h
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::GpsInfo::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: GpsInfo.cpp:55
Marble::PositionTracking::accuracy
GeoDataAccuracy accuracy() const
Returns the estimated accuracy of the current position.
Definition: PositionTracking.cpp:384
GpsInfo.h
Marble::GpsInfo::~GpsInfo
~GpsInfo()
Definition: GpsInfo.cpp:41
QPointF
Marble::PositionTracking
Definition: PositionTracking.h:31
Marble::GeoDataCoordinates::altitude
qreal altitude() const
return the altitude of the Point in meters
Definition: GeoDataCoordinates.cpp:1197
Marble::M2FT
const qreal M2FT
Definition: MarbleGlobal.h:211
Marble::GpsInfo::copyrightYears
QString copyrightYears() const
Definition: GpsInfo.cpp:75
Marble::AbstractFloatItem
The abstract class for float item plugins.
Definition: AbstractFloatItem.h:45
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:512
Marble::GeoDataAccuracy::horizontal
qreal horizontal
Horizontal accuracy in meters.
Definition: GeoDataAccuracy.h:49
Marble::MarbleGraphicsGridLayout
Definition: MarbleGraphicsGridLayout.h:27
Marble::GpsInfo::initialize
void initialize()
Definition: GpsInfo.cpp:91
Marble::MarbleGlobal::locale
MarbleLocale * locale() const
Definition: MarbleGlobal.cpp:43
QString
QList
MarbleLocale.h
Marble::WidgetGraphicsItem
Definition: WidgetGraphicsItem.h:28
WidgetGraphicsItem.h
Marble::METER2KM
const qreal METER2KM
Definition: MarbleGlobal.h:224
QStringList
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
QLocale
Marble::KM2MI
const qreal KM2MI
Definition: MarbleGlobal.h:203
MarbleGraphicsGridLayout.h
QWidget::sizeHint
sizeHint
ViewportParams.h
This file contains the headers for ViewportParams.
Marble::MarbleGlobal::getInstance
static MarbleGlobal * getInstance()
Definition: MarbleGlobal.cpp:37
Marble::WidgetGraphicsItem::widget
QWidget * widget() const
Definition: WidgetGraphicsItem.cpp:58
Marble::MarbleLocale::MetricSystem
Definition: MarbleLocale.h:38
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:97
direction
qreal direction
Definition: tools/osm-addresses/OsmParser.cpp:40
Marble::GpsInfo::version
QString version() const
Definition: GpsInfo.cpp:65
QSizeF
Marble::GpsInfo::GpsInfo
GpsInfo()
Definition: GpsInfo.cpp:26
Marble::GpsInfo::name
QString name() const
Returns the user-visible name of the plugin.
Definition: GpsInfo.cpp:50
Marble::GpsInfo::description
QString description() const
Returns a user description of the plugin.
Definition: GpsInfo.cpp:70
Marble::GpsInfo::isInitialized
bool isInitialized() const
Definition: GpsInfo.cpp:111
Marble::MarbleGraphicsItem::update
void update()
Marks the item and all parent items as invalid.
Definition: MarbleGraphicsItem.cpp:167
Marble::MarbleGraphicsItem::layout
AbstractMarbleGraphicsLayout * layout() const
Returns the layout of the MarbleGraphicsItem.
Definition: MarbleGraphicsItem.cpp:141
Marble::MarbleLocale::ImperialSystem
Definition: MarbleLocale.h:39
Marble::KM2NM
const qreal KM2NM
Definition: MarbleGlobal.h:207
Marble::PositionTracking::speed
qreal speed() const
provides speed of the gps device
Definition: PositionTracking.cpp:228
PositionTracking.h
Marble::GpsInfo::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: GpsInfo.cpp:60
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:83
Marble::FrameGraphicsItem::setPadding
void setPadding(qreal width)
Set the padding of the item.
Definition: FrameGraphicsItem.cpp:126
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QIcon
Marble::GpsInfo::backendTypes
QStringList backendTypes() const
Returns the name(s) of the backend that the plugin can render This method should return the name of t...
Definition: GpsInfo.cpp:45
Marble::AbstractFloatItem::setVisible
void setVisible(bool visible)
Set visibility of the float item.
Definition: AbstractFloatItem.cpp:130
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:39 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