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

#include "kconfig_base_ee.hpp"

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

class DbVoiceSuppressor : public KConfigBaseEE
{
  Q_OBJECT
  QML_ELEMENT
  QML_UNCREATABLE("")
  public:

    DbVoiceSuppressor( const QString & masterGroup, const QString & instanceIndex );
    ~DbVoiceSuppressor() override;

    /**
      Set bypass
    */
    void setBypass( bool v )
    {
      if (v != mBypass && !isBypassImmutable()) {
        mBypass = v;
        Q_EMIT bypassChanged();
      }
    }

    Q_PROPERTY(bool bypass READ bypass WRITE setBypass NOTIFY bypassChanged)
    Q_PROPERTY(bool isBypassImmutable READ isBypassImmutable CONSTANT)
    Q_PROPERTY(bool defaultBypassValue READ defaultBypassValue CONSTANT)
    /**
      Get bypass
    */
    bool bypass() const
    {
      return mBypass;
    }

    /**
      Is bypass Immutable
    */
    bool isBypassImmutable() const
    {
      return isImmutable( QStringLiteral( "bypass" ) );
    }

    /**
      Get bypass default value
    */
    bool defaultBypassValue() const
    {
        return defaultBypassValue_helper();
    }

    /**
      Set inputGain
    */
    void setInputGain( double v )
    {
      if (v < -36)
      {
        qDebug() << "setInputGain: value " << v << " is less than the minimum value of -36";
        v = -36;
      }

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

      if (v != mInputGain && !isInputGainImmutable()) {
        mInputGain = v;
        Q_EMIT inputGainChanged();
      }
    }

    Q_PROPERTY(double inputGain READ inputGain WRITE setInputGain NOTIFY inputGainChanged)
    Q_PROPERTY(bool isInputGainImmutable READ isInputGainImmutable CONSTANT)
    Q_PROPERTY(double defaultInputGainValue READ defaultInputGainValue CONSTANT)
    /**
      Get inputGain
    */
    double inputGain() const
    {
      return mInputGain;
    }

    /**
      Is inputGain Immutable
    */
    bool isInputGainImmutable() const
    {
      return isImmutable( QStringLiteral( "inputGain" ) );
    }

    /**
      Get inputGain default value
    */
    double defaultInputGainValue() const
    {
        return defaultInputGainValue_helper();
    }

    /**
      Set outputGain
    */
    void setOutputGain( double v )
    {
      if (v < -36)
      {
        qDebug() << "setOutputGain: value " << v << " is less than the minimum value of -36";
        v = -36;
      }

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

      if (v != mOutputGain && !isOutputGainImmutable()) {
        mOutputGain = v;
        Q_EMIT outputGainChanged();
      }
    }

    Q_PROPERTY(double outputGain READ outputGain WRITE setOutputGain NOTIFY outputGainChanged)
    Q_PROPERTY(bool isOutputGainImmutable READ isOutputGainImmutable CONSTANT)
    Q_PROPERTY(double defaultOutputGainValue READ defaultOutputGainValue CONSTANT)
    /**
      Get outputGain
    */
    double outputGain() const
    {
      return mOutputGain;
    }

    /**
      Is outputGain Immutable
    */
    bool isOutputGainImmutable() const
    {
      return isImmutable( QStringLiteral( "outputGain" ) );
    }

    /**
      Get outputGain default value
    */
    double defaultOutputGainValue() const
    {
        return defaultOutputGainValue_helper();
    }

    /**
      Set freqStart
    */
    void setFreqStart( double v )
    {
      if (v < 20)
      {
        qDebug() << "setFreqStart: value " << v << " is less than the minimum value of 20";
        v = 20;
      }

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

      if (v != mFreqStart && !isFreqStartImmutable()) {
        mFreqStart = v;
        Q_EMIT freqStartChanged();
      }
    }

    Q_PROPERTY(double freqStart READ freqStart WRITE setFreqStart NOTIFY freqStartChanged)
    Q_PROPERTY(bool isFreqStartImmutable READ isFreqStartImmutable CONSTANT)
    Q_PROPERTY(double defaultFreqStartValue READ defaultFreqStartValue CONSTANT)
    /**
      Get freqStart
    */
    double freqStart() const
    {
      return mFreqStart;
    }

    /**
      Is freqStart Immutable
    */
    bool isFreqStartImmutable() const
    {
      return isImmutable( QStringLiteral( "freqStart" ) );
    }

    /**
      Get freqStart default value
    */
    double defaultFreqStartValue() const
    {
        return defaultFreqStartValue_helper();
    }

    /**
      Set freqEnd
    */
    void setFreqEnd( double v )
    {
      if (v < 20)
      {
        qDebug() << "setFreqEnd: value " << v << " is less than the minimum value of 20";
        v = 20;
      }

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

      if (v != mFreqEnd && !isFreqEndImmutable()) {
        mFreqEnd = v;
        Q_EMIT freqEndChanged();
      }
    }

    Q_PROPERTY(double freqEnd READ freqEnd WRITE setFreqEnd NOTIFY freqEndChanged)
    Q_PROPERTY(bool isFreqEndImmutable READ isFreqEndImmutable CONSTANT)
    Q_PROPERTY(double defaultFreqEndValue READ defaultFreqEndValue CONSTANT)
    /**
      Get freqEnd
    */
    double freqEnd() const
    {
      return mFreqEnd;
    }

    /**
      Is freqEnd Immutable
    */
    bool isFreqEndImmutable() const
    {
      return isImmutable( QStringLiteral( "freqEnd" ) );
    }

    /**
      Get freqEnd default value
    */
    double defaultFreqEndValue() const
    {
        return defaultFreqEndValue_helper();
    }

    /**
      Set correlation
    */
    void setCorrelation( double v )
    {
      if (v < 1)
      {
        qDebug() << "setCorrelation: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

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

      if (v != mCorrelation && !isCorrelationImmutable()) {
        mCorrelation = v;
        Q_EMIT correlationChanged();
      }
    }

    Q_PROPERTY(double correlation READ correlation WRITE setCorrelation NOTIFY correlationChanged)
    Q_PROPERTY(bool isCorrelationImmutable READ isCorrelationImmutable CONSTANT)
    Q_PROPERTY(double defaultCorrelationValue READ defaultCorrelationValue CONSTANT)
    /**
      Get correlation
    */
    double correlation() const
    {
      return mCorrelation;
    }

    /**
      Is correlation Immutable
    */
    bool isCorrelationImmutable() const
    {
      return isImmutable( QStringLiteral( "correlation" ) );
    }

    /**
      Get correlation default value
    */
    double defaultCorrelationValue() const
    {
        return defaultCorrelationValue_helper();
    }

    /**
      Set phaseDifference
    */
    void setPhaseDifference( double v )
    {
      if (v < 1)
      {
        qDebug() << "setPhaseDifference: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

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

      if (v != mPhaseDifference && !isPhaseDifferenceImmutable()) {
        mPhaseDifference = v;
        Q_EMIT phaseDifferenceChanged();
      }
    }

    Q_PROPERTY(double phaseDifference READ phaseDifference WRITE setPhaseDifference NOTIFY phaseDifferenceChanged)
    Q_PROPERTY(bool isPhaseDifferenceImmutable READ isPhaseDifferenceImmutable CONSTANT)
    Q_PROPERTY(double defaultPhaseDifferenceValue READ defaultPhaseDifferenceValue CONSTANT)
    /**
      Get phaseDifference
    */
    double phaseDifference() const
    {
      return mPhaseDifference;
    }

    /**
      Is phaseDifference Immutable
    */
    bool isPhaseDifferenceImmutable() const
    {
      return isImmutable( QStringLiteral( "phaseDifference" ) );
    }

    /**
      Get phaseDifference default value
    */
    double defaultPhaseDifferenceValue() const
    {
        return defaultPhaseDifferenceValue_helper();
    }

    /**
      Set minKurtosis
    */
    void setMinKurtosis( double v )
    {
      if (v < 0)
      {
        qDebug() << "setMinKurtosis: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

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

      if (v != mMinKurtosis && !isMinKurtosisImmutable()) {
        mMinKurtosis = v;
        Q_EMIT minKurtosisChanged();
      }
    }

    Q_PROPERTY(double minKurtosis READ minKurtosis WRITE setMinKurtosis NOTIFY minKurtosisChanged)
    Q_PROPERTY(bool isMinKurtosisImmutable READ isMinKurtosisImmutable CONSTANT)
    Q_PROPERTY(double defaultMinKurtosisValue READ defaultMinKurtosisValue CONSTANT)
    /**
      Get minKurtosis
    */
    double minKurtosis() const
    {
      return mMinKurtosis;
    }

    /**
      Is minKurtosis Immutable
    */
    bool isMinKurtosisImmutable() const
    {
      return isImmutable( QStringLiteral( "minKurtosis" ) );
    }

    /**
      Get minKurtosis default value
    */
    double defaultMinKurtosisValue() const
    {
        return defaultMinKurtosisValue_helper();
    }

    /**
      Set maxInstFreq
    */
    void setMaxInstFreq( double v )
    {
      if (v < 0)
      {
        qDebug() << "setMaxInstFreq: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

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

      if (v != mMaxInstFreq && !isMaxInstFreqImmutable()) {
        mMaxInstFreq = v;
        Q_EMIT maxInstFreqChanged();
      }
    }

    Q_PROPERTY(double maxInstFreq READ maxInstFreq WRITE setMaxInstFreq NOTIFY maxInstFreqChanged)
    Q_PROPERTY(bool isMaxInstFreqImmutable READ isMaxInstFreqImmutable CONSTANT)
    Q_PROPERTY(double defaultMaxInstFreqValue READ defaultMaxInstFreqValue CONSTANT)
    /**
      Get maxInstFreq
    */
    double maxInstFreq() const
    {
      return mMaxInstFreq;
    }

    /**
      Is maxInstFreq Immutable
    */
    bool isMaxInstFreqImmutable() const
    {
      return isImmutable( QStringLiteral( "maxInstFreq" ) );
    }

    /**
      Get maxInstFreq default value
    */
    double defaultMaxInstFreqValue() const
    {
        return defaultMaxInstFreqValue_helper();
    }

    /**
      Set invertedMode
    */
    void setInvertedMode( bool v )
    {
      if (v != mInvertedMode && !isInvertedModeImmutable()) {
        mInvertedMode = v;
        Q_EMIT invertedModeChanged();
      }
    }

    Q_PROPERTY(bool invertedMode READ invertedMode WRITE setInvertedMode NOTIFY invertedModeChanged)
    Q_PROPERTY(bool isInvertedModeImmutable READ isInvertedModeImmutable CONSTANT)
    Q_PROPERTY(bool defaultInvertedModeValue READ defaultInvertedModeValue CONSTANT)
    /**
      Get invertedMode
    */
    bool invertedMode() const
    {
      return mInvertedMode;
    }

    /**
      Is invertedMode Immutable
    */
    bool isInvertedModeImmutable() const
    {
      return isImmutable( QStringLiteral( "invertedMode" ) );
    }

    /**
      Get invertedMode default value
    */
    bool defaultInvertedModeValue() const
    {
        return defaultInvertedModeValue_helper();
    }


    enum {
      signalBypassChanged = 1,
      signalInputGainChanged = 2,
      signalOutputGainChanged = 3,
      signalFreqStartChanged = 4,
      signalFreqEndChanged = 5,
      signalCorrelationChanged = 6,
      signalPhaseDifferenceChanged = 7,
      signalMinKurtosisChanged = 8,
      signalMaxInstFreqChanged = 9,
      signalInvertedModeChanged = 10
    };

  Q_SIGNALS:
    void bypassChanged();

    void inputGainChanged();

    void outputGainChanged();

    void freqStartChanged();

    void freqEndChanged();

    void correlationChanged();

    void phaseDifferenceChanged();

    void minKurtosisChanged();

    void maxInstFreqChanged();

    void invertedModeChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    QString mParammasterGroup;
    QString mParaminstanceIndex;

    // VoiceSuppressor#$(instanceIndex)
    bool mBypass;
    bool defaultBypassValue_helper() const;
    double mInputGain;
    double defaultInputGainValue_helper() const;
    double mOutputGain;
    double defaultOutputGainValue_helper() const;
    double mFreqStart;
    double defaultFreqStartValue_helper() const;
    double mFreqEnd;
    double defaultFreqEndValue_helper() const;
    double mCorrelation;
    double defaultCorrelationValue_helper() const;
    double mPhaseDifference;
    double defaultPhaseDifferenceValue_helper() const;
    double mMinKurtosis;
    double defaultMinKurtosisValue_helper() const;
    double mMaxInstFreq;
    double defaultMaxInstFreqValue_helper() const;
    bool mInvertedMode;
    bool defaultInvertedModeValue_helper() const;
};

#endif

