• 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-kde
marble_part.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 2007 Tobias Koenig <tokoe@kde.org>
9 // Copyright 2008 Inge Wallin <inge@lysator.liu.se>
10 // Copyright 2009 Jens-Michael Hoffmann <jensmh@gmx.de>
11 // Copyright 2010 Harshit Jain <hjain.itbhu@gmail.com>
12 //
13 
14 // Own
15 #include "marble_part.h"
16 
17 // Qt
18 #include <QDir>
19 #include <QPointer>
20 #include <QStringList>
21 #include <QTimer>
22 #include <QClipboard>
23 #include <QLabel>
24 #include <QFontMetrics>
25 #include <QPrinter>
26 #include <QPrintDialog>
27 #include <QProgressBar>
28 #include <QStandardItemModel>
29 #include <QShortcut>
30 #include <QNetworkProxy>
31 
32 // KDE
33 #include <kaboutdata.h>
34 #include <kaction.h>
35 #include <kactioncollection.h>
36 #include <kapplication.h>
37 #include <kcomponentdata.h>
38 #include <kconfigdialog.h>
39 #include <kdeversion.h>
40 #include <kfiledialog.h>
41 #include <kicon.h>
42 #include <klocale.h>
43 #include <kmenu.h>
44 #include <kmessagebox.h>
45 #include <kpluginfactory.h>
46 #include <kparts/statusbarextension.h>
47 #include <kstandardaction.h>
48 #include <kstatusbar.h>
49 #include <ktoggleaction.h>
50 #include <ktogglefullscreenaction.h>
51 #include <knewstuff3/knewstuffaction.h>
52 #include <knewstuff3/downloaddialog.h>
53 #include <knewstuff3/uploaddialog.h>
54 #include <KDE/KStandardDirs>
55 #include <kdeprintdialog.h>
56 #include <KDE/KToolBar>
57 
58 // Marble library classes
59 #include "AbstractFloatItem.h"
60 #include "AbstractDataPlugin.h"
61 #include "EditBookmarkDialog.h"
62 #include "BookmarkManager.h"
63 #include "BookmarkManagerDialog.h"
64 #include "DialogConfigurationInterface.h"
65 #include "DownloadRegionDialog.h"
66 #include "GeoDataCoordinates.h"
67 #include "GeoDataFolder.h"
68 #include "GeoDataLatLonAltBox.h"
69 #include "GeoDataLookAt.h"
70 #include "GeoDataPlacemark.h"
71 #include "HttpDownloadManager.h"
72 #include "MarbleDirs.h"
73 #include "MarbleDebug.h"
74 #include "MarbleLocale.h"
75 #include "MarbleModel.h"
76 #include "MarblePluginSettingsWidget.h"
77 #include "MapWizard.h"
78 #include "NewBookmarkFolderDialog.h"
79 #include "RenderPluginModel.h"
80 #include "routing/RoutingManager.h"
81 #include "routing/RoutingProfilesModel.h"
82 #include "routing/RoutingProfilesWidget.h"
83 #include "routing/RouteRequest.h"
84 #include "SunControlWidget.h"
85 #include "TimeControlWidget.h"
86 #include "TileCoordsPyramid.h"
87 #include "ViewportParams.h"
88 #include "MarbleClock.h"
89 #include "ParseRunnerPlugin.h"
90 #include "PositionTracking.h"
91 #include "PositionProviderPlugin.h"
92 #include "PluginManager.h"
93 #include "SearchInputWidget.h"
94 #include "MarbleWidgetInputHandler.h"
95 #include "Planet.h"
96 #include "MapThemeDownloadDialog.h"
97 #include "cloudsync/BookmarkSyncManager.h"
98 
99 // Marble non-library classes
100 #include "ControlView.h"
101 #include "settings.h"
102 
103 using namespace Marble;
104 
105 #include "ui_MarbleCacheSettingsWidget.h"
106 #include "ui_MarbleViewSettingsWidget.h"
107 #include "ui_MarbleNavigationSettingsWidget.h"
108 #include "ui_MarbleTimeSettingsWidget.h"
109 #include "ui_MarbleCloudSyncSettingsWidget.h"
110 
111 namespace Marble
112 {
113 
114 namespace
115 {
116  const char* POSITION_STRING = I18N_NOOP( "Position: %1" );
117  const char* DISTANCE_STRING = I18N_NOOP( "Altitude: %1" );
118  const char* TILEZOOMLEVEL_STRING = I18N_NOOP( "Tile Zoom Level: %1" );
119  const char* DATETIME_STRING = I18N_NOOP( "Time: %1" );
120 }
121 
122 K_PLUGIN_FACTORY(MarblePartFactory, registerPlugin<MarblePart>();)
123 K_EXPORT_PLUGIN(MarblePartFactory("marble"))
124 
125 MarblePart::MarblePart( QWidget *parentWidget, QObject *parent, const QVariantList &arguments )
126  : KParts::ReadOnlyPart( parent ),
127  m_sunControlDialog( 0 ),
128  m_timeControlDialog( 0 ),
129  m_downloadRegionDialog( 0 ),
130  m_externalMapEditorAction( 0 ),
131  m_recentFilesAction( 0 ),
132  m_configDialog( 0 ),
133  m_position( i18n( NOT_AVAILABLE ) ),
134  m_tileZoomLevel( i18n( NOT_AVAILABLE ) ),
135  m_positionLabel( 0 ),
136  m_distanceLabel( 0 )
137 {
138  // only set marble data path when a path was given
139  if ( arguments.count() != 0 && !arguments.first().toString().isEmpty() )
140  MarbleDirs::setMarbleDataPath( arguments.first().toString() );
141 
142  // Setting measure system to provide nice standards for all unit questions.
143  // This has to happen before any initialization so plugins (for example) can
144  // use it during initialization.
145  MarbleLocale *marbleLocale = MarbleGlobal::getInstance()->locale();
146  KLocale *kLocale = KGlobal::locale();
147  if ( kLocale->measureSystem() == KLocale::Metric ) {
148  marbleLocale->setMeasurementSystem( QLocale::MetricSystem );
149  }
150  else {
151  marbleLocale->setMeasurementSystem( QLocale::ImperialSystem );
152  }
153 
154  migrateNewstuffConfigFiles();
155 
156  m_externalEditorMapping[0] = "";
157  m_externalEditorMapping[1] = "potlatch";
158  m_externalEditorMapping[2] = "josm";
159  m_externalEditorMapping[3] = "merkaartor";
160 
161  m_controlView = new ControlView( parentWidget );
162 
163  setWidget( m_controlView );
164 
165  setupActions();
166 
167  setXMLFile( "marble_part.rc" );
168 
169  m_statusBarExtension = new KParts::StatusBarExtension( this );
170  m_statusBarExtension->statusBar()->setUpdatesEnabled( false );
171 
172  // Load bookmark file. If it does not exist, a default one will be used.
173  m_controlView->marbleModel()->bookmarkManager()->loadFile( "bookmarks/bookmarks.kml" );
174 
175  initializeCustomTimezone();
176 
177  setupStatusBar();
178  readSettings();
179  m_statusBarExtension->statusBar()->setUpdatesEnabled( true );
180 
181  // Show startup location
182  switch ( MarbleSettings::onStartup() ) {
183  case LastLocationVisited: {
184  GeoDataLookAt target;
185  target.setLongitude( MarbleSettings::quitLongitude() );
186  target.setLatitude( MarbleSettings::quitLatitude() );
187  target.setRange( MarbleSettings::quitRange() );
188  m_controlView->marbleWidget()->flyTo( target, Instant );
189  }
190  break;
191  case ShowHomeLocation:
192  m_controlView->marbleWidget()->goHome( Instant );
193  break;
194  }
195 
196  connect( m_controlView, SIGNAL(showUploadDialog()), this, SLOT(showUploadNewStuffDialog()) );
197  connect( m_controlView, SIGNAL(showMapWizard()), this, SLOT(showMapWizard()) );
198  connect( m_controlView, SIGNAL(mapThemeDeleted()), this, SLOT(fallBackToDefaultTheme()) );
199 }
200 
201 MarblePart::~MarblePart()
202 {
203  writeSettings();
204 
205  // Check whether this delete is really needed.
206  delete m_configDialog;
207 }
208 
209 ControlView* MarblePart::controlView() const
210 {
211  return m_controlView;
212 }
213 
214 KAboutData *MarblePart::createAboutData()
215 {
216  return new KAboutData( I18N_NOOP( "marble_part" ), 0,
217  ki18n( "A Virtual Globe" ),
218  ControlView::applicationVersion().toLatin1() );
219 }
220 
221 bool MarblePart::openUrl( const KUrl &url )
222 {
223  QFileInfo fileInfo( url.toLocalFile() );
224  if ( fileInfo.isReadable() ) {
225  m_controlView->marbleModel()->addGeoDataFile( url.toLocalFile() );
226  m_recentFilesAction->addUrl( url );
227  return true;
228  }
229 
230  KMessageBox::error( widget(),
231  tr( "Sorry, unable to open '%1'. The file is not accessible." ).arg( fileInfo.fileName() ),
232  tr( "File not accessible" ) );
233  return false;
234 }
235 
236 bool MarblePart::openFile()
237 {
238  const PluginManager *const pluginManager = m_controlView->marbleModel()->pluginManager();
239 
240  QStringList allFileExtensions;
241  QStringList filters;
242  foreach ( const ParseRunnerPlugin *plugin, pluginManager->parsingRunnerPlugins() ) {
243  if ( plugin->nameId() == "Cache" )
244  continue;
245 
246  const QStringList fileExtensions = plugin->fileExtensions().replaceInStrings( QRegExp( "^" ), "*." );
247  const QString filter = QString( "%1|%2" ).arg( fileExtensions.join( " " ) ).arg( plugin->fileFormatDescription() );
248  filters << filter;
249 
250  allFileExtensions << fileExtensions;
251  }
252 
253  allFileExtensions.sort();
254  const QString allFileTypes = QString( "%1|%2" ).arg( allFileExtensions.join( " " ) ).arg( i18n( "All Supported Files" ) );
255 
256  filters.sort();
257  filters.prepend( allFileTypes );
258  const QString filter = filters.join( "\n" );
259 
260  QStringList fileNames = KFileDialog::getOpenFileNames( m_lastFileOpenPath, filter,
261  widget(), i18n("Open File")
262  );
263 
264  if ( !fileNames.isEmpty() ) {
265  const QString firstFile = fileNames.first();
266  m_lastFileOpenPath = KUrl::fromLocalFile( QFileInfo( firstFile ).absolutePath() );
267  }
268 
269  foreach( const QString &fileName, fileNames ) {
270  openUrl( fileName );
271  }
272 
273  return true;
274 }
275 
276 void MarblePart::exportMapScreenShot()
277 {
278  QString fileName = KFileDialog::getSaveFileName( QDir::homePath(),
279  i18n( "Images *.jpg *.png" ),
280  widget(), i18n("Export Map") );
281 
282  if ( !fileName.isEmpty() ) {
283  // Take the case into account where no file format is indicated
284  const char * format = 0;
285  if ( !fileName.endsWith(QLatin1String( "png" ), Qt::CaseInsensitive)
286  && !fileName.endsWith(QLatin1String( "jpg" ), Qt::CaseInsensitive) )
287  {
288  format = "JPG";
289  }
290 
291  QPixmap mapPixmap = m_controlView->mapScreenShot();
292  bool success = mapPixmap.save( fileName, format );
293  if ( !success ) {
294  KMessageBox::error( widget(), i18nc( "Application name", "Marble" ),
295  i18n( "An error occurred while trying to save the file.\n" ),
296  KMessageBox::Notify );
297  }
298  }
299 }
300 
301 void MarblePart::setShowBookmarks( bool show )
302 {
303  m_controlView->marbleModel()->bookmarkManager()->setShowBookmarks( show );
304 
305  m_toggleBookmarkDisplayAction->setChecked( show ); // Sync state with the GUI
306 }
307 
308 void MarblePart::setShowClouds( bool isChecked )
309 {
310  m_controlView->marbleWidget()->setShowClouds( isChecked );
311 
312  m_showCloudsAction->setChecked( isChecked ); // Sync state with the GUI
313 }
314 
315 void MarblePart::showPositionLabel( bool isChecked )
316 {
317  m_positionLabel->setVisible( isChecked );
318 }
319 
320 void MarblePart::showAltitudeLabel( bool isChecked )
321 {
322  m_distanceLabel->setVisible( isChecked );
323 }
324 
325 void MarblePart::showTileZoomLevelLabel( bool isChecked )
326 {
327  m_tileZoomLevelLabel->setVisible( isChecked );
328 }
329 
330 void MarblePart::showDateTimeLabel( bool isChecked )
331 {
332  m_clockLabel->setVisible( isChecked );
333 }
334 
335 void MarblePart::showDownloadProgressBar( bool isChecked )
336 {
337  MarbleSettings::setShowDownloadProgressBar( isChecked );
338  // Change visibility only if there is a download happening
339  m_downloadProgressBar->setVisible( isChecked && m_downloadProgressBar->value() >= 0 );
340 }
341 
342 void MarblePart::showFullScreen( bool isChecked )
343 {
344  if ( KApplication::activeWindow() )
345  KToggleFullScreenAction::setFullScreen( KApplication::activeWindow(), isChecked );
346 
347  m_fullScreenAct->setChecked( isChecked ); // Sync state with the GUI
348 }
349 
350 void MarblePart::showStatusBar( bool isChecked )
351 {
352  if ( !m_statusBarExtension->statusBar() )
353  return;
354 
355  m_statusBarExtension->statusBar()->setVisible( isChecked );
356 }
357 
358 void MarblePart::controlSun()
359 {
360  if ( !m_sunControlDialog ) {
361  m_sunControlDialog = new SunControlWidget( m_controlView->marbleWidget(), m_controlView );
362  connect( m_sunControlDialog, SIGNAL(showSun(bool)),
363  this, SLOT (showSun(bool)) );
364  connect( m_sunControlDialog, SIGNAL(showSun(bool)),
365  m_showShadow, SLOT (setChecked(bool)) );
366  connect( m_sunControlDialog, SIGNAL(isLockedToSubSolarPoint(bool)),
367  m_lockToSubSolarPoint, SLOT (setChecked(bool)) );
368  connect( m_sunControlDialog, SIGNAL(isSubSolarPointIconVisible(bool)),
369  m_setSubSolarPointIconVisible, SLOT (setChecked(bool)) );
370  }
371 
372  m_sunControlDialog->show();
373  m_sunControlDialog->raise();
374  m_sunControlDialog->activateWindow();
375 }
376 
377 void MarblePart::controlTime()
378 {
379  if ( !m_timeControlDialog )
380  {
381  m_timeControlDialog = new TimeControlWidget( m_controlView->marbleModel()->clock() );
382  }
383  m_timeControlDialog->show();
384  m_timeControlDialog->raise();
385  m_timeControlDialog->activateWindow();
386 }
387 
388 
389 void MarblePart::showSun( bool active )
390 {
391  m_controlView->marbleWidget()->setShowSunShading( active );
392  m_sunControlDialog->setSunShading( active );
393 }
394 
395 void MarblePart::lockToSubSolarPoint( bool lock )
396 {
397  m_controlView->marbleWidget()->setLockToSubSolarPoint( lock );
398 }
399 
400 void MarblePart::setSubSolarPointIconVisible( bool show )
401 {
402  m_controlView->marbleWidget()->setSubSolarPointIconVisible( show );
403 }
404 
405 void MarblePart::workOffline( bool offline )
406 {
407  m_controlView->setWorkOffline( offline );
408  m_newStuffAction->setEnabled( !offline );
409  m_downloadRegionAction->setEnabled( !offline );
410 }
411 
412 void MarblePart::copyMap()
413 {
414  QPixmap mapPixmap = m_controlView->mapScreenShot();
415  QClipboard *clipboard = KApplication::clipboard();
416 
417  clipboard->setPixmap( mapPixmap );
418 }
419 
420 void MarblePart::copyCoordinates()
421 {
422  qreal lon = m_controlView->marbleWidget()->centerLongitude();
423  qreal lat = m_controlView->marbleWidget()->centerLatitude();
424 
425  QString positionString = GeoDataCoordinates( lon, lat, 0.0, GeoDataCoordinates::Degree ).toString();
426  QClipboard *clipboard = QApplication::clipboard();
427 
428  clipboard->setText( positionString );
429 }
430 
431 void MarblePart::readSettings()
432 {
433  kDebug() << "Start: MarblePart::readSettings()";
434  // Set home position
435  m_controlView->marbleModel()->setHome( MarbleSettings::homeLongitude(),
436  MarbleSettings::homeLatitude(),
437  MarbleSettings::homeZoom() );
438 
439  // Map theme and projection
440  QString mapTheme = MarbleSettings::mapTheme();
441  if ( mapTheme.isEmpty() ) {
442  mapTheme = m_controlView->defaultMapThemeId();
443  }
444  m_controlView->marbleWidget()->setMapThemeId( mapTheme );
445  m_controlView->marbleWidget()->setProjection( (Projection) MarbleSettings::projection() );
446 
447  m_controlView->marbleWidget()->setShowClouds( MarbleSettings::showClouds() );
448  m_showCloudsAction->setChecked( MarbleSettings::showClouds() );
449 
450  workOffline( MarbleSettings::workOffline() );
451  m_workOfflineAction->setChecked( MarbleSettings::workOffline() );
452 
453  m_lockFloatItemsAct->setChecked(MarbleSettings::lockFloatItemPositions());
454  lockFloatItemPosition(MarbleSettings::lockFloatItemPositions());
455 
456  setShowBookmarks( MarbleSettings::showBookmarks() );
457 
458  // Sun
459  m_controlView->marbleWidget()->setShowSunShading( MarbleSettings::showSun() );
460  m_showShadow->setChecked( MarbleSettings::showSun() );
461  m_controlView->marbleWidget()->setShowCityLights( MarbleSettings::showCitylights() );
462  m_controlView->marbleWidget()->setSubSolarPointIconVisible( MarbleSettings::subSolarPointIconVisible() );
463  m_controlView->marbleWidget()->setLockToSubSolarPoint( MarbleSettings::lockToSubSolarPoint() );
464  m_setSubSolarPointIconVisible->setChecked( MarbleSettings::subSolarPointIconVisible() );
465  m_lockToSubSolarPoint->setChecked( MarbleSettings::lockToSubSolarPoint() );
466 
467  // View
468  m_initialGraphicsSystem = (GraphicsSystem) MarbleSettings::graphicsSystem();
469  m_previousGraphicsSystem = m_initialGraphicsSystem;
470 
471  m_lastFileOpenPath = KUrl::fromLocalFile( MarbleSettings::lastFileOpenDir() );
472 
473  // Load previous route settings
474  m_controlView->marbleModel()->routingManager()->readSettings();
475  bool const startupWarning = MarbleSettings::showGuidanceModeStartupWarning();
476  m_controlView->marbleModel()->routingManager()->setShowGuidanceModeStartupWarning( startupWarning );
477 
478  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
479  if ( sharedConfig->hasGroup( "Routing Profiles" ) ) {
480  QList<RoutingProfile> profiles;
481  KConfigGroup profilesGroup = sharedConfig->group( "Routing Profiles" );
482  int numProfiles = profilesGroup.readEntry( "Num", 0 );
483  for ( int i = 0; i < numProfiles; ++i ) {
484  KConfigGroup profileGroup = profilesGroup.group( QString( "Profile %0" ).arg(i) );
485  QString name = profileGroup.readEntry( "Name", tr( "Unnamed" ) );
486  RoutingProfile profile( name );
487  foreach ( const QString& pluginName, profileGroup.groupList() ) {
488  KConfigGroup pluginGroup = profileGroup.group( pluginName );
489  profile.pluginSettings().insert( pluginName, QHash<QString, QVariant>() );
490  foreach ( const QString& key, pluginGroup.keyList() ) {
491  if ( key != "Enabled" ) {
492  profile.pluginSettings()[ pluginName ].insert( key, pluginGroup.readEntry( key ) );
493  }
494  }
495  }
496  profiles << profile;
497  }
498  m_controlView->marbleModel()->routingManager()->profilesModel()->setProfiles( profiles );
499  } else {
500  m_controlView->marbleModel()->routingManager()->profilesModel()->loadDefaultProfiles();
501  }
502  int const profileIndex = MarbleSettings::currentRoutingProfile();
503  if ( profileIndex >= 0 && profileIndex < m_controlView->marbleModel()->routingManager()->profilesModel()->rowCount() ) {
504  RoutingProfile profile = m_controlView->marbleModel()->routingManager()->profilesModel()->profiles().at( profileIndex );
505  m_controlView->marbleModel()->routingManager()->routeRequest()->setRoutingProfile( profile );
506  }
507 
508  QString positionProvider = MarbleSettings::activePositionTrackingPlugin();
509  if ( !positionProvider.isEmpty() ) {
510  PositionTracking* tracking = m_controlView->marbleModel()->positionTracking();
511  const PluginManager* pluginManager = m_controlView->marbleModel()->pluginManager();
512  foreach( const PositionProviderPlugin* plugin, pluginManager->positionProviderPlugins() ) {
513  if ( plugin->nameId() == positionProvider ) {
514  PositionProviderPlugin* instance = plugin->newInstance();
515  instance->setMarbleModel( m_controlView->marbleModel() );
516  tracking->setPositionProviderPlugin( instance );
517  break;
518  }
519  }
520  }
521 
522  readStatusBarSettings();
523 
524  updateSettings();
525 
526  // Time
527  if( MarbleSettings::systemTime() == true )
528  {
529  /* nothing to do */
530  }
531  else if( MarbleSettings::lastSessionTime() == true )
532  {
533  m_controlView->marbleModel()->setClockDateTime( MarbleSettings::dateTime() );
534  m_controlView->marbleModel()->setClockSpeed( MarbleSettings::speedSlider() );
535  }
536 
537  readPluginSettings();
538 
539  m_controlView->setExternalMapEditor( m_externalEditorMapping[MarbleSettings::externalMapEditor()] );
540 
541  CloudSyncManager* cloudSyncManager = m_controlView->cloudSyncManager();
542  cloudSyncManager->setOwncloudServer( MarbleSettings::owncloudServer() );
543  cloudSyncManager->setOwncloudUsername( MarbleSettings::owncloudUsername() );
544  cloudSyncManager->setOwncloudPassword( MarbleSettings::owncloudPassword() );
545  cloudSyncManager->setSyncEnabled( MarbleSettings::enableSync() );
546  cloudSyncManager->routeSyncManager()->setRouteSyncEnabled( MarbleSettings::syncRoutes() );
547  cloudSyncManager->bookmarkSyncManager()->setBookmarkSyncEnabled( MarbleSettings::syncBookmarks() );
548 }
549 
550 void MarblePart::readStatusBarSettings()
551 {
552  const bool showPos = MarbleSettings::showPositionLabel();
553  m_showPositionAction->setChecked( showPos );
554  showPositionLabel( showPos );
555 
556  const bool showAlt = MarbleSettings::showAltitudeLabel();
557  m_showAltitudeAction->setChecked( showAlt );
558  showAltitudeLabel( showAlt );
559 
560  const bool showTileZoom = MarbleSettings::showTileZoomLevelLabel();
561  m_showTileZoomLevelAction->setChecked( showTileZoom );
562  showTileZoomLevelLabel( showTileZoom );
563 
564  const bool showDateTime = MarbleSettings::showDateTimeLabel();
565  m_showDateTimeAction->setChecked( showDateTime );
566  showDateTimeLabel( showDateTime );
567 
568  const bool showProgress = MarbleSettings::showDownloadProgressBar();
569  m_showDownloadProgressAction->setChecked( showProgress );
570  showDownloadProgressBar( showProgress );
571 }
572 
573 void MarblePart::writeSettings()
574 {
575  // Get the 'quit' values from the widget and store them in the settings.
576  qreal quitLon = m_controlView->marbleWidget()->lookAt().longitude();
577  qreal quitLat = m_controlView->marbleWidget()->lookAt().latitude();
578  qreal quitRange = m_controlView->marbleWidget()->lookAt().range();
579 
580  MarbleSettings::setQuitLongitude( quitLon );
581  MarbleSettings::setQuitLatitude( quitLat );
582  MarbleSettings::setQuitRange( quitRange );
583 
584  // Get the 'home' values from the widget and store them in the settings.
585  qreal homeLon = 0;
586  qreal homeLat = 0;
587  int homeZoom = 0;
588 
589  m_controlView->marbleModel()->home( homeLon, homeLat, homeZoom );
590  MarbleSettings::setHomeLongitude( homeLon );
591  MarbleSettings::setHomeLatitude( homeLat );
592  MarbleSettings::setHomeZoom( homeZoom );
593 
594  // Set default font
595  MarbleSettings::setMapFont( m_controlView->marbleWidget()->defaultFont() );
596 
597  // Get whether animations to the target are enabled
598  MarbleSettings::setAnimateTargetVoyage( m_controlView->marbleWidget()->animationsEnabled() );
599 
600  // Map theme and projection
601  MarbleSettings::setMapTheme( m_controlView->marbleWidget()->mapThemeId() );
602  MarbleSettings::setProjection( m_controlView->marbleWidget()->projection() );
603 
604  MarbleSettings::setShowClouds( m_controlView->marbleWidget()->showClouds() );
605 
606  MarbleSettings::setWorkOffline( m_workOfflineAction->isChecked() );
607 
608  MarbleSettings::setStillQuality( m_controlView->marbleWidget()->mapQuality( Still ) );
609  MarbleSettings::setAnimationQuality( m_controlView->marbleWidget()->
610  mapQuality( Animation ) );
611 
612  MarbleSettings::setShowBookmarks( m_controlView->marbleModel()->bookmarkManager()->showBookmarks() );
613 
614  // FIXME: Hopefully Qt will have a getter for this one in the future ...
615  GraphicsSystem graphicsSystem = (GraphicsSystem) MarbleSettings::graphicsSystem();
616  MarbleSettings::setGraphicsSystem( graphicsSystem );
617 
618  MarbleSettings::setLastFileOpenDir( m_lastFileOpenPath.toLocalFile() );
619 
620  MarbleSettings::setDistanceUnit( MarbleGlobal::getInstance()->locale()->measurementSystem() );
621  MarbleSettings::setAngleUnit( m_controlView->marbleWidget()->defaultAngleUnit() );
622 
623  // Sun
624  MarbleSettings::setShowSun( m_controlView->marbleWidget()->showSunShading() );
625  MarbleSettings::setShowCitylights( m_controlView->marbleWidget()->showCityLights() );
626  MarbleSettings::setLockToSubSolarPoint( m_controlView->marbleWidget()->isLockedToSubSolarPoint() );
627  MarbleSettings::setSubSolarPointIconVisible( m_controlView->marbleWidget()->isSubSolarPointIconVisible() );
628 
629  // Caches
630  MarbleSettings::setVolatileTileCacheLimit( m_controlView->marbleWidget()->
631  volatileTileCacheLimit() / 1024 );
632  MarbleSettings::setPersistentTileCacheLimit( m_controlView->marbleModel()->
633  persistentTileCacheLimit() / 1024 );
634 
635  // Time
636  MarbleSettings::setDateTime( m_controlView->marbleModel()->clockDateTime() );
637  MarbleSettings::setSpeedSlider( m_controlView->marbleModel()->clockSpeed() );
638 
639  // Plugins
640  writePluginSettings();
641 
642  QString positionProvider;
643  PositionTracking* tracking = m_controlView->marbleModel()->positionTracking();
644  if ( tracking && tracking->positionProviderPlugin() ) {
645  positionProvider = tracking->positionProviderPlugin()->nameId();
646  }
647  MarbleSettings::setActivePositionTrackingPlugin( positionProvider );
648 
649  MarbleSettings::setLockFloatItemPositions( m_lockFloatItemsAct->isChecked() );
650 
651  writeStatusBarSettings();
652 
653  // Store recent files
654  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
655  m_recentFilesAction->saveEntries( sharedConfig->group( "RecentFiles" ) );
656 
657  // Store current route settings
658  RoutingManager *routingManager = m_controlView->marbleWidget()->model()->routingManager();
659  routingManager->writeSettings();
660  bool const startupWarning = routingManager->showGuidanceModeStartupWarning();
661  MarbleSettings::setShowGuidanceModeStartupWarning( startupWarning );
662  QList<RoutingProfile> profiles = routingManager->profilesModel()->profiles();
663  RoutingProfile const profile = routingManager->routeRequest()->routingProfile();
664  MarbleSettings::setCurrentRoutingProfile( profiles.indexOf( profile ) );
665 
666  QList<QString> const editors = m_externalEditorMapping.values();
667  MarbleSettings::setExternalMapEditor( editors.indexOf( m_controlView->externalMapEditor() ) );
668 
669  applyPluginState();
670 
671  MarbleSettings::self()->writeConfig();
672 }
673 
674 void MarblePart::writeStatusBarSettings()
675 {
676  MarbleSettings::setShowPositionLabel( m_showPositionAction->isChecked() );
677  MarbleSettings::setShowAltitudeLabel( m_showAltitudeAction->isChecked() );
678  MarbleSettings::setShowTileZoomLevelLabel( m_showTileZoomLevelAction->isChecked() );
679  MarbleSettings::setShowDateTimeLabel( m_showDateTimeAction->isChecked() );
680  MarbleSettings::setShowDownloadProgressBar( m_showDownloadProgressAction->isChecked() );
681 }
682 
683 void MarblePart::setupActions()
684 {
685  // Action: Recent Files
686  m_recentFilesAction = KStandardAction::openRecent( this, SLOT(openUrl(KUrl)),
687  actionCollection() );
688  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
689  m_recentFilesAction->loadEntries( sharedConfig->group( "RecentFiles" ) );
690 
691  // Action: Download Region
692  m_downloadRegionAction = new KAction( this );
693  m_downloadRegionAction->setText( i18nc( "Action for downloading an entire region of a map",
694  "Download Region..." ));
695  actionCollection()->addAction( "file_download_region", m_downloadRegionAction );
696  connect( m_downloadRegionAction, SIGNAL(triggered()), SLOT(showDownloadRegionDialog()));
697 
698  // Action: Print Map
699  m_printMapAction = KStandardAction::print( this, SLOT(printMapScreenShot()),
700  actionCollection() );
701 
702  m_printPreviewAction = KStandardAction::printPreview( m_controlView, SLOT(printPreview()),
703  actionCollection() );
704 
705  // Action: Export Map
706  m_exportMapAction = new KAction( this );
707  actionCollection()->addAction( "exportMap", m_exportMapAction );
708  m_exportMapAction->setText( i18nc( "Action for saving the map to a file", "&Export Map..." ) );
709  m_exportMapAction->setIcon( KIcon( "document-save-as" ) );
710  m_exportMapAction->setShortcut( Qt::CTRL + Qt::Key_S );
711  connect( m_exportMapAction, SIGNAL(triggered(bool)),
712  this, SLOT(exportMapScreenShot()) );
713 
714  // Action: Work Offline
715  m_workOfflineAction = new KAction( this );
716  actionCollection()->addAction( "workOffline", m_workOfflineAction );
717  m_workOfflineAction->setText( i18nc( "Action for toggling offline mode", "&Work Offline" ) );
718  m_workOfflineAction->setIcon( KIcon( "user-offline" ) );
719  m_workOfflineAction->setCheckable( true );
720  m_workOfflineAction->setChecked( false );
721  connect( m_workOfflineAction, SIGNAL(triggered(bool)),
722  this, SLOT(workOffline(bool)) );
723 
724  // Action: Copy Map to the Clipboard
725  m_copyMapAction = KStandardAction::copy( this, SLOT(copyMap()),
726  actionCollection() );
727  m_copyMapAction->setText( i18nc( "Action for copying the map to the clipboard", "&Copy Map" ) );
728 
729  // Action: Copy Coordinates string
730  m_copyCoordinatesAction = new KAction( this );
731  actionCollection()->addAction( "edit_copy_coordinates",
732  m_copyCoordinatesAction );
733  m_copyCoordinatesAction->setText( i18nc( "Action for copying the coordinates to the clipboard",
734  "C&opy Coordinates" ) );
735  m_copyCoordinatesAction->setIcon( KIcon( ":/icons/copy-coordinates.png" ) );
736  connect( m_copyCoordinatesAction, SIGNAL(triggered(bool)),
737  this, SLOT(copyCoordinates()) );
738 
739  // Action: Open a Gpx or a Kml File
740  m_openAct = KStandardAction::open( this, SLOT(openFile()),
741  actionCollection() );
742  m_openAct->setText( i18nc( "Action for opening a file", "&Open..." ) );
743 
744  // Standard actions. So far only Quit.
745  KStandardAction::quit( kapp, SLOT(closeAllWindows()),
746  actionCollection() );
747 
748  // Action: Get hot new stuff
749  m_newStuffAction = KNS3::standardAction( i18nc( "Action for downloading maps (GHNS)",
750  "Download Maps..."),
751  this,
752  SLOT(showNewStuffDialog()),
753  actionCollection(), "new_stuff" );
754  m_newStuffAction->setStatusTip( i18nc( "Status tip", "Download new maps"));
755  m_newStuffAction->setShortcut( Qt::CTRL + Qt::Key_N );
756 
757  // Action: Create a New Map
758  m_mapWizardAct = new KAction( i18nc( "Action for creating new maps",
759  "&Create a New Map..." ),
760  this );
761  m_mapWizardAct->setIcon( KIcon( ":/icons/create-new-map.png" ) );
762  actionCollection()->addAction( "createMap", m_mapWizardAct );
763  m_mapWizardAct->setStatusTip( i18nc( "Status tip",
764  "A wizard guides you through the creation of your own map theme." ) );
765  connect( m_mapWizardAct, SIGNAL(triggered()), SLOT(showMapWizard()) );
766 
767  KStandardAction::showStatusbar( this, SLOT(showStatusBar(bool)),
768  actionCollection() );
769 
770  m_fullScreenAct = KStandardAction::fullScreen( 0, 0, widget(),
771  actionCollection() );
772  connect( m_fullScreenAct, SIGNAL(triggered(bool)),
773  this, SLOT(showFullScreen(bool)) );
774 
775  // Action: Show Crosshairs option
776  QList<RenderPlugin *> pluginList = m_controlView->marbleWidget()->renderPlugins();
777  QList<RenderPlugin *>::const_iterator i = pluginList.constBegin();
778  QList<RenderPlugin *>::const_iterator const end = pluginList.constEnd();
779  for (; i != end; ++i ) {
780  if ( (*i)->nameId() == "crosshairs" ) {
781  actionCollection()->addAction( "show_crosshairs", (*i)->action() );
782  }
783  }
784 
785  // Action: Show Clouds option
786  m_showCloudsAction = new KAction( this );
787  actionCollection()->addAction( "show_clouds", m_showCloudsAction );
788  m_showCloudsAction->setCheckable( true );
789  m_showCloudsAction->setChecked( true );
790  m_showCloudsAction->setIcon( KIcon( ":/icons/clouds.png" ) );
791  m_showCloudsAction->setText( i18nc( "Action for toggling clouds", "&Clouds" ) );
792  connect( m_showCloudsAction, SIGNAL(triggered(bool)),
793  this, SLOT(setShowClouds(bool)) );
794 
795  // Action: Show Sunshade options
796  m_controlSunAction = new KAction( this );
797  actionCollection()->addAction( "control_sun", m_controlSunAction );
798  m_controlSunAction->setText( i18nc( "Action for sun control dialog", "S&un Control..." ) );
799  connect( m_controlSunAction, SIGNAL(triggered(bool)),
800  this, SLOT(controlSun()) );
801 
802  KStandardAction::redisplay( m_controlView->marbleWidget(), SLOT(reloadMap()), actionCollection() );
803 
804  // Action: Show Time options
805  m_controlTimeAction = new KAction( this );
806  actionCollection()->addAction( "control_time", m_controlTimeAction );
807  m_controlTimeAction->setIcon( KIcon( ":/icons/clock.png" ) );
808  m_controlTimeAction->setText( i18nc( "Action for time control dialog", "&Time Control..." ) );
809  connect( m_controlTimeAction, SIGNAL(triggered(bool)),
810  this, SLOT(controlTime()) );
811 
812  // Action: Lock float items
813  m_lockFloatItemsAct = new KAction ( this );
814  actionCollection()->addAction( "options_lock_floatitems",
815  m_lockFloatItemsAct );
816  m_lockFloatItemsAct->setText( i18nc( "Action for locking float items on the map",
817  "Lock Position" ) );
818  m_lockFloatItemsAct->setIcon( KIcon( ":/icons/unlock.png" ) );
819  m_lockFloatItemsAct->setCheckable( true );
820  m_lockFloatItemsAct->setChecked( false );
821  connect( m_lockFloatItemsAct, SIGNAL(triggered(bool)),
822  this, SLOT(lockFloatItemPosition(bool)) );
823 
824  KStandardAction::preferences( this, SLOT(editSettings()),
825  actionCollection() );
826 
827  //Toggle Action: Show sun shadow
828  m_showShadow = new KToggleAction( i18n( "Show Shadow" ), this );
829  m_showShadow->setIcon( KIcon( "" ) ); // Fixme: Add Icon
830  actionCollection()->addAction( "sun_shadow", m_showShadow );
831  m_showShadow->setCheckedState( KGuiItem( i18n( "Hide Shadow" ) ) );
832  m_showShadow->setToolTip(i18n("Shows and hides the shadow of the sun"));
833  connect( m_showShadow, SIGNAL(triggered(bool)), this, SLOT(showSun(bool)));
834 
835  //Toggle Action: Show Sun icon on the Sub-Solar Point
836  m_setSubSolarPointIconVisible = new KToggleAction( i18n( "Show sun icon on the Sub-Solar Point" ), this );
837  actionCollection()->addAction( "show_icon_on_subsolarpoint", m_setSubSolarPointIconVisible );
838  m_setSubSolarPointIconVisible->setCheckedState( KGuiItem( i18n( "Hide sun icon on the Sub-Solar Point" ) ) );
839  m_setSubSolarPointIconVisible->setToolTip( i18n( "Show sun icon on the sub-solar point" ) );
840  connect( m_setSubSolarPointIconVisible, SIGNAL(triggered(bool)), this, SLOT(setSubSolarPointIconVisible(bool)));
841 
842 
843  //Toggle Action: Lock globe to the Sub-Solar Point
844  m_lockToSubSolarPoint = new KToggleAction( i18n( "Lock Globe to the Sub-Solar Point" ), this );
845  actionCollection()->addAction( "lock_to_subsolarpoint", m_lockToSubSolarPoint );
846  m_lockToSubSolarPoint->setCheckedState( KGuiItem( i18n( "Unlock Globe to the Sub-Solar Point" ) ) );
847  m_lockToSubSolarPoint->setToolTip( i18n( "Lock globe to the sub-solar point" ) );
848  connect( m_lockToSubSolarPoint, SIGNAL(triggered(bool)), this, SLOT(lockToSubSolarPoint(bool)));
849 
850  // FIXME: Discuss if this is the best place to put this
851  QList<RenderPlugin *>::const_iterator it = pluginList.constBegin();
852  QList<RenderPlugin *>::const_iterator const itEnd = pluginList.constEnd();
853  for (; it != itEnd; ++it ) {
854  connect( (*it), SIGNAL(actionGroupsChanged()),
855  this, SLOT(createPluginMenus()) );
856  }
857 
858  m_addBookmarkAction = new KAction( this );
859  actionCollection()->addAction( "add_bookmark", m_addBookmarkAction );
860  m_addBookmarkAction->setText( i18nc( "Add Bookmark", "&Add Bookmark" ) );
861  m_addBookmarkAction->setIcon( KIcon( ":/icons/bookmark-new.png" ) );
862  m_addBookmarkAction->setShortcut( Qt::CTRL + Qt::Key_B );
863  connect( m_addBookmarkAction, SIGNAL(triggered()),
864  this, SLOT(openEditBookmarkDialog()) );
865 
866  m_toggleBookmarkDisplayAction = new KAction( this );
867  actionCollection()->addAction( "show_bookmarks", m_toggleBookmarkDisplayAction );
868  m_toggleBookmarkDisplayAction->setText( i18nc( "Show Bookmarks", "Show &Bookmarks" ) );
869  m_toggleBookmarkDisplayAction->setStatusTip( tr( "Show or hide bookmarks in the map" ) );
870  m_toggleBookmarkDisplayAction->setCheckable( true );
871  m_toggleBookmarkDisplayAction->setChecked( m_controlView->marbleModel()->bookmarkManager()->showBookmarks() );
872  connect( m_toggleBookmarkDisplayAction, SIGNAL(toggled(bool)),
873  m_controlView->marbleModel()->bookmarkManager(), SLOT(setShowBookmarks(bool)) );
874 
875  m_setHomeAction = new KAction( this );
876  actionCollection()->addAction( "set_home", m_setHomeAction );
877  m_setHomeAction->setText( tr( "&Set Home Location" ) );
878  m_setHomeAction->setIcon( KIcon( "go-home" ) );
879  connect( m_setHomeAction, SIGNAL(triggered()),
880  this, SLOT(setHome()) );
881 
882  m_manageBookmarksAction = new KAction( this );
883  actionCollection()->addAction( "manage_bookmarks", m_manageBookmarksAction );
884  m_manageBookmarksAction->setText( i18nc( "Manage Bookmarks", "&Manage Bookmarks" ) );
885  m_manageBookmarksAction->setIcon( KIcon( ":/icons/bookmarks-organize.png" ) );
886  connect( m_manageBookmarksAction, SIGNAL(triggered()),
887  this, SLOT(openManageBookmarksDialog()) );
888 
889 
890  createFolderList();
891  connect( m_controlView->marbleModel()->bookmarkManager(),
892  SIGNAL(bookmarksChanged()), this, SLOT(createFolderList()) );
893 
894  m_externalMapEditorAction = new KAction( this );
895  actionCollection()->addAction( "external_editor", m_externalMapEditorAction );
896  m_externalMapEditorAction->setText( i18nc( "Edit the map in an external application", "&Edit Map" ) );
897  m_externalMapEditorAction->setIcon( KIcon( ":/icons/edit-map.png" ) );
898  m_externalMapEditorAction->setShortcut( Qt::CTRL + Qt::Key_E );
899  connect( m_externalMapEditorAction, SIGNAL(triggered()),
900  m_controlView, SLOT(launchExternalMapEditor()) );
901  connect( m_controlView->marbleWidget(), SIGNAL(themeChanged(QString)),
902  this, SLOT(updateMapEditButtonVisibility(QString)) );
903 }
904 
905 void MarblePart::createFolderList()
906 {
907 
908  QList<QAction*> actionList;
909 
910  QVector<GeoDataFolder*> folders = m_controlView->marbleModel()->bookmarkManager()->folders();
911  QVector<GeoDataFolder*>::const_iterator i = folders.constBegin();
912  QVector<GeoDataFolder*>::const_iterator end = folders.constEnd();
913 
914  for (; i != end; ++i ) {
915  QMenu *m_bookmarksListMenu = new QMenu( (*i)->name() );
916 
917  createBookmarksListMenu( m_bookmarksListMenu, *(*i) );
918  connect( m_bookmarksListMenu, SIGNAL(triggered(QAction*)),
919  this, SLOT(lookAtBookmark(QAction*)) );
920 
921  actionList.append( m_bookmarksListMenu->menuAction() );
922  }
923  unplugActionList("folders");
924  plugActionList( "folders", actionList );
925 }
926 
927 void MarblePart::createBookmarksListMenu( QMenu *m_bookmarksListMenu, const GeoDataFolder &folder )
928 {
929  m_bookmarksListMenu->clear();
930  QVector<GeoDataPlacemark*> bookmarks = folder.placemarkList();
931 
932  QVector<GeoDataPlacemark*>::const_iterator i = bookmarks.constBegin();
933  QVector<GeoDataPlacemark*>::const_iterator end = bookmarks.constEnd();
934 
935  for (; i != end; ++i ) {
936  QAction *bookmarkAct = new QAction( (*i)->name(), this );
937  QVariant var;
938  GeoDataLookAt* lookAt = (*i)->lookAt();
939  if ( !lookAt ) {
940  GeoDataLookAt coordinateToLookAt;
941  coordinateToLookAt.setCoordinates( (*i)->coordinate() );
942  coordinateToLookAt.setRange( (*i)->coordinate().altitude() );
943  } else {
944  var.setValue( *lookAt );
945  }
946  bookmarkAct->setData( var );
947  m_bookmarksListMenu->addAction( bookmarkAct );
948  }
949 
950 }
951 
952 void MarblePart::createInfoBoxesMenu()
953 {
954  QList<AbstractFloatItem *> floatItemList = m_controlView->marbleWidget()->floatItems();
955 
956  QList<QAction*> actionList;
957 
958  QList<AbstractFloatItem *>::const_iterator i = floatItemList.constBegin();
959  QList<AbstractFloatItem *>::const_iterator const end = floatItemList.constEnd();
960  for (; i != end; ++i ) {
961  actionList.append( (*i)->action() );
962  }
963 
964  unplugActionList( "infobox_actionlist" );
965  plugActionList( "infobox_actionlist", actionList );
966 }
967 
968 void MarblePart::createOnlineServicesMenu()
969 {
970  QList<RenderPlugin *> renderPluginList = m_controlView->marbleWidget()->renderPlugins();
971 
972  QList<QAction*> actionList;
973 
974  QList<RenderPlugin *>::const_iterator i = renderPluginList.constBegin();
975  QList<RenderPlugin *>::const_iterator const end = renderPluginList.constEnd();
976  for (; i != end; ++i ) {
977  // FIXME: This will go into the layer manager when AbstractDataPlugin is an interface
978 
979  if( (*i)->renderType() == RenderPlugin::OnlineRenderType ) {
980  actionList.append( (*i)->action() );
981  }
982  }
983 
984  unplugActionList( "onlineservices_actionlist" );
985  plugActionList( "onlineservices_actionlist", actionList );
986 }
987 
988 void MarblePart::createRenderPluginActions()
989 {
990  QList<RenderPlugin *> renderPluginList = m_controlView->marbleWidget()->renderPlugins();
991 
992  QList<QAction*> actionList;
993 
994  QList<RenderPlugin *>::const_iterator i = renderPluginList.constBegin();
995  QList<RenderPlugin *>::const_iterator const end = renderPluginList.constEnd();
996  for (; i != end; ++i ) {
997  if( (*i)->renderType() == RenderPlugin::ThemeRenderType ) {
998  actionList.append( (*i)->action() );
999  }
1000  }
1001 
1002  unplugActionList( "themerender_actionlist" );
1003  plugActionList( "themerender_actionlist", actionList );
1004 }
1005 
1006 void MarblePart::showDateTime()
1007 {
1008  m_clock = QLocale().toString( m_controlView->marbleModel()->clockDateTime().addSecs( m_controlView->marbleModel()->clockTimezone() ), QLocale::ShortFormat );
1009  updateStatusBar();
1010 }
1011 
1012 void MarblePart::showPosition( const QString& position )
1013 {
1014  m_position = position;
1015  updateStatusBar();
1016 }
1017 
1018 void MarblePart::showZoomLevel( const int tileLevel )
1019 {
1020  if ( tileLevel == -1 )
1021  m_tileZoomLevel = i18n( NOT_AVAILABLE );
1022  else {
1023  m_tileZoomLevel.setNum( tileLevel );
1024  }
1025  updateStatusBar();
1026 }
1027 
1028 void MarblePart::mapThemeChanged( const QString& newMapTheme )
1029 {
1030  Q_UNUSED( newMapTheme );
1031  updateTileZoomLevel();
1032  updateStatusBar();
1033 }
1034 
1035 void MarblePart::createPluginMenus()
1036 {
1037  unplugActionList("plugins_actionlist");
1038  QList<RenderPlugin *> renderPluginList = m_controlView->marbleWidget()->renderPlugins();
1039  QList<RenderPlugin *>::const_iterator i = renderPluginList.constBegin();
1040  QList<RenderPlugin *>::const_iterator const end = renderPluginList.constEnd();
1041 
1042  //Load the toolbars
1043  for (; i != end; ++i ) {
1044  const QList<QActionGroup*> *tmp_toolbarActionGroups = (*i)->toolbarActionGroups();
1045 
1046  if ( tmp_toolbarActionGroups ) {
1047 
1048  foreach( QActionGroup* ag, *tmp_toolbarActionGroups ) {
1049  plugActionList( "plugins_actionlist", ag->actions() );
1050  }
1051  }
1052  }
1053 
1054 }
1055 
1056 void MarblePart::updateTileZoomLevel()
1057 {
1058  const int tileZoomLevel =
1059  m_controlView->marbleWidget()->tileZoomLevel();
1060  if ( tileZoomLevel == -1 )
1061  m_tileZoomLevel = i18n( NOT_AVAILABLE );
1062  else {
1063  m_tileZoomLevel.setNum( tileZoomLevel );
1064  }
1065 }
1066 
1067 void MarblePart::migrateNewstuffConfigFiles() const
1068 {
1069  // Newstuff config files used to be in the KDE data directory of the user, but are now
1070  // shared between Marble KDE and Marble Qt in Marble's data path of the user.
1071  // This method moves an old KDE newstuff config file to the new location if the former
1072  // exists and the latter not.
1073  QFileInfo const target( MarbleDirs::localPath() + "/newstuff/marble-map-themes.knsregistry" );
1074  if ( !target.exists() ) {
1075  QString const source = KStandardDirs::locate( "data", "knewstuff3/marble.knsregistry" );
1076  if ( !source.isEmpty() ) {
1077  if ( !target.absoluteDir().exists() ) {
1078  if ( !QDir::root().mkpath( target.absolutePath() ) ) {
1079  mDebug() << "Failed to create target directory " << target.absolutePath() << " needed for newstuff migration";
1080  return;
1081  }
1082  }
1083 
1084  QFile registryFile( source );
1085  if ( !registryFile.open( QFile::ReadOnly ) ) {
1086  mDebug() << "Cannot parse newstuff xml file";
1087  return;
1088  }
1089  QDomDocument xml;
1090  if ( !xml.setContent( registryFile.readAll() ) ) {
1091  mDebug() << "Cannot parse newstuff xml data";
1092  return;
1093  }
1094 
1095  QDomNodeList items = xml.elementsByTagName( "stuff" );
1096  for ( unsigned int i = 0; i < items.length(); ++i ) {
1097  repairNode( items.item(i), "summary" );
1098  repairNode( items.item(i), "author" );
1099  }
1100 
1101  QFile output( target.absoluteFilePath() );
1102  if ( !output.open( QFile::WriteOnly ) ) {
1103  mDebug() << "Cannot open " << target.absoluteFilePath() << " for writing";
1104  } else {
1105  QTextStream outStream( &output );
1106  outStream << xml.toString( 2 );
1107  outStream.flush();
1108  output.close();
1109  }
1110  }
1111  }
1112 }
1113 
1114 void MarblePart::repairNode( QDomNode node, const QString &child ) const
1115 {
1116  int const size = node.namedItem( child ).toElement().text().size();
1117  if ( size > 1024 ) {
1118  QString const theme = node.namedItem( "name" ).toElement().text();
1119  mDebug() << "Removing GHNS field " << child << " of map theme " << theme << ": Size " << size << " exceeds maximum size (see bug 319542).";
1120  node.removeChild( node.namedItem( child ) );
1121  }
1122 }
1123 
1124 void MarblePart::updateStatusBar()
1125 {
1126  if ( m_positionLabel )
1127  m_positionLabel->setText( i18n( POSITION_STRING, m_position ) );
1128 
1129  if ( m_distanceLabel )
1130  m_distanceLabel->setText( i18n( DISTANCE_STRING, m_controlView->marbleWidget()->distanceString() ) );
1131 
1132  if ( m_tileZoomLevelLabel )
1133  m_tileZoomLevelLabel->setText( i18n( TILEZOOMLEVEL_STRING,
1134  m_tileZoomLevel ) );
1135 
1136  if ( m_clockLabel )
1137  m_clockLabel->setText( i18n( DATETIME_STRING, m_clock ) );
1138 }
1139 
1140 void MarblePart::setupStatusBar()
1141 {
1142  QFontMetrics statusBarFontMetrics( m_statusBarExtension->statusBar()->fontMetrics() );
1143 
1144  QString templatePositionString =
1145  QString( "%1 000\xb0 00\' 00\"_, 000\xb0 00\' 00\"_" ).arg(POSITION_STRING);
1146  m_positionLabel = setupStatusBarLabel( templatePositionString );
1147 
1148  QString templateDistanceString =
1149  QString( "%1 00.000,0 mu" ).arg(DISTANCE_STRING);
1150  m_distanceLabel = setupStatusBarLabel( templateDistanceString );
1151 
1152  QString templateDateTimeString = QString( "%1 %2" ).arg( DATETIME_STRING , QLocale().toString( QDateTime::fromString ( "01:01:1000", "dd:mm:yyyy"), QLocale::ShortFormat ) );
1153 
1154  m_clockLabel = setupStatusBarLabel( templateDateTimeString );
1155 
1156  const QString templateTileZoomLevelString = i18n( TILEZOOMLEVEL_STRING );
1157  m_tileZoomLevelLabel = setupStatusBarLabel( templateTileZoomLevelString );
1158 
1159  connect( m_controlView->marbleWidget(), SIGNAL(mouseMoveGeoPosition(QString)),
1160  this, SLOT(showPosition(QString)) );
1161  connect( m_controlView->marbleWidget(), SIGNAL(distanceChanged(QString)),
1162  this, SLOT(updateStatusBar()) );
1163  connect( m_controlView->marbleWidget(), SIGNAL(tileLevelChanged(int)),
1164  SLOT(showZoomLevel(int)));
1165  connect( m_controlView->marbleWidget(), SIGNAL(themeChanged(QString)),
1166  this, SLOT(mapThemeChanged(QString)), Qt::QueuedConnection );
1167  connect( m_controlView->marbleModel()->clock(), SIGNAL(timeChanged()),
1168  this, SLOT(showDateTime()) );
1169 
1170 
1171  setupDownloadProgressBar();
1172 
1173  setupStatusBarActions();
1174  updateStatusBar();
1175 }
1176 
1177 QLabel * MarblePart::setupStatusBarLabel( const QString& templateString )
1178 {
1179  QFontMetrics statusBarFontMetrics( m_statusBarExtension->statusBar()->fontMetrics() );
1180 
1181  QLabel * const label = new QLabel( m_statusBarExtension->statusBar() );
1182  label->setIndent( 5 );
1183  int maxWidth = statusBarFontMetrics.boundingRect( templateString ).width()
1184  + 2 * label->margin() + 2 * label->indent();
1185  label->setFixedWidth( maxWidth );
1186  m_statusBarExtension->addStatusBarItem( label, -1, false );
1187  return label;
1188 }
1189 
1190 void MarblePart::setupDownloadProgressBar()
1191 {
1192  // get status bar and add progress widget
1193  KStatusBar * const statusBar = m_statusBarExtension->statusBar();
1194  Q_ASSERT( statusBar );
1195 
1196  m_downloadProgressBar = new QProgressBar;
1197  m_downloadProgressBar->setVisible( MarbleSettings::showDownloadProgressBar() );
1198  statusBar->addPermanentWidget( m_downloadProgressBar );
1199 
1200  HttpDownloadManager * const downloadManager =
1201  m_controlView->marbleModel()->downloadManager();
1202  Q_ASSERT( downloadManager );
1203  connect( downloadManager, SIGNAL(jobAdded()), SLOT(downloadJobAdded()) );
1204  connect( downloadManager, SIGNAL(jobRemoved()), SLOT(downloadJobRemoved()) );
1205 }
1206 
1207 void MarblePart::setupStatusBarActions()
1208 {
1209  KStatusBar * const statusBar = m_statusBarExtension->statusBar();
1210  Q_ASSERT( statusBar );
1211 
1212  statusBar->setContextMenuPolicy( Qt::CustomContextMenu );
1213 
1214  connect( statusBar, SIGNAL(customContextMenuRequested(QPoint)),
1215  this, SLOT(showStatusBarContextMenu(QPoint)));
1216 
1217  m_showPositionAction = new KToggleAction( i18nc( "Action for toggling", "Show Position" ),
1218  this );
1219  m_showDateTimeAction = new KToggleAction( i18nc( "Action for toggling", "Show Date and Time" ),
1220  this );
1221  m_showAltitudeAction = new KToggleAction( i18nc( "Action for toggling", "Show Altitude" ),
1222  this );
1223  m_showTileZoomLevelAction = new KToggleAction( i18nc( "Action for toggling",
1224  "Show Tile Zoom Level" ), this );
1225  m_showDownloadProgressAction = new KToggleAction( i18nc( "Action for toggling",
1226  "Show Download Progress Bar" ), this );
1227 
1228  connect( m_showPositionAction, SIGNAL(triggered(bool)),
1229  this, SLOT(showPositionLabel(bool)) );
1230  connect( m_showAltitudeAction, SIGNAL(triggered(bool)),
1231  this, SLOT(showAltitudeLabel(bool)) );
1232  connect( m_showTileZoomLevelAction, SIGNAL(triggered(bool)),
1233  this, SLOT(showTileZoomLevelLabel(bool)) );
1234  connect( m_showDateTimeAction, SIGNAL(triggered(bool)),
1235  this, SLOT(showDateTimeLabel(bool)) );
1236  connect( m_showDownloadProgressAction, SIGNAL(triggered(bool)),
1237  this, SLOT(showDownloadProgressBar(bool)) );
1238 }
1239 
1240 void MarblePart::showNewStuffDialog()
1241 {
1242  QPointer<MapThemeDownloadDialog> dialog( new MapThemeDownloadDialog( m_controlView->marbleWidget() ) );
1243  dialog->exec();
1244  delete dialog;
1245 }
1246 
1247 void MarblePart::showUploadNewStuffDialog()
1248 {
1249  QString newStuffConfig = KStandardDirs::locate ( "data", "marble/marble.knsrc" );
1250  kDebug() << "KNS config file:" << newStuffConfig;
1251 
1252  QPointer<KNS3::UploadDialog> dialog( new KNS3::UploadDialog( newStuffConfig, m_controlView ) );
1253  kDebug() << "Creating the archive";
1254  dialog->setUploadFile( KUrl( MapWizard::createArchive( m_controlView, m_controlView->marbleWidget()->mapThemeId() ) ) );
1255  dialog->exec();
1256  MapWizard::deleteArchive( m_controlView->marbleWidget()->mapThemeId() );
1257  delete dialog;
1258 }
1259 
1260 void MarblePart::showDownloadRegionDialog()
1261 {
1262  MarbleWidget * const marbleWidget = m_controlView->marbleWidget();
1263  if ( !m_downloadRegionDialog ) {
1264  m_downloadRegionDialog = new DownloadRegionDialog( marbleWidget, widget() );
1265  // it might be tempting to move the connects to DownloadRegionDialog's "accepted" and
1266  // "applied" signals, be aware that the "hidden" signal might be come before the "accepted"
1267  // signal, leading to a too early disconnect.
1268  connect( m_downloadRegionDialog, SIGNAL(accepted()), SLOT(downloadRegion()));
1269  connect( m_downloadRegionDialog, SIGNAL(applied()), SLOT(downloadRegion()));
1270  }
1271  // FIXME: get allowed range from current map theme
1272  m_downloadRegionDialog->setAllowedTileLevelRange( 0, 16 );
1273  m_downloadRegionDialog->setSelectionMethod( DownloadRegionDialog::VisibleRegionMethod );
1274  ViewportParams const * const viewport = marbleWidget->viewport();
1275  m_downloadRegionDialog->setSpecifiedLatLonAltBox( viewport->viewLatLonAltBox() );
1276  m_downloadRegionDialog->setVisibleLatLonAltBox( viewport->viewLatLonAltBox() );
1277  m_downloadRegionDialog->setVisibleTileLevel( marbleWidget->tileZoomLevel() );
1278 
1279  m_downloadRegionDialog->show();
1280  m_downloadRegionDialog->raise();
1281  m_downloadRegionDialog->activateWindow();
1282 }
1283 
1284 void MarblePart::downloadRegion()
1285 {
1286  Q_ASSERT( m_downloadRegionDialog );
1287  QVector<TileCoordsPyramid> const pyramid = m_downloadRegionDialog->region();
1288  if ( !pyramid.isEmpty() ) {
1289  m_controlView->marbleWidget()->downloadRegion( pyramid );
1290  }
1291 }
1292 
1293 void MarblePart::showStatusBarContextMenu( const QPoint& pos )
1294 {
1295  KStatusBar * const statusBar = m_statusBarExtension->statusBar();
1296  Q_ASSERT( statusBar );
1297 
1298  KMenu statusBarContextMenu( m_controlView->marbleWidget() );
1299  statusBarContextMenu.addAction( m_showPositionAction );
1300  statusBarContextMenu.addAction( m_showDateTimeAction );
1301  statusBarContextMenu.addAction( m_showAltitudeAction );
1302  statusBarContextMenu.addAction( m_showTileZoomLevelAction );
1303  statusBarContextMenu.addAction( m_showDownloadProgressAction );
1304 
1305  statusBarContextMenu.exec( statusBar->mapToGlobal( pos ));
1306 }
1307 
1308 void MarblePart::showMapWizard()
1309 {
1310  // Map Wizard
1311  QPointer<MapWizard> mapWizard = new MapWizard( m_controlView );
1312  mapWizard->setWmsServers( MarbleSettings::wmsServers() );
1313  mapWizard->setStaticUrlServers( MarbleSettings::staticUrlServers() );
1314  mapWizard->exec();
1315  MarbleSettings::setWmsServers( mapWizard->wmsServers() );
1316  MarbleSettings::setStaticUrlServers( mapWizard->staticUrlServers() );
1317  mapWizard->deleteLater();
1318 }
1319 
1320 void MarblePart::editSettings()
1321 {
1322  if ( KConfigDialog::showDialog( "settings" ) )
1323  return;
1324 
1325  m_configDialog = new KConfigDialog( m_controlView, "settings",
1326  MarbleSettings::self() );
1327 
1328  // view page
1329  Ui_MarbleViewSettingsWidget ui_viewSettings;
1330  QWidget *w_viewSettings = new QWidget( 0 );
1331 
1332  w_viewSettings->setObjectName( "view_page" );
1333  ui_viewSettings.setupUi( w_viewSettings );
1334  m_configDialog->addPage( w_viewSettings, i18n( "View" ), "configure" );
1335 
1336  // It's experimental -- so we remove it for now.
1337  // FIXME: Delete the following line once OpenGL support is officially supported.
1338  ui_viewSettings.kcfg_graphicsSystem->removeItem( OpenGLGraphics );
1339 
1340  QString nativeString ( i18n("Native") );
1341 
1342  #ifdef Q_WS_X11
1343  nativeString = i18n( "Native (X11)" );
1344  #endif
1345  #ifdef Q_WS_MAC
1346  nativeString = i18n( "Native (Mac OS X Core Graphics)" );
1347  #endif
1348 
1349  ui_viewSettings.kcfg_graphicsSystem->setItemText( NativeGraphics, nativeString );
1350 
1351  // navigation page
1352  Ui_MarbleNavigationSettingsWidget ui_navigationSettings;
1353  QWidget *w_navigationSettings = new QWidget( 0 );
1354 
1355  w_navigationSettings->setObjectName( "navigation_page" );
1356  ui_navigationSettings.setupUi( w_navigationSettings );
1357  m_configDialog->addPage( w_navigationSettings, i18n( "Navigation" ),
1358  "transform-move" );
1359 
1360  // cache page
1361  Ui_MarbleCacheSettingsWidget ui_cacheSettings;
1362  QWidget *w_cacheSettings = new QWidget( 0 );
1363 
1364  w_cacheSettings->setObjectName( "cache_page" );
1365  ui_cacheSettings.setupUi( w_cacheSettings );
1366  m_configDialog->addPage( w_cacheSettings, i18n( "Cache & Proxy" ),
1367  "preferences-web-browser-cache" );
1368  connect( ui_cacheSettings.button_clearVolatileCache, SIGNAL(clicked()),
1369  m_controlView->marbleWidget(), SLOT(clearVolatileTileCache()) );
1370  connect( ui_cacheSettings.button_clearPersistentCache, SIGNAL(clicked()),
1371  m_controlView->marbleModel(), SLOT(clearPersistentTileCache()) );
1372 
1373  // time page
1374  Ui_MarbleTimeSettingsWidget ui_timeSettings;
1375  QWidget *w_timeSettings = new QWidget( 0 );
1376 
1377  w_timeSettings->setObjectName( "time_page" );
1378  ui_timeSettings.setupUi( w_timeSettings );
1379  m_configDialog->addPage( w_timeSettings, i18n( "Date & Time" ), "clock" );
1380 
1381  if ( MarbleSettings::showCloudSyncSettings() ) {
1382  // Sync page
1383  Ui_MarbleCloudSyncSettingsWidget ui_cloudSyncSettings;
1384  QWidget *w_cloudSyncSettings = new QWidget( 0 );
1385 
1386  w_cloudSyncSettings->setObjectName( "sync_page" );
1387  ui_cloudSyncSettings.setupUi( w_cloudSyncSettings );
1388  ui_cloudSyncSettings.button_syncNow->setEnabled( MarbleSettings::syncBookmarks() );
1389  m_configDialog->addPage( w_cloudSyncSettings, i18n( "Synchronization" ), "folder-sync" );
1390 
1391  connect( ui_cloudSyncSettings.button_syncNow, SIGNAL(clicked()),
1392  m_controlView->cloudSyncManager()->bookmarkSyncManager(), SLOT(startBookmarkSync()) );
1393  }
1394 
1395  // routing page
1396  RoutingProfilesWidget *w_routingSettings = new RoutingProfilesWidget( m_controlView->marbleModel() );
1397  w_routingSettings->setObjectName( "routing_page" );
1398  m_configDialog->addPage( w_routingSettings, i18n( "Routing" ), "flag");
1399 
1400  // plugin page
1401  MarblePluginSettingsWidget *w_pluginSettings = new MarblePluginSettingsWidget();
1402  RenderPluginModel *const pluginModel = new RenderPluginModel( w_pluginSettings );
1403  pluginModel->setRenderPlugins( m_controlView->marbleWidget()->renderPlugins() );
1404  w_pluginSettings->setModel( pluginModel );
1405  w_pluginSettings->setObjectName( "plugin_page" );
1406  m_configDialog->addPage( w_pluginSettings, i18n( "Plugins" ),
1407  "preferences-plugin" );
1408  // Setting the icons of the pluginSettings page.
1409  w_pluginSettings->setConfigIcon( KIcon( "configure" ) );
1410  w_pluginSettings->setAboutIcon( KIcon( "help-about" ) );
1411 
1412  connect( w_pluginSettings, SIGNAL(pluginListViewClicked()),
1413  SLOT(enableApplyButton()) );
1414  connect( m_configDialog, SIGNAL(settingsChanged(QString)),
1415  SLOT(updateSettings()) );
1416  connect( m_configDialog, SIGNAL(applyClicked()),
1417  SLOT(applyPluginState()) );
1418  connect( m_configDialog, SIGNAL(okClicked()),
1419  SLOT(applyPluginState()) );
1420  connect( m_configDialog, SIGNAL(applyClicked()),
1421  pluginModel, SLOT(applyPluginState()) );
1422  connect( m_configDialog, SIGNAL(okClicked()),
1423  pluginModel, SLOT(applyPluginState()) );
1424  connect( m_configDialog, SIGNAL(cancelClicked()),
1425  pluginModel, SLOT(retrievePluginState()) );
1426 
1427  m_configDialog->show();
1428 }
1429 
1430 void MarblePart::enableApplyButton()
1431 {
1432  m_configDialog->enableButtonApply( true );
1433 }
1434 
1435 void MarblePart::applyPluginState()
1436 {
1437  QList<RoutingProfile> profiles = m_controlView->marbleWidget()
1438  ->model()->routingManager()->profilesModel()->profiles();
1439  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
1440  KConfigGroup profilesGroup = sharedConfig->group( "Routing Profiles" );
1441  profilesGroup.writeEntry( "Num", profiles.count() );
1442  for ( int i = 0; i < profiles.count(); ++i ) {
1443  KConfigGroup profileGroup = profilesGroup.group( QString( "Profile %0" ).arg(i) );
1444  RoutingProfile profile = profiles.at( i );
1445  profileGroup.writeEntry( "Name", profile.name() );
1446  foreach ( const QString &pluginName, profileGroup.groupList() ) {
1447  profileGroup.group( pluginName ).deleteGroup();
1448  }
1449  foreach ( const QString &key, profile.pluginSettings().keys() ) {
1450  KConfigGroup pluginGroup = profileGroup.group( key );
1451  pluginGroup.writeEntry( "Enabled", true );
1452  foreach ( const QString& settingKey, profile.pluginSettings()[ key ].keys() ) {
1453  Q_ASSERT( settingKey != "Enabled" );
1454  pluginGroup.writeEntry( settingKey, profile.pluginSettings()[ key ][ settingKey ] );
1455  }
1456  }
1457  }
1458 }
1459 
1460 void MarblePart::updateSettings()
1461 {
1462  kDebug() << "Updating Settings ...";
1463 
1464  // FIXME: Font doesn't get updated instantly.
1465  m_controlView->marbleWidget()->setDefaultFont( MarbleSettings::mapFont() );
1466 
1467  m_controlView->marbleWidget()->
1468  setMapQualityForViewContext( (MapQuality) MarbleSettings::stillQuality(),
1469  Still );
1470  m_controlView->marbleWidget()->
1471  setMapQualityForViewContext( (MapQuality) MarbleSettings::animationQuality(),
1472  Animation );
1473 
1474  GraphicsSystem graphicsSystem = (GraphicsSystem) MarbleSettings::graphicsSystem();
1475 
1476  m_controlView->marbleWidget()->
1477  setDefaultAngleUnit( (AngleUnit) MarbleSettings::angleUnit() );
1478  MarbleGlobal::getInstance()->locale()->
1479  setMeasurementSystem( (QLocale::MeasurementSystem) MarbleSettings::distanceUnit() );
1480 
1481  updateStatusBar();
1482 
1483  m_controlView->marbleWidget()->setAnimationsEnabled( MarbleSettings::animateTargetVoyage() );
1484 
1485  // Cache
1486  m_controlView->marbleModel()->
1487  setPersistentTileCacheLimit( MarbleSettings::persistentTileCacheLimit() * 1024 );
1488  m_controlView->marbleWidget()->
1489  setVolatileTileCacheLimit( MarbleSettings::volatileTileCacheLimit() * 1024 );
1490 
1491  //Create and export the proxy
1492  QNetworkProxy proxy;
1493 
1494  // Make sure that no proxy is used for an empty string or the default value:
1495  if ( MarbleSettings::proxyUrl().isEmpty() || MarbleSettings::proxyUrl() == "http://" ) {
1496  proxy.setType( QNetworkProxy::NoProxy );
1497  } else {
1498  if ( MarbleSettings::proxyType() == Marble::Socks5Proxy ) {
1499  proxy.setType( QNetworkProxy::Socks5Proxy );
1500  }
1501  else if ( MarbleSettings::proxyType() == Marble::HttpProxy ) {
1502  proxy.setType( QNetworkProxy::HttpProxy );
1503  }
1504  else {
1505  kDebug() << "Unknown proxy type! Using Http Proxy instead.";
1506  proxy.setType( QNetworkProxy::HttpProxy );
1507  }
1508  }
1509 
1510  proxy.setHostName( MarbleSettings::proxyUrl() );
1511  proxy.setPort( MarbleSettings::proxyPort() );
1512 
1513  if ( MarbleSettings::proxyAuth() ) {
1514  proxy.setUser( MarbleSettings::proxyUser() );
1515  proxy.setPassword( MarbleSettings::proxyPass() );
1516  }
1517 
1518  QNetworkProxy::setApplicationProxy(proxy);
1519 
1520  m_controlView->marbleWidget()->update();
1521 
1522  // Show message box
1523  if ( m_initialGraphicsSystem != graphicsSystem
1524  && m_previousGraphicsSystem != graphicsSystem ) {
1525  KMessageBox::information (m_controlView->marbleWidget(),
1526  i18n("You have decided to run Marble with a different graphics system.\n"
1527  "For this change to become effective, Marble has to be restarted.\n"
1528  "Please close the application and start Marble again."),
1529  i18n("Graphics System Change") );
1530  }
1531  m_previousGraphicsSystem = graphicsSystem;
1532 
1533  // Time
1534  if( MarbleSettings::systemTimezone() == true )
1535  {
1536  QDateTime localTime = QDateTime::currentDateTime().toLocalTime();
1537  localTime.setTimeSpec( Qt::UTC );
1538  m_controlView->marbleModel()->setClockTimezone( QDateTime::currentDateTime().toUTC().secsTo( localTime ) );
1539  }
1540  else if( MarbleSettings::utc() == true )
1541  {
1542  m_controlView->marbleModel()->setClockTimezone( 0 );
1543  }
1544  else if( MarbleSettings::customTimezone() == true )
1545  {
1546  m_controlView->marbleModel()->setClockTimezone( m_timezone.value( MarbleSettings::chosenTimezone() ) );
1547  }
1548 
1549  // Route rendering colors and alpha values
1550  QColor tempColor;
1551  tempColor = MarbleSettings::routeColorStandard();
1552  tempColor.setAlpha( MarbleSettings::routeAlphaStandard() );
1553  m_controlView->marbleModel()->routingManager()->setRouteColorStandard( tempColor );
1554 
1555  tempColor = MarbleSettings::routeColorHighlighted();
1556  tempColor.setAlpha( MarbleSettings::routeAlphaHighlighted() );
1557  m_controlView->marbleModel()->routingManager()->setRouteColorHighlighted( tempColor );
1558 
1559  tempColor = MarbleSettings::routeColorAlternative();
1560  tempColor.setAlpha( MarbleSettings::routeAlphaAlternative() );
1561  m_controlView->marbleModel()->routingManager()->setRouteColorAlternative( tempColor );
1562 
1563  // External map editor
1564  m_controlView->setExternalMapEditor( m_externalEditorMapping[MarbleSettings::externalMapEditor()] );
1565  m_controlView->marbleWidget()->inputHandler()->setInertialEarthRotationEnabled( MarbleSettings::inertialEarthRotation() );
1566 
1567  CloudSyncManager* cloudSyncManager = m_controlView->cloudSyncManager();
1568  cloudSyncManager->setOwncloudServer( MarbleSettings::owncloudServer() );
1569  cloudSyncManager->setOwncloudUsername( MarbleSettings::owncloudUsername() );
1570  cloudSyncManager->setOwncloudPassword( MarbleSettings::owncloudPassword() );
1571  cloudSyncManager->setSyncEnabled( MarbleSettings::enableSync() );
1572  cloudSyncManager->routeSyncManager()->setRouteSyncEnabled( MarbleSettings::syncRoutes() );
1573  cloudSyncManager->bookmarkSyncManager()->setBookmarkSyncEnabled( MarbleSettings::syncBookmarks() );
1574 }
1575 
1576 void MarblePart::writePluginSettings()
1577 {
1578  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
1579 
1580  foreach( RenderPlugin *plugin, m_controlView->marbleWidget()->renderPlugins() ) {
1581  KConfigGroup group = sharedConfig->group( QString( "plugin_" ) + plugin->nameId() );
1582 
1583  const QHash<QString,QVariant> hash = plugin->settings();
1584 
1585  QHash<QString,QVariant>::const_iterator it = hash.begin();
1586  while( it != hash.end() ) {
1587  group.writeEntry( it.key(), it.value() );
1588  ++it;
1589  }
1590  group.sync();
1591  }
1592 }
1593 
1594 void MarblePart::readPluginSettings()
1595 {
1596  disconnect( m_controlView->marbleWidget(), SIGNAL(pluginSettingsChanged()),
1597  this, SLOT(writePluginSettings()) );
1598 
1599  KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig( KGlobal::mainComponent() );
1600 
1601  foreach( RenderPlugin *plugin, m_controlView->marbleWidget()->renderPlugins() ) {
1602  KConfigGroup group = sharedConfig->group( QString( "plugin_" ) + plugin->nameId() );
1603 
1604  QHash<QString,QVariant> hash;
1605 
1606  foreach ( const QString& key, group.keyList() ) {
1607  hash.insert( key, group.readEntry( key ) );
1608  }
1609 
1610  plugin->setSettings( hash );
1611  }
1612 
1613  connect( m_controlView->marbleWidget(), SIGNAL(pluginSettingsChanged()),
1614  this, SLOT(writePluginSettings()) );
1615 }
1616 
1617 void MarblePart::lockFloatItemPosition( bool enabled )
1618 {
1619  QList<AbstractFloatItem *> floatItemList = m_controlView->marbleWidget()->floatItems();
1620 
1621  QList<AbstractFloatItem *>::const_iterator i = floatItemList.constBegin();
1622  QList<AbstractFloatItem *>::const_iterator const end = floatItemList.constEnd();
1623  for (; i != end; ++i ) {
1624  // Locking one would suffice as it affects all.
1625  // Nevertheless go through all.
1626  (*i)->setPositionLocked(enabled);
1627  }
1628 }
1629 
1630 void MarblePart::downloadJobAdded()
1631 {
1632  m_downloadProgressBar->setUpdatesEnabled( false );
1633  if ( m_downloadProgressBar->value() < 0 ) {
1634  m_downloadProgressBar->setMaximum( 1 );
1635  m_downloadProgressBar->setValue( 0 );
1636  m_downloadProgressBar->setVisible( MarbleSettings::showDownloadProgressBar() );
1637  } else {
1638  m_downloadProgressBar->setMaximum( m_downloadProgressBar->maximum() + 1 );
1639  }
1640 
1641 // kDebug() << "downloadProgressJobAdded: value/maximum: "
1642 // << m_downloadProgressBar->value() << '/' << m_downloadProgressBar->maximum();
1643 
1644  m_downloadProgressBar->setUpdatesEnabled( true );
1645 }
1646 
1647 void MarblePart::downloadJobRemoved()
1648 {
1649  m_downloadProgressBar->setUpdatesEnabled( false );
1650  m_downloadProgressBar->setValue( m_downloadProgressBar->value() + 1 );
1651  if ( m_downloadProgressBar->value() == m_downloadProgressBar->maximum() ) {
1652  m_downloadProgressBar->reset();
1653  m_downloadProgressBar->setVisible( false );
1654  }
1655 
1656 // kDebug() << "downloadProgressJobCompleted: value/maximum: "
1657 // << m_downloadProgressBar->value() << '/' << m_downloadProgressBar->maximum();
1658 
1659  m_downloadProgressBar->setUpdatesEnabled( true );
1660 }
1661 
1662 void MarblePart::openEditBookmarkDialog()
1663 {
1664  MarbleWidget *widget = m_controlView->marbleWidget();
1665  QPointer<EditBookmarkDialog> dialog = new EditBookmarkDialog( widget->model()->bookmarkManager(), widget );
1666  dialog->setCoordinates( widget->lookAt().coordinates() );
1667  dialog->setRange( widget->lookAt().range() );
1668  dialog->setMarbleWidget( widget );
1669  dialog->setReverseGeocodeName();
1670  if ( dialog->exec() == QDialog::Accepted ) {
1671  widget->model()->bookmarkManager()->addBookmark( dialog->folder(), dialog->bookmark() );
1672  }
1673  delete dialog;
1674 }
1675 
1676 void MarblePart::setHome()
1677 {
1678  MarbleWidget *widget = m_controlView->marbleWidget();
1679  widget->model()->setHome( widget->centerLongitude(), widget->centerLatitude(), widget->zoom() );
1680 }
1681 
1682 void MarblePart::openManageBookmarksDialog()
1683 {
1684  MarbleModel * const model = m_controlView->marbleModel();
1685  QPointer<BookmarkManagerDialog> dialog = new BookmarkManagerDialog( model, m_controlView->marbleWidget() );
1686  dialog->exec();
1687  delete dialog;
1688 }
1689 
1690 void MarblePart::lookAtBookmark( QAction *action)
1691 {
1692  GeoDataLookAt temp = qvariant_cast<GeoDataLookAt>( action->data() ) ;
1693  m_controlView->marbleWidget()->flyTo( temp ) ;
1694  mDebug() << " looking at bookmark having longitude : "<< temp.longitude(GeoDataCoordinates::Degree)
1695  << " latitude : "<< temp.latitude(GeoDataCoordinates::Degree)
1696  << " distance : " << temp.range();
1697 }
1698 
1699 
1700 void MarblePart::initializeCustomTimezone()
1701 {
1702  if( m_timezone.count() == 0)
1703  {
1704  m_timezone.insert( 0, 0 );
1705  m_timezone.insert( 1, 3600 );
1706  m_timezone.insert( 2, 7200 );
1707  m_timezone.insert( 3, 7200 );
1708  m_timezone.insert( 4, 10800 );
1709  m_timezone.insert( 5, 12600 );
1710  m_timezone.insert( 6, 14400 );
1711  m_timezone.insert( 7, 18000 );
1712  m_timezone.insert( 8, 19800 );
1713  m_timezone.insert( 9, 21600 );
1714  m_timezone.insert( 10, 25200 );
1715  m_timezone.insert( 11, 28800 );
1716  m_timezone.insert( 12, 32400 );
1717  m_timezone.insert( 13, 34200 );
1718  m_timezone.insert( 14, 36000 );
1719  m_timezone.insert( 15, 39600 );
1720  m_timezone.insert( 16, 43200 );
1721  m_timezone.insert( 17, -39600 );
1722  m_timezone.insert( 18, -36000 );
1723  m_timezone.insert( 19, -32400 );
1724  m_timezone.insert( 20, -28800 );
1725  m_timezone.insert( 21, -25200 );
1726  m_timezone.insert( 22, -25200 );
1727  m_timezone.insert( 23, -21600 );
1728  m_timezone.insert( 24, -18000 );
1729  m_timezone.insert( 25, -18000 );
1730  m_timezone.insert( 26, -14400 );
1731  m_timezone.insert( 27, -12600 );
1732  m_timezone.insert( 28, -10800 );
1733  m_timezone.insert( 29, -10800 );
1734  m_timezone.insert( 30, -3600 );
1735  }
1736 }
1737 
1738 void MarblePart::printMapScreenShot()
1739 {
1740 #ifndef QT_NO_PRINTER
1741  QPrinter printer( QPrinter::HighResolution );
1742  QPointer<QPrintDialog> printDialog = KdePrint::createPrintDialog(&printer, widget());
1743  m_controlView->printMapScreenShot( printDialog );
1744  delete printDialog;
1745 #endif
1746 }
1747 
1748 void MarblePart::updateMapEditButtonVisibility( const QString &mapTheme )
1749 {
1750  Q_ASSERT( m_externalMapEditorAction );
1751  m_externalMapEditorAction->setVisible( mapTheme == "earth/openstreetmap/openstreetmap.dgml" );
1752 }
1753 
1754 void MarblePart::fallBackToDefaultTheme()
1755 {
1756  m_controlView->marbleWidget()->setMapThemeId( m_controlView->defaultMapThemeId() );
1757 }
1758 
1759 }
1760 
1761 #include "marble_part.moc"
MarbleSettings::setDateTime
static void setDateTime(const QDateTime &v)
Set The date and time of marble clock.
Definition: settings.h:290
Marble::MarbleWidget::tileZoomLevel
int tileZoomLevel() const
Definition: MarbleWidget.cpp:372
Marble::RenderPluginModel
Provides common access to various kinds of plugins without having to know about their details...
Definition: RenderPluginModel.h:30
Marble::MarblePart
Definition: marble_part.h:52
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
Marble::DownloadRegionDialog::setVisibleTileLevel
void setVisibleTileLevel(int const tileLevel)
Definition: DownloadRegionDialog.cpp:267
Marble::PositionTracking::positionProviderPlugin
PositionProviderPlugin positionProviderPlugin
Definition: PositionTracking.h:35
MarbleSettings::setQuitLatitude
static void setQuitLatitude(double v)
Set quitLatitude.
Definition: settings.h:100
GeoDataCoordinates.h
MarbleSettings::routeColorHighlighted
static QColor routeColorHighlighted()
Get routeColorHighlighted.
Definition: settings.h:1241
Marble::MarbleWidget::isSubSolarPointIconVisible
bool isSubSolarPointIconVisible
Definition: MarbleWidget.h:126
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
Marble::DownloadRegionDialog::VisibleRegionMethod
Definition: DownloadRegionDialog.h:36
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_part.h
MarbleSettings::volatileTileCacheLimit
static int volatileTileCacheLimit()
Get Cache for tiles reserved in the physical memory.
Definition: settings.h:799
RenderPluginModel.h
MarbleSettings::showDownloadProgressBar
static bool showDownloadProgressBar()
Get showDownloadProgressBar.
Definition: settings.h:1089
MarbleSettings::staticUrlServers
static QStringList staticUrlServers()
Get staticUrlServers.
Definition: settings.h:1146
tracking
Definition: position-tracking.qml:12
MarbleSettings::systemTimezone
static bool systemTimezone()
Get systemTimezone.
Definition: settings.h:388
MarbleSettings::showPositionLabel
static bool showPositionLabel()
Get showPositionLabel.
Definition: settings.h:1032
MarbleSettings::syncRoutes
static bool syncRoutes()
Get syncRoutes.
Definition: settings.h:1393
MarbleSettings::setShowSun
static void setShowSun(bool v)
Set showSun.
Definition: settings.h:606
Marble::MarbleWidget::distanceString
QString distanceString() const
Return the current distance string.
Definition: MarbleWidget.cpp:1210
MarbleSettings::workOffline
static bool workOffline()
Get workOffline.
Definition: settings.h:186
Marble::RoutingProfilesModel::profiles
QList< RoutingProfile > profiles() const
Definition: RoutingProfilesModel.cpp:60
TileCoordsPyramid.h
Marble::BookmarkManager::addBookmark
void addBookmark(GeoDataContainer *folder, const GeoDataPlacemark &bookmark)
add bookmark in a folder
Definition: BookmarkManager.cpp:127
Marble::MarblePart::fallBackToDefaultTheme
void fallBackToDefaultTheme()
Definition: marble_part.cpp:1754
PositionProviderPlugin.h
Marble::MarbleWidget::projection
int projection
Definition: MarbleWidget.h:112
Marble::MarbleDirs::setMarbleDataPath
static void setMarbleDataPath(const QString &adaptedPath)
Definition: MarbleDirs.cpp:294
MarbleSettings::proxyUser
static QString proxyUser()
Get Username for authorization.
Definition: settings.h:899
Marble::MarbleWidget::setShowCityLights
void setShowCityLights(bool visible)
Set whether city lights instead of night shadow are visible.
Definition: MarbleWidget.cpp:936
MarbleSettings::setShowCitylights
static void setShowCitylights(bool v)
Set showCitylights.
Definition: settings.h:625
MarblePluginSettingsWidget.h
This file contains the multiple inheritance ui-wrapper for the MarblePluginSettingsWidget ui file...
MarbleSettings::showDateTimeLabel
static bool showDateTimeLabel()
Get showDateTimeLabel.
Definition: settings.h:1108
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
MarbleSettings::setAngleUnit
static void setAngleUnit(int v)
Set The unit chosen to measure angles.
Definition: settings.h:473
MarbleSettings::setDistanceUnit
static void setDistanceUnit(int v)
Set The unit chosen to measure distances.
Definition: settings.h:454
MarbleSettings::routeColorAlternative
static QColor routeColorAlternative()
Get routeColorAlternative.
Definition: settings.h:1279
Marble::MapWizard::createArchive
static QString createArchive(QWidget *parent, QString mapId)
Definition: MapWizard.cpp:577
MarbleSettings::wmsServers
static QStringList wmsServers()
Get wmsServers.
Definition: settings.h:1127
MarbleSettings::inertialEarthRotation
static bool inertialEarthRotation()
Get inertialEarthRotation.
Definition: settings.h:730
Marble::MarbleModel::clockTimezone
int clockTimezone() const
Definition: MarbleModel.cpp:640
MarbleSettings::proxyType
static int proxyType()
Get proxyType.
Definition: settings.h:956
MarbleSettings::setWorkOffline
static void setWorkOffline(bool v)
Set workOffline.
Definition: settings.h:176
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
MarbleSettings::setPersistentTileCacheLimit
static void setPersistentTileCacheLimit(int v)
Set Maximum space on the hard disk that can be used to store tiles.
Definition: settings.h:808
MarbleSettings::onStartup
static int onStartup()
Get The location shown on application startup.
Definition: settings.h:711
AbstractFloatItem.h
MarbleSettings::quitRange
static double quitRange()
Get quitRange.
Definition: settings.h:129
Marble::DownloadRegionDialog::setSpecifiedLatLonAltBox
void setSpecifiedLatLonAltBox(GeoDataLatLonAltBox const &)
Definition: DownloadRegionDialog.cpp:341
QWidget
Marble::EditBookmarkDialog::setCoordinates
void setCoordinates(const GeoDataCoordinates &coordinates)
Definition: EditBookmarkDialog.cpp:112
Marble::MarbleWidget::setAnimationsEnabled
void setAnimationsEnabled(bool enabled)
Set whether travels to a point should get animated.
Definition: MarbleWidget.cpp:1146
MarbleSettings::stillQuality
static int stillQuality()
Get The quality at which a still map gets painted.
Definition: settings.h:502
Marble::MarbleModel::clock
MarbleClock * clock()
Definition: MarbleModel.cpp:467
HttpDownloadManager.h
Marble::CloudSyncManager::setOwncloudUsername
void setOwncloudUsername(const QString &owncloudUsername)
Setter for ownCloud username.
Definition: CloudSyncManager.cpp:113
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
MarbleSettings::systemTime
static bool systemTime()
Get systemTime.
Definition: settings.h:350
Marble::SunControlWidget
Definition: SunControlWidget.h:31
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
MarbleSettings::setSubSolarPointIconVisible
static void setSubSolarPointIconVisible(bool v)
Set subSolarPointIconVisible.
Definition: settings.h:644
MarbleSettings::setMapFont
static void setMapFont(const QFont &v)
Set The general font used on the map.
Definition: settings.h:568
MarbleSettings::lockFloatItemPositions
static bool lockFloatItemPositions()
Get lockFloatItemPositions.
Definition: settings.h:224
Marble::BookmarkSyncManager::setBookmarkSyncEnabled
void setBookmarkSyncEnabled(bool enabled)
Setter for enabling/disabling bookmark synchronization.
Definition: BookmarkSyncManager.cpp:242
Marble::MarbleDirs::localPath
static QString localPath()
Definition: MarbleDirs.cpp:217
Marble::MarbleWidgetInputHandler::setInertialEarthRotationEnabled
void setInertialEarthRotationEnabled(bool enabled)
Definition: MarbleWidgetInputHandler.cpp:138
MarbleSettings::setMapTheme
static void setMapTheme(const QString &v)
Set mapTheme.
Definition: settings.h:138
MarbleSettings::proxyPort
static int proxyPort()
Get Port for the proxy server.
Definition: settings.h:880
Marble::MapQuality
MapQuality
This enum is used to choose the map quality shown in the view.
Definition: MarbleGlobal.h:80
MarbleSettings::lastFileOpenDir
static QString lastFileOpenDir()
Get The last directory that was opened by File->Open.
Definition: settings.h:597
Marble::MarblePluginSettingsWidget
Definition: MarblePluginSettingsWidget.h:39
MarbleSettings::showGuidanceModeStartupWarning
static bool showGuidanceModeStartupWarning()
Get showGuidanceModeStartupWarning.
Definition: settings.h:1165
Marble::MarbleModel::pluginManager
const PluginManager * pluginManager() const
Definition: MarbleModel.cpp:564
MarbleSettings::routeAlphaStandard
static int routeAlphaStandard()
Get routeAlphaStandard.
Definition: settings.h:1222
Planet.h
MapThemeDownloadDialog.h
MarbleSettings::utc
static bool utc()
Get utc.
Definition: settings.h:407
Marble::RoutingProfile
Definition: RoutingProfile.h:24
QObject
MarbleSettings::setHomeZoom
static void setHomeZoom(int v)
Set homeZoom.
Definition: settings.h:62
Marble::ControlView::cloudSyncManager
CloudSyncManager * cloudSyncManager()
Definition: ControlView.cpp:604
MarbleSettings::setShowClouds
static void setShowClouds(bool v)
Set showClouds.
Definition: settings.h:157
Marble::GeoDataLookAt::setLongitude
void setLongitude(qreal longitude, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the longitude in a GeoDataLookAt object
Definition: GeoDataLookAt.cpp:85
MarbleDebug.h
Marble::RoutingProfilesModel::setProfiles
void setProfiles(const QList< RoutingProfile > &profiles)
Definition: RoutingProfilesModel.cpp:53
MarbleSettings::setQuitLongitude
static void setQuitLongitude(double v)
Set quitLongitude.
Definition: settings.h:81
Marble::OpenGLGraphics
Uses OpenGL.
Definition: MarbleGlobal.h:94
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::SunControlWidget::setSunShading
void setSunShading(bool)
Definition: SunControlWidget.cpp:98
MarbleSettings::showBookmarks
static bool showBookmarks()
Get showBookmarks.
Definition: settings.h:281
MarbleSettings::showClouds
static bool showClouds()
Get showClouds.
Definition: settings.h:167
Marble::MarblePart::createPluginMenus
void createPluginMenus()
Definition: marble_part.cpp:1035
BookmarkManager.h
Marble::MarbleWidget::showCityLights
bool showCityLights
Definition: MarbleWidget.h:124
MarbleSettings::quitLongitude
static double quitLongitude()
Get quitLongitude.
Definition: settings.h:91
Marble::NativeGraphics
Uses the native graphics system of the OS.
Definition: MarbleGlobal.h:92
MapWizard.h
This file contains the header for MapWizard.
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::MapWizard::deleteArchive
static void deleteArchive(QString mapId)
Definition: MapWizard.cpp:654
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
MarbleSettings::setShowTileZoomLevelLabel
static void setShowTileZoomLevelLabel(bool v)
Set showTileZoomLevelLabel.
Definition: settings.h:1060
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
MarbleSettings::animateTargetVoyage
static bool animateTargetVoyage()
Get Display animation on voyage to target.
Definition: settings.h:749
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::zoom
int zoom
Definition: MarbleWidget.h:109
Marble::MarbleWidget::downloadRegion
void downloadRegion(QVector< TileCoordsPyramid > const &)
Definition: MarbleWidget.cpp:1339
GeoDataLookAt.h
Marble::MarbleWidget::mapQuality
MapQuality mapQuality(ViewContext=Still) const
Retrieve the map quality depending on the view context.
Definition: MarbleWidget.cpp:1109
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
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::MarblePart::createFolderList
void createFolderList()
Definition: marble_part.cpp:905
MarbleSettings::setShowDateTimeLabel
static void setShowDateTimeLabel(bool v)
Set showDateTimeLabel.
Definition: settings.h:1098
Marble::ControlView::externalMapEditor
QString externalMapEditor() const
Returns the editor used to launch a map editor application.
Definition: ControlView.cpp:609
MarbleSettings::setShowDownloadProgressBar
static void setShowDownloadProgressBar(bool v)
Set showDownloadProgressBar.
Definition: settings.h:1079
MarbleSettings::self
static MarbleSettings * self()
Definition: settings.cpp:17
MarbleSettings::customTimezone
static bool customTimezone()
Get customTimezone.
Definition: settings.h:426
MarbleSettings::mapFont
static QFont mapFont()
Get The general font used on the map.
Definition: settings.h:578
MarbleSettings::setSpeedSlider
static void setSpeedSlider(int v)
Set The speed of marble clock.
Definition: settings.h:309
MarbleSettings::setExternalMapEditor
static void setExternalMapEditor(int v)
Set The external OpenStreetMap editor application.
Definition: settings.h:758
MarbleSettings::showSun
static bool showSun()
Get showSun.
Definition: settings.h:616
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::MarblePart::showZoomLevel
void showZoomLevel(const int)
Definition: marble_part.cpp:1018
MarbleSettings::proxyUrl
static QString proxyUrl()
Get URL for the proxy server.
Definition: settings.h:849
Marble::BookmarkManager::folders
QVector< GeoDataFolder * > folders() const
return Vector of folders
Definition: BookmarkManager.cpp:165
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
MarbleSettings::owncloudUsername
static QString owncloudUsername()
Get owncloudUsername.
Definition: settings.h:1431
MarbleSettings::setLastFileOpenDir
static void setLastFileOpenDir(const QString &v)
Set The last directory that was opened by File->Open.
Definition: settings.h:587
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:442
Marble::Still
still image
Definition: MarbleGlobal.h:73
MarbleSettings::owncloudPassword
static QString owncloudPassword()
Get owncloudPassword.
Definition: settings.h:1450
MarbleSettings::setHomeLatitude
static void setHomeLatitude(double v)
Set homeLatitude.
Definition: settings.h:43
Marble::RouteRequest::setRoutingProfile
void setRoutingProfile(const RoutingProfile &profile)
Definition: RouteRequest.cpp:315
Marble::MarblePart::showPosition
void showPosition(const QString &position)
Definition: marble_part.cpp:1012
MarbleSettings::quitLatitude
static double quitLatitude()
Get quitLatitude.
Definition: settings.h:110
Marble::RenderPluginModel::setRenderPlugins
void setRenderPlugins(const QList< RenderPlugin * > &renderPlugins)
Set the RenderPlugins the model should manage.
Definition: RenderPluginModel.cpp:54
Marble::MarbleWidget::model
MarbleModel * model() const
Return the model that this view shows.
Definition: MarbleWidget.cpp:283
DialogConfigurationInterface.h
Marble::MapWizard
Definition: MapWizard.h:33
MarbleSettings::showAltitudeLabel
static bool showAltitudeLabel()
Get showAltitudeLabel.
Definition: settings.h:1051
Marble::MarblePart::openUrl
bool openUrl(const KUrl &url)
Definition: marble_part.cpp:221
Marble::PluginManager::parsingRunnerPlugins
QList< const ParseRunnerPlugin * > parsingRunnerPlugins() const
Returns all parse runner plugins.
Definition: PluginManager.cpp:136
MarbleSettings::setGraphicsSystem
static void setGraphicsSystem(int v)
Set The graphics system that is used by Qt to render the graphics.
Definition: settings.h:530
MarbleSettings::mapTheme
static QString mapTheme()
Get mapTheme.
Definition: settings.h:148
Marble::NOT_AVAILABLE
static const char NOT_AVAILABLE[]
Definition: MarbleGlobal.h:232
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
MarbleSettings::lastSessionTime
static bool lastSessionTime()
Get lastSessionTime.
Definition: settings.h:369
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
MarbleSettings::setShowPositionLabel
static void setShowPositionLabel(bool v)
Set showPositionLabel.
Definition: settings.h:1022
MarbleSettings::setLockFloatItemPositions
static void setLockFloatItemPositions(bool v)
Set lockFloatItemPositions.
Definition: settings.h:214
Marble::MarbleGlobal::locale
MarbleLocale * locale() const
Definition: MarbleGlobal.cpp:43
Marble::MarbleModel::setClockTimezone
void setClockTimezone(int timeInSec)
Definition: MarbleModel.cpp:635
MarbleLocale.h
MarbleSettings::routeAlphaHighlighted
static int routeAlphaHighlighted()
Get routeAlphaHighlighted.
Definition: settings.h:1260
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::GeoDataFolder
Definition: GeoDataFolder.h:50
Marble::MarbleModel::setClockDateTime
void setClockDateTime(const QDateTime &datetime)
Definition: MarbleModel.cpp:615
Marble::ParseRunnerPlugin::fileExtensions
virtual QStringList fileExtensions() const =0
Returns the file extensions associated with the file format.
GeoDataPlacemark.h
RoutingProfilesWidget.h
Marble::BookmarkManagerDialog
Definition: BookmarkManagerDialog.h:26
Marble::MarbleWidget::animationsEnabled
bool animationsEnabled() const
Retrieve whether travels to a point should get animated.
Definition: MarbleWidget.cpp:1141
EditBookmarkDialog.h
MarbleSettings::proxyAuth
static bool proxyAuth()
Get Proxy requires Authentication.
Definition: settings.h:994
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.
Marble::RoutingProfilesModel::loadDefaultProfiles
void loadDefaultProfiles()
Definition: RoutingProfilesModel.cpp:126
Marble::RenderPlugin::nameId
QString nameId
Definition: RenderPlugin.h:48
MarbleSettings::animationQuality
static int animationQuality()
Get The quality at which an animated map gets painted.
Definition: settings.h:521
MarbleSettings::setActivePositionTrackingPlugin
static void setActivePositionTrackingPlugin(const QString &v)
Set The position tracking plugin used to determine the current location.
Definition: settings.h:1003
ParseRunnerPlugin.h
Marble::RoutingManager
Delegates data retrieval and model updates to the appropriate routing provider.
Definition: RoutingManager.h:37
MarbleSettings::showCitylights
static bool showCitylights()
Get showCitylights.
Definition: settings.h:635
Marble::RoutingProfile::name
QString name
Definition: RoutingProfile.h:25
MarbleSettings::homeLongitude
static double homeLongitude()
Get homeLongitude.
Definition: settings.h:34
TimeControlWidget.h
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
MarbleSettings::speedSlider
static int speedSlider()
Get The speed of marble clock.
Definition: settings.h:331
MarbleClock.h
Marble::MarbleModel::clockDateTime
QDateTime clockDateTime() const
Definition: MarbleModel.cpp:620
MarbleSettings::setQuitRange
static void setQuitRange(double v)
Set quitRange.
Definition: settings.h:119
Marble::MarbleWidget::showSunShading
bool showSunShading
Definition: MarbleWidget.h:123
MarbleSettings::setLockToSubSolarPoint
static void setLockToSubSolarPoint(bool v)
Set lockToSubSolarPoint.
Definition: settings.h:663
ViewportParams.h
This file contains the headers for ViewportParams.
Marble::MarblePluginSettingsWidget::setConfigIcon
void setConfigIcon(const QIcon &icon)
Definition: MarblePluginSettingsWidget.cpp:105
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::MarbleLocale
A class that contains all localization stuff for Marble.
Definition: MarbleLocale.h:31
Marble::GeoDataLookAt
Definition: GeoDataLookAt.h:23
Marble::RoutingProfile::pluginSettings
const QHash< QString, QHash< QString, QVariant > > & pluginSettings() const
Definition: RoutingProfile.cpp:33
Marble::MarblePluginSettingsWidget::setAboutIcon
void setAboutIcon(const QIcon &icon)
Definition: MarblePluginSettingsWidget.cpp:95
MarbleSettings::setAnimationQuality
static void setAnimationQuality(int v)
Set The quality at which an animated map gets painted.
Definition: settings.h:511
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
MarbleSettings::setVolatileTileCacheLimit
static void setVolatileTileCacheLimit(int v)
Set Cache for tiles reserved in the physical memory.
Definition: settings.h:777
MarbleSettings::enableSync
static bool enableSync()
Get enableSync.
Definition: settings.h:1336
Marble::MarblePart::openFile
bool openFile()
Definition: marble_part.cpp:236
GeoDataFolder.h
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
MarbleSettings::setProjection
static void setProjection(int v)
Set projection.
Definition: settings.h:233
Marble::DownloadRegionDialog
Definition: DownloadRegionDialog.h:31
Marble::HttpProxy
Uses an Http proxy.
Definition: MarbleGlobal.h:101
settings.h
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
MarbleSettings::currentRoutingProfile
static int currentRoutingProfile()
Get currentRoutingProfile.
Definition: settings.h:1184
Marble::AngleUnit
AngleUnit
This enum is used to choose the unit chosen to measure angles.
Definition: MarbleGlobal.h:63
Marble::CloudSyncManager::setOwncloudPassword
void setOwncloudPassword(const QString &owncloudPassword)
Setter for ownCloud password.
Definition: CloudSyncManager.cpp:122
MarbleSettings::showTileZoomLevelLabel
static bool showTileZoomLevelLabel()
Get showTileZoomLevelLabel.
Definition: settings.h:1070
MarbleSettings::homeLatitude
static double homeLatitude()
Get homeLatitude.
Definition: settings.h:53
GeoDataLatLonAltBox.h
MarbleSettings::angleUnit
static int angleUnit()
Get The unit chosen to measure angles.
Definition: settings.h:483
Marble::MarbleWidget::showClouds
bool showClouds
Definition: MarbleWidget.h:122
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
MarbleSettings::routeColorStandard
static QColor routeColorStandard()
Get routeColorStandard.
Definition: settings.h:1203
Marble::MapThemeDownloadDialog
Definition: MapThemeDownloadDialog.h:23
Marble::MarbleModel::bookmarkManager
BookmarkManager * bookmarkManager()
return instance of BookmarkManager
Definition: MarbleModel.cpp:206
DownloadRegionDialog.h
MarbleSettings::proxyPass
static QString proxyPass()
Get Password for authorization.
Definition: settings.h:918
Marble::Socks5Proxy
Uses a Socks5Proxy.
Definition: MarbleGlobal.h:102
Marble::MarblePluginSettingsWidget::setModel
void setModel(RenderPluginModel *pluginModel)
Definition: MarblePluginSettingsWidget.cpp:110
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
MarbleSettings::lockToSubSolarPoint
static bool lockToSubSolarPoint()
Get lockToSubSolarPoint.
Definition: settings.h:673
MarbleSettings::showCloudSyncSettings
static bool showCloudSyncSettings()
Get showCloudSyncSettings.
Definition: settings.h:1317
MarbleSettings::externalMapEditor
static int externalMapEditor()
Get The external OpenStreetMap editor application.
Definition: settings.h:768
Marble::MarblePart::controlView
ControlView * controlView() const
Definition: marble_part.cpp:209
Marble::MarbleWidget::mapThemeId
QString mapThemeId
Definition: MarbleWidget.h:111
MarbleSettings::owncloudServer
static QString owncloudServer()
Get owncloudServer.
Definition: settings.h:1412
MarbleSettings::graphicsSystem
static int graphicsSystem()
Get The graphics system that is used by Qt to render the graphics.
Definition: settings.h:540
MarbleSettings::setAnimateTargetVoyage
static void setAnimateTargetVoyage(bool v)
Set Display animation on voyage to target.
Definition: settings.h:739
MarbleSettings::homeZoom
static int homeZoom()
Get homeZoom.
Definition: settings.h:72
RouteRequest.h
Marble::PositionProviderPlugin::newInstance
virtual PositionProviderPlugin * newInstance() const =0
Create a new PositionProvider Plugin and return it.
Marble::MarbleWidget::setShowClouds
void setShowClouds(bool visible)
Set whether the cloud cover is visible.
Definition: MarbleWidget.cpp:922
Marble::MarblePart::createAboutData
static KAboutData * createAboutData()
Definition: marble_part.cpp:214
MarbleSettings::distanceUnit
static int distanceUnit()
Get The unit chosen to measure distances.
Definition: settings.h:464
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::Instant
Change camera position immediately (no interpolation)
Definition: MarbleGlobal.h:171
MarbleSettings::setCurrentRoutingProfile
static void setCurrentRoutingProfile(int v)
Set currentRoutingProfile.
Definition: settings.h:1174
Marble::MarbleWidget::setDefaultFont
void setDefaultFont(const QFont &font)
Definition: MarbleWidget.cpp:1166
Marble::EditBookmarkDialog
Definition: EditBookmarkDialog.h:32
MarbleSettings::setShowBookmarks
static void setShowBookmarks(bool v)
Set showBookmarks.
Definition: settings.h:271
Marble::MarbleWidget::defaultFont
QFont defaultFont() const
Definition: MarbleWidget.cpp:1161
Marble::RenderPlugin::ThemeRenderType
Definition: RenderPlugin.h:64
ControlView.h
MarbleSettings::setStillQuality
static void setStillQuality(int v)
Set The quality at which a still map gets painted.
Definition: settings.h:492
SearchInputWidget.h
MarbleSettings::setShowGuidanceModeStartupWarning
static void setShowGuidanceModeStartupWarning(bool v)
Set showGuidanceModeStartupWarning.
Definition: settings.h:1155
PositionTracking.h
Marble::MarblePart::mapThemeChanged
void mapThemeChanged(const QString &newMapTheme)
Definition: marble_part.cpp:1028
Marble::GeoDataLookAt::coordinates
GeoDataCoordinates coordinates() const
retrieve the lat/lon/alt triple as a GeoDataCoordinates object
Definition: GeoDataLookAt.cpp:96
Marble::GraphicsSystem
GraphicsSystem
This enum is used to choose which graphics system Qt is using.
Definition: MarbleGlobal.h:91
Marble::MarblePart::createInfoBoxesMenu
void createInfoBoxesMenu()
Definition: marble_part.cpp:952
AbstractDataPlugin.h
MarbleSettings::activePositionTrackingPlugin
static QString activePositionTrackingPlugin()
Get The position tracking plugin used to determine the current location.
Definition: settings.h:1013
Marble::RoutingProfilesWidget
Definition: RoutingProfilesWidget.h:24
Marble::MarbleWidget::inputHandler
MarbleWidgetInputHandler * inputHandler() const
Returns the current input handler.
Definition: MarbleWidget.cpp:321
Marble::RenderPlugin::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: RenderPlugin.cpp:183
MarbleSettings::setHomeLongitude
static void setHomeLongitude(double v)
Set homeLongitude.
Definition: settings.h:24
Marble::ControlView
Definition: ControlView.h:45
Marble::MarblePart::createOnlineServicesMenu
void createOnlineServicesMenu()
Definition: marble_part.cpp:968
Marble::ControlView::marbleModel
MarbleModel * marbleModel()
Definition: ControlView.h:60
Marble::MarbleWidget::defaultAngleUnit
AngleUnit defaultAngleUnit() const
Definition: MarbleWidget.cpp:1151
Marble::CloudSyncManager
Definition: CloudSyncManager.h:25
MarbleSettings::setShowAltitudeLabel
static void setShowAltitudeLabel(bool v)
Set showAltitudeLabel.
Definition: settings.h:1041
MarbleSettings::dateTime
static QDateTime dateTime()
Get The date and time of marble clock.
Definition: settings.h:300
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::MarblePart::~MarblePart
virtual ~MarblePart()
Definition: marble_part.cpp:201
Marble::RenderPlugin
The abstract class that creates a renderable item.
Definition: RenderPlugin.h:43
MarbleSettings::routeAlphaAlternative
static int routeAlphaAlternative()
Get routeAlphaAlternative.
Definition: settings.h:1298
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
Marble::BookmarkManager::showBookmarks
bool showBookmarks() const
Definition: BookmarkManager.cpp:154
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:193
BookmarkSyncManager.h
RoutingProfilesModel.h
MarbleSettings::syncBookmarks
static bool syncBookmarks()
Get syncBookmarks.
Definition: settings.h:1374
MarbleSettings::setWmsServers
static void setWmsServers(const QStringList &v)
Set wmsServers.
Definition: settings.h:1117
SunControlWidget.h
Marble::MarblePart::showDateTime
void showDateTime()
Definition: marble_part.cpp:1006
MarbleSettings::subSolarPointIconVisible
static bool subSolarPointIconVisible()
Get subSolarPointIconVisible.
Definition: settings.h:654
Marble::MarbleModel::setClockSpeed
void setClockSpeed(int speed)
Definition: MarbleModel.cpp:630
Marble::MarblePart::createRenderPluginActions
void createRenderPluginActions()
Definition: marble_part.cpp:988
Marble::GeoDataLookAt::setLatitude
void setLatitude(qreal latitude, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the latitude in a GeoDataLookAt object
Definition: GeoDataLookAt.cpp:74
MarbleSettings::setStaticUrlServers
static void setStaticUrlServers(const QStringList &v)
Set staticUrlServers.
Definition: settings.h:1136
Marble::GeoDataLookAt::setCoordinates
void setCoordinates(const GeoDataCoordinates &coordinates)
set the GeoDataCoordinates object
Definition: GeoDataLookAt.cpp:53
MarbleSettings::chosenTimezone
static int chosenTimezone()
Get chosenTimezone.
Definition: settings.h:445
Marble::HttpDownloadManager
This class manages scheduled downloads.
Definition: HttpDownloadManager.h:44
Marble::MarblePart::initializeCustomTimezone
void initializeCustomTimezone()
Definition: marble_part.cpp:1700
MarbleSettings::persistentTileCacheLimit
static int persistentTileCacheLimit()
Get Maximum space on the hard disk that can be used to store tiles.
Definition: settings.h:830
Marble::MarbleWidget::centerLatitude
qreal centerLatitude() const
Return the latitude of the center point.
Definition: MarbleWidget.cpp:771
MarbleSettings::projection
static int projection()
Get projection.
Definition: settings.h:243
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:51 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