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

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

class VirtualDesktopsSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set Whether or not, we circle through the virtual desktop when moving from one to the next
    */
    void setRollOverDesktops( bool v )
    {
      if (v != mRollOverDesktops && !isRollOverDesktopsImmutable()) {
        mRollOverDesktops = v;
        Q_EMIT rollOverDesktopsChanged();
      }
    }

    Q_PROPERTY(bool rollOverDesktops READ rollOverDesktops WRITE setRollOverDesktops NOTIFY rollOverDesktopsChanged)
    Q_PROPERTY(bool isRollOverDesktopsImmutable READ isRollOverDesktopsImmutable CONSTANT)
    Q_PROPERTY(bool defaultRollOverDesktopsValue READ defaultRollOverDesktopsValue CONSTANT)
    /**
      Get Whether or not, we circle through the virtual desktop when moving from one to the next
    */
    bool rollOverDesktops() const
    {
      return mRollOverDesktops;
    }

    /**
      Is Whether or not, we circle through the virtual desktop when moving from one to the next Immutable
    */
    bool isRollOverDesktopsImmutable() const
    {
      return isImmutable( QStringLiteral( "rollOverDesktops" ) );
    }

    /**
      Get Whether or not, we circle through the virtual desktop when moving from one to the next default value
    */
    bool defaultRollOverDesktopsValue() const
    {
        return defaultRollOverDesktopsValue_helper();
    }

    /**
      Set Whether virtual desktops are switched independently for each screen
    */
    void setPerOutputVirtualDesktops( bool v )
    {
      if (v != mPerOutputVirtualDesktops && !isPerOutputVirtualDesktopsImmutable()) {
        mPerOutputVirtualDesktops = v;
        Q_EMIT perOutputVirtualDesktopsChanged();
      }
    }

    Q_PROPERTY(bool perOutputVirtualDesktops READ perOutputVirtualDesktops WRITE setPerOutputVirtualDesktops NOTIFY perOutputVirtualDesktopsChanged)
    Q_PROPERTY(bool isPerOutputVirtualDesktopsImmutable READ isPerOutputVirtualDesktopsImmutable CONSTANT)
    Q_PROPERTY(bool defaultPerOutputVirtualDesktopsValue READ defaultPerOutputVirtualDesktopsValue CONSTANT)
    /**
      Get Whether virtual desktops are switched independently for each screen
    */
    bool perOutputVirtualDesktops() const
    {
      return mPerOutputVirtualDesktops;
    }

    /**
      Is Whether virtual desktops are switched independently for each screen Immutable
    */
    bool isPerOutputVirtualDesktopsImmutable() const
    {
      return isImmutable( QStringLiteral( "perOutputVirtualDesktops" ) );
    }

    /**
      Get Whether virtual desktops are switched independently for each screen default value
    */
    bool defaultPerOutputVirtualDesktopsValue() const
    {
        return defaultPerOutputVirtualDesktopsValue_helper();
    }

    /**
      Set Display in an OSD the virtual desktop name when switching between virtual desktops
    */
    void setDesktopChangeOsdEnabled( bool v )
    {
      if (v != mDesktopChangeOsdEnabled && !isDesktopChangeOsdEnabledImmutable()) {
        mDesktopChangeOsdEnabled = v;
        Q_EMIT desktopChangeOsdEnabledChanged();
      }
    }

    Q_PROPERTY(bool desktopChangeOsdEnabled READ desktopChangeOsdEnabled WRITE setDesktopChangeOsdEnabled NOTIFY desktopChangeOsdEnabledChanged)
    Q_PROPERTY(bool isDesktopChangeOsdEnabledImmutable READ isDesktopChangeOsdEnabledImmutable CONSTANT)
    Q_PROPERTY(bool defaultDesktopChangeOsdEnabledValue READ defaultDesktopChangeOsdEnabledValue CONSTANT)
    /**
      Get Display in an OSD the virtual desktop name when switching between virtual desktops
    */
    bool desktopChangeOsdEnabled() const
    {
      return mDesktopChangeOsdEnabled;
    }

    /**
      Is Display in an OSD the virtual desktop name when switching between virtual desktops Immutable
    */
    bool isDesktopChangeOsdEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "desktopChangeOsdEnabled" ) );
    }

    /**
      Get Display in an OSD the virtual desktop name when switching between virtual desktops default value
    */
    bool defaultDesktopChangeOsdEnabledValue() const
    {
        return defaultDesktopChangeOsdEnabledValue_helper();
    }

    /**
      Set Duraton of the OSD
    */
    void setPopupHideDelay( int v )
    {
      if (v != mPopupHideDelay && !isPopupHideDelayImmutable()) {
        mPopupHideDelay = v;
        Q_EMIT popupHideDelayChanged();
      }
    }

    Q_PROPERTY(int popupHideDelay READ popupHideDelay WRITE setPopupHideDelay NOTIFY popupHideDelayChanged)
    Q_PROPERTY(bool isPopupHideDelayImmutable READ isPopupHideDelayImmutable CONSTANT)
    Q_PROPERTY(int defaultPopupHideDelayValue READ defaultPopupHideDelayValue CONSTANT)
    /**
      Get Duraton of the OSD
    */
    int popupHideDelay() const
    {
      return mPopupHideDelay;
    }

    /**
      Is Duraton of the OSD Immutable
    */
    bool isPopupHideDelayImmutable() const
    {
      return isImmutable( QStringLiteral( "popupHideDelay" ) );
    }

    /**
      Get Duraton of the OSD default value
    */
    int defaultPopupHideDelayValue() const
    {
        return defaultPopupHideDelayValue_helper();
    }

    /**
      Set Whether or not to display desktop layout in the OSD
    */
    void setTextOnly( bool v )
    {
      if (v != mTextOnly && !isTextOnlyImmutable()) {
        mTextOnly = v;
        Q_EMIT textOnlyChanged();
      }
    }

    Q_PROPERTY(bool textOnly READ textOnly WRITE setTextOnly NOTIFY textOnlyChanged)
    Q_PROPERTY(bool isTextOnlyImmutable READ isTextOnlyImmutable CONSTANT)
    Q_PROPERTY(bool defaultTextOnlyValue READ defaultTextOnlyValue CONSTANT)
    /**
      Get Whether or not to display desktop layout in the OSD
    */
    bool textOnly() const
    {
      return mTextOnly;
    }

    /**
      Is Whether or not to display desktop layout in the OSD Immutable
    */
    bool isTextOnlyImmutable() const
    {
      return isImmutable( QStringLiteral( "textOnly" ) );
    }

    /**
      Get Whether or not to display desktop layout in the OSD default value
    */
    bool defaultTextOnlyValue() const
    {
        return defaultTextOnlyValue_helper();
    }


    enum {
      signalRollOverDesktopsChanged = 1,
      signalPerOutputVirtualDesktopsChanged = 2,
      signalDesktopChangeOsdEnabledChanged = 3,
      signalPopupHideDelayChanged = 4,
      signalTextOnlyChanged = 5
    };

  Q_SIGNALS:
    void rollOverDesktopsChanged();

    void perOutputVirtualDesktopsChanged();

    void desktopChangeOsdEnabledChanged();

    void popupHideDelayChanged();

    void textOnlyChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // Windows
    bool mRollOverDesktops;
    bool defaultRollOverDesktopsValue_helper() const;
    bool mPerOutputVirtualDesktops;
    bool defaultPerOutputVirtualDesktopsValue_helper() const;

    // Plugins
    bool mDesktopChangeOsdEnabled;
    bool defaultDesktopChangeOsdEnabledValue_helper() const;

    // Script-desktopchangeosd
    int mPopupHideDelay;
    int defaultPopupHideDelayValue_helper() const;
    bool mTextOnly;
    bool defaultTextOnlyValue_helper() const;
};

#endif

