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

marble

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

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal