// This file is generated by kconfig_compiler_kf6 from marble.kcfg.
// All changes you do to this file will be lost.
#ifndef MARBLESETTINGS_H
#define MARBLESETTINGS_H

#include <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

#include "../../lib/marble/MarbleGlobal.h"
#include "../../lib/marble/MarbleColors.h"
#include <QtCore/QDir>
#include <QtCore/QLocale>
#include <QFontDatabase>

class MarbleSettings : public KConfigSkeleton
{
  public:

    static MarbleSettings *self();
    ~MarbleSettings() override;

    /**
      Set homeLongitude
    */
    static
    void setHomeLongitude( double v )
    {
      if (!self()->isHomeLongitudeImmutable())
        self()->mHomeLongitude = v;
    }

    /**
      Get homeLongitude
    */
    static
    double homeLongitude()
    {
      return self()->mHomeLongitude;
    }

    /**
      Is homeLongitude Immutable
    */
    static
    bool isHomeLongitudeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "homeLongitude" ) );
    }

    /**
      Set homeLatitude
    */
    static
    void setHomeLatitude( double v )
    {
      if (!self()->isHomeLatitudeImmutable())
        self()->mHomeLatitude = v;
    }

    /**
      Get homeLatitude
    */
    static
    double homeLatitude()
    {
      return self()->mHomeLatitude;
    }

    /**
      Is homeLatitude Immutable
    */
    static
    bool isHomeLatitudeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "homeLatitude" ) );
    }

    /**
      Set homeZoom
    */
    static
    void setHomeZoom( int v )
    {
      if (!self()->isHomeZoomImmutable())
        self()->mHomeZoom = v;
    }

    /**
      Get homeZoom
    */
    static
    int homeZoom()
    {
      return self()->mHomeZoom;
    }

    /**
      Is homeZoom Immutable
    */
    static
    bool isHomeZoomImmutable()
    {
      return self()->isImmutable( QStringLiteral( "homeZoom" ) );
    }

    /**
      Set quitLongitude
    */
    static
    void setQuitLongitude( double v )
    {
      if (!self()->isQuitLongitudeImmutable())
        self()->mQuitLongitude = v;
    }

    /**
      Get quitLongitude
    */
    static
    double quitLongitude()
    {
      return self()->mQuitLongitude;
    }

    /**
      Is quitLongitude Immutable
    */
    static
    bool isQuitLongitudeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "quitLongitude" ) );
    }

    /**
      Set quitLatitude
    */
    static
    void setQuitLatitude( double v )
    {
      if (!self()->isQuitLatitudeImmutable())
        self()->mQuitLatitude = v;
    }

    /**
      Get quitLatitude
    */
    static
    double quitLatitude()
    {
      return self()->mQuitLatitude;
    }

    /**
      Is quitLatitude Immutable
    */
    static
    bool isQuitLatitudeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "quitLatitude" ) );
    }

    /**
      Set quitRange
    */
    static
    void setQuitRange( double v )
    {
      if (!self()->isQuitRangeImmutable())
        self()->mQuitRange = v;
    }

    /**
      Get quitRange
    */
    static
    double quitRange()
    {
      return self()->mQuitRange;
    }

    /**
      Is quitRange Immutable
    */
    static
    bool isQuitRangeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "quitRange" ) );
    }

    /**
      Set mapTheme
    */
    static
    void setMapTheme( const QString & v )
    {
      if (!self()->isMapThemeImmutable())
        self()->mMapTheme = v;
    }

    /**
      Get mapTheme
    */
    static
    QString mapTheme()
    {
      return self()->mMapTheme;
    }

    /**
      Is mapTheme Immutable
    */
    static
    bool isMapThemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "mapTheme" ) );
    }

    /**
      Set showClouds
    */
    static
    void setShowClouds( bool v )
    {
      if (!self()->isShowCloudsImmutable())
        self()->mShowClouds = v;
    }

    /**
      Get showClouds
    */
    static
    bool showClouds()
    {
      return self()->mShowClouds;
    }

    /**
      Is showClouds Immutable
    */
    static
    bool isShowCloudsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showClouds" ) );
    }

    /**
      Set workOffline
    */
    static
    void setWorkOffline( bool v )
    {
      if (!self()->isWorkOfflineImmutable())
        self()->mWorkOffline = v;
    }

    /**
      Get workOffline
    */
    static
    bool workOffline()
    {
      return self()->mWorkOffline;
    }

    /**
      Is workOffline Immutable
    */
    static
    bool isWorkOfflineImmutable()
    {
      return self()->isImmutable( QStringLiteral( "workOffline" ) );
    }

    /**
      Set showCurrentLocation
    */
    static
    void setShowCurrentLocation( bool v )
    {
      if (!self()->isShowCurrentLocationImmutable())
        self()->mShowCurrentLocation = v;
    }

    /**
      Get showCurrentLocation
    */
    static
    bool showCurrentLocation()
    {
      return self()->mShowCurrentLocation;
    }

    /**
      Is showCurrentLocation Immutable
    */
    static
    bool isShowCurrentLocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showCurrentLocation" ) );
    }

    /**
      Set lockFloatItemPositions
    */
    static
    void setLockFloatItemPositions( bool v )
    {
      if (!self()->isLockFloatItemPositionsImmutable())
        self()->mLockFloatItemPositions = v;
    }

    /**
      Get lockFloatItemPositions
    */
    static
    bool lockFloatItemPositions()
    {
      return self()->mLockFloatItemPositions;
    }

    /**
      Is lockFloatItemPositions Immutable
    */
    static
    bool isLockFloatItemPositionsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lockFloatItemPositions" ) );
    }

    /**
      Set projection
    */
    static
    void setProjection( int v )
    {
      if (!self()->isProjectionImmutable())
        self()->mProjection = v;
    }

    /**
      Get projection
    */
    static
    int projection()
    {
      return self()->mProjection;
    }

    /**
      Is projection Immutable
    */
    static
    bool isProjectionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "projection" ) );
    }

    /**
      Set marbleDataPath
    */
    static
    void setMarbleDataPath( const QString & v )
    {
      if (!self()->isMarbleDataPathImmutable())
        self()->mMarbleDataPath = v;
    }

    /**
      Get marbleDataPath
    */
    static
    QString marbleDataPath()
    {
      return self()->mMarbleDataPath;
    }

    /**
      Is marbleDataPath Immutable
    */
    static
    bool isMarbleDataPathImmutable()
    {
      return self()->isImmutable( QStringLiteral( "marbleDataPath" ) );
    }

    /**
      Set showBookmarks
    */
    static
    void setShowBookmarks( bool v )
    {
      if (!self()->isShowBookmarksImmutable())
        self()->mShowBookmarks = v;
    }

    /**
      Get showBookmarks
    */
    static
    bool showBookmarks()
    {
      return self()->mShowBookmarks;
    }

    /**
      Is showBookmarks Immutable
    */
    static
    bool isShowBookmarksImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showBookmarks" ) );
    }

    /**
      Set The date and time of marble clock
    */
    static
    void setDateTime( const QDateTime & v )
    {
      if (!self()->isDateTimeImmutable())
        self()->mDateTime = v;
    }

    /**
      Get The date and time of marble clock
    */
    static
    QDateTime dateTime()
    {
      return self()->mDateTime;
    }

    /**
      Is The date and time of marble clock Immutable
    */
    static
    bool isDateTimeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "dateTime" ) );
    }

    /**
      Set The speed of marble clock
    */
    static
    void setSpeedSlider( int v )
    {
      if (v < -100)
      {
        qDebug() << "setSpeedSlider: value " << v << " is less than the minimum value of -100";
        v = -100;
      }

      if (v > 100)
      {
        qDebug() << "setSpeedSlider: value " << v << " is greater than the maximum value of 100";
        v = 100;
      }

      if (!self()->isSpeedSliderImmutable())
        self()->mSpeedSlider = v;
    }

    /**
      Get The speed of marble clock
    */
    static
    int speedSlider()
    {
      return self()->mSpeedSlider;
    }

    /**
      Is The speed of marble clock Immutable
    */
    static
    bool isSpeedSliderImmutable()
    {
      return self()->isImmutable( QStringLiteral( "speedSlider" ) );
    }

    /**
      Set systemTime
    */
    static
    void setSystemTime( bool v )
    {
      if (!self()->isSystemTimeImmutable())
        self()->mSystemTime = v;
    }

    /**
      Get systemTime
    */
    static
    bool systemTime()
    {
      return self()->mSystemTime;
    }

    /**
      Is systemTime Immutable
    */
    static
    bool isSystemTimeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "systemTime" ) );
    }

    /**
      Set lastSessionTime
    */
    static
    void setLastSessionTime( bool v )
    {
      if (!self()->isLastSessionTimeImmutable())
        self()->mLastSessionTime = v;
    }

    /**
      Get lastSessionTime
    */
    static
    bool lastSessionTime()
    {
      return self()->mLastSessionTime;
    }

    /**
      Is lastSessionTime Immutable
    */
    static
    bool isLastSessionTimeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lastSessionTime" ) );
    }

    /**
      Set systemTimezone
    */
    static
    void setSystemTimezone( bool v )
    {
      if (!self()->isSystemTimezoneImmutable())
        self()->mSystemTimezone = v;
    }

    /**
      Get systemTimezone
    */
    static
    bool systemTimezone()
    {
      return self()->mSystemTimezone;
    }

    /**
      Is systemTimezone Immutable
    */
    static
    bool isSystemTimezoneImmutable()
    {
      return self()->isImmutable( QStringLiteral( "systemTimezone" ) );
    }

    /**
      Set utc
    */
    static
    void setUtc( bool v )
    {
      if (!self()->isUtcImmutable())
        self()->mUtc = v;
    }

    /**
      Get utc
    */
    static
    bool utc()
    {
      return self()->mUtc;
    }

    /**
      Is utc Immutable
    */
    static
    bool isUtcImmutable()
    {
      return self()->isImmutable( QStringLiteral( "utc" ) );
    }

    /**
      Set customTimezone
    */
    static
    void setCustomTimezone( bool v )
    {
      if (!self()->isCustomTimezoneImmutable())
        self()->mCustomTimezone = v;
    }

    /**
      Get customTimezone
    */
    static
    bool customTimezone()
    {
      return self()->mCustomTimezone;
    }

    /**
      Is customTimezone Immutable
    */
    static
    bool isCustomTimezoneImmutable()
    {
      return self()->isImmutable( QStringLiteral( "customTimezone" ) );
    }

    /**
      Set chosenTimezone
    */
    static
    void setChosenTimezone( int v )
    {
      if (!self()->isChosenTimezoneImmutable())
        self()->mChosenTimezone = v;
    }

    /**
      Get chosenTimezone
    */
    static
    int chosenTimezone()
    {
      return self()->mChosenTimezone;
    }

    /**
      Is chosenTimezone Immutable
    */
    static
    bool isChosenTimezoneImmutable()
    {
      return self()->isImmutable( QStringLiteral( "chosenTimezone" ) );
    }

    /**
      Set autoCenter
    */
    static
    void setAutoCenter( bool v )
    {
      if (!self()->isAutoCenterImmutable())
        self()->mAutoCenter = v;
    }

    /**
      Get autoCenter
    */
    static
    bool autoCenter()
    {
      return self()->mAutoCenter;
    }

    /**
      Is autoCenter Immutable
    */
    static
    bool isAutoCenterImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoCenter" ) );
    }

    /**
      Set trackVisible
    */
    static
    void setTrackVisible( bool v )
    {
      if (!self()->isTrackVisibleImmutable())
        self()->mTrackVisible = v;
    }

    /**
      Get trackVisible
    */
    static
    bool trackVisible()
    {
      return self()->mTrackVisible;
    }

    /**
      Is trackVisible Immutable
    */
    static
    bool isTrackVisibleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "trackVisible" ) );
    }

    /**
      Set lastTrackOpenPath
    */
    static
    void setLastTrackOpenPath( const QString & v )
    {
      if (!self()->isLastTrackOpenPathImmutable())
        self()->mLastTrackOpenPath = v;
    }

    /**
      Get lastTrackOpenPath
    */
    static
    QString lastTrackOpenPath()
    {
      return self()->mLastTrackOpenPath;
    }

    /**
      Is lastTrackOpenPath Immutable
    */
    static
    bool isLastTrackOpenPathImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lastTrackOpenPath" ) );
    }

    /**
      Set lastTrackSavePath
    */
    static
    void setLastTrackSavePath( const QString & v )
    {
      if (!self()->isLastTrackSavePathImmutable())
        self()->mLastTrackSavePath = v;
    }

    /**
      Get lastTrackSavePath
    */
    static
    QString lastTrackSavePath()
    {
      return self()->mLastTrackSavePath;
    }

    /**
      Is lastTrackSavePath Immutable
    */
    static
    bool isLastTrackSavePathImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lastTrackSavePath" ) );
    }

    /**
      Set autoZoom
    */
    static
    void setAutoZoom( bool v )
    {
      if (!self()->isAutoZoomImmutable())
        self()->mAutoZoom = v;
    }

    /**
      Get autoZoom
    */
    static
    bool autoZoom()
    {
      return self()->mAutoZoom;
    }

    /**
      Is autoZoom Immutable
    */
    static
    bool isAutoZoomImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoZoom" ) );
    }

    /**
      Set recenterMode
    */
    static
    void setRecenterMode( int v )
    {
      if (!self()->isRecenterModeImmutable())
        self()->mRecenterMode = v;
    }

    /**
      Get recenterMode
    */
    static
    int recenterMode()
    {
      return self()->mRecenterMode;
    }

    /**
      Is recenterMode Immutable
    */
    static
    bool isRecenterModeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "recenterMode" ) );
    }

    /**
      Set The unit chosen to measure distances.
    */
    static
    void setDistanceUnit( int v )
    {
      if (!self()->isDistanceUnitImmutable())
        self()->mDistanceUnit = v;
    }

    /**
      Get The unit chosen to measure distances.
    */
    static
    int distanceUnit()
    {
      return self()->mDistanceUnit;
    }

    /**
      Is The unit chosen to measure distances. Immutable
    */
    static
    bool isDistanceUnitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "distanceUnit" ) );
    }

    /**
      Set The unit chosen to measure angles.
    */
    static
    void setAngleUnit( int v )
    {
      if (!self()->isAngleUnitImmutable())
        self()->mAngleUnit = v;
    }

    /**
      Get The unit chosen to measure angles.
    */
    static
    int angleUnit()
    {
      return self()->mAngleUnit;
    }

    /**
      Is The unit chosen to measure angles. Immutable
    */
    static
    bool isAngleUnitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "angleUnit" ) );
    }

    /**
      Set The quality at which a still map gets painted.
    */
    static
    void setStillQuality( int v )
    {
      if (!self()->isStillQualityImmutable())
        self()->mStillQuality = v;
    }

    /**
      Get The quality at which a still map gets painted.
    */
    static
    int stillQuality()
    {
      return self()->mStillQuality;
    }

    /**
      Is The quality at which a still map gets painted. Immutable
    */
    static
    bool isStillQualityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "stillQuality" ) );
    }

    /**
      Set The quality at which an animated map gets painted.
    */
    static
    void setAnimationQuality( int v )
    {
      if (!self()->isAnimationQualityImmutable())
        self()->mAnimationQuality = v;
    }

    /**
      Get The quality at which an animated map gets painted.
    */
    static
    int animationQuality()
    {
      return self()->mAnimationQuality;
    }

    /**
      Is The quality at which an animated map gets painted. Immutable
    */
    static
    bool isAnimationQualityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "animationQuality" ) );
    }

    /**
      Set The localization of the labels.
    */
    static
    void setLabelLocalization( int v )
    {
      if (!self()->isLabelLocalizationImmutable())
        self()->mLabelLocalization = v;
    }

    /**
      Get The localization of the labels.
    */
    static
    int labelLocalization()
    {
      return self()->mLabelLocalization;
    }

    /**
      Is The localization of the labels. Immutable
    */
    static
    bool isLabelLocalizationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "labelLocalization" ) );
    }

    /**
      Set The general font used on the map.
    */
    static
    void setMapFont( const QFont & v )
    {
      if (!self()->isMapFontImmutable())
        self()->mMapFont = v;
    }

    /**
      Get The general font used on the map.
    */
    static
    QFont mapFont()
    {
      return self()->mMapFont;
    }

    /**
      Is The general font used on the map. Immutable
    */
    static
    bool isMapFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "mapFont" ) );
    }

    /**
      Set The last directory that was opened by File->Open.
    */
    static
    void setLastFileOpenDir( const QString & v )
    {
      if (!self()->isLastFileOpenDirImmutable())
        self()->mLastFileOpenDir = v;
    }

    /**
      Get The last directory that was opened by File->Open.
    */
    static
    QString lastFileOpenDir()
    {
      return self()->mLastFileOpenDir;
    }

    /**
      Is The last directory that was opened by File->Open. Immutable
    */
    static
    bool isLastFileOpenDirImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lastFileOpenDir" ) );
    }

    /**
      Set showSun
    */
    static
    void setShowSun( bool v )
    {
      if (!self()->isShowSunImmutable())
        self()->mShowSun = v;
    }

    /**
      Get showSun
    */
    static
    bool showSun()
    {
      return self()->mShowSun;
    }

    /**
      Is showSun Immutable
    */
    static
    bool isShowSunImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showSun" ) );
    }

    /**
      Set showCitylights
    */
    static
    void setShowCitylights( bool v )
    {
      if (!self()->isShowCitylightsImmutable())
        self()->mShowCitylights = v;
    }

    /**
      Get showCitylights
    */
    static
    bool showCitylights()
    {
      return self()->mShowCitylights;
    }

    /**
      Is showCitylights Immutable
    */
    static
    bool isShowCitylightsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showCitylights" ) );
    }

    /**
      Set subSolarPointIconVisible
    */
    static
    void setSubSolarPointIconVisible( bool v )
    {
      if (!self()->isSubSolarPointIconVisibleImmutable())
        self()->mSubSolarPointIconVisible = v;
    }

    /**
      Get subSolarPointIconVisible
    */
    static
    bool subSolarPointIconVisible()
    {
      return self()->mSubSolarPointIconVisible;
    }

    /**
      Is subSolarPointIconVisible Immutable
    */
    static
    bool isSubSolarPointIconVisibleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "subSolarPointIconVisible" ) );
    }

    /**
      Set lockToSubSolarPoint
    */
    static
    void setLockToSubSolarPoint( bool v )
    {
      if (!self()->isLockToSubSolarPointImmutable())
        self()->mLockToSubSolarPoint = v;
    }

    /**
      Get lockToSubSolarPoint
    */
    static
    bool lockToSubSolarPoint()
    {
      return self()->mLockToSubSolarPoint;
    }

    /**
      Is lockToSubSolarPoint Immutable
    */
    static
    bool isLockToSubSolarPointImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lockToSubSolarPoint" ) );
    }

    /**
      Set The behaviour of the planet's axis on mouse dragging.
    */
    static
    void setDragLocation( int v )
    {
      if (!self()->isDragLocationImmutable())
        self()->mDragLocation = v;
    }

    /**
      Get The behaviour of the planet's axis on mouse dragging.
    */
    static
    int dragLocation()
    {
      return self()->mDragLocation;
    }

    /**
      Is The behaviour of the planet's axis on mouse dragging. Immutable
    */
    static
    bool isDragLocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "dragLocation" ) );
    }

    /**
      Set The location shown on application startup.
    */
    static
    void setOnStartup( int v )
    {
      if (!self()->isOnStartupImmutable())
        self()->mOnStartup = v;
    }

    /**
      Get The location shown on application startup.
    */
    static
    int onStartup()
    {
      return self()->mOnStartup;
    }

    /**
      Is The location shown on application startup. Immutable
    */
    static
    bool isOnStartupImmutable()
    {
      return self()->isImmutable( QStringLiteral( "onStartup" ) );
    }

    /**
      Set inertialEarthRotation
    */
    static
    void setInertialEarthRotation( bool v )
    {
      if (!self()->isInertialEarthRotationImmutable())
        self()->mInertialEarthRotation = v;
    }

    /**
      Get inertialEarthRotation
    */
    static
    bool inertialEarthRotation()
    {
      return self()->mInertialEarthRotation;
    }

    /**
      Is inertialEarthRotation Immutable
    */
    static
    bool isInertialEarthRotationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "inertialEarthRotation" ) );
    }

    /**
      Set mouseViewRotation
    */
    static
    void setMouseViewRotation( bool v )
    {
      if (!self()->isMouseViewRotationImmutable())
        self()->mMouseViewRotation = v;
    }

    /**
      Get mouseViewRotation
    */
    static
    bool mouseViewRotation()
    {
      return self()->mMouseViewRotation;
    }

    /**
      Is mouseViewRotation Immutable
    */
    static
    bool isMouseViewRotationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "mouseViewRotation" ) );
    }

    /**
      Set Display animation on voyage to target.
    */
    static
    void setAnimateTargetVoyage( bool v )
    {
      if (!self()->isAnimateTargetVoyageImmutable())
        self()->mAnimateTargetVoyage = v;
    }

    /**
      Get Display animation on voyage to target.
    */
    static
    bool animateTargetVoyage()
    {
      return self()->mAnimateTargetVoyage;
    }

    /**
      Is Display animation on voyage to target. Immutable
    */
    static
    bool isAnimateTargetVoyageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "animateTargetVoyage" ) );
    }

    /**
      Set The external OpenStreetMap editor application
    */
    static
    void setExternalMapEditor( int v )
    {
      if (!self()->isExternalMapEditorImmutable())
        self()->mExternalMapEditor = v;
    }

    /**
      Get The external OpenStreetMap editor application
    */
    static
    int externalMapEditor()
    {
      return self()->mExternalMapEditor;
    }

    /**
      Is The external OpenStreetMap editor application Immutable
    */
    static
    bool isExternalMapEditorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "externalMapEditor" ) );
    }

    /**
      Set Cache for tiles reserved in the physical memory.
    */
    static
    void setVolatileTileCacheLimit( int v )
    {
      if (v < 0)
      {
        qDebug() << "setVolatileTileCacheLimit: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 999999)
      {
        qDebug() << "setVolatileTileCacheLimit: value " << v << " is greater than the maximum value of 999999";
        v = 999999;
      }

      if (!self()->isVolatileTileCacheLimitImmutable())
        self()->mVolatileTileCacheLimit = v;
    }

    /**
      Get Cache for tiles reserved in the physical memory.
    */
    static
    int volatileTileCacheLimit()
    {
      return self()->mVolatileTileCacheLimit;
    }

    /**
      Is Cache for tiles reserved in the physical memory. Immutable
    */
    static
    bool isVolatileTileCacheLimitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "volatileTileCacheLimit" ) );
    }

    /**
      Set Maximum space on the hard disk that can be used to store tiles.
    */
    static
    void setPersistentTileCacheLimit( int v )
    {
      if (v < 0)
      {
        qDebug() << "setPersistentTileCacheLimit: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 999999)
      {
        qDebug() << "setPersistentTileCacheLimit: value " << v << " is greater than the maximum value of 999999";
        v = 999999;
      }

      if (!self()->isPersistentTileCacheLimitImmutable())
        self()->mPersistentTileCacheLimit = v;
    }

    /**
      Get Maximum space on the hard disk that can be used to store tiles.
    */
    static
    int persistentTileCacheLimit()
    {
      return self()->mPersistentTileCacheLimit;
    }

    /**
      Is Maximum space on the hard disk that can be used to store tiles. Immutable
    */
    static
    bool isPersistentTileCacheLimitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "persistentTileCacheLimit" ) );
    }

    /**
      Set URL for the proxy server.
    */
    static
    void setProxyUrl( const QString & v )
    {
      if (!self()->isProxyUrlImmutable())
        self()->mProxyUrl = v;
    }

    /**
      Get URL for the proxy server.
    */
    static
    QString proxyUrl()
    {
      return self()->mProxyUrl;
    }

    /**
      Is URL for the proxy server. Immutable
    */
    static
    bool isProxyUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyUrl" ) );
    }

    /**
      Set Port for the proxy server.
    */
    static
    void setProxyPort( int v )
    {
      if (v < 0)
      {
        qDebug() << "setProxyPort: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 65535)
      {
        qDebug() << "setProxyPort: value " << v << " is greater than the maximum value of 65535";
        v = 65535;
      }

      if (!self()->isProxyPortImmutable())
        self()->mProxyPort = v;
    }

    /**
      Get Port for the proxy server.
    */
    static
    int proxyPort()
    {
      return self()->mProxyPort;
    }

    /**
      Is Port for the proxy server. Immutable
    */
    static
    bool isProxyPortImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyPort" ) );
    }

    /**
      Set Username for authorization.
    */
    static
    void setProxyUser( const QString & v )
    {
      if (!self()->isProxyUserImmutable())
        self()->mProxyUser = v;
    }

    /**
      Get Username for authorization.
    */
    static
    QString proxyUser()
    {
      return self()->mProxyUser;
    }

    /**
      Is Username for authorization. Immutable
    */
    static
    bool isProxyUserImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyUser" ) );
    }

    /**
      Set Password for authorization.
    */
    static
    void setProxyPass( const QString & v )
    {
      if (!self()->isProxyPassImmutable())
        self()->mProxyPass = v;
    }

    /**
      Get Password for authorization.
    */
    static
    QString proxyPass()
    {
      return self()->mProxyPass;
    }

    /**
      Is Password for authorization. Immutable
    */
    static
    bool isProxyPassImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyPass" ) );
    }

    /**
      Set Proxy type is HTTP
    */
    static
    void setProxyHttp( bool v )
    {
      if (!self()->isProxyHttpImmutable())
        self()->mProxyHttp = v;
    }

    /**
      Get Proxy type is HTTP
    */
    static
    bool proxyHttp()
    {
      return self()->mProxyHttp;
    }

    /**
      Is Proxy type is HTTP Immutable
    */
    static
    bool isProxyHttpImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyHttp" ) );
    }

    /**
      Set proxyType
    */
    static
    void setProxyType( int v )
    {
      if (!self()->isProxyTypeImmutable())
        self()->mProxyType = v;
    }

    /**
      Get proxyType
    */
    static
    int proxyType()
    {
      return self()->mProxyType;
    }

    /**
      Is proxyType Immutable
    */
    static
    bool isProxyTypeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyType" ) );
    }

    /**
      Set Proxy type is Socks5
    */
    static
    void setProxySocks5( bool v )
    {
      if (!self()->isProxySocks5Immutable())
        self()->mProxySocks5 = v;
    }

    /**
      Get Proxy type is Socks5
    */
    static
    bool proxySocks5()
    {
      return self()->mProxySocks5;
    }

    /**
      Is Proxy type is Socks5 Immutable
    */
    static
    bool isProxySocks5Immutable()
    {
      return self()->isImmutable( QStringLiteral( "proxySocks5" ) );
    }

    /**
      Set Proxy requires Authentication
    */
    static
    void setProxyAuth( bool v )
    {
      if (!self()->isProxyAuthImmutable())
        self()->mProxyAuth = v;
    }

    /**
      Get Proxy requires Authentication
    */
    static
    bool proxyAuth()
    {
      return self()->mProxyAuth;
    }

    /**
      Is Proxy requires Authentication Immutable
    */
    static
    bool isProxyAuthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "proxyAuth" ) );
    }

    /**
      Set The position tracking plugin used to determine the current location
    */
    static
    void setActivePositionTrackingPlugin( const QString & v )
    {
      if (!self()->isActivePositionTrackingPluginImmutable())
        self()->mActivePositionTrackingPlugin = v;
    }

    /**
      Get The position tracking plugin used to determine the current location
    */
    static
    QString activePositionTrackingPlugin()
    {
      return self()->mActivePositionTrackingPlugin;
    }

    /**
      Is The position tracking plugin used to determine the current location Immutable
    */
    static
    bool isActivePositionTrackingPluginImmutable()
    {
      return self()->isImmutable( QStringLiteral( "activePositionTrackingPlugin" ) );
    }

    /**
      Set showPositionLabel
    */
    static
    void setShowPositionLabel( bool v )
    {
      if (!self()->isShowPositionLabelImmutable())
        self()->mShowPositionLabel = v;
    }

    /**
      Get showPositionLabel
    */
    static
    bool showPositionLabel()
    {
      return self()->mShowPositionLabel;
    }

    /**
      Is showPositionLabel Immutable
    */
    static
    bool isShowPositionLabelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showPositionLabel" ) );
    }

    /**
      Set showAltitudeLabel
    */
    static
    void setShowAltitudeLabel( bool v )
    {
      if (!self()->isShowAltitudeLabelImmutable())
        self()->mShowAltitudeLabel = v;
    }

    /**
      Get showAltitudeLabel
    */
    static
    bool showAltitudeLabel()
    {
      return self()->mShowAltitudeLabel;
    }

    /**
      Is showAltitudeLabel Immutable
    */
    static
    bool isShowAltitudeLabelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showAltitudeLabel" ) );
    }

    /**
      Set showTileZoomLevelLabel
    */
    static
    void setShowTileZoomLevelLabel( bool v )
    {
      if (!self()->isShowTileZoomLevelLabelImmutable())
        self()->mShowTileZoomLevelLabel = v;
    }

    /**
      Get showTileZoomLevelLabel
    */
    static
    bool showTileZoomLevelLabel()
    {
      return self()->mShowTileZoomLevelLabel;
    }

    /**
      Is showTileZoomLevelLabel Immutable
    */
    static
    bool isShowTileZoomLevelLabelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showTileZoomLevelLabel" ) );
    }

    /**
      Set showDownloadProgressBar
    */
    static
    void setShowDownloadProgressBar( bool v )
    {
      if (!self()->isShowDownloadProgressBarImmutable())
        self()->mShowDownloadProgressBar = v;
    }

    /**
      Get showDownloadProgressBar
    */
    static
    bool showDownloadProgressBar()
    {
      return self()->mShowDownloadProgressBar;
    }

    /**
      Is showDownloadProgressBar Immutable
    */
    static
    bool isShowDownloadProgressBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showDownloadProgressBar" ) );
    }

    /**
      Set showDateTimeLabel
    */
    static
    void setShowDateTimeLabel( bool v )
    {
      if (!self()->isShowDateTimeLabelImmutable())
        self()->mShowDateTimeLabel = v;
    }

    /**
      Get showDateTimeLabel
    */
    static
    bool showDateTimeLabel()
    {
      return self()->mShowDateTimeLabel;
    }

    /**
      Is showDateTimeLabel Immutable
    */
    static
    bool isShowDateTimeLabelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showDateTimeLabel" ) );
    }

    /**
      Set wmsServers
    */
    static
    void setWmsServers( const QStringList & v )
    {
      if (!self()->isWmsServersImmutable())
        self()->mWmsServers = v;
    }

    /**
      Get wmsServers
    */
    static
    QStringList wmsServers()
    {
      return self()->mWmsServers;
    }

    /**
      Is wmsServers Immutable
    */
    static
    bool isWmsServersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "wmsServers" ) );
    }

    /**
      Set wmtsServers
    */
    static
    void setWmtsServers( const QStringList & v )
    {
      if (!self()->isWmtsServersImmutable())
        self()->mWmtsServers = v;
    }

    /**
      Get wmtsServers
    */
    static
    QStringList wmtsServers()
    {
      return self()->mWmtsServers;
    }

    /**
      Is wmtsServers Immutable
    */
    static
    bool isWmtsServersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "wmtsServers" ) );
    }

    /**
      Set staticUrlServers
    */
    static
    void setStaticUrlServers( const QStringList & v )
    {
      if (!self()->isStaticUrlServersImmutable())
        self()->mStaticUrlServers = v;
    }

    /**
      Get staticUrlServers
    */
    static
    QStringList staticUrlServers()
    {
      return self()->mStaticUrlServers;
    }

    /**
      Is staticUrlServers Immutable
    */
    static
    bool isStaticUrlServersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "staticUrlServers" ) );
    }

    /**
      Set showGuidanceModeStartupWarning
    */
    static
    void setShowGuidanceModeStartupWarning( bool v )
    {
      if (!self()->isShowGuidanceModeStartupWarningImmutable())
        self()->mShowGuidanceModeStartupWarning = v;
    }

    /**
      Get showGuidanceModeStartupWarning
    */
    static
    bool showGuidanceModeStartupWarning()
    {
      return self()->mShowGuidanceModeStartupWarning;
    }

    /**
      Is showGuidanceModeStartupWarning Immutable
    */
    static
    bool isShowGuidanceModeStartupWarningImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showGuidanceModeStartupWarning" ) );
    }

    /**
      Set currentRoutingProfile
    */
    static
    void setCurrentRoutingProfile( int v )
    {
      if (!self()->isCurrentRoutingProfileImmutable())
        self()->mCurrentRoutingProfile = v;
    }

    /**
      Get currentRoutingProfile
    */
    static
    int currentRoutingProfile()
    {
      return self()->mCurrentRoutingProfile;
    }

    /**
      Is currentRoutingProfile Immutable
    */
    static
    bool isCurrentRoutingProfileImmutable()
    {
      return self()->isImmutable( QStringLiteral( "currentRoutingProfile" ) );
    }

    /**
      Set routeColorStandard
    */
    static
    void setRouteColorStandard( const QColor & v )
    {
      if (!self()->isRouteColorStandardImmutable())
        self()->mRouteColorStandard = v;
    }

    /**
      Get routeColorStandard
    */
    static
    QColor routeColorStandard()
    {
      return self()->mRouteColorStandard;
    }

    /**
      Is routeColorStandard Immutable
    */
    static
    bool isRouteColorStandardImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeColorStandard" ) );
    }

    /**
      Set routeAlphaStandard
    */
    static
    void setRouteAlphaStandard( int v )
    {
      if (!self()->isRouteAlphaStandardImmutable())
        self()->mRouteAlphaStandard = v;
    }

    /**
      Get routeAlphaStandard
    */
    static
    int routeAlphaStandard()
    {
      return self()->mRouteAlphaStandard;
    }

    /**
      Is routeAlphaStandard Immutable
    */
    static
    bool isRouteAlphaStandardImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeAlphaStandard" ) );
    }

    /**
      Set routeColorHighlighted
    */
    static
    void setRouteColorHighlighted( const QColor & v )
    {
      if (!self()->isRouteColorHighlightedImmutable())
        self()->mRouteColorHighlighted = v;
    }

    /**
      Get routeColorHighlighted
    */
    static
    QColor routeColorHighlighted()
    {
      return self()->mRouteColorHighlighted;
    }

    /**
      Is routeColorHighlighted Immutable
    */
    static
    bool isRouteColorHighlightedImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeColorHighlighted" ) );
    }

    /**
      Set routeAlphaHighlighted
    */
    static
    void setRouteAlphaHighlighted( int v )
    {
      if (!self()->isRouteAlphaHighlightedImmutable())
        self()->mRouteAlphaHighlighted = v;
    }

    /**
      Get routeAlphaHighlighted
    */
    static
    int routeAlphaHighlighted()
    {
      return self()->mRouteAlphaHighlighted;
    }

    /**
      Is routeAlphaHighlighted Immutable
    */
    static
    bool isRouteAlphaHighlightedImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeAlphaHighlighted" ) );
    }

    /**
      Set routeColorAlternative
    */
    static
    void setRouteColorAlternative( const QColor & v )
    {
      if (!self()->isRouteColorAlternativeImmutable())
        self()->mRouteColorAlternative = v;
    }

    /**
      Get routeColorAlternative
    */
    static
    QColor routeColorAlternative()
    {
      return self()->mRouteColorAlternative;
    }

    /**
      Is routeColorAlternative Immutable
    */
    static
    bool isRouteColorAlternativeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeColorAlternative" ) );
    }

    /**
      Set routeAlphaAlternative
    */
    static
    void setRouteAlphaAlternative( int v )
    {
      if (!self()->isRouteAlphaAlternativeImmutable())
        self()->mRouteAlphaAlternative = v;
    }

    /**
      Get routeAlphaAlternative
    */
    static
    int routeAlphaAlternative()
    {
      return self()->mRouteAlphaAlternative;
    }

    /**
      Is routeAlphaAlternative Immutable
    */
    static
    bool isRouteAlphaAlternativeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "routeAlphaAlternative" ) );
    }

    /**
      Set enableSync
    */
    static
    void setEnableSync( bool v )
    {
      if (!self()->isEnableSyncImmutable())
        self()->mEnableSync = v;
    }

    /**
      Get enableSync
    */
    static
    bool enableSync()
    {
      return self()->mEnableSync;
    }

    /**
      Is enableSync Immutable
    */
    static
    bool isEnableSyncImmutable()
    {
      return self()->isImmutable( QStringLiteral( "enableSync" ) );
    }

    /**
      Set syncBackend
    */
    static
    void setSyncBackend( const QString & v )
    {
      if (!self()->isSyncBackendImmutable())
        self()->mSyncBackend = v;
    }

    /**
      Get syncBackend
    */
    static
    QString syncBackend()
    {
      return self()->mSyncBackend;
    }

    /**
      Is syncBackend Immutable
    */
    static
    bool isSyncBackendImmutable()
    {
      return self()->isImmutable( QStringLiteral( "syncBackend" ) );
    }

    /**
      Set syncBookmarks
    */
    static
    void setSyncBookmarks( bool v )
    {
      if (!self()->isSyncBookmarksImmutable())
        self()->mSyncBookmarks = v;
    }

    /**
      Get syncBookmarks
    */
    static
    bool syncBookmarks()
    {
      return self()->mSyncBookmarks;
    }

    /**
      Is syncBookmarks Immutable
    */
    static
    bool isSyncBookmarksImmutable()
    {
      return self()->isImmutable( QStringLiteral( "syncBookmarks" ) );
    }

    /**
      Set syncRoutes
    */
    static
    void setSyncRoutes( bool v )
    {
      if (!self()->isSyncRoutesImmutable())
        self()->mSyncRoutes = v;
    }

    /**
      Get syncRoutes
    */
    static
    bool syncRoutes()
    {
      return self()->mSyncRoutes;
    }

    /**
      Is syncRoutes Immutable
    */
    static
    bool isSyncRoutesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "syncRoutes" ) );
    }

    /**
      Set owncloudServer
    */
    static
    void setOwncloudServer( const QString & v )
    {
      if (!self()->isOwncloudServerImmutable())
        self()->mOwncloudServer = v;
    }

    /**
      Get owncloudServer
    */
    static
    QString owncloudServer()
    {
      return self()->mOwncloudServer;
    }

    /**
      Is owncloudServer Immutable
    */
    static
    bool isOwncloudServerImmutable()
    {
      return self()->isImmutable( QStringLiteral( "owncloudServer" ) );
    }

    /**
      Set owncloudUsername
    */
    static
    void setOwncloudUsername( const QString & v )
    {
      if (!self()->isOwncloudUsernameImmutable())
        self()->mOwncloudUsername = v;
    }

    /**
      Get owncloudUsername
    */
    static
    QString owncloudUsername()
    {
      return self()->mOwncloudUsername;
    }

    /**
      Is owncloudUsername Immutable
    */
    static
    bool isOwncloudUsernameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "owncloudUsername" ) );
    }

    /**
      Set owncloudPassword
    */
    static
    void setOwncloudPassword( const QString & v )
    {
      if (!self()->isOwncloudPasswordImmutable())
        self()->mOwncloudPassword = v;
    }

    /**
      Get owncloudPassword
    */
    static
    QString owncloudPassword()
    {
      return self()->mOwncloudPassword;
    }

    /**
      Is owncloudPassword Immutable
    */
    static
    bool isOwncloudPasswordImmutable()
    {
      return self()->isImmutable( QStringLiteral( "owncloudPassword" ) );
    }

  protected:
    MarbleSettings();
    friend class MarbleSettingsHelper;


    // MarbleWidget
    double mHomeLongitude;
    double mHomeLatitude;
    int mHomeZoom;
    double mQuitLongitude;
    double mQuitLatitude;
    double mQuitRange;
    QString mMapTheme;
    bool mShowClouds;
    bool mWorkOffline;
    bool mShowCurrentLocation;
    bool mLockFloatItemPositions;
    int mProjection;
    QString mMarbleDataPath;
    bool mShowBookmarks;

    // Time
    QDateTime mDateTime;
    int mSpeedSlider;
    bool mSystemTime;
    bool mLastSessionTime;
    bool mSystemTimezone;
    bool mUtc;
    bool mCustomTimezone;
    int mChosenTimezone;

    // Tracking
    bool mAutoCenter;
    bool mTrackVisible;
    QString mLastTrackOpenPath;
    QString mLastTrackSavePath;
    bool mAutoZoom;
    int mRecenterMode;

    // View
    int mDistanceUnit;
    int mAngleUnit;
    int mStillQuality;
    int mAnimationQuality;
    int mLabelLocalization;
    QFont mMapFont;
    QString mLastFileOpenDir;

    // Sun
    bool mShowSun;
    bool mShowCitylights;
    bool mSubSolarPointIconVisible;
    bool mLockToSubSolarPoint;

    // Navigation
    int mDragLocation;
    int mOnStartup;
    bool mInertialEarthRotation;
    bool mMouseViewRotation;
    bool mAnimateTargetVoyage;
    int mExternalMapEditor;

    // Cache
    int mVolatileTileCacheLimit;
    int mPersistentTileCacheLimit;
    QString mProxyUrl;
    int mProxyPort;
    QString mProxyUser;
    QString mProxyPass;
    bool mProxyHttp;
    int mProxyType;
    bool mProxySocks5;
    bool mProxyAuth;

    // Plugins
    QString mActivePositionTrackingPlugin;

    // StatusBar
    bool mShowPositionLabel;
    bool mShowAltitudeLabel;
    bool mShowTileZoomLevelLabel;
    bool mShowDownloadProgressBar;
    bool mShowDateTimeLabel;

    // MapWizard
    QStringList mWmsServers;
    QStringList mWmtsServers;
    QStringList mStaticUrlServers;

    // Routing
    bool mShowGuidanceModeStartupWarning;
    int mCurrentRoutingProfile;
    QColor mRouteColorStandard;
    int mRouteAlphaStandard;
    QColor mRouteColorHighlighted;
    int mRouteAlphaHighlighted;
    QColor mRouteColorAlternative;
    int mRouteAlphaAlternative;

    // CloudSync
    bool mEnableSync;
    QString mSyncBackend;
    bool mSyncBookmarks;
    bool mSyncRoutes;
    QString mOwncloudServer;
    QString mOwncloudUsername;
    QString mOwncloudPassword;
};

#endif

