• 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
  • apps
  • marble-qt
QtMainWindow.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-2010 Torsten Rahn <tackat@kde.org>
9 // Copyright 2007 Inge Wallin <ingwa@kde.org>
10 // Copyright 2011-2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
11 // Copyright 2012 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
12 // Copyright 2012 Mohammed Nafees <nafees.technocool@gmail.com>
13 //
14 
15 #include "QtMainWindow.h"
16 
17 #include "MarbleDebug.h"
18 #include <QList>
19 #include <QSettings>
20 #include <QUrl>
21 #include <QCloseEvent>
22 #include <QTimer>
23 #include <QVariant>
24 #include <QVector>
25 
26 #include <QAction>
27 #include <QLabel>
28 #include <QWhatsThis>
29 #include <QApplication>
30 #include <QIcon>
31 #include <QMenuBar>
32 #include <QStatusBar>
33 #include <QProgressBar>
34 #include <QToolBar>
35 #include <QDesktopServices>
36 #include <QFileDialog>
37 #include <QMessageBox>
38 #include <QPrintDialog>
39 #include <QPrinter>
40 #include <QDialogButtonBox>
41 #include <QHBoxLayout>
42 #include <QScrollArea>
43 #include <QClipboard>
44 #include <QShortcut>
45 #include <QDockWidget>
46 #include <QNetworkProxy>
47 
48 #include "EditBookmarkDialog.h"
49 #include "BookmarkManagerDialog.h"
50 #include "CurrentLocationWidget.h"
51 #include "MapViewWidget.h"
52 #include "MarbleDirs.h"
53 #include "MarbleAboutDialog.h"
54 #include "QtMarbleConfigDialog.h"
55 #include "SunControlWidget.h"
56 #include "TimeControlWidget.h"
57 #include "MarbleLocale.h"
58 #include "DownloadRegionDialog.h"
59 #include "ViewportParams.h"
60 #include "AbstractDataPlugin.h"
61 #include "AbstractFloatItem.h"
62 #include "MarbleModel.h"
63 #include "MarbleClock.h"
64 #include "HttpDownloadManager.h"
65 #include "BookmarkManager.h"
66 #include "NewBookmarkFolderDialog.h"
67 #include "GeoDataDocument.h"
68 #include "GeoDataPlacemark.h"
69 #include "routing/RoutingManager.h"
70 #include "routing/RoutingProfilesModel.h"
71 #include "routing/RoutingWidget.h"
72 #include "routing/RouteRequest.h"
73 #include "ParseRunnerPlugin.h"
74 #include "PositionTracking.h"
75 #include "PositionProviderPlugin.h"
76 #include "PluginManager.h"
77 #include "MapThemeDownloadDialog.h"
78 #include "MapWizard.h"
79 #include "GoToDialog.h"
80 #include "MarbleWidgetInputHandler.h"
81 #include "Planet.h"
82 #include "cloudsync/CloudSyncManager.h"
83 #include "cloudsync/BookmarkSyncManager.h"
84 
85 namespace
86 {
87  const char* POSITION_STRING = "Position:";
88  const char* DISTANCE_STRING = "Altitude:";
89  const char* ZOOM_STRING = "Zoom:";
90  const char* DATETIME_STRING = "Time:";
91 }
92 
93 using namespace Marble;
94 /* TRANSLATOR Marble::MainWindow */
95 
96 MainWindow::MainWindow(const QString& marbleDataPath, const QVariantMap& cmdLineSettings, QWidget *parent) :
97  QMainWindow(parent),
98  m_sunControlDialog( 0 ),
99  m_timeControlDialog( 0 ),
100  m_downloadRegionDialog( 0 ),
101  m_panelMenu( 0 ),
102  m_downloadRegionAction( 0 ),
103  m_osmEditAction( 0 ),
104  m_zoomLabel( 0 )
105 {
106  setUpdatesEnabled( false );
107 
108  QString selectedPath = marbleDataPath.isEmpty() ? readMarbleDataPath() : marbleDataPath;
109  if ( !selectedPath.isEmpty() )
110  MarbleDirs::setMarbleDataPath( selectedPath );
111 
112  m_controlView = new ControlView( this );
113 
114  setWindowTitle( tr("Marble - Virtual Globe") );
115  setWindowIcon( QIcon(":/icons/marble.png") );
116  setCentralWidget( m_controlView );
117 
118  // Initializing config dialog
119  m_configDialog = new QtMarbleConfigDialog( m_controlView->marbleWidget(), this );
120  connect( m_configDialog, SIGNAL(settingsChanged()),
121  this, SLOT(updateSettings()) );
122  connect( m_configDialog, SIGNAL(clearVolatileCacheClicked()),
123  m_controlView->marbleWidget(), SLOT(clearVolatileTileCache()) );
124  connect( m_configDialog, SIGNAL(clearPersistentCacheClicked()),
125  m_controlView->marbleModel(), SLOT(clearPersistentTileCache()) );
126  connect( m_configDialog, SIGNAL(syncNowClicked()),
127  m_controlView->cloudSyncManager()->bookmarkSyncManager(), SLOT(startBookmarkSync()) );
128 
129  // Load bookmark file. If it does not exist, a default one will be used.
130  m_controlView->marbleModel()->bookmarkManager()->loadFile( "bookmarks/bookmarks.kml" );
131 
132  createActions();
133  QList<QAction*> const panelActions = m_controlView->setupDockWidgets( this );
134  createMenus( panelActions );
135  createStatusBar();
136 
137  connect( m_controlView->marbleWidget(), SIGNAL(themeChanged(QString)),
138  this, SLOT(updateMapEditButtonVisibility(QString)) );
139  connect( m_controlView, SIGNAL(showMapWizard()), this, SLOT(showMapWizard()) );
140  connect( m_controlView, SIGNAL(mapThemeDeleted()), this, SLOT(fallBackToDefaultTheme()) );
141 
142  setUpdatesEnabled( true );
143 
144  m_position = tr( NOT_AVAILABLE );
145  m_distance = marbleWidget()->distanceString();
146  m_zoom = QString::number( marbleWidget()->tileZoomLevel() );
147 
148  m_clock = QLocale().toString( m_controlView->marbleModel()->clockDateTime().addSecs( m_controlView->marbleModel()->clockTimezone() ), QLocale::ShortFormat );
149  QMetaObject::invokeMethod(this,
150  "initObject", Qt::QueuedConnection,
151  Q_ARG(QVariantMap, cmdLineSettings));
152 }
153 
154 void MainWindow::addGeoDataFile( const QString &fileName )
155 {
156  QFileInfo file( fileName );
157 
158  if ( !file.exists() )
159  return;
160 
161  // delay file loading to initObject(), such that restoring view from previous session in readSettings()
162  // doesn't interfere with focusing on these files
163  m_commandlineFilePaths << file.absoluteFilePath();
164 }
165 
166 void MainWindow::initObject(const QVariantMap& cmdLineSettings)
167 {
168  QCoreApplication::processEvents ();
169  setupStatusBar();
170  readSettings(cmdLineSettings);
171 
172  foreach ( const QString &path, m_commandlineFilePaths ) {
173  m_controlView->marbleModel()->addGeoDataFile( path );
174  }
175  m_commandlineFilePaths.clear();
176 }
177 
178 void MainWindow::createActions()
179  {
180  m_openAct = new QAction( QIcon(":/icons/document-open.png"), tr( "&Open..."), this );
181  m_openAct->setShortcut( tr( "Ctrl+O" ) );
182  m_openAct->setStatusTip( tr( "Open a file for viewing on Marble"));
183  connect( m_openAct, SIGNAL(triggered()),
184  this, SLOT(openFile()) );
185 
186  m_downloadAct = new QAction( QIcon(":/icons/get-hot-new-stuff.png"), tr("&Download Maps..."), this);
187  connect(m_downloadAct, SIGNAL(triggered()), this, SLOT(openMapDialog()));
188 
189  m_exportMapAct = new QAction( QIcon(":/icons/document-save-as.png"), tr("&Export Map..."), this);
190  m_exportMapAct->setShortcut(tr("Ctrl+S"));
191  m_exportMapAct->setStatusTip(tr("Save a screenshot of the map"));
192  connect(m_exportMapAct, SIGNAL(triggered()), this, SLOT(exportMapScreenShot()));
193 
194  // Action: Download Region
195  m_downloadRegionAction = new QAction( tr( "Download &Region..." ), this );
196  m_downloadRegionAction->setStatusTip( tr( "Download a map region in different zoom levels for offline usage" ) );
197  connect( m_downloadRegionAction, SIGNAL(triggered()), SLOT(showDownloadRegionDialog()) );
198 
199  m_printAct = new QAction( QIcon(":/icons/document-print.png"), tr("&Print..."), this);
200  m_printAct->setShortcut(tr("Ctrl+P"));
201  m_printAct->setStatusTip(tr("Print a screenshot of the map"));
202  connect(m_printAct, SIGNAL(triggered()), this, SLOT(printMapScreenShot()));
203 
204  m_printPreviewAct = new QAction( QIcon(":/icons/document-print-preview.png"), tr("Print Previe&w ..."), this);
205  m_printPreviewAct->setStatusTip(tr("Print a screenshot of the map"));
206  connect(m_printPreviewAct, SIGNAL(triggered()), m_controlView, SLOT(printPreview()));
207 
208  m_quitAct = new QAction( QIcon(":/icons/application-exit.png"), tr("&Quit"), this);
209  m_quitAct->setShortcut(tr("Ctrl+Q"));
210  m_quitAct->setStatusTip(tr("Quit the Application"));
211  connect(m_quitAct, SIGNAL(triggered()), this, SLOT(close()));
212 
213  m_copyMapAct = new QAction( QIcon(":/icons/edit-copy.png"), tr("&Copy Map"), this);
214  m_copyMapAct->setShortcut(tr("Ctrl+C"));
215  m_copyMapAct->setStatusTip(tr("Copy a screenshot of the map"));
216  connect(m_copyMapAct, SIGNAL(triggered()), this, SLOT(copyMap()));
217 
218  m_osmEditAction = new QAction( QIcon(":/icons/edit-map.png"), tr( "&Edit Map" ), this );
219  m_osmEditAction->setShortcut(tr( "Ctrl+E" ) );
220  m_osmEditAction->setStatusTip(tr( "Edit the current map region in an external editor" ) );
221  updateMapEditButtonVisibility( m_controlView->marbleWidget()->mapThemeId() );
222  connect( m_osmEditAction, SIGNAL(triggered()), m_controlView, SLOT(launchExternalMapEditor()) );
223 
224  m_configDialogAct = new QAction( QIcon(":/icons/settings-configure.png"),tr("&Configure Marble"), this);
225  m_configDialogAct->setStatusTip(tr("Show the configuration dialog"));
226  connect(m_configDialogAct, SIGNAL(triggered()), this, SLOT(editSettings()));
227 
228  m_copyCoordinatesAct = new QAction( QIcon(":/icons/copy-coordinates.png"), tr("C&opy Coordinates"), this);
229  m_copyCoordinatesAct->setStatusTip(tr("Copy the center coordinates as text"));
230  connect(m_copyCoordinatesAct, SIGNAL(triggered()), this, SLOT(copyCoordinates()));
231 
232  m_fullScreenAct = new QAction( QIcon(":/icons/view-fullscreen.png"), tr("&Full Screen Mode"), this);
233  m_fullScreenAct->setShortcut(tr("Ctrl+Shift+F"));
234  m_fullScreenAct->setCheckable( true );
235  m_fullScreenAct->setStatusTip(tr("Full Screen Mode"));
236  connect(m_fullScreenAct, SIGNAL(triggered(bool)), this, SLOT(showFullScreen(bool)));
237 
238  m_statusBarAct = new QAction( tr("&Show Status Bar"), this);
239  m_statusBarAct->setCheckable( true );
240  m_statusBarAct->setStatusTip(tr("Show Status Bar"));
241  connect(m_statusBarAct, SIGNAL(triggered(bool)), this, SLOT(showStatusBar(bool)));
242 
243 
244  m_lockFloatItemsAct = new QAction( QIcon(":/icons/unlock.png"), tr("Lock Position"),this);
245  m_lockFloatItemsAct->setCheckable( true );
246  m_lockFloatItemsAct->setStatusTip(tr("Lock Position of Floating Items"));
247  connect(m_lockFloatItemsAct, SIGNAL(triggered(bool)), this, SLOT(lockPosition(bool)));
248 
249  m_showCloudsAct = new QAction( QIcon(":/icons/clouds.png"), tr("&Clouds"), this);
250  m_showCloudsAct->setCheckable( true );
251  m_showCloudsAct->setStatusTip(tr("Show Real Time Cloud Cover"));
252  connect(m_showCloudsAct, SIGNAL(triggered(bool)), this, SLOT(showClouds(bool)));
253 
254  m_workOfflineAct = new QAction( QIcon(":/icons/user-offline.png"), tr("Work Off&line"), this);
255  m_workOfflineAct->setCheckable( true );
256  connect(m_workOfflineAct, SIGNAL(triggered(bool)), this, SLOT(workOffline(bool)));
257 
258  m_controlTimeAct = new QAction( QIcon(":/icons/clock.png"), tr( "&Time Control..." ), this );
259  m_controlTimeAct->setStatusTip( tr( "Configure Time Control " ) );
260  connect( m_controlTimeAct, SIGNAL(triggered()), this, SLOT(controlTime()) );
261 
262  m_controlSunAct = new QAction( tr( "S&un Control..." ), this );
263  m_controlSunAct->setStatusTip( tr( "Configure Sun Control" ) );
264  connect( m_controlSunAct, SIGNAL(triggered()), this, SLOT(controlSun()) );
265 
266  m_reloadAct = new QAction( QIcon(":/icons/view-refresh.png"), tr("&Redisplay"), this);
267  m_reloadAct->setShortcut(tr("F5"));
268  m_reloadAct->setStatusTip(tr("Reload Current Map"));
269  connect(m_reloadAct, SIGNAL(triggered()), this, SLOT(reload()));
270 
271  m_handbookAct = new QAction( QIcon(":/icons/help-contents.png"), tr("Marble Virtual Globe &Handbook"), this);
272  m_handbookAct->setShortcut(tr("F1"));
273  m_handbookAct->setStatusTip(tr("Show the Handbook for Marble Virtual Globe"));
274  connect(m_handbookAct, SIGNAL(triggered()), this, SLOT(handbook()));
275 
276  m_whatsThisAct = new QAction( QIcon(":/icons/help-whatsthis.png"), tr("What's &This"), this);
277  m_whatsThisAct->setShortcut(tr("Shift+F1"));
278  m_whatsThisAct->setStatusTip(tr("Show a detailed explanation of the action."));
279  connect(m_whatsThisAct, SIGNAL(triggered()), this, SLOT(enterWhatsThis()));
280 
281  m_aboutMarbleAct = new QAction( QIcon(":/icons/marble.png"), tr("&About Marble Virtual Globe"), this);
282  m_aboutMarbleAct->setStatusTip(tr("Show the application's About Box"));
283  connect(m_aboutMarbleAct, SIGNAL(triggered()), this, SLOT(aboutMarble()));
284 
285  m_aboutQtAct = new QAction(tr("About &Qt"), this);
286  m_aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
287  connect(m_aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
288 
289  //Bookmark Actions
290  m_addBookmarkAct = new QAction( QIcon(":/icons/bookmark-new.png"), tr("&Add Bookmark"),this);
291  m_addBookmarkAct->setShortcut(tr("Ctrl+B"));
292  m_addBookmarkAct->setStatusTip(tr("Add Bookmark"));
293  connect( m_addBookmarkAct, SIGNAL(triggered()), this, SLOT(openEditBookmarkDialog()) );
294 
295  m_setHomeAct = new QAction( QIcon(":/icons/go-home.png"), tr( "&Set Home Location" ),this);
296  m_setHomeAct->setStatusTip( tr( "&Set Home Location" ) );
297  connect( m_setHomeAct, SIGNAL(triggered()), this, SLOT(setHome()) );
298 
299  m_toggleBookmarkDisplayAct = new QAction(tr( "Show &Bookmarks" ), this);
300  m_toggleBookmarkDisplayAct->setStatusTip( tr( "Toggle display of Bookmarks" ) );
301  m_toggleBookmarkDisplayAct->setCheckable( true );
302  connect( m_toggleBookmarkDisplayAct, SIGNAL(triggered(bool)), this, SLOT(showBookmarks(bool)) );
303 
304  m_manageBookmarksAct = new QAction( QIcon( ":/icons/bookmarks-organize.png" ), tr( "&Manage Bookmarks" ), this);
305  m_manageBookmarksAct->setStatusTip( tr( "Manage Bookmarks" ) );
306  connect( m_manageBookmarksAct, SIGNAL(triggered()), this, SLOT(manageBookmarks()) );
307 
308  // Map Wizard action
309  m_mapWizardAct = new QAction( QIcon( ":/icons/create-new-map.png" ), tr("&Create a New Map..."), this );
310  m_mapWizardAct->setStatusTip( tr( "A wizard guides you through the creation of your own map theme." ) );
311  connect( m_mapWizardAct, SIGNAL(triggered()), SLOT(showMapWizard()) );
312 }
313 
314 void MainWindow::createMenus( const QList<QAction*> &panelActions )
315 {
316  m_fileMenu = menuBar()->addMenu(tr("&File"));
317  m_fileMenu->addAction(m_openAct);
318  m_fileMenu->addAction(m_downloadAct);
319  m_fileMenu->addAction( m_downloadRegionAction );
320  m_fileMenu->addAction( m_mapWizardAct );
321  m_fileMenu->addAction(m_exportMapAct);
322  m_fileMenu->addSeparator();
323  m_fileMenu->addAction(m_printAct);
324  m_fileMenu->addAction(m_printPreviewAct);
325  m_fileMenu->addSeparator();
326  m_fileMenu->addAction(m_workOfflineAct);
327  m_fileMenu->addAction(m_quitAct);
328 
329  m_fileMenu = menuBar()->addMenu(tr("&Edit"));
330  m_fileMenu->addAction(m_copyMapAct);
331  m_fileMenu->addAction(m_copyCoordinatesAct);
332  m_fileMenu->addAction( m_osmEditAction );
333 
334  m_viewMenu = menuBar()->addMenu(tr("&View"));
335  m_infoBoxesMenu = new QMenu( "&Info Boxes" );
336  m_onlineServicesMenu = new QMenu( "&Online Services" );
337  createPluginsMenus();
338 
339  m_bookmarkMenu = menuBar()->addMenu(tr("&Bookmarks"));
340  createBookmarkMenu();
341  connect( m_bookmarkMenu, SIGNAL(aboutToShow()), this, SLOT(createBookmarkMenu()) );
342 
343  m_panelMenu = new QMenu( "&Panels" );
344  foreach( QAction* action, panelActions ) {
345  m_panelMenu->addAction( action );
346  }
347 
348  m_settingsMenu = menuBar()->addMenu(tr("&Settings"));
349  m_settingsMenu->addMenu( m_panelMenu );
350  m_settingsMenu->addAction(m_statusBarAct);
351  m_settingsMenu->addAction(m_fullScreenAct);
352  m_settingsMenu->addSeparator();
353  m_settingsMenu->addAction(m_configDialogAct);
354 
355  m_helpMenu = menuBar()->addMenu(tr("&Help"));
356  m_helpMenu->addAction(m_handbookAct);
357  m_helpMenu->addSeparator();
358  m_helpMenu->addAction(m_whatsThisAct);
359  m_helpMenu->addSeparator();
360  m_helpMenu->addAction(m_aboutMarbleAct);
361  m_helpMenu->addAction(m_aboutQtAct);
362 
363  // FIXME: Discuss if this is the best place to put this
364  QList<RenderPlugin *> pluginList = m_controlView->marbleWidget()->renderPlugins();
365  QList<RenderPlugin *>::const_iterator it = pluginList.constBegin();
366  QList<RenderPlugin *>::const_iterator const listEnd = pluginList.constEnd();
367  for (; it != listEnd; ++it ) {
368  connect( (*it), SIGNAL(actionGroupsChanged()),
369  this, SLOT(createPluginMenus()) );
370  }
371 }
372 
373 void MainWindow::createPluginsMenus()
374 {
375  m_onlineServicesMenu->clear();
376  m_infoBoxesMenu->clear();
377  m_viewMenu->clear();
378 
379  m_viewMenu->addAction(m_reloadAct);
380  m_viewMenu->addSeparator();
381 
382  // Do not create too many menu entries on a MID
383  // FIXME: Set up another way of switching the plugins on and off.
384  if( MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen ) {
385  return;
386  }
387 
388  m_infoBoxesMenu->addAction(m_lockFloatItemsAct);
389  m_infoBoxesMenu->addSeparator();
390  QList<QAction*> themeActions;
391 
392  QList<RenderPlugin *> renderPluginList = m_controlView->marbleWidget()->renderPlugins();
393  QList<RenderPlugin *>::const_iterator i = renderPluginList.constBegin();
394  QList<RenderPlugin *>::const_iterator const end = renderPluginList.constEnd();
395  for (; i != end; ++i ) {
396  switch( (*i)->renderType() ) {
397  case RenderPlugin::TopLevelRenderType:
398  m_viewMenu->addAction( (*i)->action() );
399  break;
400  case RenderPlugin::PanelRenderType:
401  m_infoBoxesMenu->addAction( (*i)->action() );
402  break;
403  case RenderPlugin::OnlineRenderType:
404  m_onlineServicesMenu->addAction( (*i)->action() );
405  break;
406  case RenderPlugin::ThemeRenderType:
407  themeActions.append( (*i)->action() );
408  break;
409  default:
410  break;
411  }
412  }
413  m_viewMenu->addMenu( m_infoBoxesMenu );
414  m_viewMenu->addMenu( m_onlineServicesMenu );
415  m_viewMenu->addActions( themeActions );
416  m_viewMenu->addAction( m_showCloudsAct );
417  m_viewMenu->addSeparator();
418  m_viewMenu->addAction(m_controlSunAct);
419  m_viewMenu->addAction(m_controlTimeAct);
420 }
421 
422 void MainWindow::createBookmarksListMenu( QMenu *bookmarksListMenu, const GeoDataContainer *container )
423 {
424  //m_bookmarksListMenu->clear();
425 
426  QVector<GeoDataPlacemark*> bookmarks = container->placemarkList();
427 
428  foreach ( const GeoDataPlacemark *placemark, bookmarks ) {
429  QAction *bookmarkAct = new QAction( placemark->name(), this );
430  QVariant var;
431 
432  const GeoDataLookAt* lookAt = placemark->lookAt();
433  if ( !lookAt ) {
434  GeoDataCoordinates coordinates = placemark->coordinate( m_controlView->marbleModel()->clockDateTime() );
435  GeoDataLookAt coordinateToLookAt;
436  coordinateToLookAt.setCoordinates( coordinates );
437  coordinateToLookAt.setRange( marbleWidget()->lookAt().range() );
438  var.setValue( coordinateToLookAt );
439  } else {
440  var.setValue( *lookAt );
441  }
442  bookmarkAct->setData( var );
443  bookmarksListMenu->addAction( bookmarkAct );
444  }
445 
446 }
447 void MainWindow::createBookmarkMenu()
448 {
449  m_bookmarkMenu->clear();
450  m_bookmarkMenu->addAction( m_addBookmarkAct );
451  m_bookmarkMenu->addAction( m_toggleBookmarkDisplayAct );
452  m_toggleBookmarkDisplayAct->setChecked( m_controlView->marbleModel()->bookmarkManager()->document()->isVisible() );
453  m_bookmarkMenu->addAction( m_setHomeAct );
454  m_bookmarkMenu->addAction( m_manageBookmarksAct );
455 
456  m_bookmarkMenu->addSeparator();
457 
458  m_bookmarkMenu->addAction( QIcon( ":/icons/go-home.png" ), "&Home",
459  m_controlView->marbleWidget(), SLOT(goHome()) );
460  createFolderList( m_bookmarkMenu, m_controlView->marbleModel()->bookmarkManager()->document() );
461 }
462 
463 void MainWindow::createFolderList( QMenu *bookmarksListMenu, const GeoDataContainer *container )
464 {
465  QVector<GeoDataFolder*> folders = container->folderList();
466 
467  if ( folders.size() == 1 ) {
468  createBookmarksListMenu( bookmarksListMenu, folders.first() );
469  }
470  else {
471  foreach ( const GeoDataFolder *folder, folders ) {
472  QMenu *subMenu = bookmarksListMenu->addMenu( QIcon( ":/icons/folder-bookmark.png" ), folder->name() );
473  createFolderList( subMenu, folder );
474  connect( subMenu, SIGNAL(triggered(QAction*)),
475  this, SLOT(lookAtBookmark(QAction*)) );
476  }
477  }
478 
479  createBookmarksListMenu( bookmarksListMenu, container );
480  connect( bookmarksListMenu, SIGNAL(triggered(QAction*)),
481  this, SLOT(lookAtBookmark(QAction*)) );
482 }
483 
484 
485 void MainWindow::lookAtBookmark( QAction *action)
486 {
487  if ( action->data().isNull() ) {
488  return;
489  }
490 
491  GeoDataLookAt temp = qvariant_cast<GeoDataLookAt>( action->data() ) ;
492  m_controlView->marbleWidget()->flyTo( temp ) ;
493  mDebug() << " looking at bookmark having longitude : "<< temp.longitude(GeoDataCoordinates::Degree)
494  << " latitude : "<< temp.latitude(GeoDataCoordinates::Degree)
495  << " distance : " << temp.range();
496 
497 
498 }
499 
500 void MainWindow::manageBookmarks()
501 {
502  MarbleModel * const model = m_controlView->marbleModel();
503  QPointer<BookmarkManagerDialog> dialog = new BookmarkManagerDialog( model, this );
504 #ifdef Q_WS_MAEMO_5
505  dialog->setButtonBoxVisible( false );
506  dialog->setAttribute( Qt::WA_Maemo5StackedWindow );
507  dialog->setWindowFlags( Qt::Window );
508 #endif // Q_WS_MAEMO_5
509  dialog->exec();
510  delete dialog;
511 }
512 
513 void MainWindow::setHome()
514 {
515  MarbleWidget *widget = m_controlView->marbleWidget();
516  widget->model()->setHome( widget->centerLongitude(), widget->centerLatitude(), widget->zoom() );
517 }
518 
519 void MainWindow::openEditBookmarkDialog()
520 {
521  MarbleWidget *widget = m_controlView->marbleWidget();
522  QPointer<EditBookmarkDialog> dialog = new EditBookmarkDialog( widget->model()->bookmarkManager(), widget );
523  dialog->setMarbleWidget( widget );
524  dialog->setCoordinates( widget->lookAt().coordinates() );
525  dialog->setRange( widget->lookAt().range() );
526  dialog->setReverseGeocodeName();
527  if ( dialog->exec() == QDialog::Accepted ) {
528  widget->model()->bookmarkManager()->addBookmark( dialog->folder(), dialog->bookmark() );
529  }
530  delete dialog;
531 }
532 
533 void MainWindow::createPluginMenus()
534 {
535  // Remove and delete toolbars if they exist
536  while( !m_pluginToolbars.isEmpty() ) {
537  QToolBar* tb = m_pluginToolbars.takeFirst();
538  this->removeToolBar(tb);
539  delete tb;
540  }
541 
542  // Do not create too many menu entries on a MID
543  // FIXME: Set up another way of switching the plugins on and off.
544  if( MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen ) {
545  return;
546  }
547 
548  //remove and delete old menus if they exist
549  while( !m_pluginMenus.isEmpty() ) {
550  m_pluginMenus.takeFirst();
551 // FIXME: this does not provide an easy way to remove a menu.
552 // Make a workaround
553 // this->menuBar()->removeAction();
554  }
555 
556  const QList<QActionGroup*> *tmp_toolbarActionGroups;
557  QList<RenderPlugin *> renderPluginList = m_controlView->marbleWidget()->renderPlugins();
558  QList<RenderPlugin *>::const_iterator i = renderPluginList.constBegin();
559  QList<RenderPlugin *>::const_iterator const end = renderPluginList.constEnd();
560 
561  //Load the toolbars
562  for (; i != end; ++i ) {
563  tmp_toolbarActionGroups = (*i)->toolbarActionGroups();
564 
565  if ( tmp_toolbarActionGroups ) {
566  QToolBar* toolbar = new QToolBar(this);
567  toolbar->setObjectName( QString( "plugin-toolbar-%1" ).arg( (*i)->nameId() ) );
568 
569  foreach( QActionGroup* ag, *tmp_toolbarActionGroups ) {
570  toolbar->addActions( ag->actions() );
571  }
572 
573  m_pluginToolbars.append( toolbar );
574  this->addToolBar( toolbar );
575  }
576  }
577 
578 // FIXME: load the menus once the method has been settled on
579 }
580 
581 void MainWindow::createStatusBar()
582 {
583  statusBar()->showMessage(tr("Ready"));
584  statusBar()->hide();
585 }
586 
587 void MainWindow::openMapDialog()
588 {
589  QPointer<MapThemeDownloadDialog> dialog( new MapThemeDownloadDialog( m_controlView->marbleWidget() ) );
590  dialog->exec();
591  delete dialog;
592 }
593 
594 void MainWindow::exportMapScreenShot()
595 {
596  QString fileName = QFileDialog::getSaveFileName(this, tr("Export Map"), // krazy:exclude=qclasses
597  QDir::homePath(),
598  tr("Images (*.jpg *.png)"));
599 
600  if ( !fileName.isEmpty() )
601  {
602  // Take the case into account where no file format is indicated
603  const char * format = 0;
604  if ( !fileName.endsWith(QLatin1String( "png" ), Qt::CaseInsensitive)
605  | !fileName.endsWith(QLatin1String( "jpg" ), Qt::CaseInsensitive) )
606  {
607  format = "JPG";
608  }
609 
610  QPixmap mapPixmap = m_controlView->mapScreenShot();
611  bool success = mapPixmap.save( fileName, format );
612  if ( !success )
613  {
614  QMessageBox::warning(this, tr("Marble"), // krazy:exclude=qclasses
615  tr( "An error occurred while trying to save the file.\n" ),
616  QMessageBox::Ok);
617  }
618  }
619 }
620 
621 
622 void MainWindow::showFullScreen( bool isChecked )
623 {
624  if ( isChecked ) {
625  setWindowState( windowState() | Qt::WindowFullScreen ); // set
626  }
627  else {
628  setWindowState( windowState() & ~Qt::WindowFullScreen ); // reset
629  }
630 
631  m_fullScreenAct->setChecked( isChecked ); // Sync state with the GUI
632 }
633 
634 void MainWindow::copyCoordinates()
635 {
636  qreal lon = m_controlView->marbleWidget()->centerLongitude();
637  qreal lat = m_controlView->marbleWidget()->centerLatitude();
638 
639  QString positionString = GeoDataCoordinates( lon, lat, 0.0, GeoDataCoordinates::Degree ).toString();
640  QClipboard *clipboard = QApplication::clipboard();
641 
642  clipboard->setText( positionString );
643 }
644 
645 void MainWindow::copyMap()
646 {
647  QPixmap mapPixmap = m_controlView->mapScreenShot();
648  QClipboard *clipboard = QApplication::clipboard();
649 
650  clipboard->setPixmap( mapPixmap );
651 }
652 
653 void MainWindow::showStatusBar( bool isChecked )
654 {
655  if ( isChecked )
656  {
657  statusBar()->show();
658  }
659  else
660  {
661  statusBar()->hide();
662  }
663 
664  m_statusBarAct->setChecked( isChecked ); // Sync state with the GUI
665 }
666 
667 void MainWindow::showClouds( bool isChecked )
668 {
669  m_controlView->marbleWidget()->setShowClouds( isChecked );
670 
671  m_showCloudsAct->setChecked( isChecked ); // Sync state with the GUI
672 }
673 
674 void MainWindow::showBookmarks( bool show )
675 {
676  m_controlView->marbleModel()->bookmarkManager()->setShowBookmarks( show );
677 
678  m_toggleBookmarkDisplayAct->setChecked( show ); // Sync state with the GUI
679 }
680 
681 void MainWindow::workOffline( bool offline )
682 {
683  m_controlView->setWorkOffline( offline );
684 
685  m_workOfflineAct->setChecked( offline ); // Sync state with the GUI
686 }
687 
688 void MainWindow::lockPosition( bool isChecked )
689 {
690  QList<AbstractFloatItem *> floatItemList = m_controlView->marbleWidget()->floatItems();
691 
692  QList<AbstractFloatItem *>::const_iterator i = floatItemList.constBegin();
693  QList<AbstractFloatItem *>::const_iterator const end = floatItemList.constEnd();
694  for (; i != end; ++i )
695  {
696  // Locking one would suffice as it affects all.
697  // Nevertheless go through all.
698  (*i)->setPositionLocked(isChecked);
699  }
700 }
701 
702 void MainWindow::controlSun()
703 {
704  if (!m_sunControlDialog) {
705  m_sunControlDialog = new SunControlWidget( m_controlView->marbleWidget(), this );
706  connect( m_sunControlDialog, SIGNAL(showSun(bool)),
707  this, SLOT (showSun(bool)) );
708  }
709 
710  m_sunControlDialog->show();
711  m_sunControlDialog->raise();
712  m_sunControlDialog->activateWindow();
713 }
714 
715 void MainWindow::controlTime()
716 {
717  if ( !m_timeControlDialog )
718  {
719  m_timeControlDialog = new TimeControlWidget( m_controlView->marbleModel()->clock() );
720  }
721  /* m_timeControlDialog is a modeless dialog so that user may adjust time and interact with main application simultaneously.*/
722  m_timeControlDialog->show();
723  m_timeControlDialog->raise();
724  m_timeControlDialog->activateWindow();
725 }
726 
727 
728 void MainWindow::showSun( bool active )
729 {
730  m_controlView->marbleWidget()->setShowSunShading( active );
731 }
732 
733 void MainWindow::reload()
734 {
735  m_controlView->marbleWidget()->reloadMap();
736 }
737 
738 void MainWindow::enterWhatsThis()
739 {
740  QWhatsThis::enterWhatsThisMode();
741 }
742 
743 void MainWindow::aboutMarble()
744 {
745  MarbleAboutDialog dlg(this);
746  dlg.setApplicationTitle( tr( "Marble Virtual Globe %1" ).arg( ControlView::applicationVersion() ) );
747  dlg.exec();
748 }
749 
750 void MainWindow::handbook()
751 {
752  const QString code = MarbleLocale::languageCode();
753 
754  QUrl handbookLocation( "http://docs.kde.org/stable/" + code + "/kdeedu/marble/index.html" );
755 
756  if ( handbookLocation.isEmpty() )
757  handbookLocation = QUrl("http://docs.kde.org/stable/en/kdeedu/marble/index.html");
758 
759  if( !QDesktopServices::openUrl( handbookLocation ) )
760  qDebug() << "URL not opened";
761 }
762 
763 void MainWindow::showPosition( const QString& position )
764 {
765  m_position = position;
766  updateStatusBar();
767 }
768 
769 void MainWindow::showDistance( const QString& distance )
770 {
771  m_distance = distance;
772  updateStatusBar();
773 }
774 
775 void MainWindow::showZoom( int zoom )
776 {
777  m_zoom = QString::number( zoom );
778  updateStatusBar();
779 }
780 
781 void MainWindow::showDateTime()
782 {
783  m_clock = QLocale().toString( m_controlView->marbleModel()->clockDateTime().addSecs( m_controlView->marbleModel()->clockTimezone() ), QLocale::ShortFormat );
784  updateStatusBar();
785 }
786 
787 void MainWindow::updateStatusBar()
788 {
789  if ( m_positionLabel )
790  m_positionLabel->setText( QString( "%1 %2" ).
791  arg( tr( POSITION_STRING ) ).arg( m_position ) );
792 
793  if ( m_distanceLabel )
794  m_distanceLabel->setText( QString( "%1 %2" )
795  .arg( tr( DISTANCE_STRING ) ).arg( m_distance ) );
796 
797  if ( m_zoomLabel )
798  m_zoomLabel->setText( QString( "%1 %2" )
799  .arg( tr( ZOOM_STRING ) ).arg( m_zoom ) );
800 
801  if ( m_clockLabel )
802  m_clockLabel->setText( QString( "%1 %2" )
803  .arg( tr( DATETIME_STRING ) ).arg( m_clock ) );
804 }
805 
806 void MainWindow::openFile()
807 {
808  const PluginManager *const pluginManager = m_controlView->marbleModel()->pluginManager();
809 
810  QStringList allFileExtensions;
811  QStringList filters;
812  foreach ( const ParseRunnerPlugin *plugin, pluginManager->parsingRunnerPlugins() ) {
813  if ( plugin->nameId() == "Cache" )
814  continue;
815 
816  const QStringList fileExtensions = plugin->fileExtensions().replaceInStrings( QRegExp( "^" ), "*." );
817  const QString filter = QString( "%1 (%2)" ).arg( plugin->fileFormatDescription() ).arg( fileExtensions.join( " " ) );
818  filters << filter;
819  allFileExtensions << fileExtensions;
820  }
821 
822  allFileExtensions.sort(); // sort since file extensions are visible under Windows
823  const QString allFileTypes = QString( "%1 (%2)" ).arg( tr( "All Supported Files" ) ).arg( allFileExtensions.join( " " ) );
824 
825  filters.sort();
826  filters.prepend( allFileTypes );
827  const QString filter = filters.join( ";;" );
828 
829  QStringList fileNames = QFileDialog::getOpenFileNames( this, tr( "Open File" ), m_lastFileOpenPath, filter );
830 
831  if ( !fileNames.isEmpty() ) {
832  const QString firstFile = fileNames.first();
833  m_lastFileOpenPath = QFileInfo( firstFile ).absolutePath();
834  }
835 
836  foreach( const QString &fileName, fileNames ) {
837  m_controlView->marbleModel()->addGeoDataFile( fileName );
838  }
839 }
840 
841 void MainWindow::setupStatusBar()
842 {
843  statusBar()->setSizeGripEnabled( true );
844  statusBar()->setContextMenuPolicy( Qt::ActionsContextMenu );
845 
846  QAction* toggleTileLevelAction = new QAction( "Show zoom level", statusBar() );
847  toggleTileLevelAction->setCheckable( true );
848  toggleTileLevelAction->setChecked( false );
849  connect( toggleTileLevelAction, SIGNAL(triggered(bool)),
850  this, SLOT(showZoomLevel(bool)) );
851  statusBar()->addAction( toggleTileLevelAction );
852 
853  setupDownloadProgressBar();
854 
855  m_positionLabel = new QLabel( );
856  m_positionLabel->setIndent( 5 );
857  QString templatePositionString =
858  QString( "%1 000\xb0 00\' 00\"_, 000\xb0 00\' 00\"_" ).arg(POSITION_STRING);
859  int maxPositionWidth = fontMetrics().boundingRect(templatePositionString).width()
860  + 2 * m_positionLabel->margin() + 2 * m_positionLabel->indent();
861  m_positionLabel->setFixedWidth( maxPositionWidth );
862  statusBar()->addPermanentWidget ( m_positionLabel );
863 
864  m_distanceLabel = new QLabel( );
865  m_distanceLabel->setIndent( 5 );
866  QString templateDistanceString =
867  QString( "%1 00.000,0 mu" ).arg(DISTANCE_STRING);
868  int maxDistanceWidth = fontMetrics().boundingRect(templateDistanceString).width()
869  + 2 * m_distanceLabel->margin() + 2 * m_distanceLabel->indent();
870  m_distanceLabel->setFixedWidth( maxDistanceWidth );
871  statusBar()->addPermanentWidget ( m_distanceLabel );
872 
873  m_zoomLabel = new QLabel( );
874  m_zoomLabel->setIndent( 5 );
875  QString templateZoomString =
876  QString( "%1 00" ).arg(ZOOM_STRING);
877  int maxZoomWidth = fontMetrics().boundingRect(templateZoomString).width()
878  + 2 * m_zoomLabel->margin() + 2 * m_zoomLabel->indent();
879  m_zoomLabel->setFixedWidth( maxZoomWidth );
880  // Not added here, but activated by the user with the context menu
881 
882  m_clockLabel = new QLabel( );
883  m_clockLabel->setIndent( 5 );
884  QString templateDateTimeString = QString( "%1 %2" ).arg( DATETIME_STRING , QLocale().toString( QDateTime::fromString ( "01:01:1000", "dd:mm:yyyy"), QLocale::ShortFormat ) );
885  int maxDateTimeWidth = fontMetrics().boundingRect( templateDateTimeString ).width()
886  + 2 * m_clockLabel->margin() + 2 * m_clockLabel->indent();
887  m_clockLabel->setFixedWidth( maxDateTimeWidth );
888  statusBar()->addPermanentWidget ( m_clockLabel );
889 
890  connect( marbleWidget(), SIGNAL(mouseMoveGeoPosition(QString)),
891  this, SLOT(showPosition(QString)) );
892  connect( marbleWidget(), SIGNAL(distanceChanged(QString)),
893  this, SLOT(showDistance(QString)) );
894  connect( marbleWidget(), SIGNAL(tileLevelChanged(int)),
895  this, SLOT(showZoom(int)) );
896  connect( m_controlView->marbleModel()->clock(), SIGNAL(timeChanged()),
897  this, SLOT(showDateTime()) );
898 
899  updateStatusBar();
900 }
901 
902 void MainWindow::setupDownloadProgressBar()
903 {
904  m_downloadProgressBar = new QProgressBar;
905  m_downloadProgressBar->setVisible( true );
906  statusBar()->addPermanentWidget( m_downloadProgressBar );
907 
908  HttpDownloadManager * const downloadManager =
909  m_controlView->marbleModel()->downloadManager();
910  Q_ASSERT( downloadManager );
911  connect( downloadManager, SIGNAL(jobAdded()), SLOT(downloadJobAdded()) );
912  connect( downloadManager, SIGNAL(jobRemoved()), SLOT(downloadJobRemoved()) );
913 }
914 
915 void MainWindow::downloadJobAdded(){
916  m_downloadProgressBar->setUpdatesEnabled( false );
917  if ( m_downloadProgressBar->value() < 0 ) {
918  m_downloadProgressBar->setMaximum( 1 );
919  m_downloadProgressBar->setValue( 0 );
920  m_downloadProgressBar->setVisible( true );
921  } else {
922  m_downloadProgressBar->setMaximum( m_downloadProgressBar->maximum() + 1 );
923  }
924 
925  m_downloadProgressBar->setUpdatesEnabled( true );
926 }
927 
928 void MainWindow::downloadJobRemoved(){
929  m_downloadProgressBar->setUpdatesEnabled( false );
930  m_downloadProgressBar->setValue( m_downloadProgressBar->value() + 1 );
931  if ( m_downloadProgressBar->value() == m_downloadProgressBar->maximum() ) {
932  m_downloadProgressBar->reset();
933  m_downloadProgressBar->setVisible( false );
934  }
935 
936  m_downloadProgressBar->setUpdatesEnabled( true );
937 }
938 
939 void MainWindow::closeEvent(QCloseEvent *event)
940 {
941  writeSettings();
942  event->accept();
943 }
944 
945 QString MainWindow::readMarbleDataPath()
946 {
947  QSettings settings;
948 
949  settings.beginGroup("MarbleWidget");
950  QString marbleDataPath;
951  marbleDataPath = settings.value("marbleDataPath", "").toString(),
952  settings.endGroup();
953 
954  return marbleDataPath;
955 }
956 
957 void MainWindow::readSettings(const QVariantMap& overrideSettings)
958 {
959  QSettings settings;
960 
961  settings.beginGroup("MainWindow");
962  resize(settings.value("size", QSize(640, 480)).toSize());
963  move(settings.value("pos", QPoint(200, 200)).toPoint());
964  showFullScreen(settings.value("fullScreen", false ).toBool());
965  showStatusBar(settings.value("statusBar", false ).toBool());
966  show();
967  showClouds(settings.value("showClouds", true ).toBool());
968  workOffline(settings.value("workOffline", false ).toBool());
969  m_controlView->marbleWidget()->setShowAtmosphere(settings.value("showAtmosphere", true ).toBool());
970  m_lastFileOpenPath = settings.value("lastFileOpenDir", QDir::homePath()).toString();
971  showBookmarks( settings.value( "showBookmarks", true ).toBool() );
972  restoreState( settings.value("windowState").toByteArray() );
973  settings.endGroup();
974 
975  setUpdatesEnabled(false);
976 
977  settings.beginGroup("MarbleWidget");
978  QString mapThemeId;
979  const QVariantMap::ConstIterator mapThemeIdIt = overrideSettings.find(QLatin1String("mapTheme"));
980  if ( mapThemeIdIt != overrideSettings.constEnd() ) {
981  mapThemeId = mapThemeIdIt.value().toString();
982  } else {
983  mapThemeId = settings.value("mapTheme", m_controlView->defaultMapThemeId() ).toString();
984  }
985  mDebug() << Q_FUNC_INFO << "mapThemeId:" << mapThemeId;
986  m_controlView->marbleWidget()->setMapThemeId( mapThemeId );
987  m_controlView->marbleWidget()->setProjection(
988  (Projection)(settings.value("projection", Spherical ).toInt())
989  );
990 
991  // Set home position
992  m_controlView->marbleModel()->setHome(
993  settings.value("homeLongitude", 9.4).toDouble(),
994  settings.value("homeLatitude", 54.8).toDouble(),
995  settings.value("homeZoom", 1050 ).toInt()
996  );
997 
998  // Center on/Distance
999  const QVariantMap::ConstIterator distanceIt = overrideSettings.find(QLatin1String("distance"));
1000  const bool isDistanceOverwritten = (distanceIt != overrideSettings.constEnd());
1001 
1002  const QVariantMap::ConstIterator lonLatIt = overrideSettings.find(QLatin1String("lonlat"));
1003  if ( lonLatIt != overrideSettings.constEnd() ) {
1004  const QVariantList lonLat = lonLatIt.value().toList();
1005  m_controlView->marbleWidget()->centerOn( lonLat.at(0).toDouble(), lonLat.at(1).toDouble() );
1006  } else {
1007  switch ( m_configDialog->onStartup() ) {
1008  case Marble::LastLocationVisited:
1009  m_controlView->marbleWidget()->centerOn(
1010  settings.value("quitLongitude", 0.0).toDouble(),
1011  settings.value("quitLatitude", 0.0).toDouble() );
1012  if (! isDistanceOverwritten) {
1013  // set default radius to 1350 (Atlas theme's "sharp" radius)
1014  m_controlView->marbleWidget()->setRadius( settings.value("quitRadius", 1350).toInt() );
1015  }
1016  break;
1017  case Marble::ShowHomeLocation:
1018  m_controlView->marbleWidget()->goHome();
1019  break;
1020  default:
1021  break;
1022  }
1023  }
1024  if (isDistanceOverwritten) {
1025  m_controlView->marbleWidget()->setDistance(distanceIt.value().toDouble());
1026  }
1027 
1028  bool isLocked = settings.value( "lockFloatItemPositions", false ).toBool();
1029  m_lockFloatItemsAct->setChecked( isLocked );
1030  lockPosition(isLocked);
1031  settings.endGroup();
1032 
1033  settings.beginGroup( "Sun" );
1034  m_controlView->marbleWidget()->setShowSunShading( settings.value( "showSun", false ).toBool() );
1035  m_controlView->marbleWidget()->setShowCityLights( settings.value( "showCitylights", false ).toBool() );
1036  m_controlView->marbleWidget()->setLockToSubSolarPoint( settings.value( "lockToSubSolarPoint", false ).toBool() );
1037  m_controlView->marbleWidget()->setSubSolarPointIconVisible( settings.value( "subSolarPointIconVisible", false ).toBool() );
1038  settings.endGroup();
1039 
1040  settings.beginGroup( "Time" );
1041  if( settings.value( "systemTime", "true" ).toBool() == true )
1042  {
1043  /* nothing to do */
1044  }
1045  else if( settings.value( "lastSessionTime", "true" ).toBool() == true )
1046  {
1047  m_controlView->marbleModel()->setClockDateTime( settings.value( "dateTime" ).toDateTime() );
1048  m_controlView->marbleModel()->setClockSpeed( settings.value( "speedSlider", 1 ).toInt() );
1049  }
1050  settings.endGroup();
1051 
1052  setUpdatesEnabled(true);
1053 
1054  // Load previous route settings
1055  settings.beginGroup( "Routing" );
1056  {
1057  RoutingManager *const routingManager = m_controlView->marbleModel()->routingManager();
1058  routingManager->readSettings();
1059  bool const startupWarning = settings.value( "showGuidanceModeStartupWarning", QVariant( true ) ).toBool();
1060  routingManager->setShowGuidanceModeStartupWarning( startupWarning );
1061  routingManager->setLastOpenPath( settings.value( "lastRouteOpenPath", QDir::homePath() ).toString() );
1062  routingManager->setLastSavePath( settings.value( "lastRouteSavePath", QDir::homePath() ).toString() );
1063 
1064  QColor tempColor;
1065  tempColor = QColor( settings.value( "routeColorStandard", Oxygen::skyBlue4.name() ).toString() );
1066  tempColor.setAlpha( settings.value( "routeAlphaStandard", 200 ).toInt() );
1067  routingManager->setRouteColorStandard( tempColor );
1068 
1069  tempColor = QColor( settings.value( "routeColorHighlighted", Oxygen::skyBlue1.name() ).toString() );
1070  tempColor.setAlpha( settings.value( "routeAlphaHighlighted", 200 ).toInt() );
1071  routingManager->setRouteColorHighlighted( tempColor );
1072 
1073  tempColor = QColor( settings.value( "routeColorAlternative", Oxygen::aluminumGray4.name() ).toString() );
1074  tempColor.setAlpha( settings.value( "routeAlphaAlternative", 200 ).toInt() );
1075  routingManager->setRouteColorAlternative( tempColor );
1076  }
1077  settings.endGroup();
1078 
1079 
1080  settings.beginGroup( "Routing Profile" );
1081  if ( settings.contains( "Num" ) ) {
1082  QList<RoutingProfile> profiles;
1083  int numProfiles = settings.value( "Num", 0 ).toInt();
1084  for ( int i = 0; i < numProfiles; ++i ) {
1085  settings.beginGroup( QString( "Profile %0" ).arg(i) );
1086  QString name = settings.value( "Name", tr( "Unnamed" ) ).toString();
1087  RoutingProfile profile( name );
1088  foreach ( const QString& pluginName, settings.childGroups() ) {
1089  settings.beginGroup( pluginName );
1090  profile.pluginSettings().insert( pluginName, QHash<QString, QVariant>() );
1091  foreach ( const QString& key, settings.childKeys() ) {
1092  if ( key != "Enabled" ) {
1093  profile.pluginSettings()[ pluginName ].insert( key, settings.value( key ) );
1094  }
1095  }
1096  settings.endGroup();
1097  }
1098  profiles << profile;
1099  settings.endGroup();
1100  }
1101  m_controlView->marbleModel()->routingManager()->profilesModel()->setProfiles( profiles );
1102  } else {
1103  m_controlView->marbleModel()->routingManager()->profilesModel()->loadDefaultProfiles();
1104  }
1105  int const profileIndex = settings.value( "currentIndex", 0 ).toInt();
1106  if ( profileIndex >= 0 && profileIndex < m_controlView->marbleModel()->routingManager()->profilesModel()->rowCount() ) {
1107  RoutingProfile profile = m_controlView->marbleModel()->routingManager()->profilesModel()->profiles().at( profileIndex );
1108  m_controlView->marbleModel()->routingManager()->routeRequest()->setRoutingProfile( profile );
1109  }
1110 
1111  settings.endGroup();
1112 
1113  settings.beginGroup( "Plugins");
1114  PositionTracking* tracking = m_controlView->marbleModel()->positionTracking();
1115  tracking->readSettings();
1116  QString positionProvider = settings.value( "activePositionTrackingPlugin", QString() ).toString();
1117  if ( !positionProvider.isEmpty() ) {
1118  const PluginManager* pluginManager = m_controlView->marbleModel()->pluginManager();
1119  foreach( const PositionProviderPlugin* plugin, pluginManager->positionProviderPlugins() ) {
1120  if ( plugin->nameId() == positionProvider ) {
1121  PositionProviderPlugin* instance = plugin->newInstance();
1122  instance->setMarbleModel( m_controlView->marbleModel() );
1123  tracking->setPositionProviderPlugin( instance );
1124  break;
1125  }
1126  }
1127  }
1128  settings.endGroup();
1129 
1130  settings.beginGroup( "Tracking" );
1131  if ( settings.contains( "autoCenter" ) || settings.contains( "recenterMode" ) ) {
1132  CurrentLocationWidget* trackingWidget = m_controlView->currentLocationWidget();
1133  Q_ASSERT( trackingWidget );
1134  trackingWidget->setRecenterMode( settings.value( "recenterMode", 0 ).toInt() );
1135  trackingWidget->setAutoZoom( settings.value( "autoZoom", false ).toBool() );
1136  trackingWidget->setTrackVisible( settings.value( "trackVisible", true ).toBool() );
1137  trackingWidget->setLastOpenPath( settings.value( "lastTrackOpenPath", QDir::homePath() ).toString() );
1138  trackingWidget->setLastSavePath( settings.value( "lastTrackSavePath", QDir::homePath() ).toString() );
1139  }
1140  settings.endGroup();
1141 
1142  // The config dialog has to read settings.
1143  m_configDialog->readSettings();
1144 
1145  settings.beginGroup( "Navigation" );
1146  m_controlView->setExternalMapEditor( settings.value( "externalMapEditor", "" ).toString() );
1147  settings.endGroup();
1148 
1149  settings.beginGroup( "CloudSync" );
1150  m_configDialog->setShowCloudSync( settings.value( "showCloudSyncSettings", false ).toBool() );
1151  CloudSyncManager* cloudSyncManager = m_controlView->cloudSyncManager();
1152  cloudSyncManager->setOwncloudServer( settings.value( "owncloudServer", "" ).toString() );
1153  cloudSyncManager->setOwncloudUsername( settings.value( "owncloudUsername", "" ).toString() );
1154  cloudSyncManager->setOwncloudPassword( settings.value( "owncloudPassword", "" ).toString() );
1155  cloudSyncManager->setSyncEnabled( settings.value( "enableSync", false ).toBool() );
1156  cloudSyncManager->routeSyncManager()->setRouteSyncEnabled( settings.value( "syncRoutes", true ).toBool() );
1157  cloudSyncManager->bookmarkSyncManager()->setBookmarkSyncEnabled( settings.value( "syncBookmarks", true ).toBool() );
1158  settings.endGroup();
1159 }
1160 
1161 void MainWindow::writeSettings()
1162 {
1163  QSettings settings;
1164 
1165  settings.beginGroup( "MainWindow" );
1166  settings.setValue( "size", size() );
1167  settings.setValue( "pos", pos() );
1168  settings.setValue( "fullScreen", m_fullScreenAct->isChecked() );
1169  settings.setValue( "statusBar", m_statusBarAct->isChecked() );
1170  settings.setValue( "showClouds", m_showCloudsAct->isChecked() );
1171  settings.setValue( "workOffline", m_workOfflineAct->isChecked() );
1172  settings.setValue( "showAtmosphere", m_controlView->marbleWidget()->showAtmosphere() );
1173  settings.setValue( "lastFileOpenDir", m_lastFileOpenPath );
1174  settings.setValue( "showBookmarks", m_toggleBookmarkDisplayAct->isChecked() );
1175  settings.setValue( "windowState", saveState() );
1176  settings.endGroup();
1177 
1178  settings.beginGroup( "MarbleWidget" );
1179  // Get the 'home' values from the widget and store them in the settings.
1180  qreal homeLon = 0;
1181  qreal homeLat = 0;
1182  int homeZoom = 0;
1183  m_controlView->marbleModel()->home( homeLon, homeLat, homeZoom );
1184  QString mapTheme = m_controlView->marbleWidget()->mapThemeId();
1185  int projection = (int)( m_controlView->marbleWidget()->projection() );
1186 
1187  settings.setValue( "homeLongitude", homeLon );
1188  settings.setValue( "homeLatitude", homeLat );
1189  settings.setValue( "homeZoom", homeZoom );
1190 
1191  settings.setValue( "mapTheme", mapTheme );
1192  settings.setValue( "projection", projection );
1193 
1194  // Get the 'quit' values from the widget and store them in the settings.
1195  qreal quitLon = m_controlView->marbleWidget()->centerLongitude();
1196  qreal quitLat = m_controlView->marbleWidget()->centerLatitude();
1197  const int quitRadius = m_controlView->marbleWidget()->radius();
1198 
1199  settings.setValue( "quitLongitude", quitLon );
1200  settings.setValue( "quitLatitude", quitLat );
1201  settings.setValue( "quitRadius", quitRadius );
1202 
1203  settings.setValue( "lockFloatItemPositions", m_lockFloatItemsAct->isChecked() );
1204  settings.endGroup();
1205 
1206  settings.beginGroup( "Sun" );
1207  settings.setValue( "showSun", m_controlView->marbleWidget()->showSunShading() );
1208  settings.setValue( "showCitylights", m_controlView->marbleWidget()->showCityLights() );
1209  settings.setValue( "lockToSubSolarPoint", m_controlView->marbleWidget()->isLockedToSubSolarPoint() );
1210  settings.setValue( "subSolarPointIconVisible", m_controlView->marbleWidget()->isSubSolarPointIconVisible() );
1211  settings.endGroup();
1212 
1213  settings.beginGroup( "Time" );
1214  settings.setValue( "dateTime", m_controlView->marbleModel()->clockDateTime() );
1215  settings.setValue( "speedSlider", m_controlView->marbleModel()->clockSpeed() );
1216  settings.endGroup();
1217 
1218  settings.beginGroup( "Routing Profile" );
1219  QList<RoutingProfile> profiles = m_controlView->marbleWidget()
1220  ->model()->routingManager()->profilesModel()->profiles();
1221  settings.setValue( "Num", profiles.count() );
1222  for ( int i = 0; i < profiles.count(); ++i ) {
1223  settings.beginGroup( QString( "Profile %0" ).arg(i) );
1224  const RoutingProfile& profile = profiles.at( i );
1225  settings.setValue( "Name", profile.name() );
1226  foreach ( const QString& pluginName, settings.childGroups() ) {
1227  settings.beginGroup( pluginName );
1228  settings.remove( "" ); //remove all keys
1229  settings.endGroup();
1230  }
1231  foreach ( const QString &key, profile.pluginSettings().keys() ) {
1232  settings.beginGroup( key );
1233  settings.setValue( "Enabled", true );
1234  foreach ( const QString& settingKey, profile.pluginSettings()[ key ].keys() ) {
1235  Q_ASSERT( settingKey != "Enabled" );
1236  settings.setValue( settingKey, profile.pluginSettings()[ key ][ settingKey ] );
1237  }
1238  settings.endGroup();
1239  }
1240  settings.endGroup();
1241  }
1242  RoutingProfile const profile = m_controlView->marbleWidget()->model()->routingManager()->routeRequest()->routingProfile();
1243  settings.setValue( "currentIndex", profiles.indexOf( profile ) );
1244  settings.endGroup();
1245 
1246  settings.beginGroup( "Plugins");
1247  QString positionProvider;
1248  PositionTracking* tracking = m_controlView->marbleModel()->positionTracking();
1249  tracking->writeSettings();
1250  if ( tracking && tracking->positionProviderPlugin() ) {
1251  positionProvider = tracking->positionProviderPlugin()->nameId();
1252  }
1253  settings.setValue( "activePositionTrackingPlugin", positionProvider );
1254  settings.endGroup();
1255 
1256  settings.beginGroup( "Tracking" );
1257  CurrentLocationWidget* trackingWidget = m_controlView->currentLocationWidget();
1258  if ( trackingWidget ) {
1259  // Can be null due to lazy initialization
1260  settings.setValue( "recenterMode", trackingWidget->recenterMode() );
1261  settings.setValue( "autoZoom", trackingWidget->autoZoom() );
1262  settings.setValue( "trackVisible", trackingWidget->trackVisible() );
1263  settings.setValue( "lastTrackOpenPath", trackingWidget->lastOpenPath() );
1264  settings.setValue( "lastTrackSavePath", trackingWidget->lastSavePath() );
1265  }
1266  settings.endGroup();
1267 
1268  // The config dialog has to write settings.
1269  m_configDialog->writeSettings();
1270 
1271  // Store current route settings
1272  settings.beginGroup( "Routing" );
1273  {
1274  RoutingManager *const routingManager = m_controlView->marbleModel()->routingManager();
1275  routingManager->writeSettings();
1276  settings.setValue( "showGuidanceModeStartupWarning", routingManager->showGuidanceModeStartupWarning() );
1277  settings.setValue( "lastRouteOpenPath", routingManager->lastOpenPath() );
1278  settings.setValue( "lastRouteSavePath", routingManager->lastSavePath() );
1279  settings.setValue( "routeColorStandard", routingManager->routeColorStandard().name() );
1280  settings.setValue( "routeAlphaStandard", routingManager->routeColorStandard().alpha() );
1281  settings.setValue( "routeColorHighlighted", routingManager->routeColorHighlighted().name() );
1282  settings.setValue( "routeAlphaHighlighted", routingManager->routeColorHighlighted().alpha() );
1283  settings.setValue( "routeColorAlternative", routingManager->routeColorAlternative().name() );
1284  settings.setValue( "routeAlphaAlternative", routingManager->routeColorAlternative().alpha() );
1285  }
1286  settings.endGroup();
1287 
1288  settings.beginGroup( "Navigation");
1289  settings.setValue( "externalMapEditor", m_controlView->externalMapEditor() );
1290  settings.endGroup();
1291 }
1292 
1293 void MainWindow::editSettings()
1294 {
1295  // Show the settings dialog.
1296  m_configDialog->show();
1297  m_configDialog->raise();
1298  m_configDialog->activateWindow();
1299 }
1300 
1301 void MainWindow::updateSettings()
1302 {
1303  mDebug() << Q_FUNC_INFO << "Updating Settings ...";
1304 
1305  // FIXME: Font doesn't get updated instantly.
1306  m_controlView->marbleWidget()->setDefaultFont( m_configDialog->mapFont() );
1307 
1308  m_controlView->marbleWidget()->setMapQualityForViewContext( m_configDialog->stillQuality(), Marble::Still );
1309  m_controlView->marbleWidget()->setMapQualityForViewContext( m_configDialog->animationQuality(), Marble::Animation );
1310 
1311  m_controlView->marbleWidget()->setDefaultAngleUnit( m_configDialog->angleUnit() );
1312  MarbleGlobal::getInstance()->locale()->setMeasurementSystem( m_configDialog->measurementSystem() );
1313 
1314  m_distance = m_controlView->marbleWidget()->distanceString();
1315  updateStatusBar();
1316 
1317  m_controlView->marbleWidget()->setAnimationsEnabled( m_configDialog->animateTargetVoyage() );
1318  m_controlView->marbleWidget()->inputHandler()->setInertialEarthRotationEnabled( m_configDialog->inertialEarthRotation() );
1319  if ( !m_configDialog->externalMapEditor().isEmpty() ) {
1320  m_controlView->setExternalMapEditor( m_configDialog->externalMapEditor() );
1321  }
1322 
1323  // Cache
1324  m_controlView->marbleModel()->setPersistentTileCacheLimit( m_configDialog->persistentTileCacheLimit() * 1024 );
1325  m_controlView->marbleWidget()->setVolatileTileCacheLimit( m_configDialog->volatileTileCacheLimit() * 1024 );
1326 
1327  /*
1328  m_controlView->marbleWidget()->setProxy( m_configDialog->proxyUrl(), m_configDialog->proxyPort(), m_configDialog->user(), m_configDialog->password() );
1329  */
1330 
1331  CloudSyncManager* cloudSyncManager = m_controlView->cloudSyncManager();
1332  cloudSyncManager->setOwncloudServer( m_configDialog->owncloudServer() );
1333  cloudSyncManager->setOwncloudUsername( m_configDialog->owncloudUsername() );
1334  cloudSyncManager->setOwncloudPassword( m_configDialog->owncloudPassword() );
1335  cloudSyncManager->setSyncEnabled( m_configDialog->syncEnabled() );
1336  cloudSyncManager->routeSyncManager()->setRouteSyncEnabled( m_configDialog->syncRoutes() );
1337  cloudSyncManager->bookmarkSyncManager()->setBookmarkSyncEnabled( m_configDialog->syncBookmarks() );
1338 
1339  m_controlView->marbleWidget()->update();
1340 }
1341 
1342 void MainWindow::showDownloadRegionDialog()
1343 {
1344  if ( !m_downloadRegionDialog ) {
1345  m_downloadRegionDialog = new DownloadRegionDialog( m_controlView->marbleWidget(), m_controlView );
1346  // it might be tempting to move the connects to DownloadRegionDialog's "accepted" and
1347  // "applied" signals, be aware that the "hidden" signal might be come before the "accepted"
1348  // signal, leading to a too early disconnect.
1349  connect( m_downloadRegionDialog, SIGNAL(accepted()), SLOT(downloadRegion()));
1350  connect( m_downloadRegionDialog, SIGNAL(applied()), SLOT(downloadRegion()));
1351  }
1352  // FIXME: get allowed range from current map theme
1353  m_downloadRegionDialog->setAllowedTileLevelRange( 0, 16 );
1354  m_downloadRegionDialog->setSelectionMethod( DownloadRegionDialog::VisibleRegionMethod );
1355  ViewportParams const * const viewport =
1356  m_controlView->marbleWidget()->viewport();
1357  m_downloadRegionDialog->setSpecifiedLatLonAltBox( viewport->viewLatLonAltBox() );
1358  m_downloadRegionDialog->setVisibleLatLonAltBox( viewport->viewLatLonAltBox() );
1359 
1360  m_downloadRegionDialog->show();
1361  m_downloadRegionDialog->raise();
1362  m_downloadRegionDialog->activateWindow();
1363 }
1364 
1365 void MainWindow::downloadRegion()
1366 {
1367  Q_ASSERT( m_downloadRegionDialog );
1368  QVector<TileCoordsPyramid> const pyramid = m_downloadRegionDialog->region();
1369  if ( !pyramid.isEmpty() ) {
1370  m_controlView->marbleWidget()->downloadRegion( pyramid );
1371  }
1372 }
1373 
1374 void MainWindow::printMapScreenShot()
1375 {
1376 #ifndef QT_NO_PRINTER
1377  QPrinter printer( QPrinter::HighResolution );
1378  QPointer<QPrintDialog> printDialog = new QPrintDialog( &printer, this );
1379  m_controlView->printMapScreenShot( printDialog );
1380  delete printDialog;
1381 #endif
1382 }
1383 
1384 void MainWindow::updateMapEditButtonVisibility( const QString &mapTheme )
1385 {
1386  Q_ASSERT( m_osmEditAction );
1387  m_osmEditAction->setVisible( mapTheme == "earth/openstreetmap/openstreetmap.dgml" );
1388 }
1389 
1390 void MainWindow::showMapWizard()
1391 {
1392  QPointer<MapWizard> mapWizard = new MapWizard();
1393  QSettings settings;
1394 
1395  settings.beginGroup( "MapWizard" );
1396  mapWizard->setWmsServers( settings.value( "wmsServers" ).toStringList() );
1397  mapWizard->setStaticUrlServers( settings.value( "staticUrlServers" ).toStringList() );
1398  settings.endGroup();
1399 
1400  mapWizard->exec();
1401 
1402  settings.beginGroup( "MapWizard" );
1403  settings.setValue( "wmsServers", mapWizard->wmsServers() );
1404  settings.setValue( "staticUrlServers", mapWizard->staticUrlServers() );
1405  settings.endGroup();
1406 
1407  mapWizard->deleteLater();
1408 }
1409 
1410 void MainWindow::showZoomLevel(bool show)
1411 {
1412  if ( show ) {
1413  m_zoomLabel->show();
1414  statusBar()->insertPermanentWidget( 2, m_zoomLabel );
1415  } else {
1416  statusBar()->removeWidget( m_zoomLabel );
1417  }
1418 }
1419 
1420 void MainWindow::fallBackToDefaultTheme()
1421 {
1422  m_controlView->marbleWidget()->setMapThemeId( m_controlView->defaultMapThemeId() );
1423 }
1424 
1425 #include "QtMainWindow.moc"
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:142
Marble::TimeControlWidget
Definition: TimeControlWidget.h:31
Marble::ControlView::printMapScreenShot
void printMapScreenShot(QPointer< QPrintDialog > dialog)
Definition: ControlView.cpp:164
GeoDataDocument.h
Marble::PositionTracking::positionProviderPlugin
PositionProviderPlugin positionProviderPlugin
Definition: PositionTracking.h:35
Marble::RenderPlugin::TopLevelRenderType
Definition: RenderPlugin.h:61
Marble::MarbleWidget::isSubSolarPointIconVisible
bool isSubSolarPointIconVisible
Definition: MarbleWidget.h:126
Marble::GeoDataPlacemark::lookAt
const GeoDataLookAt * lookAt() const
Returns GeoDataLookAt object if lookAt is setup earlier otherwise It will convert GeoDataCoordinates ...
Definition: GeoDataPlacemark.cpp:68
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
Marble::DownloadRegionDialog::VisibleRegionMethod
Definition: DownloadRegionDialog.h:36
Marble::MarbleLocale::languageCode
static QString languageCode()
Definition: MarbleLocale.cpp:50
Marble::ShowHomeLocation
Show home location on startup.
Definition: MarbleGlobal.h:141
Marble::PluginManager
The class that handles Marble's plugins.
Definition: PluginManager.h:45
Marble::MarbleModel::setPersistentTileCacheLimit
void setPersistentTileCacheLimit(quint64 kiloBytes)
Set the limit of the persistent (on hard disc) tile cache.
Definition: MarbleModel.cpp:537
Marble::CurrentLocationWidget::setTrackVisible
void setTrackVisible(bool visible)
Definition: CurrentLocationWidget.cpp:431
Marble::MarbleWidget::reloadMap
void reloadMap()
Re-download all visible tiles.
Definition: MarbleWidget.cpp:1334
Marble::QtMarbleConfigDialog::animateTargetVoyage
bool animateTargetVoyage() const
Definition: QtMarbleConfigDialog.cpp:458
tracking
Definition: position-tracking.qml:12
Marble::MarbleWidget::distanceString
QString distanceString() const
Return the current distance string.
Definition: MarbleWidget.cpp:1210
Marble::MainWindow::closeEvent
void closeEvent(QCloseEvent *event)
Definition: MobileMainWindow.cpp:284
Marble::RoutingProfilesModel::profiles
QList< RoutingProfile > profiles() const
Definition: RoutingProfilesModel.cpp:60
Marble::BookmarkManager::addBookmark
void addBookmark(GeoDataContainer *folder, const GeoDataPlacemark &bookmark)
add bookmark in a folder
Definition: BookmarkManager.cpp:127
PositionProviderPlugin.h
Marble::MarbleWidget::projection
int projection
Definition: MarbleWidget.h:112
Marble::MarbleWidget::setShowCityLights
void setShowCityLights(bool visible)
Set whether city lights instead of night shadow are visible.
Definition: MarbleWidget.cpp:936
Marble::GeoDataLookAt::longitude
qreal longitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the longitude of the GeoDataLookAt object use the unit parameter to switch between Radian a...
Definition: GeoDataLookAt.cpp:91
Marble::MarbleModel::clockTimezone
int clockTimezone() const
Definition: MarbleModel.cpp:640
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::PluginManager::positionProviderPlugins
QList< const PositionProviderPlugin * > positionProviderPlugins() const
Returns all available PositionProviderPlugins.
Definition: PluginManager.cpp:84
Marble::MarbleWidget::radius
int radius() const
Return the radius of the globe in pixels.
Definition: MarbleWidget.cpp:326
AbstractFloatItem.h
Marble::DownloadRegionDialog::setSpecifiedLatLonAltBox
void setSpecifiedLatLonAltBox(GeoDataLatLonAltBox const &)
Definition: DownloadRegionDialog.cpp:341
QWidget
Marble::MarbleWidget::setAnimationsEnabled
void setAnimationsEnabled(bool enabled)
Set whether travels to a point should get animated.
Definition: MarbleWidget.cpp:1146
Marble::MarbleModel::clock
MarbleClock * clock()
Definition: MarbleModel.cpp:467
QtMarbleConfigDialog.h
Marble::QtMarbleConfigDialog::owncloudServer
QString owncloudServer() const
Definition: QtMarbleConfigDialog.cpp:608
HttpDownloadManager.h
Marble::CloudSyncManager::setOwncloudUsername
void setOwncloudUsername(const QString &owncloudUsername)
Setter for ownCloud username.
Definition: CloudSyncManager.cpp:113
Marble::GeoDataFeature::isVisible
bool isVisible() const
Return whether this feature is visible or not.
Definition: GeoDataFeature.cpp:581
Marble::MarbleLocale::setMeasurementSystem
void setMeasurementSystem(QLocale::MeasurementSystem measurementSystem)
Definition: MarbleLocale.cpp:40
Marble::RoutingManager::setRouteColorAlternative
void setRouteColorAlternative(QColor color)
Set color for alternative route rendering.
Definition: RoutingManager.cpp:506
Marble::SunControlWidget
Definition: SunControlWidget.h:31
Marble::BookmarkManager::document
GeoDataDocument * document() const
Definition: BookmarkManager.cpp:149
Marble::MarbleWidget::setProjection
void setProjection(int projection)
Set the Projection used for the map.
Definition: MarbleWidget.cpp:702
Marble::ViewportParams::viewLatLonAltBox
const GeoDataLatLonAltBox & viewLatLonAltBox() const
Definition: ViewportParams.cpp:305
Marble::GeoDataContainer
A base class that can hold GeoDataFeatures.
Definition: GeoDataContainer.h:47
Marble::MarbleWidget::setDefaultAngleUnit
void setDefaultAngleUnit(AngleUnit angleUnit)
Definition: MarbleWidget.cpp:1156
Marble::GeoDataPlacemark::coordinate
GeoDataCoordinates coordinate(const QDateTime &dateTime=QDateTime(), bool *iconAtCoordinates=0) const
Return the coordinates of the placemark at time dateTime as a GeoDataCoordinates. ...
Definition: GeoDataPlacemark.cpp:78
Marble::BookmarkSyncManager::setBookmarkSyncEnabled
void setBookmarkSyncEnabled(bool enabled)
Setter for enabling/disabling bookmark synchronization.
Definition: BookmarkSyncManager.cpp:242
Marble::MarbleWidgetInputHandler::setInertialEarthRotationEnabled
void setInertialEarthRotationEnabled(bool enabled)
Definition: MarbleWidgetInputHandler.cpp:138
Marble::QtMarbleConfigDialog
Definition: QtMarbleConfigDialog.h:27
Marble::MarbleWidget::setVolatileTileCacheLimit
void setVolatileTileCacheLimit(quint64 kiloBytes)
Set the limit of the volatile (in RAM) tile cache.
Definition: MarbleWidget.cpp:1093
Marble::EditBookmarkDialog::setMarbleWidget
void setMarbleWidget(MarbleWidget *widget)
Definition: EditBookmarkDialog.cpp:144
Marble::MarbleModel::pluginManager
const PluginManager * pluginManager() const
Definition: MarbleModel.cpp:564
MarbleAboutDialog.h
Marble::RoutingManager::routeColorStandard
QColor routeColorStandard()
Get color for standard route rendering.
Definition: RoutingManager.cpp:491
Marble::CurrentLocationWidget::lastOpenPath
QString lastOpenPath() const
Definition: CurrentLocationWidget.cpp:421
Planet.h
MapThemeDownloadDialog.h
Marble::RoutingProfile
Definition: RoutingProfile.h:24
Marble::ControlView::cloudSyncManager
CloudSyncManager * cloudSyncManager()
Definition: ControlView.cpp:604
MarbleDebug.h
Marble::RoutingProfilesModel::setProfiles
void setProfiles(const QList< RoutingProfile > &profiles)
Definition: RoutingProfilesModel.cpp:53
Marble::CurrentLocationWidget::recenterMode
AutoNavigation::CenterMode recenterMode() const
Definition: CurrentLocationWidget.cpp:406
Marble::GeoDataLookAt::range
qreal range() const
Retrieve the distance (in meters) between the camera and the object looked at.
Definition: GeoDataLookAt.cpp:107
Marble::GeoDataCoordinates::Degree
Definition: GeoDataCoordinates.h:66
Marble::QtMarbleConfigDialog::owncloudPassword
QString owncloudPassword() const
Definition: QtMarbleConfigDialog.cpp:618
BookmarkManager.h
Marble::MarbleWidget::showCityLights
bool showCityLights
Definition: MarbleWidget.h:124
Marble::MainWindow::MainWindow
MainWindow(const QString &marbleDataPath=QString(), QWidget *parent=0)
Definition: KdeMainWindow.cpp:38
MapWizard.h
This file contains the header for MapWizard.
CurrentLocationWidget.h
Marble::QtMarbleConfigDialog::onStartup
int onStartup() const
Definition: QtMarbleConfigDialog.cpp:446
Marble::BookmarkManager::setShowBookmarks
void setShowBookmarks(bool visible)
Definition: BookmarkManager.cpp:159
Marble::MarbleWidget
A widget class that displays a view of the earth.
Definition: MarbleWidget.h:102
Marble::QtMarbleConfigDialog::setShowCloudSync
void setShowCloudSync(bool show)
Definition: QtMarbleConfigDialog.cpp:578
Marble::MarbleWidget::setSubSolarPointIconVisible
void setSubSolarPointIconVisible(bool visible)
Set whether the sun icon is shown in the sub solar point.
Definition: MarbleWidget.cpp:951
Marble::PositionProviderPlugin
The abstract class that provides position information.
Definition: PositionProviderPlugin.h:26
Marble::PositionTracking
Definition: PositionTracking.h:31
Marble::DownloadRegionDialog::setVisibleLatLonAltBox
void setVisibleLatLonAltBox(GeoDataLatLonAltBox const &)
Definition: DownloadRegionDialog.cpp:346
Marble::RenderPlugin::PanelRenderType
Definition: RenderPlugin.h:62
Marble::MarbleWidget::lookAt
GeoDataLookAt lookAt() const
Return the lookAt.
Definition: MarbleWidget.cpp:1344
Marble::RoutingManager::routeRequest
RouteRequest * routeRequest()
Returns the current route request.
Definition: RoutingManager.cpp:270
MarbleWidgetInputHandler.h
Marble::MarbleWidget::flyTo
void flyTo(const GeoDataLookAt &lookAt, FlyToMode mode=Automatic)
Change the camera position to the given position.
Definition: MarbleWidget.cpp:1310
Marble::MarbleWidget::setMapThemeId
void setMapThemeId(const QString &maptheme)
Set a new map theme.
Definition: MarbleWidget.cpp:865
Marble::ControlView::applicationVersion
static QString applicationVersion()
Returns the version of the Marble applications (which differs from the Marble library version)...
Definition: ControlView.cpp:102
Marble::DownloadRegionDialog::region
QVector< TileCoordsPyramid > region() const
Definition: DownloadRegionDialog.cpp:311
Marble::RouteSyncManager::setRouteSyncEnabled
void setRouteSyncEnabled(bool enabled)
Setter for enabling/disabling route synchronization.
Definition: RouteSyncManager.cpp:94
BookmarkManagerDialog.h
Marble::RoutingManager::setRouteColorStandard
void setRouteColorStandard(QColor color)
Set color for standard route rendering.
Definition: RoutingManager.cpp:486
Marble::RouteRequest::routingProfile
RoutingProfile routingProfile() const
Definition: RouteRequest.cpp:321
Marble::CloudSyncManager::bookmarkSyncManager
BookmarkSyncManager bookmarkSyncManager
Definition: CloudSyncManager.h:37
Marble::MarbleModel::addGeoDataFile
void addGeoDataFile(const QString &filename)
Handle file loading into the treeModel.
Definition: MarbleModel.cpp:655
RoutingManager.h
Marble::MarbleWidget::downloadRegion
void downloadRegion(QVector< TileCoordsPyramid > const &)
Definition: MarbleWidget.cpp:1339
Marble::MarbleWidget::zoom
int zoom
Definition: MarbleWidget.h:109
Marble::CurrentLocationWidget
Definition: CurrentLocationWidget.h:30
Marble::QtMarbleConfigDialog::persistentTileCacheLimit
int persistentTileCacheLimit() const
Definition: QtMarbleConfigDialog.cpp:475
Marble::MarbleWidget::showAtmosphere
bool showAtmosphere
Definition: MarbleWidget.h:127
Marble::MarbleWidget::centerLongitude
qreal centerLongitude() const
Return the longitude of the center point.
Definition: MarbleWidget.cpp:776
Marble::Animation
animated view (e.g. while rotating the globe)
Definition: MarbleGlobal.h:74
GoToDialog.h
Marble::CurrentLocationWidget::setAutoZoom
void setAutoZoom(bool activate)
Slot for Auto Zooming while navigating.
Definition: CurrentLocationWidget.cpp:341
Marble::Oxygen::aluminumGray4
QColor const aluminumGray4
Definition: MarbleColors.h:92
Marble::MarbleModel::routingManager
RoutingManager * routingManager()
Definition: MarbleModel.cpp:605
NewBookmarkFolderDialog.h
Marble::PositionProviderPlugin::setMarbleModel
void setMarbleModel(const MarbleModel *)
Definition: PositionProviderPlugin.cpp:42
Marble::GeoDataLookAt::setRange
void setRange(qreal range)
Change the distance (in meters) between the camera and the object looked at.
Definition: GeoDataLookAt.cpp:101
Marble::MarbleWidget::isLockedToSubSolarPoint
bool isLockedToSubSolarPoint
Definition: MarbleWidget.h:125
Marble::Oxygen::skyBlue1
QColor const skyBlue1
Definition: MarbleColors.h:59
Marble::ControlView::externalMapEditor
QString externalMapEditor() const
Returns the editor used to launch a map editor application.
Definition: ControlView.cpp:609
Marble::MarbleModel::home
void home(qreal &lon, qreal &lat, int &zoom) const
get the home point
Definition: MarbleModel.cpp:376
Marble::CloudSyncManager::routeSyncManager
RouteSyncManager routeSyncManager
Definition: CloudSyncManager.h:38
Marble::MarbleModel::clockSpeed
int clockSpeed() const
Definition: MarbleModel.cpp:625
Marble::RoutingManager::setRouteColorHighlighted
void setRouteColorHighlighted(QColor color)
Set color for highlighted route rendering.
Definition: RoutingManager.cpp:496
Marble::RoutingManager::profilesModel
RoutingProfilesModel * profilesModel()
Provides access to the model which contains all possible routing profiles.
Definition: RoutingManager.cpp:255
Marble::MarbleWidget::setLockToSubSolarPoint
void setLockToSubSolarPoint(bool visible)
Set the globe locked to the sub solar point.
Definition: MarbleWidget.cpp:943
MarbleDirs.h
Marble::GeoDataContainer::folderList
QVector< GeoDataFolder * > folderList() const
A convenience function that returns all folders in this container.
Definition: GeoDataContainer.cpp:90
Marble::RoutingManager::setLastSavePath
void setLastSavePath(const QString &path)
Set last directory the user saved a route to.
Definition: RoutingManager.cpp:476
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:442
Marble::Still
still image
Definition: MarbleGlobal.h:73
Marble::RouteRequest::setRoutingProfile
void setRoutingProfile(const RoutingProfile &profile)
Definition: RouteRequest.cpp:315
Marble::QtMarbleConfigDialog::inertialEarthRotation
bool inertialEarthRotation() const
Definition: QtMarbleConfigDialog.cpp:464
Marble::MarbleWidget::model
MarbleModel * model() const
Return the model that this view shows.
Definition: MarbleWidget.cpp:283
Marble::MapWizard
Definition: MapWizard.h:33
Marble::PluginManager::parsingRunnerPlugins
QList< const ParseRunnerPlugin * > parsingRunnerPlugins() const
Returns all parse runner plugins.
Definition: PluginManager.cpp:136
Marble::NOT_AVAILABLE
static const char NOT_AVAILABLE[]
Definition: MarbleGlobal.h:232
Marble::RoutingManager::lastSavePath
QString lastSavePath() const
Return last directory the user saved a route to.
Definition: RoutingManager.cpp:481
Marble::Oxygen::skyBlue4
QColor const skyBlue4
Definition: MarbleColors.h:56
Marble::RoutingManager::setShowGuidanceModeStartupWarning
void setShowGuidanceModeStartupWarning(bool show)
Set whether a warning message should be shown to the user before starting guidance mode...
Definition: RoutingManager.cpp:456
Marble::GeoDataLookAt::latitude
qreal latitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the latitude of the GeoDataLookAt object use the unit parameter to switch between Radian an...
Definition: GeoDataLookAt.cpp:80
Marble::CurrentLocationWidget::setLastSavePath
void setLastSavePath(const QString &path)
Definition: CurrentLocationWidget.cpp:442
Marble::MarbleGlobal::locale
MarbleLocale * locale() const
Definition: MarbleGlobal.cpp:43
Marble::RoutingManager::routeColorHighlighted
QColor routeColorHighlighted()
Get color for highlighted route rendering.
Definition: RoutingManager.cpp:501
MarbleLocale.h
Marble::DownloadRegionDialog::setAllowedTileLevelRange
void setAllowedTileLevelRange(int const minimumTileLevel, int const maximumTileLevel)
Definition: DownloadRegionDialog.cpp:261
Marble::RoutingManager::readSettings
void readSettings()
Restores a previously saved route request and route from disk, if any.
Definition: RoutingManager.cpp:373
Marble::ControlView::mapScreenShot
QPixmap mapScreenShot()
Definition: ControlView.h:72
Marble::MarbleModel::setClockDateTime
void setClockDateTime(const QDateTime &datetime)
Definition: MarbleModel.cpp:615
Marble::GeoDataFolder
Definition: GeoDataFolder.h:50
Marble::ParseRunnerPlugin::fileExtensions
virtual QStringList fileExtensions() const =0
Returns the file extensions associated with the file format.
GeoDataPlacemark.h
Marble::MarbleWidget::goHome
void goHome(FlyToMode mode=Automatic)
Center the view on the default start point with the default zoom.
Definition: MarbleWidget.cpp:845
Marble::BookmarkManagerDialog
Definition: BookmarkManagerDialog.h:26
Marble::MarbleAboutDialog
Definition: MarbleAboutDialog.h:30
Marble::QtMarbleConfigDialog::mapFont
QFont mapFont() const
Definition: QtMarbleConfigDialog.cpp:430
EditBookmarkDialog.h
Marble::PluginInterface::nameId
virtual QString nameId() const =0
Returns the unique name of the plugin.
Marble::ViewportParams
A public class that controls what is visible in the viewport of a Marble map.
Definition: ViewportParams.h:44
Marble::MarbleWidget::viewport
ViewportParams * viewport()
Definition: MarbleWidget.cpp:289
Marble::ParseRunnerPlugin::fileFormatDescription
virtual QString fileFormatDescription() const =0
Returns a short description of the supported file format.
QtMainWindow.h
Marble::RoutingProfilesModel::loadDefaultProfiles
void loadDefaultProfiles()
Definition: RoutingProfilesModel.cpp:126
Marble::CurrentLocationWidget::trackVisible
bool trackVisible() const
Definition: CurrentLocationWidget.cpp:416
Marble::CurrentLocationWidget::setLastOpenPath
void setLastOpenPath(const QString &path)
Definition: CurrentLocationWidget.cpp:437
ParseRunnerPlugin.h
Marble::RoutingManager
Delegates data retrieval and model updates to the appropriate routing provider.
Definition: RoutingManager.h:37
Marble::RoutingProfile::name
QString name
Definition: RoutingProfile.h:25
Marble::CurrentLocationWidget::autoZoom
bool autoZoom() const
Definition: CurrentLocationWidget.cpp:411
TimeControlWidget.h
Marble::MarbleWidget::centerOn
void centerOn(const qreal lon, const qreal lat, bool animated=false)
Center the view on a geographical point.
Definition: MarbleWidget.cpp:626
Marble::MarbleWidget::setShowSunShading
void setShowSunShading(bool visible)
Set whether the night shadow is visible.
Definition: MarbleWidget.cpp:929
Marble::ControlView::marbleWidget
MarbleWidget * marbleWidget() const
Definition: ControlView.h:59
MarbleClock.h
Marble::MarbleModel::clockDateTime
QDateTime clockDateTime() const
Definition: MarbleModel.cpp:620
Marble::CurrentLocationWidget::setRecenterMode
void setRecenterMode(int recenterMode)
Slot that decides whether recentering should be done.
Definition: CurrentLocationWidget.cpp:333
Marble::MarbleWidget::showSunShading
bool showSunShading
Definition: MarbleWidget.h:123
Marble::MarbleWidget::setRadius
void setRadius(int radius)
Set the radius of the globe in pixels.
Definition: MarbleWidget.cpp:331
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::ParseRunnerPlugin
A plugin for Marble to execute a parsing task.
Definition: ParseRunnerPlugin.h:27
Marble::GeoDataLookAt
Definition: GeoDataLookAt.h:23
Marble::RoutingProfile::pluginSettings
const QHash< QString, QHash< QString, QVariant > > & pluginSettings() const
Definition: RoutingProfile.cpp:33
Marble::CloudSyncManager::setSyncEnabled
void setSyncEnabled(bool enabled)
Setter for enabling/disabling synchronization.
Definition: CloudSyncManager.cpp:96
Marble::MarbleModel::setHome
void setHome(qreal lon, qreal lat, int zoom=1050)
Set the home point.
Definition: MarbleModel.cpp:382
Marble::RoutingManager::setLastOpenPath
void setLastOpenPath(const QString &path)
Set last directory the user opened a route from.
Definition: RoutingManager.cpp:466
Marble::QtMarbleConfigDialog::syncRoutes
bool syncRoutes() const
Definition: QtMarbleConfigDialog.cpp:603
Marble::MarbleWidget::setMapQualityForViewContext
void setMapQualityForViewContext(MapQuality quality, ViewContext viewContext)
Set the map quality for the specified view context.
Definition: MarbleWidget.cpp:1114
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:96
Marble::LastLocationVisited
Show last location visited on quit.
Definition: MarbleGlobal.h:142
Marble::QtMarbleConfigDialog::measurementSystem
QLocale::MeasurementSystem measurementSystem() const
Definition: QtMarbleConfigDialog.cpp:402
Marble::QtMarbleConfigDialog::externalMapEditor
QString externalMapEditor() const
Definition: QtMarbleConfigDialog.cpp:453
Marble::PositionTracking::writeSettings
void writeSettings()
Definition: PositionTracking.cpp:360
Marble::DownloadRegionDialog
Definition: DownloadRegionDialog.h:31
Marble::ControlView::setExternalMapEditor
void setExternalMapEditor(const QString &editor)
Change the editor to launch via.
Definition: ControlView.cpp:496
Marble::CloudSyncManager::setOwncloudServer
void setOwncloudServer(const QString &owncloudServer)
Setter for ownCloud server.
Definition: CloudSyncManager.cpp:104
Marble::RenderPlugin::OnlineRenderType
Definition: RenderPlugin.h:63
Marble::QtMarbleConfigDialog::readSettings
void readSettings()
Read settings and update interface.
Definition: QtMarbleConfigDialog.cpp:226
Marble::CloudSyncManager::setOwncloudPassword
void setOwncloudPassword(const QString &owncloudPassword)
Setter for ownCloud password.
Definition: CloudSyncManager.cpp:122
QMainWindow
RoutingWidget.h
Marble::GeoDataFeature::name
QString name() const
The name of the feature.
Definition: GeoDataFeature.cpp:480
PluginManager.h
Marble::GeoDataCoordinates::toString
QString toString() const
return a string representation of the coordinate this is a convenience function which uses the defaul...
Definition: GeoDataCoordinates.cpp:921
Marble::QtMarbleConfigDialog::owncloudUsername
QString owncloudUsername() const
Definition: QtMarbleConfigDialog.cpp:613
Marble::MapThemeDownloadDialog
Definition: MapThemeDownloadDialog.h:23
Marble::MarbleWidget::setShowAtmosphere
void setShowAtmosphere(bool visible)
Set whether the atmospheric glow is visible.
Definition: MarbleWidget.cpp:967
Marble::MarbleModel::bookmarkManager
BookmarkManager * bookmarkManager()
return instance of BookmarkManager
Definition: MarbleModel.cpp:206
DownloadRegionDialog.h
Marble::PositionTracking::readSettings
void readSettings()
Definition: PositionTracking.cpp:297
Marble::CurrentLocationWidget::lastSavePath
QString lastSavePath() const
Definition: CurrentLocationWidget.cpp:426
Marble::RoutingManager::writeSettings
void writeSettings() const
Saves the current route request and the current route to disk.
Definition: RoutingManager.cpp:326
Marble::Projection
Projection
This enum is used to choose the projection shown in the view.
Definition: MarbleGlobal.h:44
Marble::ControlView::setWorkOffline
void setWorkOffline(bool workOffline)
Definition: ControlView.cpp:596
Marble::MarbleWidget::mapThemeId
QString mapThemeId
Definition: MarbleWidget.h:111
RouteRequest.h
Marble::PositionProviderPlugin::newInstance
virtual PositionProviderPlugin * newInstance() const =0
Create a new PositionProvider Plugin and return it.
Marble::MarbleWidget::setDistance
void setDistance(qreal distance)
Set the distance of the observer to the globe in km.
Definition: MarbleWidget.cpp:1197
Marble::MarbleWidget::setShowClouds
void setShowClouds(bool visible)
Set whether the cloud cover is visible.
Definition: MarbleWidget.cpp:922
Marble::PositionTracking::setPositionProviderPlugin
void setPositionProviderPlugin(PositionProviderPlugin *plugin)
Change the position provider to use.
Definition: PositionTracking.cpp:183
Marble::MarbleModel::downloadManager
HttpDownloadManager * downloadManager()
Return the downloadmanager to load missing tiles.
Definition: MarbleModel.cpp:396
Marble::MarbleWidget::setDefaultFont
void setDefaultFont(const QFont &font)
Definition: MarbleWidget.cpp:1166
Marble::EditBookmarkDialog
Definition: EditBookmarkDialog.h:32
Marble::RenderPlugin::ThemeRenderType
Definition: RenderPlugin.h:64
Marble::MainWindow::marbleWidget
MarbleWidget * marbleWidget() const
Definition: KdeMainWindow.cpp:79
Marble::QtMarbleConfigDialog::syncEnabled
bool syncEnabled() const
Definition: QtMarbleConfigDialog.cpp:588
PositionTracking.h
Marble::GeoDataLookAt::coordinates
GeoDataCoordinates coordinates() const
retrieve the lat/lon/alt triple as a GeoDataCoordinates object
Definition: GeoDataLookAt.cpp:96
Marble::ControlView::currentLocationWidget
CurrentLocationWidget * currentLocationWidget()
Definition: ControlView.cpp:591
Marble::QtMarbleConfigDialog::writeSettings
void writeSettings()
Write settings to disk.
Definition: QtMarbleConfigDialog.cpp:307
AbstractDataPlugin.h
Marble::Spherical
Spherical projection.
Definition: MarbleGlobal.h:45
Marble::MarbleWidget::inputHandler
MarbleWidgetInputHandler * inputHandler() const
Returns the current input handler.
Definition: MarbleWidget.cpp:321
MapViewWidget.h
Marble::ControlView
Definition: ControlView.h:45
Marble::ControlView::marbleModel
MarbleModel * marbleModel()
Definition: ControlView.h:60
Marble::RoutingManager::routeColorAlternative
QColor routeColorAlternative()
Get color for alternative route rendering.
Definition: RoutingManager.cpp:511
Marble::CloudSyncManager
Definition: CloudSyncManager.h:25
Marble::QtMarbleConfigDialog::syncBookmarks
bool syncBookmarks() const
Definition: QtMarbleConfigDialog.cpp:598
Marble::QtMarbleConfigDialog::angleUnit
Marble::AngleUnit angleUnit() const
Definition: QtMarbleConfigDialog.cpp:413
Marble::RoutingManager::lastOpenPath
QString lastOpenPath() const
Return last directory the user opened a route from.
Definition: RoutingManager.cpp:471
Marble::QtMarbleConfigDialog::volatileTileCacheLimit
int volatileTileCacheLimit() const
Definition: QtMarbleConfigDialog.cpp:469
Marble::GeoDataPlacemark
a class representing a point of interest on the map
Definition: GeoDataPlacemark.h:54
CloudSyncManager.h
Marble::QtMarbleConfigDialog::animationQuality
Marble::MapQuality animationQuality() const
Definition: QtMarbleConfigDialog.cpp:424
Marble::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:31
Marble::MarbleWidget::floatItems
QList< AbstractFloatItem * > floatItems() const
Returns a list of all FloatItems on the widget.
Definition: MarbleWidget.cpp:1290
Marble::RoutingManager::showGuidanceModeStartupWarning
bool showGuidanceModeStartupWarning() const
Returns true (default) if a warning is shown to the user when starting guidance mode.
Definition: RoutingManager.cpp:461
Marble::MarbleWidget::renderPlugins
QList< RenderPlugin * > renderPlugins() const
Returns a list of all RenderPlugins on the widget, this includes float items.
Definition: MarbleWidget.cpp:1251
BookmarkSyncManager.h
RoutingProfilesModel.h
SunControlWidget.h
Marble::MarbleModel::setClockSpeed
void setClockSpeed(int speed)
Definition: MarbleModel.cpp:630
Marble::QtMarbleConfigDialog::stillQuality
Marble::MapQuality stillQuality() const
Definition: QtMarbleConfigDialog.cpp:418
Marble::GeoDataLookAt::setCoordinates
void setCoordinates(const GeoDataCoordinates &coordinates)
set the GeoDataCoordinates object
Definition: GeoDataLookAt.cpp:53
Marble::HttpDownloadManager
This class manages scheduled downloads.
Definition: HttpDownloadManager.h:44
Marble::MarbleWidget::centerLatitude
qreal centerLatitude() const
Return the latitude of the center point.
Definition: MarbleWidget.cpp:771
Marble::GeoDataContainer::placemarkList
QVector< GeoDataPlacemark * > placemarkList() const
A convenience function that returns all placemarks in this container.
Definition: GeoDataContainer.cpp:107
Marble::DownloadRegionDialog::setSelectionMethod
void setSelectionMethod(SelectionMethod const )
Definition: DownloadRegionDialog.cpp:274
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