// This file is generated by kconfig_compiler_kf6 from ksudoku.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 printMulti
    */
    static
    void setPrintMulti( bool v )
    {
      if (!self()->isPrintMultiImmutable())
        self()->mPrintMulti = v;
    }

    /**
      Get printMulti
    */
    static
    bool printMulti()
    {
      return self()->mPrintMulti;
    }

    /**
      Is printMulti Immutable
    */
    static
    bool isPrintMultiImmutable()
    {
      return self()->isImmutable( QStringLiteral( "PrintMulti" ) );
    }

    /**
      Set showHighlights
    */
    static
    void setShowHighlights( bool v )
    {
      if (!self()->isShowHighlightsImmutable())
        self()->mShowHighlights = v;
    }

    /**
      Get showHighlights
    */
    static
    bool showHighlights()
    {
      return self()->mShowHighlights;
    }

    /**
      Is showHighlights Immutable
    */
    static
    bool isShowHighlightsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowHighlights" ) );
    }

    /**
      Set showErrors
    */
    static
    void setShowErrors( bool v )
    {
      if (!self()->isShowErrorsImmutable())
        self()->mShowErrors = v;
    }

    /**
      Get showErrors
    */
    static
    bool showErrors()
    {
      return self()->mShowErrors;
    }

    /**
      Is showErrors Immutable
    */
    static
    bool isShowErrorsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowErrors" ) );
    }

    /**
      Set showHighlights3D
    */
    static
    void setShowHighlights3D( bool v )
    {
      if (!self()->isShowHighlights3DImmutable())
        self()->mShowHighlights3D = v;
    }

    /**
      Get showHighlights3D
    */
    static
    bool showHighlights3D()
    {
      return self()->mShowHighlights3D;
    }

    /**
      Is showHighlights3D Immutable
    */
    static
    bool isShowHighlights3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowHighlights3D" ) );
    }

    /**
      Set mathdokuSize
    */
    static
    void setMathdokuSize( int v )
    {
      if (!self()->isMathdokuSizeImmutable())
        self()->mMathdokuSize = v;
    }

    /**
      Get mathdokuSize
    */
    static
    int mathdokuSize()
    {
      return self()->mMathdokuSize;
    }

    /**
      Is mathdokuSize Immutable
    */
    static
    bool isMathdokuSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MathdokuSize" ) );
    }

    /**
      Set overallSize3D
    */
    static
    void setOverallSize3D( int v )
    {
      if (!self()->isOverallSize3DImmutable())
        self()->mOverallSize3D = v;
    }

    /**
      Get overallSize3D
    */
    static
    int overallSize3D()
    {
      return self()->mOverallSize3D;
    }

    /**
      Is overallSize3D Immutable
    */
    static
    bool isOverallSize3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OverallSize3D" ) );
    }

    /**
      Set selectionSize3D
    */
    static
    void setSelectionSize3D( int v )
    {
      if (!self()->isSelectionSize3DImmutable())
        self()->mSelectionSize3D = v;
    }

    /**
      Get selectionSize3D
    */
    static
    int selectionSize3D()
    {
      return self()->mSelectionSize3D;
    }

    /**
      Is selectionSize3D Immutable
    */
    static
    bool isSelectionSize3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SelectionSize3D" ) );
    }

    /**
      Set highlightedSize3D
    */
    static
    void setHighlightedSize3D( int v )
    {
      if (!self()->isHighlightedSize3DImmutable())
        self()->mHighlightedSize3D = v;
    }

    /**
      Get highlightedSize3D
    */
    static
    int highlightedSize3D()
    {
      return self()->mHighlightedSize3D;
    }

    /**
      Is highlightedSize3D Immutable
    */
    static
    bool isHighlightedSize3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HighlightedSize3D" ) );
    }

    /**
      Set outerCellSize3D
    */
    static
    void setOuterCellSize3D( int v )
    {
      if (!self()->isOuterCellSize3DImmutable())
        self()->mOuterCellSize3D = v;
    }

    /**
      Get outerCellSize3D
    */
    static
    int outerCellSize3D()
    {
      return self()->mOuterCellSize3D;
    }

    /**
      Is outerCellSize3D Immutable
    */
    static
    bool isOuterCellSize3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OuterCellSize3D" ) );
    }

    /**
      Set darkenOuterCells3D
    */
    static
    void setDarkenOuterCells3D( bool v )
    {
      if (!self()->isDarkenOuterCells3DImmutable())
        self()->mDarkenOuterCells3D = v;
    }

    /**
      Get darkenOuterCells3D
    */
    static
    bool darkenOuterCells3D()
    {
      return self()->mDarkenOuterCells3D;
    }

    /**
      Is darkenOuterCells3D Immutable
    */
    static
    bool isDarkenOuterCells3DImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DarkenOuterCells3D" ) );
    }

    /**
      Set Highlight cells containing the same value
    */
    static
    void setHighlightSameValues( bool v )
    {
      if (!self()->isHighlightSameValuesImmutable())
        self()->mHighlightSameValues = v;
    }

    /**
      Get Highlight cells containing the same value
    */
    static
    bool highlightSameValues()
    {
      return self()->mHighlightSameValues;
    }

    /**
      Is Highlight cells containing the same value Immutable
    */
    static
    bool isHighlightSameValuesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HighlightSameValues" ) );
    }

    /**
      Set The graphical theme to be used.
    */
    static
    void setTheme( const QString & v )
    {
      if (!self()->isThemeImmutable())
        self()->mTheme = v;
    }

    /**
      Get The graphical theme to be used.
    */
    static
    QString theme()
    {
      return self()->mTheme;
    }

    /**
      Is The graphical theme to be used. Immutable
    */
    static
    bool isThemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Theme" ) );
    }

    /**
      Set Select the themes you want to use
    */
    static
    void setSymbols( const QStringList & v )
    {
      if (!self()->isSymbolsImmutable())
        self()->mSymbols = v;
    }

    /**
      Get Select the themes you want to use
    */
    static
    QStringList symbols()
    {
      return self()->mSymbols;
    }

    /**
      Is Select the themes you want to use Immutable
    */
    static
    bool isSymbolsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Symbols" ) );
    }

  protected:
    Settings();
    friend class SettingsHelper;


    // Options
    bool mPrintMulti;
    bool mShowHighlights;
    bool mShowErrors;
    bool mShowHighlights3D;
    int mMathdokuSize;
    int mOverallSize3D;
    int mSelectionSize3D;
    int mHighlightedSize3D;
    int mOuterCellSize3D;
    bool mDarkenOuterCells3D;
    bool mHighlightSameValues;

    // Themes
    QString mTheme;
    QStringList mSymbols;
};

#endif

