• 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
  • apps
  • marble-ui
ControlView.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 2006-2007 Torsten Rahn <tackat@kde.org>
9 // Copyright 2007 Inge Wallin <ingwa@kde.org>
10 //
11 
12 
13 #include "ControlView.h"
14 
15 #include <QLayout>
16 #include <QSplitter>
17 #include <QStringListModel>
18 #include <QPrintDialog>
19 #include <QPrintPreviewDialog>
20 #include <QPrinter>
21 #include <QPainter>
22 #include <QTextDocument>
23 #include <QPointer>
24 #include <QUrl>
25 #include <QDesktopServices>
26 #include <QNetworkAccessManager>
27 #include <QNetworkReply>
28 #include <QNetworkRequest>
29 #include <QProcess>
30 #include <QTimer>
31 #include <QFileInfo>
32 #include <QMessageBox>
33 #include <QMainWindow>
34 #include <QDockWidget>
35 #include <QShortcut>
36 #include <QMenu>
37 
38 #include "GeoSceneDocument.h"
39 #include "GeoSceneHead.h"
40 #include "GeoUriParser.h"
41 #include "MarbleWidget.h"
42 #include "MarbleDebug.h"
43 #include "MarbleDirs.h"
44 #include "MarbleModel.h"
45 #include "MarbleMap.h"
46 #include "MapThemeManager.h"
47 #include "PrintOptionsWidget.h"
48 #include "ViewportParams.h"
49 #include "ViewParams.h"
50 #include "routing/RoutingManager.h"
51 #include "routing/RoutingModel.h"
52 #include "routing/RouteRequest.h"
53 #include "routing/RoutingWidget.h"
54 #include "ExternalEditorDialog.h"
55 #include "CurrentLocationWidget.h"
56 #include "SearchWidget.h"
57 #include "TourWidget.h"
58 #include "MapViewWidget.h"
59 #include "FileViewWidget.h"
60 #include "LegendWidget.h"
61 #include "BookmarkManager.h"
62 #include "cloudsync/CloudSyncManager.h"
63 #include "cloudsync/BookmarkSyncManager.h"
64 #include "cloudsync/RouteSyncManager.h"
65 #include "cloudsync/ConflictDialog.h"
66 #include "cloudsync/MergeItem.h"
67 
68 namespace Marble
69 {
70 
71 ControlView::ControlView( QWidget *parent )
72  : QWidget( parent ),
73  m_mapThemeManager( new MapThemeManager( this ) ),
74  m_searchDock( 0 ),
75  m_locationWidget( 0 ),
76  m_conflictDialog( 0 ),
77  m_togglePanelVisibilityAction( 0 ),
78  m_isPanelVisible( true ),
79  m_tourWidget( 0 )
80 {
81  setWindowTitle( tr( "Marble - Virtual Globe" ) );
82 
83  resize( 680, 640 );
84 
85  m_marbleWidget = new MarbleWidget( this );
86  m_marbleWidget->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding,
87  QSizePolicy::MinimumExpanding ) );
88 
89  QVBoxLayout* layout = new QVBoxLayout;
90  layout->addWidget( m_marbleWidget );
91  layout->setMargin( 0 );
92  setLayout( layout );
93 
94  m_cloudSyncManager = new CloudSyncManager( this );
95  m_cloudSyncManager->routeSyncManager()->setRoutingManager( m_marbleWidget->model()->routingManager() );
96  BookmarkSyncManager* bookmarkSyncManager = m_cloudSyncManager->bookmarkSyncManager();
97  bookmarkSyncManager->setBookmarkManager( m_marbleWidget->model()->bookmarkManager() );
98  m_conflictDialog = new ConflictDialog( m_marbleWidget );
99  connect( bookmarkSyncManager, SIGNAL(mergeConflict(MergeItem*)), this, SLOT(showConflictDialog(MergeItem*)) );
100  connect( bookmarkSyncManager, SIGNAL(syncComplete()), m_conflictDialog, SLOT(stopAutoResolve()) );
101  connect( m_conflictDialog, SIGNAL(resolveConflict(MergeItem*)), bookmarkSyncManager, SLOT(resolveConflict(MergeItem*)) );
102 }
103 
104 ControlView::~ControlView()
105 {
106  // nothing to do
107 }
108 
109 QString ControlView::applicationVersion()
110 {
111  return "1.9.2 (stable release)";
112 }
113 
114 MapThemeManager *ControlView::mapThemeManager()
115 {
116  return m_mapThemeManager;
117 }
118 
119 void ControlView::zoomIn()
120 {
121  m_marbleWidget->zoomIn();
122 }
123 
124 void ControlView::zoomOut()
125 {
126  m_marbleWidget->zoomOut();
127 }
128 
129 void ControlView::moveLeft()
130 {
131  m_marbleWidget->moveLeft();
132 }
133 
134 void ControlView::moveRight()
135 {
136  m_marbleWidget->moveRight();
137 }
138 
139 void ControlView::moveUp()
140 {
141  m_marbleWidget->moveUp();
142 }
143 
144 void ControlView::moveDown()
145 {
146  m_marbleWidget->moveDown();
147 }
148 
149 QString ControlView::defaultMapThemeId() const
150 {
151  QStringList fallBackThemes;
152  fallBackThemes << "earth/srtm/srtm.dgml";
153  fallBackThemes << "earth/bluemarble/bluemarble.dgml";
154  fallBackThemes << "earth/openstreetmap/openstreetmap.dgml";
155 
156  const QStringList installedThemes = m_mapThemeManager->mapThemeIds();
157 
158  foreach(const QString &fallback, fallBackThemes) {
159  if (installedThemes.contains(fallback)) {
160  return fallback;
161  }
162  }
163 
164  if (installedThemes.size()) {
165  return installedThemes.first();
166  }
167 
168  return QString();
169 }
170 
171 void ControlView::printMapScreenShot( QPointer<QPrintDialog> printDialog)
172 {
173 #ifndef QT_NO_PRINTER
174  PrintOptionsWidget* printOptions = new PrintOptionsWidget( this );
175  bool const mapCoversViewport = m_marbleWidget->viewport()->mapCoversViewport();
176  printOptions->setBackgroundControlsEnabled( !mapCoversViewport );
177  bool hasLegend = m_marbleWidget->model()->legend() != 0;
178  printOptions->setLegendControlsEnabled( hasLegend );
179  bool hasRoute = marbleWidget()->model()->routingManager()->routingModel()->rowCount() > 0;
180  printOptions->setPrintRouteSummary( hasRoute );
181  printOptions->setPrintDrivingInstructions( hasRoute );
182  printOptions->setPrintDrivingInstructionsAdvice( hasRoute );
183  printOptions->setRouteControlsEnabled( hasRoute );
184  printDialog->setOptionTabs( QList<QWidget*>() << printOptions );
185 
186  if ( printDialog->exec() == QDialog::Accepted ) {
187  QTextDocument document;
188  QString text = "<html><head><title>Marble Printout</title></head><body>";
189  QPalette const originalPalette = m_marbleWidget->palette();
190  bool const wasBackgroundVisible = m_marbleWidget->showBackground();
191  bool const hideBackground = !mapCoversViewport && !printOptions->printBackground();
192  if ( hideBackground ) {
193  // Temporarily remove the black background and layers painting on it
194  m_marbleWidget->setShowBackground( false );
195  m_marbleWidget->setPalette( QPalette ( Qt::white ) );
196  m_marbleWidget->update();
197  }
198 
199  if ( printOptions->printMap() ) {
200  printMap( document, text, printDialog->printer() );
201  }
202 
203  if ( printOptions->printLegend() ) {
204  printLegend( document, text );
205  }
206 
207  if ( printOptions->printRouteSummary() ) {
208  printRouteSummary( document, text );
209  }
210 
211  if ( printOptions->printDrivingInstructions() ) {
212  printDrivingInstructions( document, text );
213  }
214 
215  if ( printOptions->printDrivingInstructionsAdvice() ) {
216  printDrivingInstructionsAdvice( document, text );
217  }
218 
219  text += "</body></html>";
220  document.setHtml( text );
221  document.print( printDialog->printer() );
222 
223  if ( hideBackground ) {
224  m_marbleWidget->setShowBackground( wasBackgroundVisible );
225  m_marbleWidget->setPalette( originalPalette );
226  m_marbleWidget->update();
227  }
228  }
229 #endif
230 }
231 
232 void ControlView::openGeoUri( const QString& geoUriString )
233 {
234  GeoUriParser uriParser( geoUriString );
235  if ( uriParser.parse() ) {
236  if ( uriParser.planet().id() != marbleModel()->planet()->id() ) {
237  MapThemeManager *manager = mapThemeManager();
238  foreach( const QString& planetName, manager->mapThemeIds()) {
239  if ( planetName.startsWith(uriParser.planet().id(), Qt::CaseInsensitive)) {
240  m_marbleWidget->setMapThemeId(planetName);
241  break;
242  }
243  }
244  }
245  m_marbleWidget->centerOn( uriParser.coordinates() );
246  if ( uriParser.coordinates().altitude() > 0.0 )
247  {
248  m_marbleWidget->setDistance( uriParser.coordinates().altitude() * METER2KM );
249  }
250  }
251 }
252 
253 void ControlView::printPixmap( QPrinter * printer, const QPixmap& pixmap )
254 {
255 #ifndef QT_NO_PRINTER
256  QSize printSize = pixmap.size();
257  QRect mapPageRect = printer->pageRect();
258  printSize.scale( printer->pageRect().size(), Qt::KeepAspectRatio );
259  QPoint printTopLeft( ( mapPageRect.width() - printSize.width() ) / 2 ,
260  ( mapPageRect.height() - printSize.height() ) / 2 );
261  QRect mapPrintRect( printTopLeft, printSize );
262 
263  QPainter painter;
264  if (!painter.begin(printer))
265  return;
266  painter.drawPixmap( mapPrintRect, pixmap, pixmap.rect() );
267  painter.end();
268 #endif
269 }
270 
271 // QPointer is used because of issues described in http://www.kdedevelopers.org/node/3919
272 void ControlView::printPreview()
273 {
274 #ifndef QT_NO_PRINTER
275  QPrinter printer( QPrinter::HighResolution );
276 
277  QPointer<QPrintPreviewDialog> preview = new QPrintPreviewDialog( &printer, this );
278  preview->setWindowFlags ( Qt::Window );
279  preview->resize(640, 480);
280  connect( preview, SIGNAL(paintRequested(QPrinter*)), SLOT(paintPrintPreview(QPrinter*)) );
281  preview->exec();
282  delete preview;
283 #endif
284 }
285 
286 void ControlView::paintPrintPreview( QPrinter * printer )
287 {
288 #ifndef QT_NO_PRINTER
289  QPixmap mapPixmap = mapScreenShot();
290  printPixmap( printer, mapPixmap );
291 #endif
292 }
293 
294 void ControlView::printMap( QTextDocument &document, QString &text, QPrinter *printer )
295 {
296 #ifndef QT_NO_PRINTER
297  QPixmap image = mapScreenShot();
298 
299  if ( m_marbleWidget->viewport()->mapCoversViewport() ) {
300  // Paint a black frame. Looks better.
301  QPainter painter(&image);
302  painter.setPen( Qt::black );
303  painter.drawRect( 0, 0, image.width() - 2, image.height() - 2 );
304  }
305 
306  QString uri = "marble://screenshot.png";
307  document.addResource( QTextDocument::ImageResource, QUrl( uri ), QVariant( image) );
308  QString img = "<img src=\"%1\" width=\"%2\" align=\"center\">";
309  int width = qRound( printer->pageRect( QPrinter::Point ).width() );
310  text += img.arg( uri ).arg( width );
311 #endif
312 }
313 
314 void ControlView::printLegend( QTextDocument &document, QString &text )
315 {
316 #ifndef QT_NO_PRINTER
317  QTextDocument *legend = m_marbleWidget->model()->legend();
318  if ( legend ) {
319  legend->adjustSize();
320  QSize size = legend->size().toSize();
321  QSize imageSize = size + QSize( 4, 4 );
322  QImage image( imageSize, QImage::Format_ARGB32);
323  QPainter painter( &image );
324  painter.setRenderHint( QPainter::Antialiasing, true );
325  painter.drawRoundedRect( QRect( QPoint( 0, 0 ), size ), 5, 5 );
326  legend->drawContents( &painter );
327  document.addResource( QTextDocument::ImageResource, QUrl( "marble://legend.png" ), QVariant(image) );
328  QString img = "<p><img src=\"%1\" align=\"center\"></p>";
329  text += img.arg( "marble://legend.png" );
330  }
331 #endif
332 }
333 
334 void ControlView::printRouteSummary( QTextDocument &document, QString &text)
335 {
336 #ifndef QT_NO_PRINTER
337  RoutingModel* routingModel = m_marbleWidget->model()->routingManager()->routingModel();
338 
339  if ( !routingModel ) {
340  return;
341  }
342 
343  RouteRequest* routeRequest = m_marbleWidget->model()->routingManager()->routeRequest();
344  if ( routeRequest ) {
345  QString summary = "<h3>Route to %1: %2 %3</h3>";
346  QString destination;
347  if ( routeRequest->size() ) {
348  destination = routeRequest->name( routeRequest->size()-1 );
349  }
350 
351  QString label = "<p>%1 %2</p>";
352  qreal distance = routingModel->route().distance();
353  QString unit = distance > 1000 ? "km" : "m";
354  int precision = distance > 1000 ? 1 : 0;
355  if ( distance > 1000 ) {
356  distance /= 1000;
357  }
358  summary = summary.arg(destination).arg( distance, 0, 'f', precision ).arg( unit );
359  text += summary;
360 
361  text += "<table cellpadding=\"2\">";
362  QString pixmapTemplate = "marble://viaPoint-%1.png";
363  for ( int i=0; i<routeRequest->size(); ++i ) {
364  text += "<tr><td>";
365  QPixmap pixmap = routeRequest->pixmap(i);
366  QString pixmapResource = pixmapTemplate.arg( i );
367  document.addResource(QTextDocument::ImageResource,
368  QUrl( pixmapResource ), QVariant( pixmap ) );
369  QString myimg = "<img src=\"%1\">";
370  text += myimg.arg( pixmapResource );
371  text += "</td><td>";
372  text += routeRequest->name( i );
373  text += "</td></tr>";
374  }
375  text += "</table>";
376  }
377 #endif
378 }
379 
380 void ControlView::printDrivingInstructions( QTextDocument &document, QString &text )
381 {
382 #ifndef QT_NO_PRINTER
383  RoutingModel* routingModel = m_marbleWidget->model()->routingManager()->routingModel();
384 
385  if (!routingModel) {
386  return;
387  }
388 
389  GeoDataLineString total = routingModel->route().path();
390 
391  text += "<table cellpadding=\"4\">";
392  text += "<tr><th>No.</th><th>Distance</th><th>Instruction</th></tr>";
393  for ( int i=0; i<routingModel->rowCount(); ++i ) {
394  QModelIndex index = routingModel->index(i, 0);
395  GeoDataCoordinates coordinates = index.data( RoutingModel::CoordinateRole ).value<GeoDataCoordinates>();
396  GeoDataLineString accumulator;
397  for (int k=0; k<total.size(); ++k) {
398  accumulator << total.at(k);
399 
400  if (total.at(k) == coordinates)
401  break;
402  }
403 
404  if ( i%2 == 0 ) {
405  text += "<tr bgcolor=\"lightGray\"><td align=\"right\" valign=\"middle\">";
406  }
407  else {
408  text += "<tr><td align=\"right\" valign=\"middle\">";
409  }
410  text += QString::number( i+1 );
411  text += "</td><td align=\"right\" valign=\"middle\">";
412 
413  text += QString::number( accumulator.length( EARTH_RADIUS ) * METER2KM, 'f', 1 );
415  text += " km</td><td valign=\"middle\">";
416 
417  QPixmap instructionIcon = index.data( Qt::DecorationRole ).value<QPixmap>();
418  if ( !instructionIcon.isNull() ) {
419  QString uri = QString("marble://turnIcon%1.png").arg(i);
420  document.addResource( QTextDocument::ImageResource, QUrl( uri ), QVariant( instructionIcon ) );
421  text += QString("<img src=\"%1\">").arg(uri);
422  }
423 
424  text += routingModel->data( index ).toString();
425  text += "</td></tr>";
426  }
427  text += "</table>";
428 #endif
429 }
430 
431 void ControlView::printDrivingInstructionsAdvice( QTextDocument &, QString &text )
432 {
433 #ifndef QT_NO_PRINTER
434  text += "<p>" + tr( "The Marble development team wishes you a pleasant and safe journey." ) + "</p>";
435  text += "<p>" + tr( "Caution: Driving instructions may be incomplete or inaccurate." );
436  text += ' ' + tr( "Road construction, weather and other unforeseen variables can result in this suggested route not to be the most expedient or safest route to your destination." );
437  text += ' ' + tr( "Please use common sense while navigating." ) + "</p>";
438 #endif
439 }
440 
441 
442 void ControlView::launchExternalMapEditor()
443 {
444  QString editor = m_externalEditor;
445  if ( editor.isEmpty() ) {
446  QPointer<ExternalEditorDialog> dialog = new ExternalEditorDialog( this );
447  if( dialog->exec() == QDialog::Accepted ) {
448  editor = dialog->externalEditor();
449  if ( dialog->saveDefault() ) {
450  m_externalEditor = editor;
451  }
452  } else {
453  return;
454  }
455  }
456 
457  if ( editor == "josm" )
458  {
459  // JOSM, the java based editor
460  synchronizeWithExternalMapEditor( editor, "--download=%1,%4,%3,%2" );
461  }
462  else if ( editor == "merkaartor" )
463  {
464  // Merkaartor, a Qt based editor
465  QString argument = "osm://download/load_and_zoom?top=%1&right=%2&bottom=%3&left=%4";
466  synchronizeWithExternalMapEditor( editor, argument );
467  }
468  else {
469  // Potlatch, the flash based editor running at the osm main website
470  QString url = "http://www.openstreetmap.org/edit?lat=%1&lon=%2&zoom=%3";
471  qreal lat = m_marbleWidget->centerLatitude();
472  qreal lon = m_marbleWidget->centerLongitude();
473  int zoom = m_marbleWidget->tileZoomLevel();
474  url = url.arg( lat, 0, 'f', 8 ).arg( lon, 0, 'f', 8 ).arg( zoom );
475  QDesktopServices::openUrl( url );
476  }
477 }
478 
479 void ControlView::synchronizeWithExternalMapEditor( const QString &application, const QString &argument )
480 {
481  QTimer watchdog; // terminates network connection after a short timeout
482  watchdog.setSingleShot( true );
483  QEventLoop localEventLoop;
484  connect( &watchdog, SIGNAL(timeout()), &localEventLoop, SLOT(quit()) );
485  QNetworkAccessManager manager;
486  connect( &manager, SIGNAL(finished(QNetworkReply*)), &localEventLoop, SLOT(quit()) );
487 
488  // Wait at most two seconds for the local server to respond
489  QNetworkReply *reply = manager.get( QNetworkRequest( QUrl( "http://localhost:8111/") ) );
490  watchdog.start( 2000 );
491  localEventLoop.exec();
492 
493  GeoDataLatLonAltBox box = m_marbleWidget->viewport()->viewLatLonAltBox();
494  qreal north = box.north( GeoDataCoordinates::Degree );
495  qreal east = box.east( GeoDataCoordinates::Degree );
496  qreal south = box.south( GeoDataCoordinates::Degree );
497  qreal west = box.west( GeoDataCoordinates::Degree );
498 
499  if( watchdog.isActive() && reply->bytesAvailable() > 0 ) {
500  // The local server is alive. Tell it to download the current region
501  watchdog.stop();
502  QString serverUrl = "http://localhost:8111/load_and_zoom?top=%1&right=%2&bottom=%3&left=%4";
503  serverUrl = serverUrl.arg( north, 0, 'f', 8 ).arg( east, 0, 'f', 8 );
504  serverUrl = serverUrl.arg( south, 0, 'f', 8 ).arg( west, 0, 'f', 8 );
505  mDebug() << "Connecting to local server URL " << serverUrl;
506  manager.get( QNetworkRequest( QUrl( serverUrl ) ) );
507 
508  // Give it five seconds to process the request
509  watchdog.start( 5000 );
510  localEventLoop.exec();
511  } else {
512  // The local server is not alive. Start the application
513  QString applicationArgument = argument.arg( south, 0, 'f', 8 ).arg( east, 0, 'f', 8 );
514  applicationArgument = applicationArgument.arg( north, 0, 'f', 8 ).arg( west, 0, 'f', 8 );
515  mDebug() << "No local server found. Launching " << application << " with argument " << applicationArgument;
516  if ( !QProcess::startDetached( application, QStringList() << applicationArgument ) ) {
517  QString text = tr( "Unable to start the external editor. Check that %1 is installed or choose a different external editor in the settings dialog." );
518  text = text.arg( application );
519  QMessageBox::warning( this, tr( "Cannot start external editor" ), text );
520  }
521  }
522 }
523 
524 void ControlView::setExternalMapEditor( const QString &editor )
525 {
526  m_externalEditor = editor;
527 }
528 
529 QList<QAction*> ControlView::setupDockWidgets( QMainWindow *mainWindow )
530 {
531  Q_ASSERT( !m_searchDock && "Please create dock widgets just once" );
532 
533  mainWindow->setTabPosition( Qt::LeftDockWidgetArea, QTabWidget::North );
534  mainWindow->setTabPosition( Qt::RightDockWidgetArea, QTabWidget::North );
535 
536  QDockWidget* legendDock = new QDockWidget( tr( "Legend" ), this );
537  legendDock->setObjectName( "legendDock" );
538  legendDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
539  LegendWidget* legendWidget = new LegendWidget( this );
540  legendWidget->setMarbleModel( m_marbleWidget->model() );
541  connect( legendWidget, SIGNAL(tourLinkClicked(QString)),
542  this, SLOT(handleTourLinkClicked(QString)) );
543  connect( legendWidget, SIGNAL(propertyValueChanged(QString,bool)),
544  marbleWidget(), SLOT(setPropertyValue(QString,bool)) );
545  legendDock->setWidget( legendWidget );
546 
547  bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
548  if ( smallScreen ) {
549  // Show only the legend as a dock widget on small screen, the others are dialogs
550  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, legendDock );
551  return QList<QAction*>() << legendDock->toggleViewAction();
552  }
553 
554  QDockWidget *routingDock = new QDockWidget( tr( "Routing" ), mainWindow );
555  routingDock->setObjectName( "routingDock" );
556  routingDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
557  RoutingWidget* routingWidget = new RoutingWidget( marbleWidget(), mainWindow );
558  routingWidget->setRouteSyncManager( cloudSyncManager()->routeSyncManager() );
559  routingDock->setWidget( routingWidget );
560  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, routingDock );
561 
562  QDockWidget *locationDock = new QDockWidget( tr( "Location" ), this );
563  locationDock->setObjectName( "locationDock" );
564  locationDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
565  m_locationWidget = new CurrentLocationWidget( this );
566  m_locationWidget->setMarbleWidget( marbleWidget() );
567  locationDock->setWidget( m_locationWidget );
568  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, locationDock );
569 
570  m_searchDock = new QDockWidget( tr( "Search" ), this );
571  m_searchDock->setObjectName( "searchDock" );
572  m_searchDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
573  SearchWidget* searchWidget = new SearchWidget( this );
574  searchWidget->setMarbleWidget( marbleWidget() );
575  m_searchDock->setWidget( searchWidget );
576  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, m_searchDock );
577 
578  mainWindow->tabifyDockWidget( m_searchDock, routingDock );
579  mainWindow->tabifyDockWidget( routingDock, locationDock );
580  m_searchDock->raise();
581 
582  QKeySequence searchSequence( Qt::CTRL + Qt::Key_F );
583  searchWidget->setToolTip( tr( "Search for cities, addresses, points of interest and more (%1)" ).arg( searchSequence.toString() ) );
584  QShortcut* searchShortcut = new QShortcut( mainWindow );
585  connect( searchShortcut, SIGNAL(activated()), this, SLOT(showSearch()) );
586 
587  QDockWidget *mapViewDock = new QDockWidget( tr( "Map View" ), this );
588  mapViewDock->setObjectName( "mapViewDock" );
589  mapViewDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
590  MapViewWidget* mapViewWidget = new MapViewWidget( this );
591  mapViewWidget->setMarbleWidget( marbleWidget(), m_mapThemeManager );
592  connect( mapViewWidget, SIGNAL(showMapWizard()), this, SIGNAL(showMapWizard()) );
593  connect( mapViewWidget, SIGNAL(showUploadDialog()), this, SIGNAL(showUploadDialog()) );
594  connect( mapViewWidget, SIGNAL(mapThemeDeleted()), this, SIGNAL(mapThemeDeleted()) );
595  mapViewDock->setWidget( mapViewWidget );
596  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, mapViewDock );
597 
598  QDockWidget *fileViewDock = new QDockWidget( tr( "Files" ), this );
599  fileViewDock->setObjectName( "fileViewDock" );
600  fileViewDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
601  FileViewWidget* fileViewWidget = new FileViewWidget( this );
602  fileViewWidget->setMarbleWidget( marbleWidget() );
603  fileViewDock->setWidget( fileViewWidget );
604  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, fileViewDock );
605  fileViewDock->hide();
606 
607  QDockWidget *tourDock = new QDockWidget( tr( "Tour" ), this );
608  tourDock->setObjectName( "tourDock" );
609  tourDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
610  m_tourWidget = new TourWidget( this );
611  m_tourWidget->setMarbleWidget( marbleWidget() );
612  tourDock->setWidget( m_tourWidget );
613  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, tourDock );
614  tourDock->hide();
615 
616  mainWindow->addDockWidget( Qt::LeftDockWidgetArea, legendDock );
617  mainWindow->tabifyDockWidget( mapViewDock, legendDock );
618  mapViewDock->raise();
619 
620  QList<QAction*> panelActions;
621  panelActions << routingDock->toggleViewAction();
622  panelActions << locationDock->toggleViewAction();
623  panelActions << m_searchDock->toggleViewAction();
624  panelActions << mapViewDock->toggleViewAction();
625  panelActions << fileViewDock->toggleViewAction();
626  panelActions << legendDock->toggleViewAction();
627  panelActions << tourDock->toggleViewAction();
628 
629  // Local list of panel view toggle actions
630  m_panelActions << routingDock->toggleViewAction();
631  m_panelActions << locationDock->toggleViewAction();
632  m_panelActions << m_searchDock->toggleViewAction();
633  m_panelActions << mapViewDock->toggleViewAction();
634  m_panelActions << fileViewDock->toggleViewAction();
635  m_panelActions << legendDock->toggleViewAction();
636  m_panelActions << tourDock->toggleViewAction();
637  foreach( QAction* action, m_panelActions ) {
638  m_panelVisibility << action->isVisible();
639  }
640 
641  // Create Settings->Panels Menu
642  // Toggle All Panels action
643  m_togglePanelVisibilityAction = new QAction( tr("Hide &All Panels"), this);
644  m_togglePanelVisibilityAction->setShortcut( Qt::Key_F9 );
645  m_togglePanelVisibilityAction->setStatusTip(tr("Show or hide all panels."));
646  connect(m_togglePanelVisibilityAction, SIGNAL(triggered()), this, SLOT(togglePanelVisibility()));
647 
648  // Include a Separator in the List
649  QAction *panelSeparatorAct = new QAction( this );
650  panelSeparatorAct->setSeparator( true );
651 
652  // Return a list of panel view actions for Marble Menu including show/hide all
653  QList<QAction*> panelMenuActions;
654  panelMenuActions << m_togglePanelVisibilityAction;
655  panelMenuActions << panelSeparatorAct;
656  foreach( QAction* action, m_panelActions ) {
657  panelMenuActions << action;
658  }
659 
660  return panelMenuActions;
661 }
662 
663 CurrentLocationWidget *ControlView::currentLocationWidget()
664 {
665  return m_locationWidget;
666 }
667 
668 void ControlView::setWorkOffline( bool offline )
669 {
670  marbleWidget()->model()->setWorkOffline( offline );
671  if ( !offline ) {
672  marbleWidget()->clearVolatileTileCache();
673  }
674 }
675 
676 CloudSyncManager *ControlView::cloudSyncManager()
677 {
678  return m_cloudSyncManager;
679 }
680 
681 QString ControlView::externalMapEditor() const
682 {
683  return m_externalEditor;
684 }
685 
686 void ControlView::addGeoDataFile( QString filename )
687 {
688  QFileInfo const file( filename );
689  if ( file.exists() ) {
690  m_marbleWidget->model()->addGeoDataFile( file.absoluteFilePath() );
691  } else {
692  qWarning() << "File" << filename << "does not exist, cannot open it.";
693  }
694 }
695 
696 void ControlView::showSearch()
697 {
698  if ( !m_searchDock ) {
699  return;
700  }
701 
702  m_searchDock->show();
703  m_searchDock->raise();
704  m_searchDock->widget()->setFocus();
705 }
706 
707 void ControlView::showConflictDialog( MergeItem *item )
708 {
709  Q_ASSERT( m_conflictDialog );
710  m_conflictDialog->setMergeItem( item );
711  m_conflictDialog->open();
712 }
713 
714 void ControlView::togglePanelVisibility()
715 {
716  Q_ASSERT( m_panelVisibility.size() == m_panelActions.size() );
717  if ( m_isPanelVisible ) {
718  for( int p=0; p<m_panelActions.size(); ++p ) {
719  // Save state of individual dock visibility
720  m_panelVisibility[p] = m_panelActions.at(p)->isChecked();
721 
722  // hide panel if it is showing
723  if ( m_panelActions.at(p)->isChecked() ) {
724  m_panelActions.at(p)->activate( QAction::Trigger );
725  }
726  }
727 
728  // Change Menu Item Text
729  m_togglePanelVisibilityAction->setText( tr("Show &All Panels") );
730  m_isPanelVisible = false;
731  } else {
732  for( int p=0; p<m_panelActions.size(); ++p ) {
733  // show panel if it was showing before all panels were hidden
734  if ( m_panelVisibility.at(p) && !m_panelActions.at(p)->isChecked() ) {
735  m_panelActions.at(p)->activate( QAction::Trigger );
736  }
737  }
738 
739  // Change Menu Item Text
740  m_togglePanelVisibilityAction->setText( tr("Hide &All Panels") );
741  m_isPanelVisible = true;
742  }
743 }
744 
745 void ControlView::handleTourLinkClicked(const QString& path)
746 {
747  QString tourPath = MarbleDirs::path( path );
748  if ( !tourPath.isEmpty() ) {
749  if ( m_tourWidget->openTour( tourPath ) ) {
750  m_tourWidget->togglePlaying();
751  }
752  }
753 }
754 
755 }
756 
757 #include "ControlView.moc"
QWidget::layout
QLayout * layout() const
Marble::ControlView::showMapWizard
void showMapWizard()
Marble::MarbleWidget::tileZoomLevel
int tileZoomLevel() const
Definition: MarbleWidget.cpp:345
GeoSceneHead.h
Marble::ControlView::defaultMapThemeId
QString defaultMapThemeId() const
Returns a default map theme: earth/srtm/srtm.dgml if installed, any other theme id if earth/srtm/srtm...
Definition: ControlView.cpp:149
QAction::setText
void setText(const QString &text)
Marble::ControlView::printMapScreenShot
void printMapScreenShot(QPointer< QPrintDialog > dialog)
Definition: ControlView.cpp:171
Marble::BookmarkSyncManager::setBookmarkManager
void setBookmarkManager(BookmarkManager *manager)
Definition: BookmarkSyncManager.cpp:261
QModelIndex
QTextDocument::drawContents
void drawContents(QPainter *p, const QRectF &rect)
QPixmap::size
QSize size() const
QWidget
Marble::ControlView::showUploadDialog
void showUploadDialog()
RoutingModel.h
Marble::Planet::id
QString id() const
The internal, nonlocalized name of the planet.
Definition: Planet.cpp:262
QRect::size
QSize size() const
Marble::MarbleWidget::moveUp
void moveUp(FlyToMode mode=Automatic)
Move up by the moveStep.
Definition: MarbleWidget.cpp:606
QWidget::palette
palette
QSize::width
int width() const
QEventLoop
QPixmap::width
int width() const
QPainter::end
bool end()
Marble::ConflictDialog
Definition: ConflictDialog.h:22
QAction::setSeparator
void setSeparator(bool b)
Marble::ControlView::launchExternalMapEditor
void launchExternalMapEditor()
Start the configured external map editor (or update it if it is already running)
Definition: ControlView.cpp:442
QPainter::setRenderHint
void setRenderHint(RenderHint hint, bool on)
Marble::MarbleDirs::path
static QString path(const QString &relativePath)
Definition: MarbleDirs.cpp:59
QMainWindow::setTabPosition
void setTabPosition(QFlags< Qt::DockWidgetArea > areas, QTabWidget::TabPosition tabPosition)
Marble::ControlView::mapThemeManager
MapThemeManager * mapThemeManager()
Definition: ControlView.cpp:114
QDockWidget
QPrinter
Marble::PrintOptionsWidget::setRouteControlsEnabled
void setRouteControlsEnabled(bool enabled)
Definition: PrintOptionsWidget.cpp:82
MarbleModel.h
This file contains the headers for MarbleModel.
QNetworkReply
Marble::PrintOptionsWidget::setPrintDrivingInstructions
void setPrintDrivingInstructions(bool print)
Definition: PrintOptionsWidget.cpp:67
Marble::TourWidget::openTour
bool openTour(const QString &filename)
Definition: TourWidget.cpp:780
QSizePolicy
QProcess::startDetached
bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid)
QAction::isVisible
bool isVisible() const
Marble::PrintOptionsWidget::printLegend
bool printLegend() const
Definition: PrintOptionsWidget.cpp:42
QList::at
const T & at(int i) const
Marble::ControlView::mapThemeDeleted
void mapThemeDeleted()
QPointer
QStringList::contains
bool contains(const QString &str, Qt::CaseSensitivity cs) const
Marble::MarbleWidget::moveDown
void moveDown(FlyToMode mode=Automatic)
Move down by the moveStep.
Definition: MarbleWidget.cpp:611
Marble::RoutingWidget
A widget consisting of input fields for places / routing destinations, a list view showing routing in...
Definition: RoutingWidget.h:35
QVariant::value
T value() const
Marble::ViewportParams::viewLatLonAltBox
const GeoDataLatLonAltBox & viewLatLonAltBox() const
Definition: ViewportParams.cpp:305
ExternalEditorDialog.h
Marble::TourWidget
Definition: TourWidget.h:142
QRect::height
int height() const
Marble::MapViewWidget
Definition: MapViewWidget.h:32
QSize::scale
void scale(int width, int height, Qt::AspectRatioMode mode)
GeoSceneDocument.h
QDockWidget::setAllowedAreas
void setAllowedAreas(QFlags< Qt::DockWidgetArea > areas)
Marble::RoutingModel::route
const Route & route() const
Definition: RoutingModel.cpp:434
QPoint
Marble::ControlView::zoomIn
void zoomIn()
Definition: ControlView.cpp:119
Marble::ControlView::togglePanelVisibility
void togglePanelVisibility()
Toggles all of the docking panels on or off.
Definition: ControlView.cpp:714
Marble::RoutingModel::rowCount
int rowCount(const QModelIndex &parent=QModelIndex()) const
Overload of QAbstractListModel.
Definition: RoutingModel.cpp:158
FileViewWidget.h
Marble::RouteSyncManager::setRoutingManager
void setRoutingManager(RoutingManager *routingManager)
Definition: RouteSyncManager.cpp:83
Marble::ExternalEditorDialog
Definition: ExternalEditorDialog.h:25
Marble::MarbleWidget::moveLeft
void moveLeft(FlyToMode mode=Automatic)
Move left by the moveStep.
Definition: MarbleWidget.cpp:596
Marble::MarbleModel::planet
const Planet * planet() const
Returns the planet object for the current map.
Definition: MarbleModel.cpp:644
Marble::ControlView::cloudSyncManager
CloudSyncManager * cloudSyncManager()
Definition: ControlView.cpp:676
MarbleDebug.h
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::GeoDataCoordinates::Degree
Definition: GeoDataCoordinates.h:66
QWidget::update
void update()
BookmarkManager.h
Marble::TourWidget::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: TourWidget.cpp:367
QList::size
int size() const
Marble::TourWidget::togglePlaying
void togglePlaying()
Definition: TourWidget.cpp:375
CurrentLocationWidget.h
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:104
Marble::RoutingManager::routingModel
RoutingModel * routingModel()
Provides access to the routing model which contains a list of routing instructions describing steps t...
Definition: RoutingManager.cpp:261
QWidget::width
int width() const
Marble::GeoDataCoordinates::altitude
qreal altitude() const
return the altitude of the Point in meters
Definition: GeoDataCoordinates.cpp:1197
Marble::RoutingManager::routeRequest
RouteRequest * routeRequest()
Returns the current route request.
Definition: RoutingManager.cpp:271
Marble::MarbleWidget::setMapThemeId
void setMapThemeId(const QString &maptheme)
Set a new map theme.
Definition: MarbleWidget.cpp:759
SearchWidget.h
ViewParams.h
This file contains the headers for ViewParameters.
QWidget::resize
void resize(int w, int h)
Marble::LegendWidget
Definition: LegendWidget.h:27
Marble::ControlView::applicationVersion
static QString applicationVersion()
Returns the version of the Marble applications (which differs from the Marble library version)...
Definition: ControlView.cpp:109
QPainter::drawRect
void drawRect(const QRectF &rectangle)
Marble::GeoDataLatLonBox::north
qreal north(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the northern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:93
PrintOptionsWidget.h
Marble::GeoDataLatLonBox::east
qreal east(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the eastern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:135
QRect
Marble::ControlView::moveDown
void moveDown()
Definition: ControlView.cpp:144
Marble::CloudSyncManager::bookmarkSyncManager
BookmarkSyncManager bookmarkSyncManager
Definition: CloudSyncManager.h:36
QNetworkRequest
TourWidget.h
MarbleMap.h
This file contains the headers for MarbleMap.
Marble::MarbleModel::addGeoDataFile
void addGeoDataFile(const QString &filename)
Handle file loading into the treeModel.
Definition: MarbleModel.cpp:725
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QString::number
QString number(int n, int base)
RoutingManager.h
Marble::CurrentLocationWidget
Definition: CurrentLocationWidget.h:30
Marble::ControlView::moveLeft
void moveLeft()
Definition: ControlView.cpp:129
Marble::MarbleWidget::centerLongitude
qreal centerLongitude() const
Return the longitude of the center point.
Definition: MarbleWidget.cpp:680
Marble::PrintOptionsWidget::printDrivingInstructions
bool printDrivingInstructions() const
Definition: PrintOptionsWidget.cpp:62
Marble::EARTH_RADIUS
const qreal EARTH_RADIUS
Definition: MarbleGlobal.h:257
QWidget::setLayout
void setLayout(QLayout *layout)
Marble::MarbleModel::setWorkOffline
void setWorkOffline(bool workOffline)
Definition: MarbleModel.cpp:843
QTimer
Marble::MarbleModel::routingManager
RoutingManager * routingManager()
Definition: MarbleModel.cpp:675
Marble::PrintOptionsWidget::printRouteSummary
bool printRouteSummary() const
Definition: PrintOptionsWidget.cpp:52
QEventLoop::exec
int exec(QFlags< QEventLoop::ProcessEventsFlag > flags)
Marble::ControlView::moveUp
void moveUp()
Definition: ControlView.cpp:139
QTextDocument::addResource
void addResource(int type, const QUrl &name, const QVariant &resource)
QPainter::setPen
void setPen(const QColor &color)
QWidget::setFocus
void setFocus()
Marble::ControlView::externalMapEditor
QString externalMapEditor() const
Returns the editor used to launch a map editor application.
Definition: ControlView.cpp:681
Marble::ControlView::paintPrintPreview
void paintPrintPreview(QPrinter *printer)
Definition: ControlView.cpp:286
QPainter::drawRoundedRect
void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)
Marble::ViewportParams::mapCoversViewport
bool mapCoversViewport() const
Definition: ViewportParams.cpp:398
QPainter::drawPixmap
void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
Marble::MarbleWidget::model
MarbleModel * model()
Return the model that this view shows.
Definition: MarbleWidget.cpp:289
Marble::CloudSyncManager::routeSyncManager
RouteSyncManager routeSyncManager
Definition: CloudSyncManager.h:37
QPainter
QObject::setObjectName
void setObjectName(const QString &name)
MarbleDirs.h
QWidget::raise
void raise()
QFileInfo::absoluteFilePath
QString absoluteFilePath() const
QString::isEmpty
bool isEmpty() const
QMainWindow::tabifyDockWidget
void tabifyDockWidget(QDockWidget *first, QDockWidget *second)
QString::startsWith
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
Marble::MarbleWidget::zoomOut
void zoomOut(FlyToMode mode=Automatic)
Zoom out by the amount zoomStep.
Definition: MarbleWidget.cpp:538
QVBoxLayout
Marble::ControlView::handleTourLinkClicked
void handleTourLinkClicked(const QString &path)
Definition: ControlView.cpp:745
LegendWidget.h
Marble::ConflictDialog::setMergeItem
void setMergeItem(MergeItem *item)
Definition: ConflictDialog.cpp:32
RouteSyncManager.h
QList::first
T & first()
QShortcut
Marble::MarbleWidget::setShowBackground
void setShowBackground(bool visible)
Definition: MarbleWidget.cpp:952
Marble::PrintOptionsWidget::setPrintDrivingInstructionsAdvice
void setPrintDrivingInstructionsAdvice(bool print)
Definition: PrintOptionsWidget.cpp:92
QString
QList
QWidget::hide
void hide()
Marble::PrintOptionsWidget::printMap
bool printMap() const
Definition: PrintOptionsWidget.cpp:22
Marble::PrintOptionsWidget::printBackground
bool printBackground() const
Definition: PrintOptionsWidget.cpp:32
Marble::ControlView::mapScreenShot
QPixmap mapScreenShot()
Definition: ControlView.h:73
Marble::GeoUriParser::parse
bool parse()
Parse the given Geo URI.
Definition: GeoUriParser.cpp:72
Marble::PrintOptionsWidget::setBackgroundControlsEnabled
void setBackgroundControlsEnabled(bool enabled)
Definition: PrintOptionsWidget.cpp:72
QLayout::setMargin
void setMargin(int margin)
Marble::PrintOptionsWidget::setLegendControlsEnabled
void setLegendControlsEnabled(bool enabled)
Definition: PrintOptionsWidget.cpp:77
QWidget::setSizePolicy
void setSizePolicy(QSizePolicy)
Marble::METER2KM
const qreal METER2KM
Definition: MarbleGlobal.h:224
QStringList
Marble::MarbleWidget::viewport
ViewportParams * viewport()
Definition: MarbleWidget.cpp:299
QIODevice::bytesAvailable
virtual qint64 bytesAvailable() const
QTextDocument::size
size
QMainWindow
Marble::MergeItem
Definition: MergeItem.h:23
QPixmap
ConflictDialog.h
QFileInfo
Marble::MarbleWidget::zoomIn
void zoomIn(FlyToMode mode=Automatic)
Zoom in by the amount zoomStep.
Definition: MarbleWidget.cpp:533
QFileInfo::exists
bool exists() const
Marble::ControlView::moveRight
void moveRight()
Definition: ControlView.cpp:134
Marble::GeoUriParser
A class for parsing Geo: URIs.
Definition: GeoUriParser.h:27
QPixmap::isNull
bool isNull() const
QSize
Marble::MarbleWidget::centerOn
void centerOn(const qreal lon, const qreal lat, bool animated=false)
Center the view on a geographical point.
Definition: MarbleWidget.cpp:549
QUrl
QPixmap::height
int height() const
QAction::setShortcut
void setShortcut(const QKeySequence &shortcut)
ViewportParams.h
This file contains the headers for ViewportParams.
QTimer::stop
void stop()
Marble::MarbleGlobal::SmallScreen
Definition: MarbleGlobal.h:287
QImage
Marble::imageSize
const QSize imageSize(28, 28)
Marble::MarbleGlobal::getInstance
static MarbleGlobal * getInstance()
Definition: MarbleGlobal.cpp:37
QDockWidget::setWidget
void setWidget(QWidget *widget)
Marble::FileViewWidget
Definition: FileViewWidget.h:33
Marble::RoutingWidget::setRouteSyncManager
void setRouteSyncManager(RouteSyncManager *manager)
Definition: RoutingWidget.cpp:639
Marble::GeoDataLatLonBox::west
qreal west(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the western boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:156
QNetworkAccessManager
Marble::ControlView::printPreview
void printPreview()
Definition: ControlView.cpp:272
QAction::setStatusTip
void setStatusTip(const QString &statusTip)
Marble::ControlView::~ControlView
virtual ~ControlView()
Definition: ControlView.cpp:104
QTextDocument::adjustSize
void adjustSize()
Marble::ConflictDialog::open
void open()
Definition: ConflictDialog.cpp:42
Marble::MapThemeManager
The class that handles map themes that are locally available .
Definition: MapThemeManager.h:48
QRect::width
int width() const
Marble::ControlView::openGeoUri
void openGeoUri(const QString &geoUriString)
Opens the passed Geo URI.
Definition: ControlView.cpp:232
QDockWidget::toggleViewAction
QAction * toggleViewAction() const
Marble::MapViewWidget::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget, MapThemeManager *mapThemeManager)
Set a MarbleWidget associated to this widget.
Definition: MapViewWidget.cpp:401
QKeySequence::toString
QString toString(SequenceFormat format) const
Marble::ControlView::setExternalMapEditor
void setExternalMapEditor(const QString &editor)
Change the editor to launch via.
Definition: ControlView.cpp:524
QModelIndex::data
QVariant data(int role) const
QKeySequence
Marble::GeoUriParser::coordinates
GeoDataCoordinates coordinates() const
Returns the coordinates parsed.
Definition: GeoUriParser.cpp:42
QTextDocument
QPrintPreviewDialog
RoutingWidget.h
QWidget::setWindowTitle
void setWindowTitle(const QString &)
QAction
MergeItem.h
Marble::GeoDataLatLonBox::south
qreal south(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the southern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:114
QSize::height
int height() const
Marble::MarbleModel::bookmarkManager
BookmarkManager * bookmarkManager()
return instance of BookmarkManager
Definition: MarbleModel.cpp:213
Marble::MarbleGlobal::profiles
Profiles profiles() const
Definition: MarbleGlobal.cpp:48
Marble::PrintOptionsWidget
Definition: PrintOptionsWidget.h:23
QMainWindow::addDockWidget
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
Marble::MarbleModel::legend
QTextDocument * legend()
Definition: MarbleModel.cpp:715
Marble::ControlView::setWorkOffline
void setWorkOffline(bool workOffline)
Definition: ControlView.cpp:668
QTextDocument::setHtml
void setHtml(const QString &html)
QPrinter::pageRect
QRect pageRect() const
MarbleWidget.h
This file contains the headers for MarbleWidget.
QTimer::start
void start(int msec)
RouteRequest.h
QMessageBox::warning
StandardButton warning(QWidget *parent, const QString &title, const QString &text, QFlags< QMessageBox::StandardButton > buttons, StandardButton defaultButton)
Marble::MarbleWidget::setDistance
void setDistance(qreal distance)
Set the distance of the observer to the globe in km.
Definition: MarbleWidget.cpp:1076
Marble::ControlView::addGeoDataFile
void addGeoDataFile(QString filename)
Definition: ControlView.cpp:686
Marble::PrintOptionsWidget::printDrivingInstructionsAdvice
bool printDrivingInstructionsAdvice() const
Definition: PrintOptionsWidget.cpp:87
Marble::GeoUriParser::planet
Planet planet() const
Returns the Planet on which the coordinates are valid.
Definition: GeoUriParser.cpp:47
QWidget::show
void show()
QNetworkAccessManager::get
QNetworkReply * get(const QNetworkRequest &request)
Marble::RoutingModel::CoordinateRole
Definition: RoutingModel.h:42
QTextDocument::print
void print(QPrinter *printer) const
ControlView.h
QWidget::setToolTip
void setToolTip(const QString &)
Marble::MarbleWidget::showBackground
bool showBackground() const
Definition: MarbleWidget.cpp:505
Marble::ControlView::zoomOut
void zoomOut()
Definition: ControlView.cpp:124
Marble::Route::path
const GeoDataLineString & path() const
Definition: Route.cpp:66
Marble::MapThemeManager::mapThemeIds
QStringList mapThemeIds() const
Returns a list of all locally available map theme IDs.
Definition: MapThemeManager.cpp:138
Marble::ControlView::ControlView
ControlView(QWidget *=0)
Definition: ControlView.cpp:71
Marble::MarbleWidget::clearVolatileTileCache
void clearVolatileTileCache()
Definition: MarbleWidget.cpp:981
QDesktopServices::openUrl
bool openUrl(const QUrl &url)
Marble::ControlView::currentLocationWidget
CurrentLocationWidget * currentLocationWidget()
Definition: ControlView.cpp:663
Marble::SearchWidget::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: SearchWidget.cpp:117
Marble::ControlView::marbleWidget
MarbleWidget * marbleWidget()
Definition: ControlView.h:60
Marble::SearchWidget
Definition: SearchWidget.h:24
QTimer::isActive
bool isActive() const
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
MapViewWidget.h
Marble::ControlView::marbleModel
MarbleModel * marbleModel()
Definition: ControlView.h:61
QPainter::begin
bool begin(QPaintDevice *device)
GeoUriParser.h
Marble::CloudSyncManager
Definition: CloudSyncManager.h:24
QPixmap::rect
QRect rect() const
QString::data
QChar * data()
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
CloudSyncManager.h
Marble::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:36
QDockWidget::widget
QWidget * widget() const
Marble::GeoDataLatLonAltBox
A class that defines a 3D bounding box for geographic data.
Definition: GeoDataLatLonAltBox.h:49
Marble::CurrentLocationWidget::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Set a MarbleWidget associated to this widget.
Definition: CurrentLocationWidget.cpp:104
BookmarkSyncManager.h
QPalette
MapThemeManager.h
Marble::BookmarkSyncManager
Definition: BookmarkSyncManager.h:26
Marble::MarbleWidget::moveRight
void moveRight(FlyToMode mode=Automatic)
Move right by the moveStep.
Definition: MarbleWidget.cpp:601
Marble::ControlView::setupDockWidgets
QList< QAction * > setupDockWidgets(QMainWindow *mainWindow)
Definition: ControlView.cpp:529
Marble::LegendWidget::setMarbleModel
void setMarbleModel(MarbleModel *model)
Set a MarbleModel associated to this widget.
Definition: LegendWidget.cpp:51
QTimer::setSingleShot
void setSingleShot(bool singleShot)
QVariant
Marble::FileViewWidget::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: FileViewWidget.cpp:78
Marble::PrintOptionsWidget::setPrintRouteSummary
void setPrintRouteSummary(bool print)
Definition: PrintOptionsWidget.cpp:57
Marble::MarbleWidget::centerLatitude
qreal centerLatitude() const
Return the latitude of the center point.
Definition: MarbleWidget.cpp:675
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:38 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