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

#include <qdir.h>

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

class Prefs : public KCoreConfigSkeleton
{
  public:

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

    /**
      Set Level
    */
    static
    void setCurrentLevel( int v )
    {
      if (!self()->isCurrentLevelImmutable())
        self()->mCurrentLevel = v;
    }

    /**
      Get Level
    */
    static
    int currentLevel()
    {
      return self()->mCurrentLevel;
    }

    /**
      Is Level Immutable
    */
    static
    bool isCurrentLevelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CurrentLevel" ) );
    }

    /**
      Set LevelFile
    */
    static
    void setLevelFile( const QString & v )
    {
      if (!self()->isLevelFileImmutable())
        self()->mLevelFile = v;
    }

    /**
      Get LevelFile
    */
    static
    QString levelFile()
    {
      return self()->mLevelFile;
    }

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

    /**
      Set The language selected by the user
    */
    static
    void setSelectedLanguage( const QString & v )
    {
      if (!self()->isSelectedLanguageImmutable())
        self()->mSelectedLanguage = v;
    }

    /**
      Get The language selected by the user
    */
    static
    QString selectedLanguage()
    {
      return self()->mSelectedLanguage;
    }

    /**
      Is The language selected by the user Immutable
    */
    static
    bool isSelectedLanguageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SelectedLanguage" ) );
    }

    /**
      Set Background theme name
    */
    static
    void setTheme( const QString & v )
    {
      if (!self()->isThemeImmutable())
        self()->mTheme = v;
    }

    /**
      Get Background theme name
    */
    static
    QString theme()
    {
      return self()->mTheme;
    }

    /**
      Is Background theme name Immutable
    */
    static
    bool isThemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Theme" ) );
    }

    /**
      Set Check this if you do not want to discover each instance of the same letter.
    */
    static
    void setOneLetter( bool v )
    {
      if (!self()->isOneLetterImmutable())
        self()->mOneLetter = v;
    }

    /**
      Get Check this if you do not want to discover each instance of the same letter.
    */
    static
    bool oneLetter()
    {
      return self()->mOneLetter;
    }

    /**
      Is Check this if you do not want to discover each instance of the same letter. Immutable
    */
    static
    bool isOneLetterImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OneLetter" ) );
    }

    /**
      Set Enable Animations
    */
    static
    void setEnableAnimations( bool v )
    {
      if (!self()->isEnableAnimationsImmutable())
        self()->mEnableAnimations = v;
    }

    /**
      Get Enable Animations
    */
    static
    bool enableAnimations()
    {
      return self()->mEnableAnimations;
    }

    /**
      Is Enable Animations Immutable
    */
    static
    bool isEnableAnimationsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EnableAnimations" ) );
    }

    /**
      Set If checked, sounds will be played for New Game and Win Game
    */
    static
    void setSound( bool v )
    {
      if (!self()->isSoundImmutable())
        self()->mSound = v;
    }

    /**
      Get If checked, sounds will be played for New Game and Win Game
    */
    static
    bool sound()
    {
      return self()->mSound;
    }

    /**
      Is If checked, sounds will be played for New Game and Win Game Immutable
    */
    static
    bool isSoundImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Sound" ) );
    }

    /**
      Set If checked, hints will always been displayed. If this is not checked (default)
            hints will be displayed only per word when the user chooses to show the hint.
    */
    static
    void setHint( bool v )
    {
      if (!self()->isHintImmutable())
        self()->mHint = v;
    }

    /**
      Get If checked, hints will always been displayed. If this is not checked (default)
            hints will be displayed only per word when the user chooses to show the hint.
    */
    static
    bool hint()
    {
      return self()->mHint;
    }

    /**
      Is If checked, hints will always been displayed. If this is not checked (default)
            hints will be displayed only per word when the user chooses to show the hint. Immutable
    */
    static
    bool isHintImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Hint" ) );
    }

    /**
      Set This setting allows you to set in seconds how much time is available for resolving the word.
    */
    static
    void setResolveTime( int v )
    {
      if (!self()->isResolveTimeImmutable())
        self()->mResolveTime = v;
    }

    /**
      Get This setting allows you to set in seconds how much time is available for resolving the word.
    */
    static
    int resolveTime()
    {
      return self()->mResolveTime;
    }

    /**
      Is This setting allows you to set in seconds how much time is available for resolving the word. Immutable
    */
    static
    bool isResolveTimeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "resolveTime" ) );
    }

    /**
      Set Type accented letters separately from normal letters
    */
    static
    void setAccentedLetters( bool v )
    {
      if (!self()->isAccentedLettersImmutable())
        self()->mAccentedLetters = v;
    }

    /**
      Get Type accented letters separately from normal letters
    */
    static
    bool accentedLetters()
    {
      return self()->mAccentedLetters;
    }

    /**
      Is Type accented letters separately from normal letters Immutable
    */
    static
    bool isAccentedLettersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AccentedLetters" ) );
    }

    /**
      Set The Providers path for KHangMan
    */
    static
    void setProvidersUrl( const QString & v )
    {
      if (!self()->isProvidersUrlImmutable())
        self()->mProvidersUrl = v;
    }

    /**
      Get The Providers path for KHangMan
    */
    static
    QString providersUrl()
    {
      return self()->mProvidersUrl;
    }

    /**
      Is The Providers path for KHangMan Immutable
    */
    static
    bool isProvidersUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProvidersUrl" ) );
    }

  protected:
    Prefs();
    friend class PrefsHelper;


    // Language
    int mCurrentLevel;
    QString mLevelFile;
    QString mSelectedLanguage;

    // Look
    QString mTheme;

    // General
    bool mOneLetter;
    bool mEnableAnimations;
    bool mSound;
    bool mHint;
    int mResolveTime;

    // Advanced
    bool mAccentedLetters;

    // KNewStuff
    QString mProvidersUrl;
};

#endif

