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

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

#include <qfontdatabase.h>

class LanguageSettings : public KConfigSkeleton
{
  public:

    LanguageSettings( const QString & locale );
    ~LanguageSettings() override;

    /**
      Set Keyboard layout for this locale
    */
    void setKeyboardLayout( const QString & v )
    {
      if (!isKeyboardLayoutImmutable())
        mKeyboardLayout = v;
    }

    /**
      Get Keyboard layout for this locale
    */
    QString keyboardLayout() const
    {
      return mKeyboardLayout;
    }

    /**
      Is Keyboard layout for this locale Immutable
    */
    bool isKeyboardLayoutImmutable() const
    {
      return isImmutable( QStringLiteral( "KeyboardLayout" ) );
    }

    /**
      Get Item object corresponding to KeyboardLayout()
    */
    ItemString *keyboardLayoutItem()
    {
      return mKeyboardLayoutItem;
    }

    /**
      Set Spell checker for this language
    */
    void setSpellChecker( const QString & v )
    {
      if (!isSpellCheckerImmutable())
        mSpellChecker = v;
    }

    /**
      Get Spell checker for this language
    */
    QString spellChecker() const
    {
      return mSpellChecker;
    }

    /**
      Is Spell checker for this language Immutable
    */
    bool isSpellCheckerImmutable() const
    {
      return isImmutable( QStringLiteral( "SpellChecker" ) );
    }

    /**
      Get Item object corresponding to SpellChecker()
    */
    ItemString *spellCheckerItem()
    {
      return mSpellCheckerItem;
    }

    /**
      Set Selected tenses for conjugation practice.
    */
    void setConjugationTenses( const QStringList & v )
    {
      if (!isConjugationTensesImmutable())
        mConjugationTenses = v;
    }

    /**
      Get Selected tenses for conjugation practice.
    */
    QStringList conjugationTenses() const
    {
      return mConjugationTenses;
    }

    /**
      Is Selected tenses for conjugation practice. Immutable
    */
    bool isConjugationTensesImmutable() const
    {
      return isImmutable( QStringLiteral( "ConjugationTenses" ) );
    }

    /**
      Get Item object corresponding to ConjugationTenses()
    */
    ItemStringList *conjugationTensesItem()
    {
      return mConjugationTensesItem;
    }

    /**
      Set Visible columns in the main editor window.
    */
    void setVisibleColumns( const QList<int> & v )
    {
      if (!isVisibleColumnsImmutable())
        mVisibleColumns = v;
    }

    /**
      Get Visible columns in the main editor window.
    */
    QList<int> visibleColumns() const
    {
      return mVisibleColumns;
    }

    /**
      Is Visible columns in the main editor window. Immutable
    */
    bool isVisibleColumnsImmutable() const
    {
      return isImmutable( QStringLiteral( "VisibleColumns" ) );
    }

    /**
      Get Item object corresponding to VisibleColumns()
    */
    ItemIntList *visibleColumnsItem()
    {
      return mVisibleColumnsItem;
    }

    /**
      Set The font used during practice
    */
    void setPracticeFont( const QFont & v )
    {
      if (!isPracticeFontImmutable())
        mPracticeFont = v;
    }

    /**
      Get The font used during practice
    */
    QFont practiceFont() const
    {
      return mPracticeFont;
    }

    /**
      Is The font used during practice Immutable
    */
    bool isPracticeFontImmutable() const
    {
      return isImmutable( QStringLiteral( "PracticeFont" ) );
    }

    /**
      Get Item object corresponding to PracticeFont()
    */
    ItemFont *practiceFontItem()
    {
      return mPracticeFontItem;
    }

    /**
      Set The font used in the editor
    */
    void setEditorFont( const QFont & v )
    {
      if (!isEditorFontImmutable())
        mEditorFont = v;
    }

    /**
      Get The font used in the editor
    */
    QFont editorFont() const
    {
      return mEditorFont;
    }

    /**
      Is The font used in the editor Immutable
    */
    bool isEditorFontImmutable() const
    {
      return isImmutable( QStringLiteral( "EditorFont" ) );
    }

    /**
      Get Item object corresponding to EditorFont()
    */
    ItemFont *editorFontItem()
    {
      return mEditorFontItem;
    }

  protected:
    QString mParamlocale;

    // Locale $(locale)
    QString mKeyboardLayout;
    QString mSpellChecker;
    QStringList mConjugationTenses;
    QList<int> mVisibleColumns;
    QFont mPracticeFont;
    QFont mEditorFont;

  private:
    ItemString *mKeyboardLayoutItem;
    ItemString *mSpellCheckerItem;
    ItemStringList *mConjugationTensesItem;
    ItemIntList *mVisibleColumnsItem;
    ItemFont *mPracticeFontItem;
    ItemFont *mEditorFontItem;
};

#endif

