// This file is generated by kconfig_compiler_kf5 from calendarsettings.kcfg.
// All changes you do to this file will be lost.
#ifndef AKONADI_CALENDARSETTINGS_H
#define AKONADI_CALENDARSETTINGS_H

#include "akonadi-calendar_export.h"

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

namespace Akonadi {

class AKONADI_CALENDAR_EXPORT CalendarSettings : public KConfigSkeleton
{
  public:

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

    /**
      Set FreeBusyPublishAuto
    */
    static
    void setFreeBusyPublishAuto( bool v )
    {
      if (!self()->isFreeBusyPublishAutoImmutable())
        self()->mFreeBusyPublishAuto = v;
    }

    /**
      Get FreeBusyPublishAuto
    */
    static
    bool freeBusyPublishAuto()
    {
      return self()->mFreeBusyPublishAuto;
    }

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

    /**
      Get Item object corresponding to FreeBusyPublishAuto()
    */
    ItemBool *freeBusyPublishAutoItem()
    {
      return mFreeBusyPublishAutoItem;
    }

    /**
      Set FreeBusyPublishDelay
    */
    static
    void setFreeBusyPublishDelay( int v )
    {
      if (!self()->isFreeBusyPublishDelayImmutable())
        self()->mFreeBusyPublishDelay = v;
    }

    /**
      Get FreeBusyPublishDelay
    */
    static
    int freeBusyPublishDelay()
    {
      return self()->mFreeBusyPublishDelay;
    }

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

    /**
      Get Item object corresponding to FreeBusyPublishDelay()
    */
    ItemInt *freeBusyPublishDelayItem()
    {
      return mFreeBusyPublishDelayItem;
    }

    /**
      Set FreeBusyPublishDays
    */
    static
    void setFreeBusyPublishDays( int v )
    {
      if (!self()->isFreeBusyPublishDaysImmutable())
        self()->mFreeBusyPublishDays = v;
    }

    /**
      Get FreeBusyPublishDays
    */
    static
    int freeBusyPublishDays()
    {
      return self()->mFreeBusyPublishDays;
    }

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

    /**
      Get Item object corresponding to FreeBusyPublishDays()
    */
    ItemInt *freeBusyPublishDaysItem()
    {
      return mFreeBusyPublishDaysItem;
    }

    /**
      Set Free/Busy Publish URL
    */
    static
    void setFreeBusyPublishUrl( const QString & v )
    {
      if (!self()->isFreeBusyPublishUrlImmutable())
        self()->mFreeBusyPublishUrl = v;
    }

    /**
      Get Free/Busy Publish URL
    */
    static
    QString freeBusyPublishUrl()
    {
      return self()->mFreeBusyPublishUrl;
    }

    /**
      Is Free/Busy Publish URL Immutable
    */
    static
    bool isFreeBusyPublishUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyPublishUrl" ) );
    }

    /**
      Get Item object corresponding to FreeBusyPublishUrl()
    */
    ItemString *freeBusyPublishUrlItem()
    {
      return mFreeBusyPublishUrlItem;
    }

    /**
      Set Free/Busy Publish Username
    */
    static
    void setFreeBusyPublishUser( const QString & v )
    {
      if (!self()->isFreeBusyPublishUserImmutable())
        self()->mFreeBusyPublishUser = v;
    }

    /**
      Get Free/Busy Publish Username
    */
    static
    QString freeBusyPublishUser()
    {
      return self()->mFreeBusyPublishUser;
    }

    /**
      Is Free/Busy Publish Username Immutable
    */
    static
    bool isFreeBusyPublishUserImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyPublishUser" ) );
    }

    /**
      Get Item object corresponding to FreeBusyPublishUser()
    */
    ItemString *freeBusyPublishUserItem()
    {
      return mFreeBusyPublishUserItem;
    }

    /**
      Set Free/Busy Publish Password
    */
    static
    void setFreeBusyPublishPassword( const QString & v )
    {
      if (!self()->isFreeBusyPublishPasswordImmutable())
        self()->mFreeBusyPublishPassword = v;
    }

    /**
      Get Free/Busy Publish Password
    */
    static
    QString freeBusyPublishPassword()
    {
      return self()->mFreeBusyPublishPassword;
    }

    /**
      Is Free/Busy Publish Password Immutable
    */
    static
    bool isFreeBusyPublishPasswordImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyPublishPassword" ) );
    }

    /**
      Get Item object corresponding to FreeBusyPublishPassword()
    */
    ItemPassword *freeBusyPublishPasswordItem()
    {
      return mFreeBusyPublishPasswordItem;
    }

    /**
      Set FreeBusyPublishSavePassword
    */
    static
    void setFreeBusyPublishSavePassword( bool v )
    {
      if (!self()->isFreeBusyPublishSavePasswordImmutable())
        self()->mFreeBusyPublishSavePassword = v;
    }

    /**
      Get FreeBusyPublishSavePassword
    */
    static
    bool freeBusyPublishSavePassword()
    {
      return self()->mFreeBusyPublishSavePassword;
    }

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

    /**
      Get Item object corresponding to FreeBusyPublishSavePassword()
    */
    ItemBool *freeBusyPublishSavePasswordItem()
    {
      return mFreeBusyPublishSavePasswordItem;
    }

    /**
      Set Enable Automatic Free/Busy Retrieval
    */
    static
    void setFreeBusyRetrieveAuto( bool v )
    {
      if (!self()->isFreeBusyRetrieveAutoImmutable())
        self()->mFreeBusyRetrieveAuto = v;
    }

    /**
      Get Enable Automatic Free/Busy Retrieval
    */
    static
    bool freeBusyRetrieveAuto()
    {
      return self()->mFreeBusyRetrieveAuto;
    }

    /**
      Is Enable Automatic Free/Busy Retrieval Immutable
    */
    static
    bool isFreeBusyRetrieveAutoImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyRetrieveAuto" ) );
    }

    /**
      Get Item object corresponding to FreeBusyRetrieveAuto()
    */
    ItemBool *freeBusyRetrieveAutoItem()
    {
      return mFreeBusyRetrieveAutoItem;
    }

    /**
      Set Use full email address for retrieval
    */
    static
    void setFreeBusyFullDomainRetrieval( bool v )
    {
      if (!self()->isFreeBusyFullDomainRetrievalImmutable())
        self()->mFreeBusyFullDomainRetrieval = v;
    }

    /**
      Get Use full email address for retrieval
    */
    static
    bool freeBusyFullDomainRetrieval()
    {
      return self()->mFreeBusyFullDomainRetrieval;
    }

    /**
      Is Use full email address for retrieval Immutable
    */
    static
    bool isFreeBusyFullDomainRetrievalImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyFullDomainRetrieval" ) );
    }

    /**
      Get Item object corresponding to FreeBusyFullDomainRetrieval()
    */
    ItemBool *freeBusyFullDomainRetrievalItem()
    {
      return mFreeBusyFullDomainRetrievalItem;
    }

    /**
      Set Free/Busy Retrieval URL
    */
    static
    void setFreeBusyRetrieveUrl( const QString & v )
    {
      if (!self()->isFreeBusyRetrieveUrlImmutable())
        self()->mFreeBusyRetrieveUrl = v;
    }

    /**
      Get Free/Busy Retrieval URL
    */
    static
    QString freeBusyRetrieveUrl()
    {
      return self()->mFreeBusyRetrieveUrl;
    }

    /**
      Is Free/Busy Retrieval URL Immutable
    */
    static
    bool isFreeBusyRetrieveUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyRetrieveUrl" ) );
    }

    /**
      Get Item object corresponding to FreeBusyRetrieveUrl()
    */
    ItemString *freeBusyRetrieveUrlItem()
    {
      return mFreeBusyRetrieveUrlItem;
    }

    /**
      Set Free/Busy Retrieval Username
    */
    static
    void setFreeBusyRetrieveUser( const QString & v )
    {
      if (!self()->isFreeBusyRetrieveUserImmutable())
        self()->mFreeBusyRetrieveUser = v;
    }

    /**
      Get Free/Busy Retrieval Username
    */
    static
    QString freeBusyRetrieveUser()
    {
      return self()->mFreeBusyRetrieveUser;
    }

    /**
      Is Free/Busy Retrieval Username Immutable
    */
    static
    bool isFreeBusyRetrieveUserImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyRetrieveUser" ) );
    }

    /**
      Get Item object corresponding to FreeBusyRetrieveUser()
    */
    ItemString *freeBusyRetrieveUserItem()
    {
      return mFreeBusyRetrieveUserItem;
    }

    /**
      Set Free/Busy Retrieval Password
    */
    static
    void setFreeBusyRetrievePassword( const QString & v )
    {
      if (!self()->isFreeBusyRetrievePasswordImmutable())
        self()->mFreeBusyRetrievePassword = v;
    }

    /**
      Get Free/Busy Retrieval Password
    */
    static
    QString freeBusyRetrievePassword()
    {
      return self()->mFreeBusyRetrievePassword;
    }

    /**
      Is Free/Busy Retrieval Password Immutable
    */
    static
    bool isFreeBusyRetrievePasswordImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyRetrievePassword" ) );
    }

    /**
      Get Item object corresponding to FreeBusyRetrievePassword()
    */
    ItemPassword *freeBusyRetrievePasswordItem()
    {
      return mFreeBusyRetrievePasswordItem;
    }

    /**
      Set FreeBusyRetrieveSavePassword
    */
    static
    void setFreeBusyRetrieveSavePassword( bool v )
    {
      if (!self()->isFreeBusyRetrieveSavePasswordImmutable())
        self()->mFreeBusyRetrieveSavePassword = v;
    }

    /**
      Get FreeBusyRetrieveSavePassword
    */
    static
    bool freeBusyRetrieveSavePassword()
    {
      return self()->mFreeBusyRetrieveSavePassword;
    }

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

    /**
      Get Item object corresponding to FreeBusyRetrieveSavePassword()
    */
    ItemBool *freeBusyRetrieveSavePasswordItem()
    {
      return mFreeBusyRetrieveSavePasswordItem;
    }

    /**
      Set Send copy to owner when mailing events
    */
    static
    void setBcc( bool v )
    {
      if (!self()->isBccImmutable())
        self()->mBcc = v;
    }

    /**
      Get Send copy to owner when mailing events
    */
    static
    bool bcc()
    {
      return self()->mBcc;
    }

    /**
      Is Send copy to owner when mailing events Immutable
    */
    static
    bool isBccImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Bcc" ) );
    }

    /**
      Get Item object corresponding to Bcc()
    */
    ItemBool *bccItem()
    {
      return mBccItem;
    }

    /**
      Set Mail transport to use for sending e-mail messages
    */
    static
    void setMailTransport( const QString & v )
    {
      if (!self()->isMailTransportImmutable())
        self()->mMailTransport = v;
    }

    /**
      Get Mail transport to use for sending e-mail messages
    */
    static
    QString mailTransport()
    {
      return self()->mMailTransport;
    }

    /**
      Is Mail transport to use for sending e-mail messages Immutable
    */
    static
    bool isMailTransportImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MailTransport" ) );
    }

    /**
      Get Item object corresponding to MailTransport()
    */
    ItemString *mailTransportItem()
    {
      return mMailTransportItem;
    }

    /**
      Set Send Outlook-like pseudo counter proposals
    */
    static
    void setOutlookCompatCounterProposals( bool v )
    {
      if (!self()->isOutlookCompatCounterProposalsImmutable())
        self()->mOutlookCompatCounterProposals = v;
    }

    /**
      Get Send Outlook-like pseudo counter proposals
    */
    static
    bool outlookCompatCounterProposals()
    {
      return self()->mOutlookCompatCounterProposals;
    }

    /**
      Is Send Outlook-like pseudo counter proposals Immutable
    */
    static
    bool isOutlookCompatCounterProposalsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OutlookCompatCounterProposals" ) );
    }

    /**
      Get Item object corresponding to OutlookCompatCounterProposals()
    */
    ItemBool *outlookCompatCounterProposalsItem()
    {
      return mOutlookCompatCounterProposalsItem;
    }

    /**
      Set Check whether hostname and retrieval email address match
    */
    static
    void setFreeBusyCheckHostname( bool v )
    {
      if (!self()->isFreeBusyCheckHostnameImmutable())
        self()->mFreeBusyCheckHostname = v;
    }

    /**
      Get Check whether hostname and retrieval email address match
    */
    static
    bool freeBusyCheckHostname()
    {
      return self()->mFreeBusyCheckHostname;
    }

    /**
      Is Check whether hostname and retrieval email address match Immutable
    */
    static
    bool isFreeBusyCheckHostnameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FreeBusyCheckHostname" ) );
    }

    /**
      Get Item object corresponding to FreeBusyCheckHostname()
    */
    ItemBool *freeBusyCheckHostnameItem()
    {
      return mFreeBusyCheckHostnameItem;
    }

  protected:
    CalendarSettings();
    friend class CalendarSettingsHelper;


    // FreeBusy Publish
    bool mFreeBusyPublishAuto;
    int mFreeBusyPublishDelay;
    int mFreeBusyPublishDays;
    QString mFreeBusyPublishUrl;
    QString mFreeBusyPublishUser;
    QString mFreeBusyPublishPassword;
    bool mFreeBusyPublishSavePassword;

    // FreeBusy Retrieve
    bool mFreeBusyRetrieveAuto;
    bool mFreeBusyFullDomainRetrieval;
    QString mFreeBusyRetrieveUrl;
    QString mFreeBusyRetrieveUser;
    QString mFreeBusyRetrievePassword;
    bool mFreeBusyRetrieveSavePassword;

    // Group Scheduling
    bool mBcc;
    QString mMailTransport;

    // Hidden Options
    bool mOutlookCompatCounterProposals;
    bool mFreeBusyCheckHostname;

  private:
    ItemBool *mFreeBusyPublishAutoItem;
    ItemInt *mFreeBusyPublishDelayItem;
    ItemInt *mFreeBusyPublishDaysItem;
    ItemString *mFreeBusyPublishUrlItem;
    ItemString *mFreeBusyPublishUserItem;
    ItemPassword *mFreeBusyPublishPasswordItem;
    ItemBool *mFreeBusyPublishSavePasswordItem;
    ItemBool *mFreeBusyRetrieveAutoItem;
    ItemBool *mFreeBusyFullDomainRetrievalItem;
    ItemString *mFreeBusyRetrieveUrlItem;
    ItemString *mFreeBusyRetrieveUserItem;
    ItemPassword *mFreeBusyRetrievePasswordItem;
    ItemBool *mFreeBusyRetrieveSavePasswordItem;
    ItemBool *mBccItem;
    ItemString *mMailTransportItem;
    ItemBool *mOutlookCompatCounterProposalsItem;
    ItemBool *mFreeBusyCheckHostnameItem;
};

}

#endif

