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

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

class KeyboardSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set Use sticky Keys
    */
    void setStickyKeys( bool v )
    {
      if (v != mStickyKeys && !isStickyKeysImmutable()) {
        mStickyKeys = v;
        Q_EMIT StickyKeysChanged();
      }
    }

    Q_PROPERTY(bool stickyKeys READ stickyKeys WRITE setStickyKeys NOTIFY StickyKeysChanged)
    Q_PROPERTY(bool isStickyKeysImmutable READ isStickyKeysImmutable CONSTANT)
    Q_PROPERTY(bool defaultStickyKeysValue READ defaultStickyKeysValue CONSTANT)
    /**
      Get Use sticky Keys
    */
    bool stickyKeys() const
    {
      return mStickyKeys;
    }

    /**
      Is Use sticky Keys Immutable
    */
    bool isStickyKeysImmutable() const
    {
      return isImmutable( QStringLiteral( "StickyKeys" ) );
    }

    /**
      Get Use sticky Keys default value
    */
    bool defaultStickyKeysValue() const
    {
        return defaultStickyKeysValue_helper();
    }

    /**
      Set Lock the sticky keys
    */
    void setStickyKeysLatch( bool v )
    {
      if (v != mStickyKeysLatch && !isStickyKeysLatchImmutable()) {
        mStickyKeysLatch = v;
        Q_EMIT StickyKeysLatchChanged();
      }
    }

    Q_PROPERTY(bool stickyKeysLatch READ stickyKeysLatch WRITE setStickyKeysLatch NOTIFY StickyKeysLatchChanged)
    Q_PROPERTY(bool isStickyKeysLatchImmutable READ isStickyKeysLatchImmutable CONSTANT)
    Q_PROPERTY(bool defaultStickyKeysLatchValue READ defaultStickyKeysLatchValue CONSTANT)
    /**
      Get Lock the sticky keys
    */
    bool stickyKeysLatch() const
    {
      return mStickyKeysLatch;
    }

    /**
      Is Lock the sticky keys Immutable
    */
    bool isStickyKeysLatchImmutable() const
    {
      return isImmutable( QStringLiteral( "StickyKeysLatch" ) );
    }

    /**
      Get Lock the sticky keys default value
    */
    bool defaultStickyKeysLatchValue() const
    {
        return defaultStickyKeysLatchValue_helper();
    }

    /**
      Set Turn sticky keys off when two keys are pressed simultaneously
    */
    void setStickyKeysAutoOff( bool v )
    {
      if (v != mStickyKeysAutoOff && !isStickyKeysAutoOffImmutable()) {
        mStickyKeysAutoOff = v;
        Q_EMIT StickyKeysAutoOffChanged();
      }
    }

    Q_PROPERTY(bool stickyKeysAutoOff READ stickyKeysAutoOff WRITE setStickyKeysAutoOff NOTIFY StickyKeysAutoOffChanged)
    Q_PROPERTY(bool isStickyKeysAutoOffImmutable READ isStickyKeysAutoOffImmutable CONSTANT)
    Q_PROPERTY(bool defaultStickyKeysAutoOffValue READ defaultStickyKeysAutoOffValue CONSTANT)
    /**
      Get Turn sticky keys off when two keys are pressed simultaneously
    */
    bool stickyKeysAutoOff() const
    {
      return mStickyKeysAutoOff;
    }

    /**
      Is Turn sticky keys off when two keys are pressed simultaneously Immutable
    */
    bool isStickyKeysAutoOffImmutable() const
    {
      return isImmutable( QStringLiteral( "StickyKeysAutoOff" ) );
    }

    /**
      Get Turn sticky keys off when two keys are pressed simultaneously default value
    */
    bool defaultStickyKeysAutoOffValue() const
    {
        return defaultStickyKeysAutoOffValue_helper();
    }

    /**
      Set Beep on a sticky key press
    */
    void setStickyKeysBeep( bool v )
    {
      if (v != mStickyKeysBeep && !isStickyKeysBeepImmutable()) {
        mStickyKeysBeep = v;
        Q_EMIT StickyKeysBeepChanged();
      }
    }

    Q_PROPERTY(bool stickyKeysBeep READ stickyKeysBeep WRITE setStickyKeysBeep NOTIFY StickyKeysBeepChanged)
    Q_PROPERTY(bool isStickyKeysBeepImmutable READ isStickyKeysBeepImmutable CONSTANT)
    Q_PROPERTY(bool defaultStickyKeysBeepValue READ defaultStickyKeysBeepValue CONSTANT)
    /**
      Get Beep on a sticky key press
    */
    bool stickyKeysBeep() const
    {
      return mStickyKeysBeep;
    }

    /**
      Is Beep on a sticky key press Immutable
    */
    bool isStickyKeysBeepImmutable() const
    {
      return isImmutable( QStringLiteral( "StickyKeysBeep" ) );
    }

    /**
      Get Beep on a sticky key press default value
    */
    bool defaultStickyKeysBeepValue() const
    {
        return defaultStickyKeysBeepValue_helper();
    }

    /**
      Set Toggle keys beep
    */
    void setToggleKeysBeep( bool v )
    {
      if (v != mToggleKeysBeep && !isToggleKeysBeepImmutable()) {
        mToggleKeysBeep = v;
        Q_EMIT ToggleKeysBeepChanged();
      }
    }

    Q_PROPERTY(bool toggleKeysBeep READ toggleKeysBeep WRITE setToggleKeysBeep NOTIFY ToggleKeysBeepChanged)
    Q_PROPERTY(bool isToggleKeysBeepImmutable READ isToggleKeysBeepImmutable CONSTANT)
    Q_PROPERTY(bool defaultToggleKeysBeepValue READ defaultToggleKeysBeepValue CONSTANT)
    /**
      Get Toggle keys beep
    */
    bool toggleKeysBeep() const
    {
      return mToggleKeysBeep;
    }

    /**
      Is Toggle keys beep Immutable
    */
    bool isToggleKeysBeepImmutable() const
    {
      return isImmutable( QStringLiteral( "ToggleKeysBeep" ) );
    }

    /**
      Get Toggle keys beep default value
    */
    bool defaultToggleKeysBeepValue() const
    {
        return defaultToggleKeysBeepValue_helper();
    }

    /**
      Set Notify when a keyboard modifier is pressed
    */
    void setKeyboardNotifyModifiers( bool v )
    {
      if (v != mKeyboardNotifyModifiers && !isKeyboardNotifyModifiersImmutable()) {
        mKeyboardNotifyModifiers = v;
        Q_EMIT KeyboardNotifyModifiersChanged();
      }
    }

    Q_PROPERTY(bool keyboardNotifyModifiers READ keyboardNotifyModifiers WRITE setKeyboardNotifyModifiers NOTIFY KeyboardNotifyModifiersChanged)
    Q_PROPERTY(bool isKeyboardNotifyModifiersImmutable READ isKeyboardNotifyModifiersImmutable CONSTANT)
    Q_PROPERTY(bool defaultKeyboardNotifyModifiersValue READ defaultKeyboardNotifyModifiersValue CONSTANT)
    /**
      Get Notify when a keyboard modifier is pressed
    */
    bool keyboardNotifyModifiers() const
    {
      return mKeyboardNotifyModifiers;
    }

    /**
      Is Notify when a keyboard modifier is pressed Immutable
    */
    bool isKeyboardNotifyModifiersImmutable() const
    {
      return isImmutable( QStringLiteral( "KeyboardNotifyModifiers" ) );
    }

    /**
      Get Notify when a keyboard modifier is pressed default value
    */
    bool defaultKeyboardNotifyModifiersValue() const
    {
        return defaultKeyboardNotifyModifiersValue_helper();
    }


    enum {
      signalStickyKeysChanged = 1,
      signalStickyKeysLatchChanged = 2,
      signalStickyKeysAutoOffChanged = 3,
      signalStickyKeysBeepChanged = 4,
      signalToggleKeysBeepChanged = 5,
      signalKeyboardNotifyModifiersChanged = 6
    };

  Q_SIGNALS:
    void StickyKeysChanged();

    void StickyKeysLatchChanged();

    void StickyKeysAutoOffChanged();

    void StickyKeysBeepChanged();

    void ToggleKeysBeepChanged();

    void KeyboardNotifyModifiersChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // Keyboard
    bool mStickyKeys;
    bool defaultStickyKeysValue_helper() const;
    bool mStickyKeysLatch;
    bool defaultStickyKeysLatchValue_helper() const;
    bool mStickyKeysAutoOff;
    bool defaultStickyKeysAutoOffValue_helper() const;
    bool mStickyKeysBeep;
    bool defaultStickyKeysBeepValue_helper() const;
    bool mToggleKeysBeep;
    bool defaultToggleKeysBeepValue_helper() const;
    bool mKeyboardNotifyModifiers;
    bool defaultKeyboardNotifyModifiersValue_helper() const;
};

#endif

