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

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

class ZoomMagnifierSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set Whether the Zoom effect is enabled
    */
    void setZoom( bool v )
    {
      if (v != mZoom && !isZoomImmutable()) {
        mZoom = v;
        Q_EMIT ZoomChanged();
      }
    }

    Q_PROPERTY(bool zoom READ zoom WRITE setZoom NOTIFY ZoomChanged)
    Q_PROPERTY(bool isZoomImmutable READ isZoomImmutable CONSTANT)
    Q_PROPERTY(bool defaultZoomValue READ defaultZoomValue CONSTANT)
    /**
      Get Whether the Zoom effect is enabled
    */
    bool zoom() const
    {
      return mZoom;
    }

    /**
      Is Whether the Zoom effect is enabled Immutable
    */
    bool isZoomImmutable() const
    {
      return isImmutable( QStringLiteral( "Zoom" ) );
    }

    /**
      Get Whether the Zoom effect is enabled default value
    */
    bool defaultZoomValue() const
    {
        return defaultZoomValue_helper();
    }

    /**
      Set Whether the Magnifier effect is enabled
    */
    void setMagnifier( bool v )
    {
      if (v != mMagnifier && !isMagnifierImmutable()) {
        mMagnifier = v;
        Q_EMIT MagnifierChanged();
      }
    }

    Q_PROPERTY(bool magnifier READ magnifier WRITE setMagnifier NOTIFY MagnifierChanged)
    Q_PROPERTY(bool isMagnifierImmutable READ isMagnifierImmutable CONSTANT)
    Q_PROPERTY(bool defaultMagnifierValue READ defaultMagnifierValue CONSTANT)
    /**
      Get Whether the Magnifier effect is enabled
    */
    bool magnifier() const
    {
      return mMagnifier;
    }

    /**
      Is Whether the Magnifier effect is enabled Immutable
    */
    bool isMagnifierImmutable() const
    {
      return isImmutable( QStringLiteral( "Magnifier" ) );
    }

    /**
      Get Whether the Magnifier effect is enabled default value
    */
    bool defaultMagnifierValue() const
    {
        return defaultMagnifierValue_helper();
    }

    /**
      Set ZoomFactor
    */
    void setSharedZoomFactor( double v )
    {
      if (v != mSharedZoomFactor && !isSharedZoomFactorImmutable()) {
        mSharedZoomFactor = v;
        Q_EMIT SharedZoomFactorChanged();
      }
    }

    Q_PROPERTY(double sharedZoomFactor READ sharedZoomFactor WRITE setSharedZoomFactor NOTIFY SharedZoomFactorChanged)
    Q_PROPERTY(bool isSharedZoomFactorImmutable READ isSharedZoomFactorImmutable CONSTANT)
    Q_PROPERTY(double defaultSharedZoomFactorValue READ defaultSharedZoomFactorValue CONSTANT)
    /**
      Get ZoomFactor
    */
    double sharedZoomFactor() const
    {
      return mSharedZoomFactor;
    }

    /**
      Is ZoomFactor Immutable
    */
    bool isSharedZoomFactorImmutable() const
    {
      return isImmutable( QStringLiteral( "SharedZoomFactor" ) );
    }

    /**
      Get ZoomFactor default value
    */
    double defaultSharedZoomFactorValue() const
    {
        return defaultSharedZoomFactorValue_helper();
    }

    /**
      Set MousePointer
    */
    void setZoomMousePointer( uint v )
    {
      if (v != mZoomMousePointer && !isZoomMousePointerImmutable()) {
        mZoomMousePointer = v;
        Q_EMIT ZoomMousePointerChanged();
      }
    }

    Q_PROPERTY(uint zoomMousePointer READ zoomMousePointer WRITE setZoomMousePointer NOTIFY ZoomMousePointerChanged)
    Q_PROPERTY(bool isZoomMousePointerImmutable READ isZoomMousePointerImmutable CONSTANT)
    Q_PROPERTY(uint defaultZoomMousePointerValue READ defaultZoomMousePointerValue CONSTANT)
    /**
      Get MousePointer
    */
    uint zoomMousePointer() const
    {
      return mZoomMousePointer;
    }

    /**
      Is MousePointer Immutable
    */
    bool isZoomMousePointerImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomMousePointer" ) );
    }

    /**
      Get MousePointer default value
    */
    uint defaultZoomMousePointerValue() const
    {
        return defaultZoomMousePointerValue_helper();
    }

    /**
      Set MouseTracking
    */
    void setZoomMouseTracking( uint v )
    {
      if (v != mZoomMouseTracking && !isZoomMouseTrackingImmutable()) {
        mZoomMouseTracking = v;
        Q_EMIT ZoomMouseTrackingChanged();
      }
    }

    Q_PROPERTY(uint zoomMouseTracking READ zoomMouseTracking WRITE setZoomMouseTracking NOTIFY ZoomMouseTrackingChanged)
    Q_PROPERTY(bool isZoomMouseTrackingImmutable READ isZoomMouseTrackingImmutable CONSTANT)
    Q_PROPERTY(uint defaultZoomMouseTrackingValue READ defaultZoomMouseTrackingValue CONSTANT)
    /**
      Get MouseTracking
    */
    uint zoomMouseTracking() const
    {
      return mZoomMouseTracking;
    }

    /**
      Is MouseTracking Immutable
    */
    bool isZoomMouseTrackingImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomMouseTracking" ) );
    }

    /**
      Get MouseTracking default value
    */
    uint defaultZoomMouseTrackingValue() const
    {
        return defaultZoomMouseTrackingValue_helper();
    }

    /**
      Set EnableFocusTracking
    */
    void setZoomEnableFocusTracking( bool v )
    {
      if (v != mZoomEnableFocusTracking && !isZoomEnableFocusTrackingImmutable()) {
        mZoomEnableFocusTracking = v;
        Q_EMIT ZoomEnableFocusTrackingChanged();
      }
    }

    Q_PROPERTY(bool zoomEnableFocusTracking READ zoomEnableFocusTracking WRITE setZoomEnableFocusTracking NOTIFY ZoomEnableFocusTrackingChanged)
    Q_PROPERTY(bool isZoomEnableFocusTrackingImmutable READ isZoomEnableFocusTrackingImmutable CONSTANT)
    Q_PROPERTY(bool defaultZoomEnableFocusTrackingValue READ defaultZoomEnableFocusTrackingValue CONSTANT)
    /**
      Get EnableFocusTracking
    */
    bool zoomEnableFocusTracking() const
    {
      return mZoomEnableFocusTracking;
    }

    /**
      Is EnableFocusTracking Immutable
    */
    bool isZoomEnableFocusTrackingImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomEnableFocusTracking" ) );
    }

    /**
      Get EnableFocusTracking default value
    */
    bool defaultZoomEnableFocusTrackingValue() const
    {
        return defaultZoomEnableFocusTrackingValue_helper();
    }

    /**
      Set EnableTextCaretTracking
    */
    void setZoomEnableTextCaretTracking( bool v )
    {
      if (v != mZoomEnableTextCaretTracking && !isZoomEnableTextCaretTrackingImmutable()) {
        mZoomEnableTextCaretTracking = v;
        Q_EMIT ZoomEnableTextCaretTrackingChanged();
      }
    }

    Q_PROPERTY(bool zoomEnableTextCaretTracking READ zoomEnableTextCaretTracking WRITE setZoomEnableTextCaretTracking NOTIFY ZoomEnableTextCaretTrackingChanged)
    Q_PROPERTY(bool isZoomEnableTextCaretTrackingImmutable READ isZoomEnableTextCaretTrackingImmutable CONSTANT)
    Q_PROPERTY(bool defaultZoomEnableTextCaretTrackingValue READ defaultZoomEnableTextCaretTrackingValue CONSTANT)
    /**
      Get EnableTextCaretTracking
    */
    bool zoomEnableTextCaretTracking() const
    {
      return mZoomEnableTextCaretTracking;
    }

    /**
      Is EnableTextCaretTracking Immutable
    */
    bool isZoomEnableTextCaretTrackingImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomEnableTextCaretTracking" ) );
    }

    /**
      Get EnableTextCaretTracking default value
    */
    bool defaultZoomEnableTextCaretTrackingValue() const
    {
        return defaultZoomEnableTextCaretTrackingValue_helper();
    }

    /**
      Set PixelGridZoom
    */
    void setZoomPixelGridZoom( double v )
    {
      if (v != mZoomPixelGridZoom && !isZoomPixelGridZoomImmutable()) {
        mZoomPixelGridZoom = v;
        Q_EMIT ZoomPixelGridZoomChanged();
      }
    }

    Q_PROPERTY(double zoomPixelGridZoom READ zoomPixelGridZoom WRITE setZoomPixelGridZoom NOTIFY ZoomPixelGridZoomChanged)
    Q_PROPERTY(bool isZoomPixelGridZoomImmutable READ isZoomPixelGridZoomImmutable CONSTANT)
    Q_PROPERTY(double defaultZoomPixelGridZoomValue READ defaultZoomPixelGridZoomValue CONSTANT)
    /**
      Get PixelGridZoom
    */
    double zoomPixelGridZoom() const
    {
      return mZoomPixelGridZoom;
    }

    /**
      Is PixelGridZoom Immutable
    */
    bool isZoomPixelGridZoomImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomPixelGridZoom" ) );
    }

    /**
      Get PixelGridZoom default value
    */
    double defaultZoomPixelGridZoomValue() const
    {
        return defaultZoomPixelGridZoomValue_helper();
    }

    /**
      Set PointerAxisGestureModifiers
    */
    void setZoomPointerAxisGestureModifiers( const QString & v )
    {
      if (v != mZoomPointerAxisGestureModifiers && !isZoomPointerAxisGestureModifiersImmutable()) {
        mZoomPointerAxisGestureModifiers = v;
        Q_EMIT ZoomPointerAxisGestureModifiersChanged();
      }
    }

    Q_PROPERTY(QString zoomPointerAxisGestureModifiers READ zoomPointerAxisGestureModifiers WRITE setZoomPointerAxisGestureModifiers NOTIFY ZoomPointerAxisGestureModifiersChanged)
    Q_PROPERTY(bool isZoomPointerAxisGestureModifiersImmutable READ isZoomPointerAxisGestureModifiersImmutable CONSTANT)
    Q_PROPERTY(QString defaultZoomPointerAxisGestureModifiersValue READ defaultZoomPointerAxisGestureModifiersValue CONSTANT)
    /**
      Get PointerAxisGestureModifiers
    */
    QString zoomPointerAxisGestureModifiers() const
    {
      return mZoomPointerAxisGestureModifiers;
    }

    /**
      Is PointerAxisGestureModifiers Immutable
    */
    bool isZoomPointerAxisGestureModifiersImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomPointerAxisGestureModifiers" ) );
    }

    /**
      Get PointerAxisGestureModifiers default value
    */
    QString defaultZoomPointerAxisGestureModifiersValue() const
    {
        return defaultZoomPointerAxisGestureModifiersValue_helper();
    }

    /**
      Set UsePatternUpscaler
    */
    void setZoomUsePatternUpscaler( bool v )
    {
      if (v != mZoomUsePatternUpscaler && !isZoomUsePatternUpscalerImmutable()) {
        mZoomUsePatternUpscaler = v;
        Q_EMIT ZoomUsePatternUpscalerChanged();
      }
    }

    Q_PROPERTY(bool zoomUsePatternUpscaler READ zoomUsePatternUpscaler WRITE setZoomUsePatternUpscaler NOTIFY ZoomUsePatternUpscalerChanged)
    Q_PROPERTY(bool isZoomUsePatternUpscalerImmutable READ isZoomUsePatternUpscalerImmutable CONSTANT)
    Q_PROPERTY(bool defaultZoomUsePatternUpscalerValue READ defaultZoomUsePatternUpscalerValue CONSTANT)
    /**
      Get UsePatternUpscaler
    */
    bool zoomUsePatternUpscaler() const
    {
      return mZoomUsePatternUpscaler;
    }

    /**
      Is UsePatternUpscaler Immutable
    */
    bool isZoomUsePatternUpscalerImmutable() const
    {
      return isImmutable( QStringLiteral( "ZoomUsePatternUpscaler" ) );
    }

    /**
      Get UsePatternUpscaler default value
    */
    bool defaultZoomUsePatternUpscalerValue() const
    {
        return defaultZoomUsePatternUpscalerValue_helper();
    }

    /**
      Set Width
    */
    void setMagnifierWidth( uint v )
    {
      if (v != mMagnifierWidth && !isMagnifierWidthImmutable()) {
        mMagnifierWidth = v;
        Q_EMIT MagnifierWidthChanged();
      }
    }

    Q_PROPERTY(uint magnifierWidth READ magnifierWidth WRITE setMagnifierWidth NOTIFY MagnifierWidthChanged)
    Q_PROPERTY(bool isMagnifierWidthImmutable READ isMagnifierWidthImmutable CONSTANT)
    Q_PROPERTY(uint defaultMagnifierWidthValue READ defaultMagnifierWidthValue CONSTANT)
    /**
      Get Width
    */
    uint magnifierWidth() const
    {
      return mMagnifierWidth;
    }

    /**
      Is Width Immutable
    */
    bool isMagnifierWidthImmutable() const
    {
      return isImmutable( QStringLiteral( "MagnifierWidth" ) );
    }

    /**
      Get Width default value
    */
    uint defaultMagnifierWidthValue() const
    {
        return defaultMagnifierWidthValue_helper();
    }

    /**
      Set Height
    */
    void setMagnifierHeight( uint v )
    {
      if (v != mMagnifierHeight && !isMagnifierHeightImmutable()) {
        mMagnifierHeight = v;
        Q_EMIT MagnifierHeightChanged();
      }
    }

    Q_PROPERTY(uint magnifierHeight READ magnifierHeight WRITE setMagnifierHeight NOTIFY MagnifierHeightChanged)
    Q_PROPERTY(bool isMagnifierHeightImmutable READ isMagnifierHeightImmutable CONSTANT)
    Q_PROPERTY(uint defaultMagnifierHeightValue READ defaultMagnifierHeightValue CONSTANT)
    /**
      Get Height
    */
    uint magnifierHeight() const
    {
      return mMagnifierHeight;
    }

    /**
      Is Height Immutable
    */
    bool isMagnifierHeightImmutable() const
    {
      return isImmutable( QStringLiteral( "MagnifierHeight" ) );
    }

    /**
      Get Height default value
    */
    uint defaultMagnifierHeightValue() const
    {
        return defaultMagnifierHeightValue_helper();
    }


    enum {
      signalZoomChanged = 1,
      signalMagnifierChanged = 2,
      signalSharedZoomFactorChanged = 3,
      signalZoomMousePointerChanged = 4,
      signalZoomMouseTrackingChanged = 5,
      signalZoomEnableFocusTrackingChanged = 6,
      signalZoomEnableTextCaretTrackingChanged = 7,
      signalZoomPixelGridZoomChanged = 8,
      signalZoomPointerAxisGestureModifiersChanged = 9,
      signalZoomUsePatternUpscalerChanged = 10,
      signalMagnifierWidthChanged = 11,
      signalMagnifierHeightChanged = 12
    };

  Q_SIGNALS:
    void ZoomChanged();

    void MagnifierChanged();

    void SharedZoomFactorChanged();

    void ZoomMousePointerChanged();

    void ZoomMouseTrackingChanged();

    void ZoomEnableFocusTrackingChanged();

    void ZoomEnableTextCaretTrackingChanged();

    void ZoomPixelGridZoomChanged();

    void ZoomPointerAxisGestureModifiersChanged();

    void ZoomUsePatternUpscalerChanged();

    void MagnifierWidthChanged();

    void MagnifierHeightChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // Plugins
    bool mZoom;
    bool defaultZoomValue_helper() const;
    bool mMagnifier;
    bool defaultMagnifierValue_helper() const;

    // Effect-zoom
    double mSharedZoomFactor;
    double defaultSharedZoomFactorValue_helper() const;
    uint mZoomMousePointer;
    uint defaultZoomMousePointerValue_helper() const;
    uint mZoomMouseTracking;
    uint defaultZoomMouseTrackingValue_helper() const;
    bool mZoomEnableFocusTracking;
    bool defaultZoomEnableFocusTrackingValue_helper() const;
    bool mZoomEnableTextCaretTracking;
    bool defaultZoomEnableTextCaretTrackingValue_helper() const;
    double mZoomPixelGridZoom;
    double defaultZoomPixelGridZoomValue_helper() const;
    QString mZoomPointerAxisGestureModifiers;
    QString defaultZoomPointerAxisGestureModifiersValue_helper() const;
    bool mZoomUsePatternUpscaler;
    bool defaultZoomUsePatternUpscalerValue_helper() const;

    // Effect-magnifier
    uint mMagnifierWidth;
    uint defaultMagnifierWidthValue_helper() const;
    uint mMagnifierHeight;
    uint defaultMagnifierHeightValue_helper() const;
};

#endif

