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

marble

  • sources
  • kde-4.12
  • 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_widgetItem( 0 )
29 {
30 }
31 
32 GpsInfo::GpsInfo( const MarbleModel *marbleModel )
33  : AbstractFloatItem( marbleModel, QPointF( 10.5, 110 ), QSizeF( 135.0, 80.0 ) ),
34  m_widgetItem( 0 )
35 {
36  setVisible( false );
37 }
38 
39 GpsInfo::~GpsInfo()
40 {
41 }
42 
43 QStringList GpsInfo::backendTypes() const
44 {
45  return QStringList( "GpsInfo" );
46 }
47 
48 QString GpsInfo::name() const
49 {
50  return tr("GpsInfo");
51 }
52 
53 QString GpsInfo::guiString() const
54 {
55  return tr("&GpsInfo");
56 }
57 
58 QString GpsInfo::nameId() const
59 {
60  return QString( "GpsInfo" );
61 }
62 
63 QString GpsInfo::version() const
64 {
65  return "1.0";
66 }
67 
68 QString GpsInfo::description() const
69 {
70  return tr("This is a float item that provides Gps Information.");
71 }
72 
73 QString GpsInfo::copyrightYears() const
74 {
75  return "2011";
76 }
77 
78 QList<PluginAuthor> GpsInfo::pluginAuthors() const
79 {
80  return QList<PluginAuthor>()
81  << PluginAuthor( "Thibaut Gridel", "tgridel@free.fr" );
82 }
83 
84 QIcon GpsInfo::icon () const
85 {
86  return QIcon(":/icons/gps.png");
87 }
88 
89 void GpsInfo::initialize ()
90 {
91  if ( !m_widgetItem )
92  {
93  QWidget *widget = new QWidget;
94  m_widget.setupUi( widget );
95  m_widgetItem = new WidgetGraphicsItem( this );
96  m_widgetItem->setWidget( widget );
97 
98  MarbleGraphicsGridLayout *layout = new MarbleGraphicsGridLayout( 1, 1 );
99  layout->addItem( m_widgetItem, 0, 0 );
100  setLayout( layout );
101  setPadding( 0 );
102 
103  m_locale = MarbleGlobal::getInstance()->locale();
104  connect( marbleModel()->positionTracking(), SIGNAL(gpsLocation(GeoDataCoordinates,qreal)),
105  this, SLOT(updateLocation(GeoDataCoordinates,qreal)) );
106  }
107 }
108 
109 bool GpsInfo::isInitialized () const
110 {
111  return m_widgetItem;
112 }
113 
114 void GpsInfo::updateLocation( GeoDataCoordinates coordinates, qreal)
115 {
116  PositionTracking *tracking = marbleModel()->positionTracking();
117  qreal speed = tracking->speed();
118  qreal direction = tracking->direction();
119  qreal altitude = coordinates.altitude();
120  qreal precision = tracking->accuracy().horizontal;
121  QString speedString;
122  QString distanceString;
123 
124  switch ( m_locale->measurementSystem() ) {
125  case QLocale::ImperialSystem:
126  //miles per hour
127  speedString = tr("mph");
128  speed *= HOUR2SEC * METER2KM * KM2MI;
129  distanceString = tr("ft");
130  altitude *= M2FT;
131  precision *= M2FT;
132  break;
133 
134  case QLocale::MetricSystem:
135  //kilometers per hour
136  speedString = tr("km/h");
137  speed *= HOUR2SEC * METER2KM;
138  distanceString = tr("m");
139  break;
140  }
141 
142  m_widget.SpeedValue->setText( QString( " %1 %2" )
143  .arg( QLocale().toString(speed, 'f', 1 ) )
144  .arg( speedString ) );
145  m_widget.AltitudeValue->setText( QString( " %1 %2" )
146  .arg( QLocale().toString(altitude, 'f', 1 ) )
147  .arg( distanceString ) );
148  m_widget.DirectionValue->setText( QString( " %1 %2" )
149  .arg( QLocale().toString(direction, 'f', 1 ) )
150  .arg( "d" ) );
151  m_widget.PrecisionValue->setText( QString( " %1 %2" )
152  .arg( QLocale().toString(precision, 'f', 1 ) )
153  .arg( distanceString ) );
154 
155  int const minimumWidth = m_widgetItem->widget()->sizeHint().width();
156  if ( size().width() < minimumWidth ) {
157  m_widgetItem->setSize( QSizeF( minimumWidth, size().height() ) );
158  }
159 
160  update();
161  emit repaintNeeded();
162 }
163 
164 }
165 
166 Q_EXPORT_PLUGIN2( GpsInfo, Marble::GpsInfo )
167 
168 #include "GpsInfo.moc"
Marble::PositionTracking::direction
qreal direction() const
provides direction of the gps device in degrees with geographical north
Definition: PositionTracking.cpp:233
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
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:84
Marble::WidgetGraphicsItem::setWidget
void setWidget(QWidget *widget)
Definition: WidgetGraphicsItem.cpp:48
tracking
Definition: position-tracking.qml:12
Marble::MarbleLocale::measurementSystem
QLocale::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:78
MarbleModel.h
This file contains the headers for MarbleModel.
QWidget
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::HOUR2SEC
const qreal HOUR2SEC
Definition: MarbleGlobal.h:216
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
Marble::GpsInfo::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: GpsInfo.cpp:53
Marble::PositionTracking::accuracy
GeoDataAccuracy accuracy() const
Returns the estimated accuracy of the current position.
Definition: PositionTracking.cpp:383
GpsInfo.h
Marble::GpsInfo::~GpsInfo
~GpsInfo()
Definition: GpsInfo.cpp:39
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:192
Marble::GpsInfo::copyrightYears
QString copyrightYears() const
Definition: GpsInfo.cpp:73
Marble::AbstractFloatItem
The abstract class for float item plugins.
Definition: AbstractFloatItem.h:48
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:442
Marble::GeoDataAccuracy::horizontal
qreal horizontal
Horizontal accuracy in meters.
Definition: GeoDataAccuracy.h:47
Marble::MarbleGraphicsGridLayout
Definition: MarbleGraphicsGridLayout.h:27
Marble::GpsInfo::initialize
void initialize()
Definition: GpsInfo.cpp:89
Marble::MarbleGlobal::locale
MarbleLocale * locale() const
Definition: MarbleGlobal.cpp:43
MarbleLocale.h
Marble::WidgetGraphicsItem
Definition: WidgetGraphicsItem.h:28
WidgetGraphicsItem.h
Marble::METER2KM
const qreal METER2KM
Definition: MarbleGlobal.h:205
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
Marble::KM2MI
const qreal KM2MI
Definition: MarbleGlobal.h:189
MarbleGraphicsGridLayout.h
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::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:96
direction
qreal direction
Definition: tools/osm-addresses/OsmParser.cpp:39
Marble::GpsInfo::version
QString version() const
Definition: GpsInfo.cpp:63
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:48
Marble::GpsInfo::description
QString description() const
Returns a user description of the plugin.
Definition: GpsInfo.cpp:68
Marble::GpsInfo::isInitialized
bool isInitialized() const
Definition: GpsInfo.cpp:109
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::PositionTracking::speed
qreal speed() const
provides speed of the gps device
Definition: PositionTracking.cpp:227
PositionTracking.h
Marble::GpsInfo::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: GpsInfo.cpp:58
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:81
Marble::FrameGraphicsItem::setPadding
void setPadding(qreal width)
Set the padding of the item.
Definition: FrameGraphicsItem.cpp:130
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:43
Marble::AbstractFloatItem::setVisible
void setVisible(bool visible)
Set visibility of the float item.
Definition: AbstractFloatItem.cpp:128
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:50 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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