• 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
  • routing
RoutingPlugin.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 2010 Siddharth Srivastava <akssps011@gmail.com>
9 // Copyright 2010 Dennis Nienhüser <earthwings@gentoo.org>
10 //
11 
12 #include "RoutingPlugin.h"
13 
14 #include "ui_RoutingPlugin.h"
15 #include "ui_RoutingConfigDialog.h"
16 
17 #include "AudioOutput.h"
18 #include "GeoDataCoordinates.h"
19 #include "GeoPainter.h"
20 #include "MarbleGraphicsGridLayout.h"
21 #include "MarbleModel.h"
22 #include "MarbleWidget.h"
23 #include "MarbleMath.h"
24 #include "MarbleLocale.h"
25 #include "MarbleDirs.h"
26 #include "PluginManager.h"
27 #include "PositionTracking.h"
28 #include "PositionProviderPlugin.h"
29 #include "routing/RoutingManager.h"
30 #include "routing/RoutingModel.h"
31 #include "routing/RouteRequest.h"
32 #include "routing/SpeakersModel.h"
33 #include "ViewportParams.h"
34 #include "WidgetGraphicsItem.h"
35 
36 #include <QRect>
37 #include <QWidget>
38 #include <QToolButton>
39 #include <QFont>
40 #include <QActionGroup>
41 #include <QPixmap>
42 #include <QDialog>
43 #include <QPushButton>
44 #include <QSpacerItem>
45 #if QT_VERSION < 0x050000
46 #include <QPlastiqueStyle>
47 #endif
48 
49 namespace Marble
50 {
51 
52 namespace
53 {
54 int const thresholdTime = 3; // in minutes
55 int const thresholdDistance = 1000; // in meter
56 }
57 
58 class RoutingPluginPrivate
59 {
60 public:
61  MarbleWidget* m_marbleWidget;
62  WidgetGraphicsItem* m_widgetItem;
63  RoutingModel* m_routingModel;
64  Ui::RoutingPlugin m_widget;
65  bool m_nearNextInstruction;
66  bool m_guidanceModeEnabled;
67  AudioOutput* m_audio;
68  QDialog *m_configDialog;
69  Ui::RoutingConfigDialog m_configUi;
70  bool m_routeCompleted;
71  SpeakersModel* m_speakersModel;
72 
73  RoutingPluginPrivate( RoutingPlugin* parent );
74 
75  void updateZoomButtons( int zoomValue );
76 
77  void updateZoomButtons();
78 
79  void updateGuidanceModeButton();
80 
81  void forceRepaint();
82 
83  void updateButtonVisibility();
84 
85  void reverseRoute();
86 
87  void toggleGuidanceMode( bool enabled );
88 
89  void updateDestinationInformation();
90 
91  void updateGpsButton( PositionProviderPlugin *activePlugin );
92 
93  void togglePositionTracking( bool enabled );
94 
95  QString richText( const QString &source ) const;
96 
97  QString fuzzyDistance( qreal distanceMeter ) const;
98 
99  void readSettings();
100 
101  qreal nextInstructionDistance() const;
102 
103  qreal remainingDistance() const;
104 
105 private:
106  RoutingPlugin* m_parent;
107 };
108 
109 RoutingPluginPrivate::RoutingPluginPrivate( RoutingPlugin *parent ) :
110  m_marbleWidget( 0 ),
111  m_widgetItem( 0 ),
112  m_routingModel( 0 ),
113  m_nearNextInstruction( false ),
114  m_guidanceModeEnabled( false ),
115  m_audio( new AudioOutput( parent ) ),
116  m_configDialog( 0 ),
117  m_routeCompleted( false ),
118  m_speakersModel( 0 ),
119  m_parent( parent )
120 {
121  m_audio->setMuted( false );
122  m_audio->setSoundEnabled( true );
123 }
124 
125 QString RoutingPluginPrivate::richText( const QString &source ) const
126 {
127  return QString( "<font size=\"+1\" color=\"black\">%1</font>" ).arg( source );
128 }
129 
130 QString RoutingPluginPrivate::fuzzyDistance( qreal length ) const
131 {
132  int precision = 0;
133  QString distanceUnit = QLatin1String( "m" );
134 
135  if ( MarbleGlobal::getInstance()->locale()->measurementSystem() == QLocale::ImperialSystem ) {
136  precision = 1;
137  distanceUnit = "mi";
138  length *= METER2KM;
139  length *= KM2MI;
140  } else {
141  if ( length >= 1000 ) {
142  length /= 1000;
143  distanceUnit = "km";
144  precision = 1;
145  } else if ( length >= 200 ) {
146  length = 50 * qRound( length / 50 );
147  } else if ( length >= 100 ) {
148  length = 25 * qRound( length / 25 );
149  } else {
150  length = 10 * qRound( length / 10 );
151  }
152  }
153 
154  return QString( "%1 %2" ).arg( length, 0, 'f', precision ).arg( distanceUnit );
155 }
156 
157 void RoutingPluginPrivate::updateZoomButtons( int zoomValue )
158 {
159  int const minZoom = m_marbleWidget ? m_marbleWidget->minimumZoom() : 900;
160  int const maxZoom = m_marbleWidget ? m_marbleWidget->maximumZoom() : 2400;
161 
162  bool const zoomInEnabled = zoomValue < maxZoom;
163  bool const zoomOutEnabled = zoomValue > minZoom;
164 
165  if ( ( zoomInEnabled != m_widget.zoomInButton->isEnabled() ) ||
166  ( zoomOutEnabled != m_widget.zoomOutButton->isEnabled() ) ) {
167  m_widget.zoomInButton->setEnabled( zoomInEnabled );
168  m_widget.zoomOutButton->setEnabled( zoomOutEnabled );
169  forceRepaint();
170  }
171 }
172 
173 void RoutingPluginPrivate::updateGuidanceModeButton()
174 {
175  bool const hasRoute = m_routingModel->rowCount() > 0;
176  m_widget.routingButton->setEnabled( hasRoute );
177  forceRepaint();
178 }
179 
180 void RoutingPluginPrivate::forceRepaint()
181 {
182  m_parent->update();
183  emit m_parent->repaintNeeded();
184 }
185 
186 void RoutingPluginPrivate::updateButtonVisibility()
187 {
188  bool const show = m_guidanceModeEnabled;
189  bool const near = show && m_nearNextInstruction;
190  m_widget.progressBar->setVisible( near );
191  m_widget.instructionIconLabel->setVisible( show );
192  m_widget.spacer->changeSize( show ? 10 : 0, 20 );
193  m_widget.instructionLabel->setVisible( show );
194 
195  // m_widget.followingInstructionIconLabel->setVisible( show );
196  // Disabling the next instruction turn icon for now, it seems to confuse first time users.
197  m_widget.followingInstructionIconLabel->setVisible( false );
198 
199  m_widget.destinationDistanceLabel->setVisible( show );
200 
201  m_widget.gpsButton->setVisible( !show );
202  m_widget.zoomOutButton->setVisible( !show );
203  m_widget.zoomInButton->setVisible( !show );
204 
205  m_widgetItem->widget()->updateGeometry();
206  QSize const size = m_widgetItem->widget()->sizeHint();
207  m_widgetItem->widget()->resize( size );
208  m_widgetItem->setContentSize( size );
209 
210  bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
211  if ( smallScreen ) {
212  qreal const pluginWidth = size.width();
213  int x = -10;
214  if ( m_guidanceModeEnabled ) {
215  int const parentWidth = m_marbleWidget->width();
216  x = qRound( ( parentWidth - pluginWidth ) / 2.0 );
217  }
218  m_parent->setPosition( QPointF( x, m_parent->position().y() ) );
219  }
220 }
221 
222 void RoutingPluginPrivate::updateZoomButtons()
223 {
224  if ( m_marbleWidget ) {
225  updateZoomButtons( m_marbleWidget->zoom() );
226  }
227 }
228 
229 void RoutingPluginPrivate::toggleGuidanceMode( bool enabled )
230 {
231  if( !m_marbleWidget || m_guidanceModeEnabled == enabled ) {
232  return;
233  }
234 
235  m_guidanceModeEnabled = enabled;
236  updateButtonVisibility();
237 
238  if( enabled ) {
239  QObject::connect( m_routingModel, SIGNAL(positionChanged()),
240  m_parent, SLOT(updateDestinationInformation()) );
241  } else {
242  QObject::disconnect( m_routingModel, SIGNAL(positionChanged()),
243  m_parent, SLOT(updateDestinationInformation()) );
244  }
245 
246  if ( enabled ) {
247  QString const text = QObject::tr( "Starting guidance mode, please wait..." );
248  m_widget.instructionLabel->setText( richText( "%1" ).arg( text ) );
249  }
250 
251  if ( enabled ) {
252  RouteRequest* request = m_marbleWidget->model()->routingManager()->routeRequest();
253  if ( request && request->size() > 0 ) {
254  GeoDataCoordinates source = request->source();
255  if ( source.longitude() != 0.0 || source.latitude() != 0.0 ) {
256  GeoDataLookAt view;
257  view.setCoordinates( source );
258  // By happy coincidence this equals OpenStreetMap tile level 15
259  view.setRange( 851.807 );
260  m_marbleWidget->flyTo( view );
261  }
262  }
263  }
264 
265  m_marbleWidget->model()->routingManager()->setGuidanceModeEnabled( enabled );
266 
267  if ( enabled ) {
268  m_routeCompleted = false;
269  }
270 
271  forceRepaint();
272 }
273 
274 void RoutingPluginPrivate::updateDestinationInformation()
275 {
276  if ( m_routingModel->route().currentSegment().isValid() ) {
277  qreal remaining = remainingDistance();
278  qreal distanceLeft = nextInstructionDistance();
279  m_audio->update( m_routingModel->route(), distanceLeft, remaining, m_routingModel->deviatedFromRoute() );
280 
281  m_nearNextInstruction = distanceLeft < thresholdDistance;
282 
283  QString pixmapHtml = "<img src=\":/flag.png\" /><br />";
284  m_widget.destinationDistanceLabel->setText( pixmapHtml + richText( fuzzyDistance( remaining ) ) );
285 
286  m_widget.instructionIconLabel->setEnabled( m_nearNextInstruction );
287  m_widget.progressBar->setMaximum( thresholdDistance );
288  m_widget.progressBar->setValue( qRound( distanceLeft ) );
289 
290  updateButtonVisibility();
291 
292  QString pixmap = MarbleDirs::path( "bitmaps/routing_step.png" );
293  pixmapHtml = QString( "<img src=\"%1\" />" ).arg( pixmap );
294 
295  GeoDataCoordinates const onRoute = m_routingModel->route().positionOnRoute();
296  GeoDataCoordinates const ego = m_routingModel->route().position();
297  qreal const distanceToRoute = EARTH_RADIUS * distanceSphere( ego, onRoute );
298 
299  if ( !m_routingModel->route().currentSegment().isValid() ) {
300  m_widget.instructionLabel->setText( richText( QObject::tr( "Calculate a route to get directions." ) ) );
301  m_widget.instructionIconLabel->setText( pixmapHtml );
302  } else if ( distanceToRoute > 300.0 ) {
303  m_widget.instructionLabel->setText( richText( QObject::tr( "Route left." ) ) );
304  m_widget.instructionIconLabel->setText( pixmapHtml );
305  } else if ( !m_routingModel->route().currentSegment().nextRouteSegment().isValid() ) {
306  m_widget.instructionLabel->setText( richText( QObject::tr( "Destination ahead." ) ) );
307  m_widget.instructionIconLabel->setText( pixmapHtml );
308  } else {
309  pixmap = m_routingModel->route().currentSegment().nextRouteSegment().maneuver().directionPixmap();
310  QString const instructionText = m_routingModel->route().currentSegment().nextRouteSegment().maneuver().instructionText();
311  m_widget.instructionLabel->setText( richText( "%1" ).arg( instructionText ) );
312  pixmapHtml = QString( "<p align=\"center\"><img src=\"%1\" /><br />%2</p>" ).arg( pixmap );
313  m_widget.instructionIconLabel->setText( pixmapHtml.arg( richText( fuzzyDistance( distanceLeft ) ) ) );
314 
315  if( remaining > 50 ) {
316  m_routeCompleted = false;
317  } else {
318  if ( !m_routeCompleted ) {
319  QString content = QObject::tr( "Arrived at destination. <a href=\"#reverse\">Calculate the way back.</a>" );
320  m_widget.instructionLabel->setText( richText( "%1" ).arg( content ) );
321  }
322  m_routeCompleted = true;
323  }
324  }
325 
326  forceRepaint();
327  }
328 }
329 
330 void RoutingPluginPrivate::updateGpsButton( PositionProviderPlugin *activePlugin )
331 {
332  m_widget.gpsButton->setChecked( activePlugin != 0 );
333  forceRepaint();
334 }
335 
336 void RoutingPluginPrivate::togglePositionTracking( bool enabled )
337 {
338  PositionProviderPlugin* plugin = 0;
339  if ( enabled ) {
340  const PluginManager* pluginManager = m_marbleWidget->model()->pluginManager();
341  QList<const PositionProviderPlugin*> plugins = pluginManager->positionProviderPlugins();
342  if ( plugins.size() > 0 ) {
343  plugin = plugins.first()->newInstance();
344  }
345  }
346  m_parent->marbleModel()->positionTracking()->setPositionProviderPlugin( plugin );
347 }
348 
349 void RoutingPluginPrivate::reverseRoute()
350 {
351  if ( m_marbleWidget ) {
352  m_marbleWidget->model()->routingManager()->reverseRoute();
353  }
354 }
355 
356 void RoutingPluginPrivate::readSettings()
357 {
358  if ( m_configDialog ) {
359  if ( !m_speakersModel ) {
360  m_speakersModel = new SpeakersModel( m_parent );
361  }
362  int const index = m_speakersModel->indexOf( m_audio->speaker() );
363  m_configUi.speakerComboBox->setModel( m_speakersModel );
364  m_configUi.speakerComboBox->setCurrentIndex( index );
365  m_configUi.voiceNavigationCheckBox->setChecked( !m_audio->isMuted() );
366  m_configUi.soundRadioButton->setChecked( m_audio->isSoundEnabled() );
367  m_configUi.speakerRadioButton->setChecked( !m_audio->isSoundEnabled() );
368  }
369 }
370 
371 qreal RoutingPluginPrivate::nextInstructionDistance() const
372 {
373  GeoDataCoordinates position = m_routingModel->route().position();
374  GeoDataCoordinates interpolated = m_routingModel->route().positionOnRoute();
375  GeoDataCoordinates onRoute = m_routingModel->route().currentWaypoint();
376  qreal distance = EARTH_RADIUS * ( distanceSphere( position, interpolated ) + distanceSphere( interpolated, onRoute ) );
377  const RouteSegment &segment = m_routingModel->route().currentSegment();
378  for (int i=0; i<segment.path().size(); ++i) {
379  if (segment.path()[i] == onRoute) {
380  return distance + segment.path().length( EARTH_RADIUS, i );
381  }
382  }
383 
384  return distance;
385 }
386 
387 qreal RoutingPluginPrivate::remainingDistance() const
388 {
389  GeoDataCoordinates position = m_routingModel->route().currentSegment().maneuver().position();
390  bool foundSegment = false;
391  qreal distance = nextInstructionDistance();
392  for ( int i=0; i<m_routingModel->route().size(); ++i ) {
393  if ( foundSegment ) {
394  distance += m_routingModel->route().at( i ).distance();
395  } else {
396  foundSegment = m_routingModel->route().at( i ).maneuver().position() == position;
397  }
398  }
399 
400  return distance;
401 }
402 
403 void RoutingPlugin::writeSettings()
404 {
405  Q_ASSERT( d->m_configDialog );
406  int const index = d->m_configUi.speakerComboBox->currentIndex();
407  if ( index >= 0 ) {
408  QModelIndex const idx = d->m_speakersModel->index( index );
409  d->m_audio->setSpeaker( d->m_speakersModel->data( idx, SpeakersModel::Path ).toString() );
410  if ( !d->m_speakersModel->data( idx, SpeakersModel::IsLocal ).toBool() ) {
411  d->m_speakersModel->install( index );
412  }
413  }
414  d->m_audio->setMuted( !d->m_configUi.voiceNavigationCheckBox->isChecked() );
415  d->m_audio->setSoundEnabled( d->m_configUi.soundRadioButton->isChecked() );
416  d->readSettings();
417  emit settingsChanged( nameId() );
418 }
419 
420 
421 RoutingPlugin::RoutingPlugin() :
422  AbstractFloatItem( 0 ),
423  d( 0 )
424 {
425 }
426 
427 RoutingPlugin::RoutingPlugin( const MarbleModel *marbleModel ) :
428  AbstractFloatItem( marbleModel, QPointF( -10, -10 ) ),
429  d( new RoutingPluginPrivate( this ) )
430 {
431  setEnabled( true );
432  //plugin is visible by default on small screen devices
433  setVisible( MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen );
434  setPadding( 0.5 );
435  setBorderWidth( 1 );
436  setBackground( QBrush( QColor( "white" ) ) );
437 }
438 
439 RoutingPlugin::~RoutingPlugin()
440 {
441  delete d;
442 }
443 
444 QStringList RoutingPlugin::backendTypes() const
445 {
446  return QStringList( "routing" );
447 }
448 
449 QString RoutingPlugin::name() const
450 {
451  return tr( "Routing" );
452 }
453 
454 QString RoutingPlugin::guiString() const
455 {
456  return tr( "&Routing" );
457 }
458 
459 QString RoutingPlugin::nameId() const
460 {
461  return QString( "routing" );
462 }
463 
464 QString RoutingPlugin::version() const
465 {
466  return "1.0";
467 }
468 
469 QString RoutingPlugin::description() const
470 {
471  return tr( "Routing information and navigation controls" );
472 }
473 
474 QString RoutingPlugin::copyrightYears() const
475 {
476  return "2010";
477 }
478 
479 QList<PluginAuthor> RoutingPlugin::pluginAuthors() const
480 {
481  return QList<PluginAuthor>()
482  << PluginAuthor( "Siddharth Srivastava", "akssps011@gmail.com" )
483  << PluginAuthor( QString::fromUtf8( "Dennis Nienhüser" ), "earthwings@gentoo.org" );
484 }
485 
486 QIcon RoutingPlugin::icon() const
487 {
488  return QIcon(":/icons/routeplanning.png");
489 }
490 
491 void RoutingPlugin::initialize()
492 {
493  QWidget *widget = new QWidget;
494  d->m_widget.setupUi( widget );
495  d->m_widgetItem = new WidgetGraphicsItem( this );
496  d->m_widgetItem->setWidget( widget );
497 
498  PositionProviderPlugin* activePlugin = marbleModel()->positionTracking()->positionProviderPlugin();
499  d->updateGpsButton( activePlugin );
500  connect( marbleModel()->positionTracking(),
501  SIGNAL(positionProviderPluginChanged(PositionProviderPlugin*)),
502  this, SLOT(updateGpsButton(PositionProviderPlugin*)) );
503 
504  d->m_widget.routingButton->setEnabled( false );
505  connect( d->m_widget.instructionLabel, SIGNAL(linkActivated(QString)),
506  this, SLOT(reverseRoute()) );
507 
508  bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
509 
510 #if QT_VERSION < 0x050000
511  if ( smallScreen ) {
517  d->m_widget.progressBar->setStyle( new QPlastiqueStyle );
518  }
519 #endif
520 
521  MarbleGraphicsGridLayout *layout = new MarbleGraphicsGridLayout( 1, 1 );
522  layout->addItem( d->m_widgetItem, 0, 0 );
523  setLayout( layout );
524  d->updateButtonVisibility();
525 }
526 
527 bool RoutingPlugin::isInitialized() const
528 {
529  return d->m_widgetItem;
530 }
531 
532 bool RoutingPlugin::eventFilter( QObject *object, QEvent *e )
533 {
534  if ( d->m_marbleWidget || !enabled() || !visible() ) {
535  return AbstractFloatItem::eventFilter( object, e );
536  }
537 
538  MarbleWidget *widget = dynamic_cast<MarbleWidget*> ( object );
539 
540  if ( widget && !d->m_marbleWidget ) {
541  d->m_marbleWidget = widget;
542  d->m_routingModel = d->m_marbleWidget->model()->routingManager()->routingModel();
543 
544  connect( d->m_widget.routingButton, SIGNAL(clicked(bool)),
545  this, SLOT(toggleGuidanceMode(bool)) );
546  connect( d->m_widget.gpsButton, SIGNAL(clicked(bool)),
547  this, SLOT(togglePositionTracking(bool)) );
548  connect( d->m_widget.zoomInButton, SIGNAL(clicked()),
549  d->m_marbleWidget, SLOT(zoomIn()) );
550  connect( d->m_widget.zoomOutButton, SIGNAL(clicked()),
551  d->m_marbleWidget, SLOT(zoomOut()) );
552  connect( d->m_marbleWidget, SIGNAL(themeChanged(QString)),
553  this, SLOT(updateZoomButtons()) );
554  connect( d->m_marbleWidget, SIGNAL(zoomChanged(int)),
555  this, SLOT(updateZoomButtons(int)) );
556  connect( d->m_routingModel, SIGNAL(currentRouteChanged()),
557  this, SLOT(updateGuidanceModeButton()) );
558  d->updateGuidanceModeButton();
559  }
560  return AbstractFloatItem::eventFilter( object, e );
561 }
562 
563 QHash<QString,QVariant> RoutingPlugin::settings() const
564 {
565  QHash<QString, QVariant> result = AbstractFloatItem::settings();
566 
567  result.insert( "muted", d->m_audio->isMuted() );
568  result.insert( "sound", d->m_audio->isSoundEnabled() );
569  result.insert( "speaker", d->m_audio->speaker() );
570 
571  return result;
572 }
573 
574 void RoutingPlugin::setSettings( const QHash<QString,QVariant> &settings )
575 {
576  AbstractFloatItem::setSettings( settings );
577 
578  d->m_audio->setMuted( settings.value( "muted", false ).toBool() );
579  d->m_audio->setSoundEnabled( settings.value( "sound", true ).toBool() );
580  d->m_audio->setSpeaker( settings.value( "speaker" ).toString() );
581 
582  d->readSettings();
583 }
584 
585 QDialog *RoutingPlugin::configDialog()
586 {
587  if ( !d->m_configDialog ) {
588  d->m_configDialog = new QDialog;
589  d->m_configUi.setupUi( d->m_configDialog );
590  d->readSettings();
591 
592  connect( d->m_configDialog, SIGNAL(accepted()), this, SLOT(writeSettings()) );
593  connect( d->m_configDialog, SIGNAL(rejected()), this, SLOT(readSettings()) );
594  connect( d->m_configUi.buttonBox->button( QDialogButtonBox::Reset ), SIGNAL(clicked()),
595  SLOT(restoreDefaultSettings()) );
596  }
597 
598  return d->m_configDialog;
599 }
600 
601 }
602 
603 Q_EXPORT_PLUGIN2( RoutingPlugin, Marble::RoutingPlugin )
604 
605 #include "RoutingPlugin.moc"
Marble::RoutingPlugin::copyrightYears
QString copyrightYears() const
Definition: RoutingPlugin.cpp:474
Marble::PositionTracking::positionProviderPlugin
PositionProviderPlugin positionProviderPlugin
Definition: PositionTracking.h:35
Marble::SpeakersModel::Path
Definition: SpeakersModel.h:33
Marble::AbstractFloatItem::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: AbstractFloatItem.cpp:70
GeoDataCoordinates.h
RoutingModel.h
Marble::AbstractFloatItem::visible
bool visible() const
Check visibility of the float item.
Definition: AbstractFloatItem.cpp:135
Marble::RoutingPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: RoutingPlugin.cpp:459
PositionProviderPlugin.h
Marble::MarbleDirs::path
static QString path(const QString &relativePath)
Definition: MarbleDirs.cpp:53
MarbleMath.h
Marble::RoutingPlugin::version
QString version() const
Definition: RoutingPlugin.cpp:464
QDialog
Marble::RoutingPlugin::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: RoutingPlugin.cpp:486
Marble::RoutingPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RoutingPlugin.cpp:574
Marble::RoutingPlugin::RoutingPlugin
RoutingPlugin()
Definition: RoutingPlugin.cpp:421
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::RoutingPlugin::initialize
void initialize()
Definition: RoutingPlugin.cpp:491
QWidget
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::AbstractFloatItem::eventFilter
virtual bool eventFilter(QObject *object, QEvent *e)
Definition: AbstractFloatItem.cpp:161
Marble::RoutingPlugin::eventFilter
bool eventFilter(QObject *object, QEvent *event)
Definition: RoutingPlugin.cpp:532
Marble::FrameGraphicsItem::setBackground
void setBackground(const QBrush &background)
Changes the background brush of the item.
Definition: FrameGraphicsItem.cpp:165
Marble::AbstractFloatItem::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: AbstractFloatItem.cpp:77
Marble::RenderPlugin::restoreDefaultSettings
void restoreDefaultSettings()
Passes an empty set of settings to the plugin.
Definition: RenderPlugin.cpp:214
Marble::distanceSphere
qreal distanceSphere(qreal lon1, qreal lat1, qreal lon2, qreal lat2)
This method calculates the shortest distance between two points on a sphere.
Definition: MarbleMath.h:52
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
RoutingPlugin.h
QObject
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:102
Marble::PositionProviderPlugin
The abstract class that provides position information.
Definition: PositionProviderPlugin.h:26
Marble::RoutingPlugin::isInitialized
bool isInitialized() const
Definition: RoutingPlugin.cpp:527
RoutingManager.h
Marble::EARTH_RADIUS
const qreal EARTH_RADIUS
Definition: MarbleGlobal.h:238
Marble::RoutingPlugin::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: RoutingPlugin.cpp:444
Marble::RenderPlugin::settingsChanged
void settingsChanged(QString nameId)
This signal is emitted if the settings of the RenderPlugin changed.
Marble::AbstractFloatItem
The abstract class for float item plugins.
Definition: AbstractFloatItem.h:48
Marble::SpeakersModel::IsLocal
Definition: SpeakersModel.h:34
MarbleDirs.h
SpeakersModel.h
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:442
Marble::RoutingPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: RoutingPlugin.cpp:479
Marble::RoutingPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: RoutingPlugin.cpp:449
Marble::MarbleGraphicsGridLayout
Definition: MarbleGraphicsGridLayout.h:27
MarbleLocale.h
GeoPainter.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::SmallScreen
Definition: MarbleGlobal.h:268
Marble::MarbleGlobal::getInstance
static MarbleGlobal * getInstance()
Definition: MarbleGlobal.cpp:37
Marble::RoutingPlugin::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: RoutingPlugin.cpp:563
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:96
Marble::RoutingPlugin
Definition: RoutingPlugin.h:23
Marble::RenderPlugin::setEnabled
void setEnabled(bool enabled)
settting enabled
Definition: RenderPlugin.cpp:137
PluginManager.h
AudioOutput.h
Marble::MarbleGlobal::profiles
Profiles profiles() const
Definition: MarbleGlobal.cpp:48
Marble::RoutingPlugin::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: RoutingPlugin.cpp:454
Marble::RoutingPlugin::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: RoutingPlugin.cpp:585
MarbleWidget.h
This file contains the headers for MarbleWidget.
RouteRequest.h
Marble::MarbleGraphicsItem::layout
AbstractMarbleGraphicsLayout * layout() const
Returns the layout of the MarbleGraphicsItem.
Definition: MarbleGraphicsItem.cpp:141
Marble::FrameGraphicsItem::setBorderWidth
void setBorderWidth(qreal width)
Set the border width of the item.
Definition: FrameGraphicsItem.cpp:118
Marble::RoutingPlugin::~RoutingPlugin
~RoutingPlugin()
Definition: RoutingPlugin.cpp:439
Marble::RoutingPlugin::description
QString description() const
Returns a user description of the plugin.
Definition: RoutingPlugin.cpp:469
MarbleWidget
Wraps a Marble::MarbleWidget, providing access to important properties and methods.
Definition: MarbleDeclarativeWidget.h:50
PositionTracking.h
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::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:52 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