// This file is generated by kconfig_compiler_kf5 from klickety.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();
    static void instance(const QString& cfgfilename);
    static void instance(KSharedConfig::Ptr config);
    ~Settings();

    /**
      Set showboundlines
    */
    static
    void setShowBoundLines( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowBoundLines" ) ))
        self()->mShowBoundLines = v;
    }

    /**
      Get showboundlines
    */
    static
    bool showBoundLines()
    {
      return self()->mShowBoundLines;
    }

    /**
      Set enableanimation
    */
    static
    void setEnableAnimation( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnableAnimation" ) ))
        self()->mEnableAnimation = v;
    }

    /**
      Get enableanimation
    */
    static
    bool enableAnimation()
    {
      return self()->mEnableAnimation;
    }

    /**
      Set enablehighlight
    */
    static
    void setEnableHighlight( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnableHighlight" ) ))
        self()->mEnableHighlight = v;
    }

    /**
      Get enablehighlight
    */
    static
    bool enableHighlight()
    {
      return self()->mEnableHighlight;
    }

    /**
      Set enablesounds
    */
    static
    void setEnableSounds( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnableSounds" ) ))
        self()->mEnableSounds = v;
    }

    /**
      Get enablesounds
    */
    static
    bool enableSounds()
    {
      return self()->mEnableSounds;
    }

    /**
      Set RadioTheme
    */
    static
    void setRadioTheme( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RadioTheme" ) ))
        self()->mRadioTheme = v;
    }

    /**
      Get RadioTheme
    */
    static
    bool radioTheme()
    {
      return self()->mRadioTheme;
    }

    /**
      Set RadioColor
    */
    static
    void setRadioColor( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RadioColor" ) ))
        self()->mRadioColor = v;
    }

    /**
      Get RadioColor
    */
    static
    bool radioColor()
    {
      return self()->mRadioColor;
    }

    /**
      Set RadioImage
    */
    static
    void setRadioImage( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RadioImage" ) ))
        self()->mRadioImage = v;
    }

    /**
      Get RadioImage
    */
    static
    bool radioImage()
    {
      return self()->mRadioImage;
    }

    /**
      Set The background color to be used.
    */
    static
    void setBgColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BgColor" ) ))
        self()->mBgColor = v;
    }

    /**
      Get The background color to be used.
    */
    static
    QColor bgColor()
    {
      return self()->mBgColor;
    }

    /**
      Set The background image to be used.
    */
    static
    void setBgImage( const QUrl & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BgImage" ) ))
        self()->mBgImage = v;
    }

    /**
      Get The background image to be used.
    */
    static
    QUrl bgImage()
    {
      return self()->mBgImage;
    }

    /**
      Set The width of the playing field.
    */
    static
    void setCustomWidth( int v )
    {
      if (v < 5)
      {
        qDebug() << "setCustomWidth: value " << v << " is less than the minimum value of 5";
        v = 5;
      }

      if (v > 50)
      {
        qDebug() << "setCustomWidth: value " << v << " is greater than the maximum value of 50";
        v = 50;
      }

      if (!self()->isImmutable( QStringLiteral( "CustomWidth" ) ))
        self()->mCustomWidth = v;
    }

    /**
      Get The width of the playing field.
    */
    static
    int customWidth()
    {
      return self()->mCustomWidth;
    }

    /**
      Set The height of the playing field.
    */
    static
    void setCustomHeight( int v )
    {
      if (v < 5)
      {
        qDebug() << "setCustomHeight: value " << v << " is less than the minimum value of 5";
        v = 5;
      }

      if (v > 50)
      {
        qDebug() << "setCustomHeight: value " << v << " is greater than the maximum value of 50";
        v = 50;
      }

      if (!self()->isImmutable( QStringLiteral( "CustomHeight" ) ))
        self()->mCustomHeight = v;
    }

    /**
      Get The height of the playing field.
    */
    static
    int customHeight()
    {
      return self()->mCustomHeight;
    }

    /**
      Set The number of colors in the playing field.
    */
    static
    void setCustomColorCount( int v )
    {
      if (v < 1)
      {
        qDebug() << "setCustomColorCount: value " << v << " is less than the minimum value of 1";
        v = 1;
      }
      if (!self()->isImmutable( QStringLiteral( "CustomColorCount" ) ))
        self()->mCustomColorCount = v;
    }

    /**
      Get The number of colors in the playing field.
    */
    static
    int customColorCount()
    {
      return self()->mCustomColorCount;
    }

  protected:
    Settings(KSharedConfig::Ptr config);
    friend class SettingsHelper;


    // General
    bool mShowBoundLines;
    bool mEnableAnimation;
    bool mEnableHighlight;
    bool mEnableSounds;

    // Background
    bool mRadioTheme;
    bool mRadioColor;
    bool mRadioImage;
    QColor mBgColor;
    QUrl mBgImage;

    // CustomGame
    int mCustomWidth;
    int mCustomHeight;
    int mCustomColorCount;

  private:
};

#endif

