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

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

class QQmlEngine;
class QJSEngine;

class KalkConfig : public KConfigSkeleton
{
  Q_OBJECT
  QML_ELEMENT
  QML_SINGLETON
  public:

    static KalkConfig *self();
    static KalkConfig *create(QQmlEngine *, QJSEngine *);
    ~KalkConfig() override;

    /**
      Set Default precision for approximate calculations.
    */
    static
    void setPrecision( int v )
    {
      if (v != self()->mPrecision && !self()->isPrecisionImmutable()) {
        self()->mPrecision = v;
        Q_EMIT self()->PrecisionChanged();
      }
    }

    Q_PROPERTY(int precision READ precision WRITE setPrecision NOTIFY PrecisionChanged)
    Q_PROPERTY(bool isPrecisionImmutable READ isPrecisionImmutable CONSTANT)
    Q_PROPERTY(int defaultPrecisionValue READ defaultPrecisionValue CONSTANT)
    /**
      Get Default precision for approximate calculations.
    */
    static
    int precision()
    {
      return self()->mPrecision;
    }

    /**
      Is Default precision for approximate calculations. Immutable
    */
    static
    bool isPrecisionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Precision" ) );
    }

    /**
      Get Default precision for approximate calculations. default value
    */
    static
    int defaultPrecisionValue()
    {
        return defaultPrecisionValue_helper();
    }

    /**
      Set Angle unit
    */
    static
    void setAngleUnit( int v )
    {
      if (v != self()->mAngleUnit && !self()->isAngleUnitImmutable()) {
        self()->mAngleUnit = v;
        Q_EMIT self()->AngleUnitChanged();
      }
    }

    Q_PROPERTY(int angleUnit READ angleUnit WRITE setAngleUnit NOTIFY AngleUnitChanged)
    Q_PROPERTY(bool isAngleUnitImmutable READ isAngleUnitImmutable CONSTANT)
    Q_PROPERTY(int defaultAngleUnitValue READ defaultAngleUnitValue CONSTANT)
    /**
      Get Angle unit
    */
    static
    int angleUnit()
    {
      return self()->mAngleUnit;
    }

    /**
      Is Angle unit Immutable
    */
    static
    bool isAngleUnitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AngleUnit" ) );
    }

    /**
      Get Angle unit default value
    */
    static
    int defaultAngleUnitValue()
    {
        return defaultAngleUnitValue_helper();
    }

    /**
      Set The evaluation order of expressions.
    */
    static
    void setParsingMode( int v )
    {
      if (v != self()->mParsingMode && !self()->isParsingModeImmutable()) {
        self()->mParsingMode = v;
        Q_EMIT self()->ParsingModeChanged();
      }
    }

    Q_PROPERTY(int parsingMode READ parsingMode WRITE setParsingMode NOTIFY ParsingModeChanged)
    Q_PROPERTY(bool isParsingModeImmutable READ isParsingModeImmutable CONSTANT)
    Q_PROPERTY(int defaultParsingModeValue READ defaultParsingModeValue CONSTANT)
    /**
      Get The evaluation order of expressions.
    */
    static
    int parsingMode()
    {
      return self()->mParsingMode;
    }

    /**
      Is The evaluation order of expressions. Immutable
    */
    static
    bool isParsingModeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ParsingMode" ) );
    }

    /**
      Get The evaluation order of expressions. default value
    */
    static
    int defaultParsingModeValue()
    {
        return defaultParsingModeValue_helper();
    }

    /**
      Set Include thousand separators when copying numbers
    */
    static
    void setCopyWithSeparators( bool v )
    {
      if (v != self()->mCopyWithSeparators && !self()->isCopyWithSeparatorsImmutable()) {
        self()->mCopyWithSeparators = v;
        Q_EMIT self()->copyWithSeparatorsChanged();
      }
    }

    Q_PROPERTY(bool copyWithSeparators READ copyWithSeparators WRITE setCopyWithSeparators NOTIFY copyWithSeparatorsChanged)
    Q_PROPERTY(bool isCopyWithSeparatorsImmutable READ isCopyWithSeparatorsImmutable CONSTANT)
    Q_PROPERTY(bool defaultCopyWithSeparatorsValue READ defaultCopyWithSeparatorsValue CONSTANT)
    /**
      Get Include thousand separators when copying numbers
    */
    static
    bool copyWithSeparators()
    {
      return self()->mCopyWithSeparators;
    }

    /**
      Is Include thousand separators when copying numbers Immutable
    */
    static
    bool isCopyWithSeparatorsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "copyWithSeparators" ) );
    }

    /**
      Get Include thousand separators when copying numbers default value
    */
    static
    bool defaultCopyWithSeparatorsValue()
    {
        return defaultCopyWithSeparatorsValue_helper();
    }


    enum {
      signalPrecisionChanged = 1,
      signalAngleUnitChanged = 2,
      signalParsingModeChanged = 3,
      signalCopyWithSeparatorsChanged = 4
    };

  Q_SIGNALS:
    void PrecisionChanged();

    void AngleUnitChanged();

    void ParsingModeChanged();

    void copyWithSeparatorsChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    KalkConfig(QObject *parent = nullptr);
    friend class KalkConfigHelper;


    // General
    int mPrecision;
    static int defaultPrecisionValue_helper();
    int mAngleUnit;
    static int defaultAngleUnitValue_helper();
    int mParsingMode;
    static int defaultParsingModeValue_helper();
    bool mCopyWithSeparators;
    static bool defaultCopyWithSeparatorsValue_helper();
};

#endif

