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

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

class Settings : public KConfigSkeleton
{
  public:

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

    /**
      Set Autodrop
    */
    static
    void setAutoDropEnabled( bool v )
    {
      if (!self()->isAutoDropEnabledImmutable())
        self()->mAutoDropEnabled = v;
    }

    /**
      Get Autodrop
    */
    static
    bool autoDropEnabled()
    {
      return self()->mAutoDropEnabled;
    }

    /**
      Is Autodrop Immutable
    */
    static
    bool isAutoDropEnabledImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AutoDropEnabled" ) );
    }

    /**
      Get Item object corresponding to AutoDropEnabled()
    */
    ItemBool *autoDropEnabledItem()
    {
      return mAutoDropEnabledItem;
    }

    /**
      Set Solver
    */
    static
    void setSolverEnabled( bool v )
    {
      if (!self()->isSolverEnabledImmutable())
        self()->mSolverEnabled = v;
    }

    /**
      Get Solver
    */
    static
    bool solverEnabled()
    {
      return self()->mSolverEnabled;
    }

    /**
      Is Solver Immutable
    */
    static
    bool isSolverEnabledImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SolverEnabled" ) );
    }

    /**
      Get Item object corresponding to SolverEnabled()
    */
    ItemBool *solverEnabledItem()
    {
      return mSolverEnabledItem;
    }

    /**
      Set PlaySounds
    */
    static
    void setPlaySounds( bool v )
    {
      if (!self()->isPlaySoundsImmutable())
        self()->mPlaySounds = v;
    }

    /**
      Get PlaySounds
    */
    static
    bool playSounds()
    {
      return self()->mPlaySounds;
    }

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

    /**
      Get Item object corresponding to PlaySounds()
    */
    ItemBool *playSoundsItem()
    {
      return mPlaySoundsItem;
    }

    /**
      Set RememberStateOnExit
    */
    static
    void setRememberStateOnExit( bool v )
    {
      if (!self()->isRememberStateOnExitImmutable())
        self()->mRememberStateOnExit = v;
    }

    /**
      Get RememberStateOnExit
    */
    static
    bool rememberStateOnExit()
    {
      return self()->mRememberStateOnExit;
    }

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

    /**
      Get Item object corresponding to RememberStateOnExit()
    */
    ItemBool *rememberStateOnExitItem()
    {
      return mRememberStateOnExitItem;
    }

    /**
      Set Cardname
    */
    static
    void setCardTheme( const QString & v )
    {
      if (!self()->isCardThemeImmutable())
        self()->mCardTheme = v;
    }

    /**
      Get Cardname
    */
    static
    QString cardTheme()
    {
      return self()->mCardTheme;
    }

    /**
      Is Cardname Immutable
    */
    static
    bool isCardThemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CardTheme" ) );
    }

    /**
      Get Cardname default value
    */
    static
    QString defaultCardThemeValue()
    {
        return defaultCardThemeValue_helper();
    }

    /**
      Get Item object corresponding to CardTheme()
    */
    ItemString *cardThemeItem()
    {
      return mCardThemeItem;
    }

    /**
      Set KlondikeEasy
    */
    static
    void setKlondikeIsDrawOne( bool v )
    {
      if (!self()->isKlondikeIsDrawOneImmutable())
        self()->mKlondikeIsDrawOne = v;
    }

    /**
      Get KlondikeEasy
    */
    static
    bool klondikeIsDrawOne()
    {
      return self()->mKlondikeIsDrawOne;
    }

    /**
      Is KlondikeEasy Immutable
    */
    static
    bool isKlondikeIsDrawOneImmutable()
    {
      return self()->isImmutable( QStringLiteral( "KlondikeIsDrawOne" ) );
    }

    /**
      Get Item object corresponding to KlondikeIsDrawOne()
    */
    ItemBool *klondikeIsDrawOneItem()
    {
      return mKlondikeIsDrawOneItem;
    }

    /**
      Set SpiderSuits
    */
    static
    void setSpiderSuitCount( int v )
    {
      if (!self()->isSpiderSuitCountImmutable())
        self()->mSpiderSuitCount = v;
    }

    /**
      Get SpiderSuits
    */
    static
    int spiderSuitCount()
    {
      return self()->mSpiderSuitCount;
    }

    /**
      Is SpiderSuits Immutable
    */
    static
    bool isSpiderSuitCountImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SpiderSuitCount" ) );
    }

    /**
      Get Item object corresponding to SpiderSuitCount()
    */
    ItemInt *spiderSuitCountItem()
    {
      return mSpiderSuitCountItem;
    }

    /**
      Set SpiderStackFaceup
    */
    static
    void setSpiderStackFaceup( int v )
    {
      if (!self()->isSpiderStackFaceupImmutable())
        self()->mSpiderStackFaceup = v;
    }

    /**
      Get SpiderStackFaceup
    */
    static
    int spiderStackFaceup()
    {
      return self()->mSpiderStackFaceup;
    }

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

    /**
      Get Item object corresponding to SpiderStackFaceup()
    */
    ItemInt *spiderStackFaceupItem()
    {
      return mSpiderStackFaceupItem;
    }

    /**
      Set GolfSolverIterationsLimit
    */
    static
    void setGolfSolverIterationsLimit( int v )
    {
      if (!self()->isGolfSolverIterationsLimitImmutable())
        self()->mGolfSolverIterationsLimit = v;
    }

    /**
      Get GolfSolverIterationsLimit
    */
    static
    int golfSolverIterationsLimit()
    {
      return self()->mGolfSolverIterationsLimit;
    }

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

    /**
      Get Item object corresponding to GolfSolverIterationsLimit()
    */
    ItemInt *golfSolverIterationsLimitItem()
    {
      return mGolfSolverIterationsLimitItem;
    }

    /**
      Set FreecellSolverIterationsLimit
    */
    static
    void setFreecellSolverIterationsLimit( int v )
    {
      if (!self()->isFreecellSolverIterationsLimitImmutable())
        self()->mFreecellSolverIterationsLimit = v;
    }

    /**
      Get FreecellSolverIterationsLimit
    */
    static
    int freecellSolverIterationsLimit()
    {
      return self()->mFreecellSolverIterationsLimit;
    }

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

    /**
      Get Item object corresponding to FreecellSolverIterationsLimit()
    */
    ItemInt *freecellSolverIterationsLimitItem()
    {
      return mFreecellSolverIterationsLimitItem;
    }

    /**
      Set FreecellEmptyStackFill
    */
    static
    void setFreecellEmptyStackFill( int v )
    {
      if (!self()->isFreecellEmptyStackFillImmutable())
        self()->mFreecellEmptyStackFill = v;
    }

    /**
      Get FreecellEmptyStackFill
    */
    static
    int freecellEmptyStackFill()
    {
      return self()->mFreecellEmptyStackFill;
    }

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

    /**
      Get Item object corresponding to FreecellEmptyStackFill()
    */
    ItemInt *freecellEmptyStackFillItem()
    {
      return mFreecellEmptyStackFillItem;
    }

    /**
      Set FreecellSequenceBuiltBy
    */
    static
    void setFreecellSequenceBuiltBy( int v )
    {
      if (!self()->isFreecellSequenceBuiltByImmutable())
        self()->mFreecellSequenceBuiltBy = v;
    }

    /**
      Get FreecellSequenceBuiltBy
    */
    static
    int freecellSequenceBuiltBy()
    {
      return self()->mFreecellSequenceBuiltBy;
    }

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

    /**
      Get Item object corresponding to FreecellSequenceBuiltBy()
    */
    ItemInt *freecellSequenceBuiltByItem()
    {
      return mFreecellSequenceBuiltByItem;
    }

    /**
      Set FreecellReserves
    */
    static
    void setFreecellReserves( int v )
    {
      if (!self()->isFreecellReservesImmutable())
        self()->mFreecellReserves = v;
    }

    /**
      Get FreecellReserves
    */
    static
    int freecellReserves()
    {
      return self()->mFreecellReserves;
    }

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

    /**
      Get Item object corresponding to FreecellReserves()
    */
    ItemInt *freecellReservesItem()
    {
      return mFreecellReservesItem;
    }

    /**
      Set FreecellStacks
    */
    static
    void setFreecellStacks( int v )
    {
      if (!self()->isFreecellStacksImmutable())
        self()->mFreecellStacks = v;
    }

    /**
      Get FreecellStacks
    */
    static
    int freecellStacks()
    {
      return self()->mFreecellStacks;
    }

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

    /**
      Get Item object corresponding to FreecellStacks()
    */
    ItemInt *freecellStacksItem()
    {
      return mFreecellStacksItem;
    }

    /**
      Set FreecellDecks
    */
    static
    void setFreecellDecks( int v )
    {
      if (!self()->isFreecellDecksImmutable())
        self()->mFreecellDecks = v;
    }

    /**
      Get FreecellDecks
    */
    static
    int freecellDecks()
    {
      return self()->mFreecellDecks;
    }

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

    /**
      Get Item object corresponding to FreecellDecks()
    */
    ItemInt *freecellDecksItem()
    {
      return mFreecellDecksItem;
    }

    /**
      Set SimpleSimonSolverIterationsLimit
    */
    static
    void setSimpleSimonSolverIterationsLimit( int v )
    {
      if (!self()->isSimpleSimonSolverIterationsLimitImmutable())
        self()->mSimpleSimonSolverIterationsLimit = v;
    }

    /**
      Get SimpleSimonSolverIterationsLimit
    */
    static
    int simpleSimonSolverIterationsLimit()
    {
      return self()->mSimpleSimonSolverIterationsLimit;
    }

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

    /**
      Get Item object corresponding to SimpleSimonSolverIterationsLimit()
    */
    ItemInt *simpleSimonSolverIterationsLimitItem()
    {
      return mSimpleSimonSolverIterationsLimitItem;
    }

    /**
      Set BakersDozenSolverIterationsLimit
    */
    static
    void setBakersDozenSolverIterationsLimit( int v )
    {
      if (!self()->isBakersDozenSolverIterationsLimitImmutable())
        self()->mBakersDozenSolverIterationsLimit = v;
    }

    /**
      Get BakersDozenSolverIterationsLimit
    */
    static
    int bakersDozenSolverIterationsLimit()
    {
      return self()->mBakersDozenSolverIterationsLimit;
    }

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

    /**
      Get Item object corresponding to BakersDozenSolverIterationsLimit()
    */
    ItemInt *bakersDozenSolverIterationsLimitItem()
    {
      return mBakersDozenSolverIterationsLimitItem;
    }

    /**
      Set BakersDozenEmptyStackFill
    */
    static
    void setBakersDozenEmptyStackFill( int v )
    {
      if (!self()->isBakersDozenEmptyStackFillImmutable())
        self()->mBakersDozenEmptyStackFill = v;
    }

    /**
      Get BakersDozenEmptyStackFill
    */
    static
    int bakersDozenEmptyStackFill()
    {
      return self()->mBakersDozenEmptyStackFill;
    }

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

    /**
      Get Item object corresponding to BakersDozenEmptyStackFill()
    */
    ItemInt *bakersDozenEmptyStackFillItem()
    {
      return mBakersDozenEmptyStackFillItem;
    }

    /**
      Set BakersDozenStackFacedown
    */
    static
    void setBakersDozenStackFacedown( int v )
    {
      if (!self()->isBakersDozenStackFacedownImmutable())
        self()->mBakersDozenStackFacedown = v;
    }

    /**
      Get BakersDozenStackFacedown
    */
    static
    int bakersDozenStackFacedown()
    {
      return self()->mBakersDozenStackFacedown;
    }

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

    /**
      Get Item object corresponding to BakersDozenStackFacedown()
    */
    ItemInt *bakersDozenStackFacedownItem()
    {
      return mBakersDozenStackFacedownItem;
    }

    /**
      Set BakersDozenSequenceBuiltBy
    */
    static
    void setBakersDozenSequenceBuiltBy( int v )
    {
      if (!self()->isBakersDozenSequenceBuiltByImmutable())
        self()->mBakersDozenSequenceBuiltBy = v;
    }

    /**
      Get BakersDozenSequenceBuiltBy
    */
    static
    int bakersDozenSequenceBuiltBy()
    {
      return self()->mBakersDozenSequenceBuiltBy;
    }

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

    /**
      Get Item object corresponding to BakersDozenSequenceBuiltBy()
    */
    ItemInt *bakersDozenSequenceBuiltByItem()
    {
      return mBakersDozenSequenceBuiltByItem;
    }

    /**
      Set CastleSolverIterationsLimit
    */
    static
    void setCastleSolverIterationsLimit( int v )
    {
      if (!self()->isCastleSolverIterationsLimitImmutable())
        self()->mCastleSolverIterationsLimit = v;
    }

    /**
      Get CastleSolverIterationsLimit
    */
    static
    int castleSolverIterationsLimit()
    {
      return self()->mCastleSolverIterationsLimit;
    }

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

    /**
      Get Item object corresponding to CastleSolverIterationsLimit()
    */
    ItemInt *castleSolverIterationsLimitItem()
    {
      return mCastleSolverIterationsLimitItem;
    }

    /**
      Set CastleEmptyStackFill
    */
    static
    void setCastleEmptyStackFill( int v )
    {
      if (!self()->isCastleEmptyStackFillImmutable())
        self()->mCastleEmptyStackFill = v;
    }

    /**
      Get CastleEmptyStackFill
    */
    static
    int castleEmptyStackFill()
    {
      return self()->mCastleEmptyStackFill;
    }

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

    /**
      Get Item object corresponding to CastleEmptyStackFill()
    */
    ItemInt *castleEmptyStackFillItem()
    {
      return mCastleEmptyStackFillItem;
    }

    /**
      Set CastleSequenceBuiltBy
    */
    static
    void setCastleSequenceBuiltBy( int v )
    {
      if (!self()->isCastleSequenceBuiltByImmutable())
        self()->mCastleSequenceBuiltBy = v;
    }

    /**
      Get CastleSequenceBuiltBy
    */
    static
    int castleSequenceBuiltBy()
    {
      return self()->mCastleSequenceBuiltBy;
    }

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

    /**
      Get Item object corresponding to CastleSequenceBuiltBy()
    */
    ItemInt *castleSequenceBuiltByItem()
    {
      return mCastleSequenceBuiltByItem;
    }

    /**
      Set CastleReserves
    */
    static
    void setCastleReserves( int v )
    {
      if (!self()->isCastleReservesImmutable())
        self()->mCastleReserves = v;
    }

    /**
      Get CastleReserves
    */
    static
    int castleReserves()
    {
      return self()->mCastleReserves;
    }

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

    /**
      Get Item object corresponding to CastleReserves()
    */
    ItemInt *castleReservesItem()
    {
      return mCastleReservesItem;
    }

    /**
      Set CastleStacks
    */
    static
    void setCastleStacks( int v )
    {
      if (!self()->isCastleStacksImmutable())
        self()->mCastleStacks = v;
    }

    /**
      Get CastleStacks
    */
    static
    int castleStacks()
    {
      return self()->mCastleStacks;
    }

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

    /**
      Get Item object corresponding to CastleStacks()
    */
    ItemInt *castleStacksItem()
    {
      return mCastleStacksItem;
    }

    /**
      Set CastleStackFaceup
    */
    static
    void setCastleStackFaceup( int v )
    {
      if (!self()->isCastleStackFaceupImmutable())
        self()->mCastleStackFaceup = v;
    }

    /**
      Get CastleStackFaceup
    */
    static
    int castleStackFaceup()
    {
      return self()->mCastleStackFaceup;
    }

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

    /**
      Get Item object corresponding to CastleStackFaceup()
    */
    ItemInt *castleStackFaceupItem()
    {
      return mCastleStackFaceupItem;
    }

    /**
      Set CastleFoundation
    */
    static
    void setCastleFoundation( int v )
    {
      if (!self()->isCastleFoundationImmutable())
        self()->mCastleFoundation = v;
    }

    /**
      Get CastleFoundation
    */
    static
    int castleFoundation()
    {
      return self()->mCastleFoundation;
    }

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

    /**
      Get Item object corresponding to CastleFoundation()
    */
    ItemInt *castleFoundationItem()
    {
      return mCastleFoundationItem;
    }

    /**
      Set CastleLayout
    */
    static
    void setCastleLayout( int v )
    {
      if (!self()->isCastleLayoutImmutable())
        self()->mCastleLayout = v;
    }

    /**
      Get CastleLayout
    */
    static
    int castleLayout()
    {
      return self()->mCastleLayout;
    }

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

    /**
      Get Item object corresponding to CastleLayout()
    */
    ItemInt *castleLayoutItem()
    {
      return mCastleLayoutItem;
    }

  protected:
    Settings();
    friend class SettingsHelper;


    // General Settings
    bool mAutoDropEnabled;
    bool mSolverEnabled;
    bool mPlaySounds;
    bool mRememberStateOnExit;
    QString mCardTheme;
    static QString defaultCardThemeValue_helper();
    bool mKlondikeIsDrawOne;
    int mSpiderSuitCount;
    int mSpiderStackFaceup;
    int mGolfSolverIterationsLimit;
    int mFreecellSolverIterationsLimit;
    int mFreecellEmptyStackFill;
    int mFreecellSequenceBuiltBy;
    int mFreecellReserves;
    int mFreecellStacks;
    int mFreecellDecks;
    int mSimpleSimonSolverIterationsLimit;
    int mBakersDozenSolverIterationsLimit;
    int mBakersDozenEmptyStackFill;
    int mBakersDozenStackFacedown;
    int mBakersDozenSequenceBuiltBy;
    int mCastleSolverIterationsLimit;
    int mCastleEmptyStackFill;
    int mCastleSequenceBuiltBy;
    int mCastleReserves;
    int mCastleStacks;
    int mCastleStackFaceup;
    int mCastleFoundation;
    int mCastleLayout;

  private:
    ItemBool *mAutoDropEnabledItem;
    ItemBool *mSolverEnabledItem;
    ItemBool *mPlaySoundsItem;
    ItemBool *mRememberStateOnExitItem;
    ItemString *mCardThemeItem;
    ItemBool *mKlondikeIsDrawOneItem;
    ItemInt *mSpiderSuitCountItem;
    ItemInt *mSpiderStackFaceupItem;
    ItemInt *mGolfSolverIterationsLimitItem;
    ItemInt *mFreecellSolverIterationsLimitItem;
    ItemInt *mFreecellEmptyStackFillItem;
    ItemInt *mFreecellSequenceBuiltByItem;
    ItemInt *mFreecellReservesItem;
    ItemInt *mFreecellStacksItem;
    ItemInt *mFreecellDecksItem;
    ItemInt *mSimpleSimonSolverIterationsLimitItem;
    ItemInt *mBakersDozenSolverIterationsLimitItem;
    ItemInt *mBakersDozenEmptyStackFillItem;
    ItemInt *mBakersDozenStackFacedownItem;
    ItemInt *mBakersDozenSequenceBuiltByItem;
    ItemInt *mCastleSolverIterationsLimitItem;
    ItemInt *mCastleEmptyStackFillItem;
    ItemInt *mCastleSequenceBuiltByItem;
    ItemInt *mCastleReservesItem;
    ItemInt *mCastleStacksItem;
    ItemInt *mCastleStackFaceupItem;
    ItemInt *mCastleFoundationItem;
    ItemInt *mCastleLayoutItem;
};

#endif

