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

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

namespace KWin {

class GlideConfig : public KConfigSkeleton
{
  public:

    static GlideConfig *self();
    static void instance(const QString& cfgfilename);
    static void instance(KSharedConfig::Ptr config);
    ~GlideConfig() override;

    /**
      Set Duration
    */
    static
    void setDuration( uint v )
    {
      if (!self()->isDurationImmutable())
        self()->mDuration = v;
    }

    /**
      Get Duration
    */
    static
    uint duration()
    {
      return self()->mDuration;
    }

    /**
      Is Duration Immutable
    */
    static
    bool isDurationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Duration" ) );
    }

    /**
      Set InRotationEdge
    */
    static
    void setInRotationEdge( int v )
    {
      if (!self()->isInRotationEdgeImmutable())
        self()->mInRotationEdge = v;
    }

    /**
      Get InRotationEdge
    */
    static
    int inRotationEdge()
    {
      return self()->mInRotationEdge;
    }

    /**
      Is InRotationEdge Immutable
    */
    static
    bool isInRotationEdgeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "InRotationEdge" ) );
    }

    /**
      Set InRotationAngle
    */
    static
    void setInRotationAngle( double v )
    {
      if (!self()->isInRotationAngleImmutable())
        self()->mInRotationAngle = v;
    }

    /**
      Get InRotationAngle
    */
    static
    double inRotationAngle()
    {
      return self()->mInRotationAngle;
    }

    /**
      Is InRotationAngle Immutable
    */
    static
    bool isInRotationAngleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "InRotationAngle" ) );
    }

    /**
      Set InDistance
    */
    static
    void setInDistance( double v )
    {
      if (!self()->isInDistanceImmutable())
        self()->mInDistance = v;
    }

    /**
      Get InDistance
    */
    static
    double inDistance()
    {
      return self()->mInDistance;
    }

    /**
      Is InDistance Immutable
    */
    static
    bool isInDistanceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "InDistance" ) );
    }

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

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

      if (!self()->isInOpacityImmutable())
        self()->mInOpacity = v;
    }

    /**
      Get InOpacity
    */
    static
    double inOpacity()
    {
      return self()->mInOpacity;
    }

    /**
      Is InOpacity Immutable
    */
    static
    bool isInOpacityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "InOpacity" ) );
    }

    /**
      Set OutRotationEdge
    */
    static
    void setOutRotationEdge( int v )
    {
      if (!self()->isOutRotationEdgeImmutable())
        self()->mOutRotationEdge = v;
    }

    /**
      Get OutRotationEdge
    */
    static
    int outRotationEdge()
    {
      return self()->mOutRotationEdge;
    }

    /**
      Is OutRotationEdge Immutable
    */
    static
    bool isOutRotationEdgeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutRotationEdge" ) );
    }

    /**
      Set OutRotationAngle
    */
    static
    void setOutRotationAngle( double v )
    {
      if (!self()->isOutRotationAngleImmutable())
        self()->mOutRotationAngle = v;
    }

    /**
      Get OutRotationAngle
    */
    static
    double outRotationAngle()
    {
      return self()->mOutRotationAngle;
    }

    /**
      Is OutRotationAngle Immutable
    */
    static
    bool isOutRotationAngleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutRotationAngle" ) );
    }

    /**
      Set OutDistance
    */
    static
    void setOutDistance( double v )
    {
      if (!self()->isOutDistanceImmutable())
        self()->mOutDistance = v;
    }

    /**
      Get OutDistance
    */
    static
    double outDistance()
    {
      return self()->mOutDistance;
    }

    /**
      Is OutDistance Immutable
    */
    static
    bool isOutDistanceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutDistance" ) );
    }

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

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

      if (!self()->isOutOpacityImmutable())
        self()->mOutOpacity = v;
    }

    /**
      Get OutOpacity
    */
    static
    double outOpacity()
    {
      return self()->mOutOpacity;
    }

    /**
      Is OutOpacity Immutable
    */
    static
    bool isOutOpacityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutOpacity" ) );
    }

  protected:
    GlideConfig(KSharedConfig::Ptr config);
    friend class GlideConfigHelper;


    // Effect-glide
    uint mDuration;
    int mInRotationEdge;
    double mInRotationAngle;
    double mInDistance;
    double mInOpacity;
    int mOutRotationEdge;
    double mOutRotationAngle;
    double mOutDistance;
    double mOutOpacity;
};

}

#endif

