File indexing completed on 2024-04-14 03:48:01
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2009 Bastian Holst <bastianholst@gmx.de> 0004 // SPDX-FileCopyrightText: 2012 Mohammed Nafees <nafees.technocool@gmail.com> 0005 // 0006 0007 // Own 0008 #include "QtMarbleConfigDialog.h" 0009 0010 #include "ui_MarbleCacheSettingsWidget.h" 0011 #include "ui_MarbleViewSettingsWidget.h" 0012 #include "ui_MarbleNavigationSettingsWidget.h" 0013 #include "ui_MarbleTimeSettingsWidget.h" 0014 #include "ui_MarbleCloudSyncSettingsWidget.h" 0015 0016 // Qt 0017 #include <QSettings> 0018 #include <QNetworkProxy> 0019 #include <QApplication> 0020 #include <QDialogButtonBox> 0021 #include <QTabWidget> 0022 #include <QVBoxLayout> 0023 #include <QWidget> 0024 #include <QDateTime> 0025 #include <QTimer> 0026 0027 // Marble 0028 #include "MarbleDebug.h" 0029 #include "MarbleDirs.h" 0030 #include "MarblePluginSettingsWidget.h" 0031 #include "MarbleWidget.h" 0032 #include "MarbleModel.h" 0033 #include "RenderPlugin.h" 0034 #include "RenderPluginModel.h" 0035 #include "MarbleClock.h" 0036 #include "routing/RoutingProfilesWidget.h" 0037 #include "BookmarkSyncManager.h" 0038 #include "CloudSyncManager.h" 0039 0040 namespace Marble 0041 { 0042 0043 class QtMarbleConfigDialogPrivate 0044 { 0045 public: 0046 QtMarbleConfigDialogPrivate( MarbleWidget *marbleWidget, CloudSyncManager *cloudSyncManager ) 0047 : ui_viewSettings(), 0048 ui_navigationSettings(), 0049 ui_timeSettings(), 0050 ui_cacheSettings(), 0051 w_pluginSettings( nullptr ), 0052 m_cloudSyncStatusLabel( nullptr ), 0053 m_marbleWidget( marbleWidget ), 0054 m_syncManager( cloudSyncManager ? cloudSyncManager->bookmarkSyncManager() : nullptr ), 0055 m_cloudSyncManager(cloudSyncManager), 0056 m_pluginModel() 0057 { 0058 } 0059 0060 Ui::MarbleViewSettingsWidget ui_viewSettings; 0061 Ui::MarbleNavigationSettingsWidget ui_navigationSettings; 0062 Ui::MarbleTimeSettingsWidget ui_timeSettings; 0063 Ui::MarbleCacheSettingsWidget ui_cacheSettings; 0064 Ui::MarbleCloudSyncSettingsWidget ui_cloudSyncSettings; 0065 MarblePluginSettingsWidget *w_pluginSettings; 0066 0067 QSettings m_settings; 0068 0069 QLabel *m_cloudSyncStatusLabel; 0070 0071 MarbleWidget *const m_marbleWidget; 0072 BookmarkSyncManager *const m_syncManager; 0073 CloudSyncManager *const m_cloudSyncManager; 0074 0075 RenderPluginModel m_pluginModel; 0076 0077 QHash< int, int > m_timezone; 0078 }; 0079 0080 QtMarbleConfigDialog::QtMarbleConfigDialog(MarbleWidget *marbleWidget, CloudSyncManager *cloudSyncManager, 0081 QWidget *parent ) 0082 : QDialog( parent ), 0083 d( new QtMarbleConfigDialogPrivate( marbleWidget, cloudSyncManager ) ) 0084 { 0085 QTabWidget *tabWidget = new QTabWidget( this ); 0086 QDialogButtonBox *buttons = 0087 new QDialogButtonBox( QDialogButtonBox::Ok 0088 | QDialogButtonBox::Apply 0089 | QDialogButtonBox::Cancel, 0090 Qt::Horizontal, 0091 this ); 0092 0093 // Connect the signals of the ButtonBox 0094 // to the corresponding slots of the dialog. 0095 connect( buttons, SIGNAL(accepted()), this, SLOT(accept()) ); // Ok 0096 connect( buttons, SIGNAL(rejected()), this, SLOT(reject()) ); // Cancel 0097 connect( buttons->button( QDialogButtonBox::Apply ),SIGNAL(clicked()), 0098 this, SLOT(writeSettings()) ); // Apply 0099 // If the dialog is accepted. Save the settings. 0100 connect( this, SIGNAL(accepted()), this, SLOT(writeSettings()) ); 0101 0102 // view page 0103 QWidget *w_viewSettings = new QWidget( this ); 0104 0105 d->ui_viewSettings.setupUi( w_viewSettings ); 0106 tabWidget->addTab( w_viewSettings, tr( "View" ) ); 0107 0108 d->ui_viewSettings.kcfg_labelLocalization->hide(); 0109 d->ui_viewSettings.label_labelLocalization->hide(); 0110 0111 // navigation page 0112 QWidget *w_navigationSettings = new QWidget( this ); 0113 0114 d->ui_navigationSettings.setupUi( w_navigationSettings ); 0115 tabWidget->addTab( w_navigationSettings, tr( "Navigation" ) ); 0116 d->ui_navigationSettings.kcfg_dragLocation->hide(); 0117 d->ui_navigationSettings.label_dragLocation->hide(); 0118 0119 // cache page 0120 QWidget *w_cacheSettings = new QWidget( this ); 0121 0122 d->ui_cacheSettings.setupUi( w_cacheSettings ); 0123 tabWidget->addTab( w_cacheSettings, tr( "Cache and Proxy" ) ); 0124 // Forwarding clear button signals 0125 connect( d->ui_cacheSettings.button_clearVolatileCache, SIGNAL(clicked()), SIGNAL(clearVolatileCacheClicked()) ); 0126 connect( d->ui_cacheSettings.button_clearPersistentCache, SIGNAL(clicked()), SIGNAL(clearPersistentCacheClicked()) ); 0127 0128 // time page 0129 QWidget *w_timeSettings = new QWidget( this ); 0130 d->ui_timeSettings.setupUi( w_timeSettings ); 0131 tabWidget->addTab( w_timeSettings, tr( "Date and Time" ) ); 0132 0133 // routing page 0134 QWidget *w_routingSettings = new RoutingProfilesWidget( marbleWidget->model() ); 0135 tabWidget->addTab( w_routingSettings, tr( "Routing" ) ); 0136 0137 // plugin page 0138 d->m_pluginModel.setRenderPlugins( d->m_marbleWidget->renderPlugins() ); 0139 d->w_pluginSettings = new MarblePluginSettingsWidget( this ); 0140 d->w_pluginSettings->setModel( &d->m_pluginModel ); 0141 d->w_pluginSettings->setObjectName( "plugin_page" ); 0142 tabWidget->addTab( d->w_pluginSettings, tr( "Plugins" ) ); 0143 0144 // Setting the icons for the plugin dialog. 0145 d->w_pluginSettings->setAboutIcon(QIcon(QStringLiteral(":/icons/help-about.png"))); 0146 d->w_pluginSettings->setConfigIcon(QIcon(QStringLiteral(":/icons/settings-configure.png"))); 0147 0148 connect( this, SIGNAL(rejected()), &d->m_pluginModel, SLOT(retrievePluginState()) ); 0149 connect( this, SIGNAL(accepted()), &d->m_pluginModel, SLOT(applyPluginState()) ); 0150 0151 QWidget *w_cloudSyncSettings = new QWidget( this ); 0152 d->ui_cloudSyncSettings.setupUi( w_cloudSyncSettings ); 0153 tabWidget->addTab( w_cloudSyncSettings, tr( "Synchronization" ) ); 0154 d->ui_cloudSyncSettings.button_syncNow->setEnabled( syncBookmarks() ); 0155 d->m_cloudSyncStatusLabel = d->ui_cloudSyncSettings.cloudSyncStatus; 0156 connect( d->ui_cloudSyncSettings.button_syncNow, SIGNAL(clicked()), SIGNAL(syncNowClicked()) ); 0157 connect( d->ui_cloudSyncSettings.testLoginButton, SIGNAL(clicked()), this, SLOT(updateCloudSyncCredentials()) ); 0158 0159 if ( d->m_syncManager ) { 0160 connect(d->m_syncManager, SIGNAL(syncComplete()), this, SLOT(updateLastSync())); 0161 updateLastSync(); 0162 } 0163 if ( d->m_cloudSyncManager ) { 0164 connect( d->m_cloudSyncManager, SIGNAL(statusChanged(QString)), 0165 this, SLOT(updateCloudSyncStatus(QString))); 0166 } 0167 0168 // Layout 0169 QVBoxLayout *layout = new QVBoxLayout( this ); 0170 layout->addWidget( tabWidget ); 0171 layout->addWidget( buttons ); 0172 0173 this->setLayout( layout ); 0174 0175 // When the settings have been changed, write to disk. 0176 connect( this, SIGNAL(settingsChanged()), this, SLOT(syncSettings()) ); 0177 0178 initializeCustomTimezone(); 0179 } 0180 0181 QtMarbleConfigDialog::~QtMarbleConfigDialog() 0182 { 0183 delete d; 0184 } 0185 0186 void QtMarbleConfigDialog::syncSettings() 0187 { 0188 d->m_settings.sync(); 0189 0190 QNetworkProxy proxy; 0191 0192 // Make sure that no proxy is used for an empty string or the default value: 0193 if (proxyUrl().isEmpty() || proxyUrl() == QLatin1String("http://")) { 0194 proxy.setType( QNetworkProxy::NoProxy ); 0195 } else { 0196 if ( proxyType() == Marble::Socks5Proxy ) { 0197 proxy.setType( QNetworkProxy::Socks5Proxy ); 0198 } 0199 else if ( proxyType() == Marble::HttpProxy ) { 0200 proxy.setType( QNetworkProxy::HttpProxy ); 0201 } 0202 else { 0203 mDebug() << "Unknown proxy type! Using Http Proxy instead."; 0204 proxy.setType( QNetworkProxy::HttpProxy ); 0205 } 0206 } 0207 0208 proxy.setHostName( proxyUrl() ); 0209 proxy.setPort( proxyPort() ); 0210 0211 if ( proxyAuth() ) { 0212 proxy.setUser( proxyUser() ); 0213 proxy.setPassword( proxyPass() ); 0214 } 0215 0216 QNetworkProxy::setApplicationProxy(proxy); 0217 } 0218 0219 void QtMarbleConfigDialog::updateCloudSyncCredentials() 0220 { 0221 if ( d->m_cloudSyncManager ) { 0222 d->m_cloudSyncManager->setOwncloudCredentials( 0223 d->ui_cloudSyncSettings.kcfg_owncloudServer->text(), 0224 d->ui_cloudSyncSettings.kcfg_owncloudUsername->text(), 0225 d->ui_cloudSyncSettings.kcfg_owncloudPassword->text() ); 0226 } 0227 } 0228 0229 void QtMarbleConfigDialog::disableSyncNow() 0230 { 0231 if ( !d->m_syncManager ) { 0232 return; 0233 } 0234 0235 d->ui_cloudSyncSettings.button_syncNow->setDisabled(true); 0236 0237 QTimer *timeoutTimer = new QTimer(this); 0238 connect(timeoutTimer, SIGNAL(timeout()), 0239 timeoutTimer, SLOT(stop())); 0240 connect(timeoutTimer, SIGNAL(timeout()), 0241 this, SLOT(enableSyncNow())); 0242 0243 connect(d->m_syncManager, SIGNAL(syncComplete()), 0244 this, SLOT(enableSyncNow())); 0245 connect(d->m_syncManager, SIGNAL(syncComplete()), 0246 timeoutTimer, SLOT(stop())); 0247 connect(d->m_syncManager, SIGNAL(syncComplete()), 0248 timeoutTimer, SLOT(deleteLater())); 0249 0250 timeoutTimer->start(30*1000); // 30 sec 0251 } 0252 0253 void QtMarbleConfigDialog::enableSyncNow() 0254 { 0255 if ( !d->m_syncManager ) { 0256 return; 0257 } 0258 0259 d->ui_cloudSyncSettings.button_syncNow->setEnabled(true); 0260 } 0261 0262 void QtMarbleConfigDialog::updateLastSync() 0263 { 0264 if ( !d->m_syncManager ) { 0265 return; 0266 } 0267 0268 if (!d->m_syncManager->lastSync().isValid()) { 0269 d->ui_cloudSyncSettings.labelLastSync->setText(tr("Never synchronized.")); 0270 return; 0271 } 0272 0273 const QString title = tr("Last synchronization: %1") 0274 .arg(d->m_syncManager->lastSync().toString()); 0275 0276 d->ui_cloudSyncSettings.labelLastSync->setText(title); 0277 } 0278 0279 void QtMarbleConfigDialog::readSettings() 0280 { 0281 // Sync settings to make sure that we read the current settings. 0282 syncSettings(); 0283 0284 // View 0285 d->ui_viewSettings.kcfg_distanceUnit->setCurrentIndex( measurementSystem() ); 0286 d->ui_viewSettings.kcfg_angleUnit->setCurrentIndex( angleUnit() ); 0287 d->ui_viewSettings.kcfg_stillQuality->setCurrentIndex( stillQuality() ); 0288 d->ui_viewSettings.kcfg_animationQuality->setCurrentIndex( animationQuality() ); 0289 d->ui_viewSettings.kcfg_labelLocalization->setCurrentIndex( Marble::Native ); 0290 d->ui_viewSettings.kcfg_mapFont->setCurrentFont( mapFont() ); 0291 0292 // Navigation 0293 d->ui_navigationSettings.kcfg_dragLocation->setCurrentIndex( Marble::KeepAxisVertically ); 0294 d->ui_navigationSettings.kcfg_onStartup->setCurrentIndex( onStartup() ); 0295 d->ui_navigationSettings.kcfg_inertialEarthRotation->setChecked( inertialEarthRotation() ); 0296 d->ui_navigationSettings.kcfg_mouseViewRotation->setChecked( mouseViewRotation() ); 0297 d->ui_navigationSettings.kcfg_animateTargetVoyage->setChecked( animateTargetVoyage() ); 0298 int editorIndex = 0; 0299 if (externalMapEditor() == QLatin1String("potlatch")) { 0300 editorIndex = 1; 0301 } else if (externalMapEditor() == QLatin1String("josm")) { 0302 editorIndex = 2; 0303 } else if (externalMapEditor() == QLatin1String("merkaartor")) { 0304 editorIndex = 3; 0305 } 0306 d->ui_navigationSettings.kcfg_externalMapEditor->setCurrentIndex( editorIndex ); 0307 0308 // Cache 0309 d->ui_cacheSettings.kcfg_volatileTileCacheLimit->setValue( volatileTileCacheLimit() ); 0310 d->ui_cacheSettings.kcfg_persistentTileCacheLimit->setValue( persistentTileCacheLimit() ); 0311 d->ui_cacheSettings.kcfg_proxyUrl->setText( proxyUrl() ); 0312 d->ui_cacheSettings.kcfg_proxyPort->setValue( proxyPort() ); 0313 d->ui_cacheSettings.kcfg_proxyUser->setText( proxyUser() ); 0314 d->ui_cacheSettings.kcfg_proxyPass->setText( proxyPass() ); 0315 d->ui_cacheSettings.kcfg_proxyType->setCurrentIndex( proxyType() ); 0316 d->ui_cacheSettings.kcfg_proxyAuth->setChecked( proxyAuth() ); 0317 0318 // Time 0319 d->ui_timeSettings.kcfg_systemTimezone->setChecked( systemTimezone() ); 0320 d->ui_timeSettings.kcfg_customTimezone->setChecked( customTimezone() ); 0321 d->ui_timeSettings.kcfg_chosenTimezone->setCurrentIndex( chosenTimezone() ); 0322 d->ui_timeSettings.kcfg_utc->setChecked( UTC() ); 0323 d->ui_timeSettings.kcfg_systemTime->setChecked( systemTime() ); 0324 d->ui_timeSettings.kcfg_lastSessionTime->setChecked( lastSessionTime() ); 0325 if( systemTimezone() == true ) 0326 { 0327 QDateTime localTime = QDateTime::currentDateTime().toLocalTime(); 0328 localTime.setTimeSpec( Qt::UTC ); 0329 d->m_marbleWidget->model()->setClockTimezone( QDateTime::currentDateTime().toUTC().secsTo( localTime ) ); 0330 } 0331 else if( UTC() == true ) 0332 { 0333 d->m_marbleWidget->model()->setClockTimezone( 0 ); 0334 } 0335 else if( customTimezone() == true ) 0336 { 0337 d->m_marbleWidget->model()->setClockTimezone( d->m_timezone.value( chosenTimezone() ) ); 0338 } 0339 0340 // Routing 0341 0342 // ownCloud 0343 d->ui_cloudSyncSettings.kcfg_enableSync->setChecked( syncEnabled() ); 0344 d->ui_cloudSyncSettings.kcfg_syncBookmarks->setChecked( syncBookmarks() ); 0345 d->ui_cloudSyncSettings.kcfg_syncRoutes->setChecked( syncRoutes() ); 0346 d->ui_cloudSyncSettings.kcfg_owncloudServer->setText( owncloudServer() ); 0347 d->ui_cloudSyncSettings.kcfg_owncloudUsername->setText( owncloudUsername() ); 0348 d->ui_cloudSyncSettings.kcfg_owncloudPassword->setText( owncloudPassword() ); 0349 0350 // Read the settings of the plugins 0351 d->m_marbleWidget->readPluginSettings( d->m_settings ); 0352 0353 // The settings loaded in the config dialog have been changed. 0354 emit settingsChanged(); 0355 } 0356 0357 void QtMarbleConfigDialog::updateCloudSyncStatus( const QString &status ) 0358 { 0359 d->m_cloudSyncStatusLabel->setText(status); 0360 CloudSyncManager::Status status_type = 0361 d->m_cloudSyncManager ? d->m_cloudSyncManager->status() : CloudSyncManager::Unknown; 0362 switch (status_type) { 0363 case CloudSyncManager::Success: 0364 d->m_cloudSyncStatusLabel->setStyleSheet("QLabel { color : green; }"); 0365 break; 0366 case CloudSyncManager::Error: 0367 d->m_cloudSyncStatusLabel->setStyleSheet("QLabel { color : red; }"); 0368 break; 0369 case CloudSyncManager::Unknown: 0370 d->m_cloudSyncStatusLabel->setStyleSheet("QLabel { color : grey; }"); 0371 break; 0372 } 0373 } 0374 0375 void QtMarbleConfigDialog::writeSettings() 0376 { 0377 syncSettings(); 0378 0379 d->m_settings.beginGroup( "View" ); 0380 d->m_settings.setValue( "distanceUnit", d->ui_viewSettings.kcfg_distanceUnit->currentIndex() ); 0381 d->m_settings.setValue( "angleUnit", d->ui_viewSettings.kcfg_angleUnit->currentIndex() ); 0382 d->m_settings.setValue( "stillQuality", d->ui_viewSettings.kcfg_stillQuality->currentIndex() ); 0383 d->m_settings.setValue( "animationQuality", d->ui_viewSettings.kcfg_animationQuality->currentIndex() ); 0384 d->m_settings.setValue( "mapFont", d->ui_viewSettings.kcfg_mapFont->currentFont() ); 0385 d->m_settings.endGroup(); 0386 0387 d->m_settings.beginGroup( "Navigation" ); 0388 d->m_settings.setValue( "onStartup", d->ui_navigationSettings.kcfg_onStartup->currentIndex() ); 0389 d->m_settings.setValue( "inertialEarthRotation", d->ui_navigationSettings.kcfg_inertialEarthRotation->isChecked() ); 0390 d->m_settings.setValue( "mouseViewRotation", d->ui_navigationSettings.kcfg_mouseViewRotation->isChecked() ); 0391 d->m_settings.setValue( "animateTargetVoyage", d->ui_navigationSettings.kcfg_animateTargetVoyage->isChecked() ); 0392 if( d->ui_navigationSettings.kcfg_externalMapEditor->currentIndex() == 0 ) { 0393 d->m_settings.setValue( "externalMapEditor", "" ); 0394 } else if( d->ui_navigationSettings.kcfg_externalMapEditor->currentIndex() == 1 ) { 0395 d->m_settings.setValue( "externalMapEditor", "potlatch" ); 0396 } else if( d->ui_navigationSettings.kcfg_externalMapEditor->currentIndex() == 2 ) { 0397 d->m_settings.setValue( "externalMapEditor", "josm" ); 0398 } else if( d->ui_navigationSettings.kcfg_externalMapEditor->currentIndex() == 3 ) { 0399 d->m_settings.setValue( "externalMapEditor", "merkaartor" ); 0400 } else { 0401 Q_ASSERT( false && "Unexpected index of the external editor setting" ); 0402 } 0403 d->m_settings.endGroup(); 0404 0405 d->m_settings.beginGroup( "Cache" ); 0406 d->m_settings.setValue( "volatileTileCacheLimit", d->ui_cacheSettings.kcfg_volatileTileCacheLimit->value() ); 0407 d->m_settings.setValue( "persistentTileCacheLimit", d->ui_cacheSettings.kcfg_persistentTileCacheLimit->value() ); 0408 d->m_settings.setValue( "proxyUrl", d->ui_cacheSettings.kcfg_proxyUrl->text() ); 0409 d->m_settings.setValue( "proxyPort", d->ui_cacheSettings.kcfg_proxyPort->value() ); 0410 d->m_settings.setValue( "proxyType", d->ui_cacheSettings.kcfg_proxyType->currentIndex() ); 0411 if ( d->ui_cacheSettings.kcfg_proxyAuth->isChecked() ) { 0412 d->m_settings.setValue( "proxyAuth", true ); 0413 d->m_settings.setValue( "proxyUser", d->ui_cacheSettings.kcfg_proxyUser->text() ); 0414 d->m_settings.setValue( "proxyPass", d->ui_cacheSettings.kcfg_proxyPass->text() ); 0415 } else { 0416 d->m_settings.setValue( "proxyAuth", false ); 0417 } 0418 d->m_settings.endGroup(); 0419 0420 d->m_settings.beginGroup( "Time" ); 0421 d->m_settings.setValue( "systemTimezone", d->ui_timeSettings.kcfg_systemTimezone->isChecked() ); 0422 d->m_settings.setValue( "UTC", d->ui_timeSettings.kcfg_utc->isChecked() ); 0423 d->m_settings.setValue( "customTimezone", d->ui_timeSettings.kcfg_customTimezone->isChecked() ); 0424 d->m_settings.setValue( "systemTime", d->ui_timeSettings.kcfg_systemTime->isChecked() ); 0425 d->m_settings.setValue( "lastSessionTime", d->ui_timeSettings.kcfg_lastSessionTime->isChecked() ); 0426 d->m_settings.setValue( "chosenTimezone", d->ui_timeSettings.kcfg_chosenTimezone->currentIndex() ); 0427 d->m_settings.endGroup(); 0428 0429 d->m_settings.beginGroup( "CloudSync" ); 0430 d->m_settings.setValue( "enableSync", d->ui_cloudSyncSettings.kcfg_enableSync->isChecked() ); 0431 d->m_settings.setValue( "syncBackend", "owncloud" ); 0432 d->m_settings.setValue( "syncBookmarks", d->ui_cloudSyncSettings.kcfg_syncBookmarks->isChecked() ); 0433 d->m_settings.setValue( "syncRoutes", d->ui_cloudSyncSettings.kcfg_syncRoutes->isChecked() ); 0434 d->m_settings.setValue( "owncloudServer", d->ui_cloudSyncSettings.kcfg_owncloudServer->text() ); 0435 d->m_settings.setValue( "owncloudUsername", d->ui_cloudSyncSettings.kcfg_owncloudUsername->text() ); 0436 d->m_settings.setValue( "owncloudPassword", d->ui_cloudSyncSettings.kcfg_owncloudPassword->text() ); 0437 d->m_settings.endGroup(); 0438 0439 // Plugins 0440 d->m_marbleWidget->writePluginSettings( d->m_settings ); 0441 0442 emit settingsChanged(); 0443 } 0444 0445 MarbleLocale::MeasurementSystem QtMarbleConfigDialog::measurementSystem() const 0446 { 0447 if( d->m_settings.contains( "View/distanceUnit" ) ) { 0448 return (MarbleLocale::MeasurementSystem)d->m_settings.value( "View/distanceUnit" ).toInt(); 0449 } 0450 0451 MarbleLocale *locale = MarbleGlobal::getInstance()->locale(); 0452 return locale->measurementSystem(); 0453 } 0454 0455 Marble::AngleUnit QtMarbleConfigDialog::angleUnit() const 0456 { 0457 return (Marble::AngleUnit) d->m_settings.value( "View/angleUnit", Marble::DMSDegree ).toInt(); 0458 } 0459 0460 void QtMarbleConfigDialog::setAngleUnit(Marble::AngleUnit unit) 0461 { 0462 d->m_settings.setValue( "View/angleUnit", (int)unit ); 0463 d->ui_viewSettings.kcfg_angleUnit->setCurrentIndex( angleUnit() ); 0464 emit settingsChanged(); 0465 } 0466 0467 Marble::MapQuality QtMarbleConfigDialog::stillQuality() const 0468 { 0469 return (Marble::MapQuality) d->m_settings.value( "View/stillQuality", 0470 Marble::HighQuality ).toInt(); 0471 } 0472 0473 Marble::MapQuality QtMarbleConfigDialog::animationQuality() const 0474 { 0475 return (Marble::MapQuality) d->m_settings.value( "View/animationQuality", 0476 Marble::LowQuality ).toInt(); 0477 } 0478 0479 QFont QtMarbleConfigDialog::mapFont() const 0480 { 0481 return d->m_settings.value( "View/mapFont", QApplication::font() ).value<QFont>(); 0482 } 0483 0484 int QtMarbleConfigDialog::onStartup() const 0485 { 0486 bool smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen; 0487 int defaultValue = smallScreen ? Marble::LastLocationVisited : Marble::ShowHomeLocation; 0488 return d->m_settings.value( "Navigation/onStartup", defaultValue ).toInt(); 0489 } 0490 0491 QString QtMarbleConfigDialog::externalMapEditor() const 0492 { 0493 return d->m_settings.value( "Navigation/externalMapEditor", "" ).toString(); 0494 } 0495 0496 bool QtMarbleConfigDialog::animateTargetVoyage() const 0497 { 0498 const bool smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen; 0499 return d->m_settings.value( "Navigation/animateTargetVoyage", smallScreen ).toBool(); 0500 } 0501 0502 bool QtMarbleConfigDialog::inertialEarthRotation() const 0503 { 0504 return d->m_settings.value( "Navigation/inertialEarthRotation", true ).toBool(); 0505 } 0506 0507 bool QtMarbleConfigDialog::mouseViewRotation() const 0508 { 0509 return d->m_settings.value( "Navigation/mouseViewRotation", true ).toBool(); 0510 } 0511 0512 int QtMarbleConfigDialog::volatileTileCacheLimit() const 0513 { 0514 int defaultValue = (MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen) ? 6 : 100; 0515 return d->m_settings.value( "Cache/volatileTileCacheLimit", defaultValue ).toInt(); 0516 } 0517 0518 int QtMarbleConfigDialog::persistentTileCacheLimit() const 0519 { 0520 return d->m_settings.value( "Cache/persistentTileCacheLimit", 0 ).toInt(); // default to unlimited 0521 } 0522 0523 QString QtMarbleConfigDialog::proxyUrl() const 0524 { 0525 return d->m_settings.value( "Cache/proxyUrl", "" ).toString(); 0526 } 0527 0528 int QtMarbleConfigDialog::proxyPort() const 0529 { 0530 return d->m_settings.value( "Cache/proxyPort", 8080 ).toInt(); 0531 } 0532 0533 QString QtMarbleConfigDialog::proxyUser() const 0534 { 0535 return d->m_settings.value( "Cache/proxyUser", "" ).toString(); 0536 } 0537 0538 QString QtMarbleConfigDialog::proxyPass() const 0539 { 0540 return d->m_settings.value( "Cache/proxyPass", "" ).toString(); 0541 } 0542 0543 bool QtMarbleConfigDialog::proxyType() const 0544 { 0545 return d->m_settings.value( "Cache/proxyType", Marble::HttpProxy ).toInt(); 0546 } 0547 0548 bool QtMarbleConfigDialog::proxyAuth() const 0549 { 0550 return d->m_settings.value( "Cache/proxyAuth", false ).toBool(); 0551 } 0552 0553 bool QtMarbleConfigDialog::systemTimezone() const 0554 { 0555 return d->m_settings.value( "Time/systemTimezone", true ).toBool(); 0556 } 0557 0558 bool QtMarbleConfigDialog::customTimezone() const 0559 { 0560 return d->m_settings.value( "Time/customTimezone", false ).toBool(); 0561 } 0562 0563 bool QtMarbleConfigDialog::UTC() const 0564 { 0565 return d->m_settings.value( "Time/UTC", false ).toBool(); 0566 } 0567 0568 bool QtMarbleConfigDialog::systemTime() const 0569 { 0570 return d->m_settings.value( "Time/systemTime", true ).toBool(); 0571 } 0572 0573 bool QtMarbleConfigDialog::lastSessionTime() const 0574 { 0575 return d->m_settings.value( "Time/lastSessionTime", false ).toBool(); 0576 } 0577 0578 int QtMarbleConfigDialog::chosenTimezone() const 0579 { 0580 return d->m_settings.value( "Time/chosenTimezone", 0 ).toInt(); 0581 } 0582 0583 void QtMarbleConfigDialog::initializeCustomTimezone() 0584 { 0585 if( d->m_timezone.count() == 0) 0586 { 0587 d->m_timezone.insert( 0, 0 ); 0588 d->m_timezone.insert( 1, 3600 ); 0589 d->m_timezone.insert( 2, 7200 ); 0590 d->m_timezone.insert( 3, 7200 ); 0591 d->m_timezone.insert( 4, 10800 ); 0592 d->m_timezone.insert( 5, 12600 ); 0593 d->m_timezone.insert( 6, 14400 ); 0594 d->m_timezone.insert( 7, 18000 ); 0595 d->m_timezone.insert( 8, 19800 ); 0596 d->m_timezone.insert( 9, 21600 ); 0597 d->m_timezone.insert( 10, 25200 ); 0598 d->m_timezone.insert( 11, 28800 ); 0599 d->m_timezone.insert( 12, 32400 ); 0600 d->m_timezone.insert( 13, 34200 ); 0601 d->m_timezone.insert( 14, 36000 ); 0602 d->m_timezone.insert( 15, 39600 ); 0603 d->m_timezone.insert( 16, 43200 ); 0604 d->m_timezone.insert( 17, -39600 ); 0605 d->m_timezone.insert( 18, -36000 ); 0606 d->m_timezone.insert( 19, -32400 ); 0607 d->m_timezone.insert( 20, -28800 ); 0608 d->m_timezone.insert( 21, -25200 ); 0609 d->m_timezone.insert( 22, -25200 ); 0610 d->m_timezone.insert( 23, -21600 ); 0611 d->m_timezone.insert( 24, -18000 ); 0612 d->m_timezone.insert( 25, -18000 ); 0613 d->m_timezone.insert( 26, -14400 ); 0614 d->m_timezone.insert( 27, -12600 ); 0615 d->m_timezone.insert( 28, -10800 ); 0616 d->m_timezone.insert( 29, -10800 ); 0617 d->m_timezone.insert( 30, -3600 ); 0618 } 0619 } 0620 0621 bool QtMarbleConfigDialog::syncEnabled() const 0622 { 0623 return d->m_settings.value( "CloudSync/enableSync", false ).toBool(); 0624 } 0625 0626 QString QtMarbleConfigDialog::syncBackend() const 0627 { 0628 return d->m_settings.value( "CloudSync/syncBackend", "" ).toString(); 0629 } 0630 0631 bool QtMarbleConfigDialog::syncBookmarks() const 0632 { 0633 return d->m_settings.value( "CloudSync/syncBookmarks", true ).toBool(); 0634 } 0635 0636 bool QtMarbleConfigDialog::syncRoutes() const 0637 { 0638 return d->m_settings.value( "CloudSync/syncRoutes", true ).toBool(); 0639 } 0640 0641 QString QtMarbleConfigDialog::owncloudServer() const 0642 { 0643 return d->m_settings.value( "CloudSync/owncloudServer", "" ).toString(); 0644 } 0645 0646 QString QtMarbleConfigDialog::owncloudUsername() const 0647 { 0648 return d->m_settings.value( "CloudSync/owncloudUsername", "" ).toString(); 0649 } 0650 0651 QString QtMarbleConfigDialog::owncloudPassword() const 0652 { 0653 return d->m_settings.value( "CloudSync/owncloudPassword", "" ).toString(); 0654 } 0655 0656 } 0657 0658 #include "moc_QtMarbleConfigDialog.cpp"