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

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

class MouseSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

    MouseSettings( QObject *parent = nullptr );
    ~MouseSettings() override;

    /**
      Set Use keys to control the mouse
    */
    void setMouseKeys( bool v )
    {
      if (v != mMouseKeys && !isMouseKeysImmutable()) {
        mMouseKeys = v;
        Q_EMIT MouseKeysChanged();
      }
    }

    Q_PROPERTY(bool mouseKeys READ mouseKeys WRITE setMouseKeys NOTIFY MouseKeysChanged)
    Q_PROPERTY(bool isMouseKeysImmutable READ isMouseKeysImmutable CONSTANT)
    Q_PROPERTY(bool defaultMouseKeysValue READ defaultMouseKeysValue CONSTANT)
    /**
      Get Use keys to control the mouse
    */
    bool mouseKeys() const
    {
      return mMouseKeys;
    }

    /**
      Is Use keys to control the mouse Immutable
    */
    bool isMouseKeysImmutable() const
    {
      return isImmutable( QStringLiteral( "MouseKeys" ) );
    }

    /**
      Get Use keys to control the mouse default value
    */
    bool defaultMouseKeysValue() const
    {
        return defaultMouseKeysValue_helper();
    }

    /**
      Set Delay for the mouse movement
    */
    void setAccelerationDelay( int v )
    {
      if (v != mAccelerationDelay && !isAccelerationDelayImmutable()) {
        mAccelerationDelay = v;
        Q_EMIT AccelerationDelayChanged();
      }
    }

    Q_PROPERTY(int accelerationDelay READ accelerationDelay WRITE setAccelerationDelay NOTIFY AccelerationDelayChanged)
    Q_PROPERTY(bool isAccelerationDelayImmutable READ isAccelerationDelayImmutable CONSTANT)
    Q_PROPERTY(int defaultAccelerationDelayValue READ defaultAccelerationDelayValue CONSTANT)
    /**
      Get Delay for the mouse movement
    */
    int accelerationDelay() const
    {
      return mAccelerationDelay;
    }

    /**
      Is Delay for the mouse movement Immutable
    */
    bool isAccelerationDelayImmutable() const
    {
      return isImmutable( QStringLiteral( "AccelerationDelay" ) );
    }

    /**
      Get Delay for the mouse movement default value
    */
    int defaultAccelerationDelayValue() const
    {
        return defaultAccelerationDelayValue_helper();
    }

    /**
      Set Repetition interval for the mouse movement
    */
    void setRepetitionInterval( int v )
    {
      if (v != mRepetitionInterval && !isRepetitionIntervalImmutable()) {
        mRepetitionInterval = v;
        Q_EMIT RepetitionIntervalChanged();
      }
    }

    Q_PROPERTY(int repetitionInterval READ repetitionInterval WRITE setRepetitionInterval NOTIFY RepetitionIntervalChanged)
    Q_PROPERTY(bool isRepetitionIntervalImmutable READ isRepetitionIntervalImmutable CONSTANT)
    Q_PROPERTY(int defaultRepetitionIntervalValue READ defaultRepetitionIntervalValue CONSTANT)
    /**
      Get Repetition interval for the mouse movement
    */
    int repetitionInterval() const
    {
      return mRepetitionInterval;
    }

    /**
      Is Repetition interval for the mouse movement Immutable
    */
    bool isRepetitionIntervalImmutable() const
    {
      return isImmutable( QStringLiteral( "RepetitionInterval" ) );
    }

    /**
      Get Repetition interval for the mouse movement default value
    */
    int defaultRepetitionIntervalValue() const
    {
        return defaultRepetitionIntervalValue_helper();
    }

    /**
      Set Time to hit maximum velocity
    */
    void setAccelerationTime( int v )
    {
      if (v != mAccelerationTime && !isAccelerationTimeImmutable()) {
        mAccelerationTime = v;
        Q_EMIT AccelerationTimeChanged();
      }
    }

    Q_PROPERTY(int accelerationTime READ accelerationTime WRITE setAccelerationTime NOTIFY AccelerationTimeChanged)
    Q_PROPERTY(bool isAccelerationTimeImmutable READ isAccelerationTimeImmutable CONSTANT)
    Q_PROPERTY(int defaultAccelerationTimeValue READ defaultAccelerationTimeValue CONSTANT)
    /**
      Get Time to hit maximum velocity
    */
    int accelerationTime() const
    {
      return mAccelerationTime;
    }

    /**
      Is Time to hit maximum velocity Immutable
    */
    bool isAccelerationTimeImmutable() const
    {
      return isImmutable( QStringLiteral( "AccelerationTime" ) );
    }

    /**
      Get Time to hit maximum velocity default value
    */
    int defaultAccelerationTimeValue() const
    {
        return defaultAccelerationTimeValue_helper();
    }

    /**
      Set Maximum Velocity
    */
    void setMaxSpeed( int v )
    {
      if (v != mMaxSpeed && !isMaxSpeedImmutable()) {
        mMaxSpeed = v;
        Q_EMIT MaxSpeedChanged();
      }
    }

    Q_PROPERTY(int maxSpeed READ maxSpeed WRITE setMaxSpeed NOTIFY MaxSpeedChanged)
    Q_PROPERTY(bool isMaxSpeedImmutable READ isMaxSpeedImmutable CONSTANT)
    Q_PROPERTY(int defaultMaxSpeedValue READ defaultMaxSpeedValue CONSTANT)
    /**
      Get Maximum Velocity
    */
    int maxSpeed() const
    {
      return mMaxSpeed;
    }

    /**
      Is Maximum Velocity Immutable
    */
    bool isMaxSpeedImmutable() const
    {
      return isImmutable( QStringLiteral( "MaxSpeed" ) );
    }

    /**
      Get Maximum Velocity default value
    */
    int defaultMaxSpeedValue() const
    {
        return defaultMaxSpeedValue_helper();
    }

    /**
      Set Mouse Key Curve
    */
    void setProfileCurve( int v )
    {
      if (v != mProfileCurve && !isProfileCurveImmutable()) {
        mProfileCurve = v;
        Q_EMIT ProfileCurveChanged();
      }
    }

    Q_PROPERTY(int profileCurve READ profileCurve WRITE setProfileCurve NOTIFY ProfileCurveChanged)
    Q_PROPERTY(bool isProfileCurveImmutable READ isProfileCurveImmutable CONSTANT)
    Q_PROPERTY(int defaultProfileCurveValue READ defaultProfileCurveValue CONSTANT)
    /**
      Get Mouse Key Curve
    */
    int profileCurve() const
    {
      return mProfileCurve;
    }

    /**
      Is Mouse Key Curve Immutable
    */
    bool isProfileCurveImmutable() const
    {
      return isImmutable( QStringLiteral( "ProfileCurve" ) );
    }

    /**
      Get Mouse Key Curve default value
    */
    int defaultProfileCurveValue() const
    {
        return defaultProfileCurveValue_helper();
    }


    enum {
      signalMouseKeysChanged = 1,
      signalAccelerationDelayChanged = 2,
      signalRepetitionIntervalChanged = 3,
      signalAccelerationTimeChanged = 4,
      signalMaxSpeedChanged = 5,
      signalProfileCurveChanged = 6
    };

  Q_SIGNALS:
    void MouseKeysChanged();

    void AccelerationDelayChanged();

    void RepetitionIntervalChanged();

    void AccelerationTimeChanged();

    void MaxSpeedChanged();

    void ProfileCurveChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // Mouse
    bool mMouseKeys;
    bool defaultMouseKeysValue_helper() const;
    int mAccelerationDelay;
    int defaultAccelerationDelayValue_helper() const;
    int mRepetitionInterval;
    int defaultRepetitionIntervalValue_helper() const;
    int mAccelerationTime;
    int defaultAccelerationTimeValue_helper() const;
    int mMaxSpeed;
    int defaultMaxSpeedValue_helper() const;
    int mProfileCurve;
    int defaultProfileCurveValue_helper() const;
};

#endif

