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

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

class KWinDecorationSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set Plugin name
    */
    void setPluginName( const QString & v )
    {
      if (v != mPluginName && !isPluginNameImmutable()) {
        mPluginName = v;
        Q_EMIT pluginNameChanged();
      }
    }

    Q_PROPERTY(QString pluginName READ pluginName WRITE setPluginName NOTIFY pluginNameChanged)
    Q_PROPERTY(bool isPluginNameImmutable READ isPluginNameImmutable CONSTANT)
    Q_PROPERTY(QString defaultPluginNameValue READ defaultPluginNameValue CONSTANT)
    /**
      Get Plugin name
    */
    QString pluginName() const
    {
      return mPluginName;
    }

    /**
      Is Plugin name Immutable
    */
    bool isPluginNameImmutable() const
    {
      return isImmutable( QStringLiteral( "pluginName" ) );
    }

    /**
      Get Plugin name default value
    */
    QString defaultPluginNameValue() const
    {
        return defaultPluginNameValue_helper();
    }

    /**
      Set Theme name
    */
    void setTheme( const QString & v )
    {
      if (v != mTheme && !isThemeImmutable()) {
        mTheme = v;
        Q_EMIT themeChanged();
      }
    }

    Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged)
    Q_PROPERTY(bool isThemeImmutable READ isThemeImmutable CONSTANT)
    Q_PROPERTY(QString defaultThemeValue READ defaultThemeValue CONSTANT)
    /**
      Get Theme name
    */
    QString theme() const
    {
      return mTheme;
    }

    /**
      Is Theme name Immutable
    */
    bool isThemeImmutable() const
    {
      return isImmutable( QStringLiteral( "theme" ) );
    }

    /**
      Get Theme name default value
    */
    QString defaultThemeValue() const
    {
        return defaultThemeValue_helper();
    }

    /**
      Set Window border size
    */
    void setBorderSize( const QString & v )
    {
      if (v != mBorderSize && !isBorderSizeImmutable()) {
        mBorderSize = v;
        Q_EMIT borderSizeChanged();
      }
    }

    Q_PROPERTY(QString borderSize READ borderSize WRITE setBorderSize NOTIFY borderSizeChanged)
    Q_PROPERTY(bool isBorderSizeImmutable READ isBorderSizeImmutable CONSTANT)
    Q_PROPERTY(QString defaultBorderSizeValue READ defaultBorderSizeValue CONSTANT)
    /**
      Get Window border size
    */
    QString borderSize() const
    {
      return mBorderSize;
    }

    /**
      Is Window border size Immutable
    */
    bool isBorderSizeImmutable() const
    {
      return isImmutable( QStringLiteral( "borderSize" ) );
    }

    /**
      Get Window border size default value
    */
    QString defaultBorderSizeValue() const
    {
        return defaultBorderSizeValue_helper();
    }

    /**
      Set Use theme's default window border size
    */
    void setBorderSizeAuto( bool v )
    {
      if (v != mBorderSizeAuto && !isBorderSizeAutoImmutable()) {
        mBorderSizeAuto = v;
        Q_EMIT borderSizeAutoChanged();
      }
    }

    Q_PROPERTY(bool borderSizeAuto READ borderSizeAuto WRITE setBorderSizeAuto NOTIFY borderSizeAutoChanged)
    Q_PROPERTY(bool isBorderSizeAutoImmutable READ isBorderSizeAutoImmutable CONSTANT)
    Q_PROPERTY(bool defaultBorderSizeAutoValue READ defaultBorderSizeAutoValue CONSTANT)
    /**
      Get Use theme's default window border size
    */
    bool borderSizeAuto() const
    {
      return mBorderSizeAuto;
    }

    /**
      Is Use theme's default window border size Immutable
    */
    bool isBorderSizeAutoImmutable() const
    {
      return isImmutable( QStringLiteral( "borderSizeAuto" ) );
    }

    /**
      Get Use theme's default window border size default value
    */
    bool defaultBorderSizeAutoValue() const
    {
        return defaultBorderSizeAutoValue_helper();
    }

    /**
      Set Close windows by double clicking the window menu button
    */
    void setCloseOnDoubleClickOnMenu( bool v )
    {
      if (v != mCloseOnDoubleClickOnMenu && !isCloseOnDoubleClickOnMenuImmutable()) {
        mCloseOnDoubleClickOnMenu = v;
        Q_EMIT closeOnDoubleClickOnMenuChanged();
      }
    }

    Q_PROPERTY(bool closeOnDoubleClickOnMenu READ closeOnDoubleClickOnMenu WRITE setCloseOnDoubleClickOnMenu NOTIFY closeOnDoubleClickOnMenuChanged)
    Q_PROPERTY(bool isCloseOnDoubleClickOnMenuImmutable READ isCloseOnDoubleClickOnMenuImmutable CONSTANT)
    Q_PROPERTY(bool defaultCloseOnDoubleClickOnMenuValue READ defaultCloseOnDoubleClickOnMenuValue CONSTANT)
    /**
      Get Close windows by double clicking the window menu button
    */
    bool closeOnDoubleClickOnMenu() const
    {
      return mCloseOnDoubleClickOnMenu;
    }

    /**
      Is Close windows by double clicking the window menu button Immutable
    */
    bool isCloseOnDoubleClickOnMenuImmutable() const
    {
      return isImmutable( QStringLiteral( "closeOnDoubleClickOnMenu" ) );
    }

    /**
      Get Close windows by double clicking the window menu button default value
    */
    bool defaultCloseOnDoubleClickOnMenuValue() const
    {
        return defaultCloseOnDoubleClickOnMenuValue_helper();
    }

    /**
      Set Show titlebar button tooltips
    */
    void setShowToolTips( bool v )
    {
      if (v != mShowToolTips && !isShowToolTipsImmutable()) {
        mShowToolTips = v;
        Q_EMIT showToolTipsChanged();
      }
    }

    Q_PROPERTY(bool showToolTips READ showToolTips WRITE setShowToolTips NOTIFY showToolTipsChanged)
    Q_PROPERTY(bool isShowToolTipsImmutable READ isShowToolTipsImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowToolTipsValue READ defaultShowToolTipsValue CONSTANT)
    /**
      Get Show titlebar button tooltips
    */
    bool showToolTips() const
    {
      return mShowToolTips;
    }

    /**
      Is Show titlebar button tooltips Immutable
    */
    bool isShowToolTipsImmutable() const
    {
      return isImmutable( QStringLiteral( "showToolTips" ) );
    }

    /**
      Get Show titlebar button tooltips default value
    */
    bool defaultShowToolTipsValue() const
    {
        return defaultShowToolTipsValue_helper();
    }

    /**
      Set Titlebar left buttons
    */
    void setButtonsOnLeft( const QString & v )
    {
      if (v != mButtonsOnLeft && !isButtonsOnLeftImmutable()) {
        mButtonsOnLeft = v;
        Q_EMIT buttonsOnLeftChanged();
      }
    }

    Q_PROPERTY(QString buttonsOnLeft READ buttonsOnLeft WRITE setButtonsOnLeft NOTIFY buttonsOnLeftChanged)
    Q_PROPERTY(bool isButtonsOnLeftImmutable READ isButtonsOnLeftImmutable CONSTANT)
    Q_PROPERTY(QString defaultButtonsOnLeftValue READ defaultButtonsOnLeftValue CONSTANT)
    /**
      Get Titlebar left buttons
    */
    QString buttonsOnLeft() const
    {
      return mButtonsOnLeft;
    }

    /**
      Is Titlebar left buttons Immutable
    */
    bool isButtonsOnLeftImmutable() const
    {
      return isImmutable( QStringLiteral( "buttonsOnLeft" ) );
    }

    /**
      Get Titlebar left buttons default value
    */
    QString defaultButtonsOnLeftValue() const
    {
        return defaultButtonsOnLeftValue_helper();
    }

    /**
      Set Titlebar right buttons
    */
    void setButtonsOnRight( const QString & v )
    {
      if (v != mButtonsOnRight && !isButtonsOnRightImmutable()) {
        mButtonsOnRight = v;
        Q_EMIT buttonsOnRightChanged();
      }
    }

    Q_PROPERTY(QString buttonsOnRight READ buttonsOnRight WRITE setButtonsOnRight NOTIFY buttonsOnRightChanged)
    Q_PROPERTY(bool isButtonsOnRightImmutable READ isButtonsOnRightImmutable CONSTANT)
    Q_PROPERTY(QString defaultButtonsOnRightValue READ defaultButtonsOnRightValue CONSTANT)
    /**
      Get Titlebar right buttons
    */
    QString buttonsOnRight() const
    {
      return mButtonsOnRight;
    }

    /**
      Is Titlebar right buttons Immutable
    */
    bool isButtonsOnRightImmutable() const
    {
      return isImmutable( QStringLiteral( "buttonsOnRight" ) );
    }

    /**
      Get Titlebar right buttons default value
    */
    QString defaultButtonsOnRightValue() const
    {
        return defaultButtonsOnRightValue_helper();
    }

    /**
      Set Always show "Hide from Screenshots and Screen Recordings" button, even if the window is not already excluded from screenshots and screen recordings.
    */
    void setAlwaysShowExcludeFromCapture( bool v )
    {
      if (v != mAlwaysShowExcludeFromCapture && !isAlwaysShowExcludeFromCaptureImmutable()) {
        mAlwaysShowExcludeFromCapture = v;
        Q_EMIT alwaysShowExcludeFromCaptureChanged();
      }
    }

    Q_PROPERTY(bool alwaysShowExcludeFromCapture READ alwaysShowExcludeFromCapture WRITE setAlwaysShowExcludeFromCapture NOTIFY alwaysShowExcludeFromCaptureChanged)
    Q_PROPERTY(bool isAlwaysShowExcludeFromCaptureImmutable READ isAlwaysShowExcludeFromCaptureImmutable CONSTANT)
    Q_PROPERTY(bool defaultAlwaysShowExcludeFromCaptureValue READ defaultAlwaysShowExcludeFromCaptureValue CONSTANT)
    /**
      Get Always show "Hide from Screenshots and Screen Recordings" button, even if the window is not already excluded from screenshots and screen recordings.
    */
    bool alwaysShowExcludeFromCapture() const
    {
      return mAlwaysShowExcludeFromCapture;
    }

    /**
      Is Always show "Hide from Screenshots and Screen Recordings" button, even if the window is not already excluded from screenshots and screen recordings. Immutable
    */
    bool isAlwaysShowExcludeFromCaptureImmutable() const
    {
      return isImmutable( QStringLiteral( "alwaysShowExcludeFromCapture" ) );
    }

    /**
      Get Always show "Hide from Screenshots and Screen Recordings" button, even if the window is not already excluded from screenshots and screen recordings. default value
    */
    bool defaultAlwaysShowExcludeFromCaptureValue() const
    {
        return defaultAlwaysShowExcludeFromCaptureValue_helper();
    }


    enum {
      signalPluginNameChanged = 1,
      signalThemeChanged = 2,
      signalBorderSizeChanged = 3,
      signalBorderSizeAutoChanged = 4,
      signalCloseOnDoubleClickOnMenuChanged = 5,
      signalShowToolTipsChanged = 6,
      signalButtonsOnLeftChanged = 7,
      signalButtonsOnRightChanged = 8,
      signalAlwaysShowExcludeFromCaptureChanged = 9
    };

  Q_SIGNALS:
    void pluginNameChanged();

    void themeChanged();

    void borderSizeChanged();

    void borderSizeAutoChanged();

    void closeOnDoubleClickOnMenuChanged();

    void showToolTipsChanged();

    void buttonsOnLeftChanged();

    void buttonsOnRightChanged();

    void alwaysShowExcludeFromCaptureChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // org.kde.kdecoration2
    QString mPluginName;
    QString defaultPluginNameValue_helper() const;
    QString mTheme;
    QString defaultThemeValue_helper() const;
    QString mBorderSize;
    QString defaultBorderSizeValue_helper() const;
    bool mBorderSizeAuto;
    bool defaultBorderSizeAutoValue_helper() const;
    bool mCloseOnDoubleClickOnMenu;
    bool defaultCloseOnDoubleClickOnMenuValue_helper() const;
    bool mShowToolTips;
    bool defaultShowToolTipsValue_helper() const;
    QString mButtonsOnLeft;
    QString defaultButtonsOnLeftValue_helper() const;
    QString mButtonsOnRight;
    QString defaultButtonsOnRightValue_helper() const;
    bool mAlwaysShowExcludeFromCapture;
    bool defaultAlwaysShowExcludeFromCaptureValue_helper() const;
};

#endif

