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

#include <qdir.h>
#include <khangman_engine_export.h>

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

class KHANGMAN_ENGINE_EXPORT Prefs : public KCoreConfigSkeleton
{
  public:

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

    /**
      Set Level
    */
    static
    void setCurrentLevel( int v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "CurrentLevel" ) ))
        self()->mCurrentLevel = v;
    }

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

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

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

    /**
      Set Show the characters toolbar
    */
    static
    void setShowCharToolbar( bool v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "ShowCharToolbar" ) ))
        self()->mShowCharToolbar = v;
    }

    /**
      Get Show the characters toolbar
    */
    static
    bool showCharToolbar()
    {
      return self()->mShowCharToolbar;
    }

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

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

    /**
      Set Background theme
    */
    static
    void setMode( int v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "Mode" ) ))
        self()->mMode = v;
    }

    /**
      Get Background theme
    */
    static
    int mode()
    {
      return self()->mMode;
    }

    /**
      Set Check this if you do not want to discover each instance of the same letter.
    */
    static
    void setOneLetter( bool v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "OneLetter" ) ))
        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;
    }

    /**
      Set Enable Animations
    */
    static
    void setEnableAnimations( bool v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "EnableAnimations" ) ))
        self()->mEnableAnimations = v;
    }

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

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

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

    /**
      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()->isImmutable( QString::fromLatin1( "Hint" ) ))
        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;
    }

    /**
      Set This setting allows you to set in seconds how long KHangMan's hint bubble is shown.
    */
    static
    void setHintHideTime( int v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "hintHideTime" ) ))
        self()->mHintHideTime = v;
    }

    /**
      Get This setting allows you to set in seconds how long KHangMan's hint bubble is shown.
    */
    static
    int hintHideTime()
    {
      return self()->mHintHideTime;
    }

    /**
      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()->isImmutable( QString::fromLatin1( "resolveTime" ) ))
        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;
    }

    /**
      Set Time during which the "Already Guessed" tooltip is displayed.
    */
    static
    void setMissedTimer( int v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "MissedTimer" ) ))
        self()->mMissedTimer = v;
    }

    /**
      Get Time during which the "Already Guessed" tooltip is displayed.
    */
    static
    int missedTimer()
    {
      return self()->mMissedTimer;
    }

    /**
      Set Type accented letters separately from normal letters
    */
    static
    void setAccentedLetters( bool v )
    {
      if (!self()->isImmutable( QString::fromLatin1( "AccentedLetters" ) ))
        self()->mAccentedLetters = v;
    }

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

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

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

  protected:
    Prefs();
    friend class PrefsHelper;


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

    // Look
    int mMode;

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

    // Advanced
    bool mAccentedLetters;

    // KNewStuff
    QString mProvidersUrl;

  private:
};

#endif

