// This file is generated by kconfig_compiler_kf6 from sieve-vacation.kcfg.
// All changes you do to this file will be lost.
#ifndef KSIEVECORE_VACATIONSETTINGS_H
#define KSIEVECORE_VACATIONSETTINGS_H

#include "ksievecore_export.h"

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

namespace KSieveCore {

class KSIEVECORE_EXPORT VacationSettings : public KConfigSkeleton
{
  public:

    static VacationSettings *self();
    ~VacationSettings() override;

    /**
      Set Allow out-of-office settings to be changeable by the user.
    */
    static
    void setAllowOutOfOfficeSettings( bool v )
    {
      if (!self()->isAllowOutOfOfficeSettingsImmutable())
        self()->mAllowOutOfOfficeSettings = v;
    }

    /**
      Get Allow out-of-office settings to be changeable by the user.
    */
    static
    bool allowOutOfOfficeSettings()
    {
      return self()->mAllowOutOfOfficeSettings;
    }

    /**
      Is Allow out-of-office settings to be changeable by the user. Immutable
    */
    static
    bool isAllowOutOfOfficeSettingsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AllowOutOfOfficeSettings" ) );
    }

    /**
      Get Item object corresponding to AllowOutOfOfficeSettings()
    */
    ItemBool *allowOutOfOfficeSettingsItem()
    {
      return mAllowOutOfOfficeSettingsItem;
    }

    /**
      Set Allow users to upload out-of-office sieve scripts, but prevent them from changing any settings, such as the domain to react to or the spam reaction switch.
    */
    static
    void setAllowOutOfOfficeUploadButNoSettings( bool v )
    {
      if (!self()->isAllowOutOfOfficeUploadButNoSettingsImmutable())
        self()->mAllowOutOfOfficeUploadButNoSettings = v;
    }

    /**
      Get Allow users to upload out-of-office sieve scripts, but prevent them from changing any settings, such as the domain to react to or the spam reaction switch.
    */
    static
    bool allowOutOfOfficeUploadButNoSettings()
    {
      return self()->mAllowOutOfOfficeUploadButNoSettings;
    }

    /**
      Is Allow users to upload out-of-office sieve scripts, but prevent them from changing any settings, such as the domain to react to or the spam reaction switch. Immutable
    */
    static
    bool isAllowOutOfOfficeUploadButNoSettingsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AllowOutOfOfficeUploadButNoSettings" ) );
    }

    /**
      Get Item object corresponding to AllowOutOfOfficeUploadButNoSettings()
    */
    ItemBool *allowOutOfOfficeUploadButNoSettingsItem()
    {
      return mAllowOutOfOfficeUploadButNoSettingsItem;
    }

    /**
      Set Send out-of-office replies to mails coming from this domain only.
    */
    static
    void setOutOfOfficeDomain( const QString & v )
    {
      if (!self()->isOutOfOfficeDomainImmutable())
        self()->mOutOfOfficeDomain = v;
    }

    /**
      Get Send out-of-office replies to mails coming from this domain only.
    */
    static
    QString outOfOfficeDomain()
    {
      return self()->mOutOfOfficeDomain;
    }

    /**
      Is Send out-of-office replies to mails coming from this domain only. Immutable
    */
    static
    bool isOutOfOfficeDomainImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutOfOfficeDomain" ) );
    }

    /**
      Get Item object corresponding to OutOfOfficeDomain()
    */
    ItemString *outOfOfficeDomainItem()
    {
      return mOutOfOfficeDomainItem;
    }

    /**
      Set Allow out-of-office replies to be sent to messages marked as SPAM.
    */
    static
    void setOutOfOfficeReactToSpam( bool v )
    {
      if (!self()->isOutOfOfficeReactToSpamImmutable())
        self()->mOutOfOfficeReactToSpam = v;
    }

    /**
      Get Allow out-of-office replies to be sent to messages marked as SPAM.
    */
    static
    bool outOfOfficeReactToSpam()
    {
      return self()->mOutOfOfficeReactToSpam;
    }

    /**
      Is Allow out-of-office replies to be sent to messages marked as SPAM. Immutable
    */
    static
    bool isOutOfOfficeReactToSpamImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutOfOfficeReactToSpam" ) );
    }

    /**
      Get Item object corresponding to OutOfOfficeReactToSpam()
    */
    ItemBool *outOfOfficeReactToSpamItem()
    {
      return mOutOfOfficeReactToSpamItem;
    }

    /**
      Set Check if there is still an active out-of-office reply configured on startup.
    */
    static
    void setCheckOutOfOfficeOnStartup( bool v )
    {
      if (!self()->isCheckOutOfOfficeOnStartupImmutable())
        self()->mCheckOutOfOfficeOnStartup = v;
    }

    /**
      Get Check if there is still an active out-of-office reply configured on startup.
    */
    static
    bool checkOutOfOfficeOnStartup()
    {
      return self()->mCheckOutOfOfficeOnStartup;
    }

    /**
      Is Check if there is still an active out-of-office reply configured on startup. Immutable
    */
    static
    bool isCheckOutOfOfficeOnStartupImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CheckOutOfOfficeOnStartup" ) );
    }

    /**
      Get Item object corresponding to CheckOutOfOfficeOnStartup()
    */
    ItemBool *checkOutOfOfficeOnStartupItem()
    {
      return mCheckOutOfOfficeOnStartupItem;
    }

  protected:
    VacationSettings();
    friend class VacationSettingsHelper;


    // OutOfOffice
    bool mAllowOutOfOfficeSettings;
    bool mAllowOutOfOfficeUploadButNoSettings;
    QString mOutOfOfficeDomain;
    bool mOutOfOfficeReactToSpam;
    bool mCheckOutOfOfficeOnStartup;

  private:
    ItemBool *mAllowOutOfOfficeSettingsItem;
    ItemBool *mAllowOutOfOfficeUploadButNoSettingsItem;
    ItemString *mOutOfOfficeDomainItem;
    ItemBool *mOutOfOfficeReactToSpamItem;
    ItemBool *mCheckOutOfOfficeOnStartupItem;
};

}

#endif

