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

#include "kconfig_base_ee.hpp"

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

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

    DbFilter( const QString & masterGroup, const QString & instanceIndex );
    ~DbFilter() 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 typeLabels
    */
    void setTypeLabels( const QStringList & v )
    {
      if (v != mTypeLabels && !isTypeLabelsImmutable()) {
        mTypeLabels = v;
        Q_EMIT typeLabelsChanged();
      }
    }

    Q_PROPERTY(QStringList typeLabels READ typeLabels WRITE setTypeLabels NOTIFY typeLabelsChanged)
    Q_PROPERTY(bool isTypeLabelsImmutable READ isTypeLabelsImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultTypeLabelsValue READ defaultTypeLabelsValue CONSTANT)
    /**
      Get typeLabels
    */
    QStringList typeLabels() const
    {
      return mTypeLabels;
    }

    /**
      Is typeLabels Immutable
    */
    bool isTypeLabelsImmutable() const
    {
      return isImmutable( QStringLiteral( "typeLabels" ) );
    }

    /**
      Get typeLabels default value
    */
    QStringList defaultTypeLabelsValue() const
    {
        return defaultTypeLabelsValue_helper();
    }

    /**
      Set Type
    */
    void setType( int v )
    {
      if (v != mType && !isTypeImmutable()) {
        mType = v;
        Q_EMIT typeChanged();
      }
    }

    Q_PROPERTY(int type READ type WRITE setType NOTIFY typeChanged)
    Q_PROPERTY(bool isTypeImmutable READ isTypeImmutable CONSTANT)
    Q_PROPERTY(int defaultTypeValue READ defaultTypeValue CONSTANT)
    /**
      Get Type
    */
    int type() const
    {
      return mType;
    }

    /**
      Is Type Immutable
    */
    bool isTypeImmutable() const
    {
      return isImmutable( QStringLiteral( "type" ) );
    }

    /**
      Get Type default value
    */
    int defaultTypeValue() const
    {
        return defaultTypeValue_helper();
    }

    /**
      Set equalModeLabels
    */
    void setEqualModeLabels( const QStringList & v )
    {
      if (v != mEqualModeLabels && !isEqualModeLabelsImmutable()) {
        mEqualModeLabels = v;
        Q_EMIT equalModeLabelsChanged();
      }
    }

    Q_PROPERTY(QStringList equalModeLabels READ equalModeLabels WRITE setEqualModeLabels NOTIFY equalModeLabelsChanged)
    Q_PROPERTY(bool isEqualModeLabelsImmutable READ isEqualModeLabelsImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultEqualModeLabelsValue READ defaultEqualModeLabelsValue CONSTANT)
    /**
      Get equalModeLabels
    */
    QStringList equalModeLabels() const
    {
      return mEqualModeLabels;
    }

    /**
      Is equalModeLabels Immutable
    */
    bool isEqualModeLabelsImmutable() const
    {
      return isImmutable( QStringLiteral( "equalModeLabels" ) );
    }

    /**
      Get equalModeLabels default value
    */
    QStringList defaultEqualModeLabelsValue() const
    {
        return defaultEqualModeLabelsValue_helper();
    }

    /**
      Set Equalizer Mode
    */
    void setEqualMode( int v )
    {
      if (v != mEqualMode && !isEqualModeImmutable()) {
        mEqualMode = v;
        Q_EMIT equalModeChanged();
      }
    }

    Q_PROPERTY(int equalMode READ equalMode WRITE setEqualMode NOTIFY equalModeChanged)
    Q_PROPERTY(bool isEqualModeImmutable READ isEqualModeImmutable CONSTANT)
    Q_PROPERTY(int defaultEqualModeValue READ defaultEqualModeValue CONSTANT)
    /**
      Get Equalizer Mode
    */
    int equalMode() const
    {
      return mEqualMode;
    }

    /**
      Is Equalizer Mode Immutable
    */
    bool isEqualModeImmutable() const
    {
      return isImmutable( QStringLiteral( "equalMode" ) );
    }

    /**
      Get Equalizer Mode default value
    */
    int defaultEqualModeValue() const
    {
        return defaultEqualModeValue_helper();
    }

    /**
      Set modeLabels
    */
    void setModeLabels( const QStringList & v )
    {
      if (v != mModeLabels && !isModeLabelsImmutable()) {
        mModeLabels = v;
        Q_EMIT modeLabelsChanged();
      }
    }

    Q_PROPERTY(QStringList modeLabels READ modeLabels WRITE setModeLabels NOTIFY modeLabelsChanged)
    Q_PROPERTY(bool isModeLabelsImmutable READ isModeLabelsImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultModeLabelsValue READ defaultModeLabelsValue CONSTANT)
    /**
      Get modeLabels
    */
    QStringList modeLabels() const
    {
      return mModeLabels;
    }

    /**
      Is modeLabels Immutable
    */
    bool isModeLabelsImmutable() const
    {
      return isImmutable( QStringLiteral( "modeLabels" ) );
    }

    /**
      Get modeLabels default value
    */
    QStringList defaultModeLabelsValue() const
    {
        return defaultModeLabelsValue_helper();
    }

    /**
      Set Filter Mode
    */
    void setMode( int v )
    {
      if (v != mMode && !isModeImmutable()) {
        mMode = v;
        Q_EMIT modeChanged();
      }
    }

    Q_PROPERTY(int mode READ mode WRITE setMode NOTIFY modeChanged)
    Q_PROPERTY(bool isModeImmutable READ isModeImmutable CONSTANT)
    Q_PROPERTY(int defaultModeValue READ defaultModeValue CONSTANT)
    /**
      Get Filter Mode
    */
    int mode() const
    {
      return mMode;
    }

    /**
      Is Filter Mode Immutable
    */
    bool isModeImmutable() const
    {
      return isImmutable( QStringLiteral( "mode" ) );
    }

    /**
      Get Filter Mode default value
    */
    int defaultModeValue() const
    {
        return defaultModeValue_helper();
    }

    /**
      Set slopeLabels
    */
    void setSlopeLabels( const QStringList & v )
    {
      if (v != mSlopeLabels && !isSlopeLabelsImmutable()) {
        mSlopeLabels = v;
        Q_EMIT slopeLabelsChanged();
      }
    }

    Q_PROPERTY(QStringList slopeLabels READ slopeLabels WRITE setSlopeLabels NOTIFY slopeLabelsChanged)
    Q_PROPERTY(bool isSlopeLabelsImmutable READ isSlopeLabelsImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultSlopeLabelsValue READ defaultSlopeLabelsValue CONSTANT)
    /**
      Get slopeLabels
    */
    QStringList slopeLabels() const
    {
      return mSlopeLabels;
    }

    /**
      Is slopeLabels Immutable
    */
    bool isSlopeLabelsImmutable() const
    {
      return isImmutable( QStringLiteral( "slopeLabels" ) );
    }

    /**
      Get slopeLabels default value
    */
    QStringList defaultSlopeLabelsValue() const
    {
        return defaultSlopeLabelsValue_helper();
    }

    /**
      Set Slope
    */
    void setSlope( int v )
    {
      if (v != mSlope && !isSlopeImmutable()) {
        mSlope = v;
        Q_EMIT slopeChanged();
      }
    }

    Q_PROPERTY(int slope READ slope WRITE setSlope NOTIFY slopeChanged)
    Q_PROPERTY(bool isSlopeImmutable READ isSlopeImmutable CONSTANT)
    Q_PROPERTY(int defaultSlopeValue READ defaultSlopeValue CONSTANT)
    /**
      Get Slope
    */
    int slope() const
    {
      return mSlope;
    }

    /**
      Is Slope Immutable
    */
    bool isSlopeImmutable() const
    {
      return isImmutable( QStringLiteral( "slope" ) );
    }

    /**
      Get Slope default value
    */
    int defaultSlopeValue() const
    {
        return defaultSlopeValue_helper();
    }

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

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

      if (v != mFrequency && !isFrequencyImmutable()) {
        mFrequency = v;
        Q_EMIT frequencyChanged();
      }
    }

    Q_PROPERTY(double frequency READ frequency WRITE setFrequency NOTIFY frequencyChanged)
    Q_PROPERTY(bool isFrequencyImmutable READ isFrequencyImmutable CONSTANT)
    Q_PROPERTY(double defaultFrequencyValue READ defaultFrequencyValue CONSTANT)
    /**
      Get frequency
    */
    double frequency() const
    {
      return mFrequency;
    }

    /**
      Is frequency Immutable
    */
    bool isFrequencyImmutable() const
    {
      return isImmutable( QStringLiteral( "frequency" ) );
    }

    /**
      Get frequency default value
    */
    double defaultFrequencyValue() const
    {
        return defaultFrequencyValue_helper();
    }

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

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

      if (v != mWidth && !isWidthImmutable()) {
        mWidth = v;
        Q_EMIT widthChanged();
      }
    }

    Q_PROPERTY(double width READ width WRITE setWidth NOTIFY widthChanged)
    Q_PROPERTY(bool isWidthImmutable READ isWidthImmutable CONSTANT)
    Q_PROPERTY(double defaultWidthValue READ defaultWidthValue CONSTANT)
    /**
      Get width
    */
    double width() const
    {
      return mWidth;
    }

    /**
      Is width Immutable
    */
    bool isWidthImmutable() const
    {
      return isImmutable( QStringLiteral( "width" ) );
    }

    /**
      Get width default value
    */
    double defaultWidthValue() const
    {
        return defaultWidthValue_helper();
    }

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

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

      if (v != mQuality && !isQualityImmutable()) {
        mQuality = v;
        Q_EMIT qualityChanged();
      }
    }

    Q_PROPERTY(double quality READ quality WRITE setQuality NOTIFY qualityChanged)
    Q_PROPERTY(bool isQualityImmutable READ isQualityImmutable CONSTANT)
    Q_PROPERTY(double defaultQualityValue READ defaultQualityValue CONSTANT)
    /**
      Get quality
    */
    double quality() const
    {
      return mQuality;
    }

    /**
      Is quality Immutable
    */
    bool isQualityImmutable() const
    {
      return isImmutable( QStringLiteral( "quality" ) );
    }

    /**
      Get quality default value
    */
    double defaultQualityValue() const
    {
        return defaultQualityValue_helper();
    }

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

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

      if (v != mGain && !isGainImmutable()) {
        mGain = v;
        Q_EMIT gainChanged();
      }
    }

    Q_PROPERTY(double gain READ gain WRITE setGain NOTIFY gainChanged)
    Q_PROPERTY(bool isGainImmutable READ isGainImmutable CONSTANT)
    Q_PROPERTY(double defaultGainValue READ defaultGainValue CONSTANT)
    /**
      Get gain
    */
    double gain() const
    {
      return mGain;
    }

    /**
      Is gain Immutable
    */
    bool isGainImmutable() const
    {
      return isImmutable( QStringLiteral( "gain" ) );
    }

    /**
      Get gain default value
    */
    double defaultGainValue() const
    {
        return defaultGainValue_helper();
    }

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

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

      if (v != mBalance && !isBalanceImmutable()) {
        mBalance = v;
        Q_EMIT balanceChanged();
      }
    }

    Q_PROPERTY(double balance READ balance WRITE setBalance NOTIFY balanceChanged)
    Q_PROPERTY(bool isBalanceImmutable READ isBalanceImmutable CONSTANT)
    Q_PROPERTY(double defaultBalanceValue READ defaultBalanceValue CONSTANT)
    /**
      Get balance
    */
    double balance() const
    {
      return mBalance;
    }

    /**
      Is balance Immutable
    */
    bool isBalanceImmutable() const
    {
      return isImmutable( QStringLiteral( "balance" ) );
    }

    /**
      Get balance default value
    */
    double defaultBalanceValue() const
    {
        return defaultBalanceValue_helper();
    }

    /**
      Set decrampLabels
    */
    void setDecrampLabels( const QStringList & v )
    {
      if (v != mDecrampLabels && !isDecrampLabelsImmutable()) {
        mDecrampLabels = v;
        Q_EMIT decrampLabelsChanged();
      }
    }

    Q_PROPERTY(QStringList decrampLabels READ decrampLabels WRITE setDecrampLabels NOTIFY decrampLabelsChanged)
    Q_PROPERTY(bool isDecrampLabelsImmutable READ isDecrampLabelsImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultDecrampLabelsValue READ defaultDecrampLabelsValue CONSTANT)
    /**
      Get decrampLabels
    */
    QStringList decrampLabels() const
    {
      return mDecrampLabels;
    }

    /**
      Is decrampLabels Immutable
    */
    bool isDecrampLabelsImmutable() const
    {
      return isImmutable( QStringLiteral( "decrampLabels" ) );
    }

    /**
      Get decrampLabels default value
    */
    QStringList defaultDecrampLabelsValue() const
    {
        return defaultDecrampLabelsValue_helper();
    }

    /**
      Set decramp
    */
    void setDecramp( int v )
    {
      if (v != mDecramp && !isDecrampImmutable()) {
        mDecramp = v;
        Q_EMIT decrampChanged();
      }
    }

    Q_PROPERTY(int decramp READ decramp WRITE setDecramp NOTIFY decrampChanged)
    Q_PROPERTY(bool isDecrampImmutable READ isDecrampImmutable CONSTANT)
    Q_PROPERTY(int defaultDecrampValue READ defaultDecrampValue CONSTANT)
    /**
      Get decramp
    */
    int decramp() const
    {
      return mDecramp;
    }

    /**
      Is decramp Immutable
    */
    bool isDecrampImmutable() const
    {
      return isImmutable( QStringLiteral( "decramp" ) );
    }

    /**
      Get decramp default value
    */
    int defaultDecrampValue() const
    {
        return defaultDecrampValue_helper();
    }


    enum {
      signalBypassChanged = 1,
      signalInputGainChanged = 2,
      signalOutputGainChanged = 3,
      signalTypeLabelsChanged = 4,
      signalTypeChanged = 5,
      signalEqualModeLabelsChanged = 6,
      signalEqualModeChanged = 7,
      signalModeLabelsChanged = 8,
      signalModeChanged = 9,
      signalSlopeLabelsChanged = 10,
      signalSlopeChanged = 11,
      signalFrequencyChanged = 12,
      signalWidthChanged = 13,
      signalQualityChanged = 14,
      signalGainChanged = 15,
      signalBalanceChanged = 16,
      signalDecrampLabelsChanged = 17,
      signalDecrampChanged = 18
    };

  Q_SIGNALS:
    void bypassChanged();

    void inputGainChanged();

    void outputGainChanged();

    void typeLabelsChanged();

    void typeChanged();

    void equalModeLabelsChanged();

    void equalModeChanged();

    void modeLabelsChanged();

    void modeChanged();

    void slopeLabelsChanged();

    void slopeChanged();

    void frequencyChanged();

    void widthChanged();

    void qualityChanged();

    void gainChanged();

    void balanceChanged();

    void decrampLabelsChanged();

    void decrampChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    QString mParammasterGroup;
    QString mParaminstanceIndex;

    // Filter#$(instanceIndex)
    bool mBypass;
    bool defaultBypassValue_helper() const;
    double mInputGain;
    double defaultInputGainValue_helper() const;
    double mOutputGain;
    double defaultOutputGainValue_helper() const;
    QStringList mTypeLabels;
    QStringList defaultTypeLabelsValue_helper() const;
    int mType;
    int defaultTypeValue_helper() const;
    QStringList mEqualModeLabels;
    QStringList defaultEqualModeLabelsValue_helper() const;
    int mEqualMode;
    int defaultEqualModeValue_helper() const;
    QStringList mModeLabels;
    QStringList defaultModeLabelsValue_helper() const;
    int mMode;
    int defaultModeValue_helper() const;
    QStringList mSlopeLabels;
    QStringList defaultSlopeLabelsValue_helper() const;
    int mSlope;
    int defaultSlopeValue_helper() const;
    double mFrequency;
    double defaultFrequencyValue_helper() const;
    double mWidth;
    double defaultWidthValue_helper() const;
    double mQuality;
    double defaultQualityValue_helper() const;
    double mGain;
    double defaultGainValue_helper() const;
    double mBalance;
    double defaultBalanceValue_helper() const;
    QStringList mDecrampLabels;
    QStringList defaultDecrampLabelsValue_helper() const;
    int mDecramp;
    int defaultDecrampValue_helper() const;
};

#endif

