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

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

class SettingsBase : public KConfigSkeleton
{
  public:

    SettingsBase( KSharedConfig::Ptr config = KSharedConfig::openConfig() );
    ~SettingsBase() override;

    /**
      Set name
    */
    void setName( const QString & v )
    {
      if (!isNameImmutable())
        mName = v;
    }

    /**
      Get name
    */
    QString name() const
    {
      return mName;
    }

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

    /**
      Set IMAP server
    */
    void setImapServer( const QString & v )
    {
      if (!isImapServerImmutable())
        mImapServer = v;
    }

    /**
      Get IMAP server
    */
    QString imapServer() const
    {
      return mImapServer;
    }

    /**
      Is IMAP server Immutable
    */
    bool isImapServerImmutable() const
    {
      return isImmutable( QStringLiteral( "ImapServer" ) );
    }

    /**
      Set Defines the port the IMAP service is running on
    */
    void setImapPort( int v )
    {
      if (!isImapPortImmutable())
        mImapPort = v;
    }

    /**
      Get Defines the port the IMAP service is running on
    */
    int imapPort() const
    {
      return mImapPort;
    }

    /**
      Is Defines the port the IMAP service is running on Immutable
    */
    bool isImapPortImmutable() const
    {
      return isImmutable( QStringLiteral( "ImapPort" ) );
    }

    /**
      Set Username
    */
    void setUserName( const QString & v )
    {
      if (!isUserNameImmutable())
        mUserName = v;
    }

    /**
      Get Username
    */
    QString userName() const
    {
      return mUserName;
    }

    /**
      Is Username Immutable
    */
    bool isUserNameImmutable() const
    {
      return isImmutable( QStringLiteral( "UserName" ) );
    }

    /**
      Set Defines the encryption type to use
    */
    void setSafety( const QString & v )
    {
      if (!isSafetyImmutable())
        mSafety = v;
    }

    /**
      Get Defines the encryption type to use
    */
    QString safety() const
    {
      return mSafety;
    }

    /**
      Is Defines the encryption type to use Immutable
    */
    bool isSafetyImmutable() const
    {
      return isImmutable( QStringLiteral( "Safety" ) );
    }

    /**
      Set Override configured encryption mode
    */
    void setOverrideEncryption( const QString & v )
    {
      if (!isOverrideEncryptionImmutable())
        mOverrideEncryption = v;
    }

    /**
      Get Override configured encryption mode
    */
    QString overrideEncryption() const
    {
      return mOverrideEncryption;
    }

    /**
      Is Override configured encryption mode Immutable
    */
    bool isOverrideEncryptionImmutable() const
    {
      return isImmutable( QStringLiteral( "OverrideEncryption" ) );
    }

    /**
      Set Defines the authentication type to use
    */
    void setAuthentication( int v )
    {
      if (!isAuthenticationImmutable())
        mAuthentication = v;
    }

    /**
      Get Defines the authentication type to use
    */
    int authentication() const
    {
      return mAuthentication;
    }

    /**
      Is Defines the authentication type to use Immutable
    */
    bool isAuthenticationImmutable() const
    {
      return isImmutable( QStringLiteral( "Authentication" ) );
    }

    /**
      Set Defines if the server side subscription is enabled
    */
    void setSubscriptionEnabled( bool v )
    {
      if (!isSubscriptionEnabledImmutable())
        mSubscriptionEnabled = v;
    }

    /**
      Get Defines if the server side subscription is enabled
    */
    bool subscriptionEnabled() const
    {
      return mSubscriptionEnabled;
    }

    /**
      Is Defines if the server side subscription is enabled Immutable
    */
    bool isSubscriptionEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "SubscriptionEnabled" ) );
    }

    /**
      Set SessionTimeout
    */
    void setSessionTimeout( int v )
    {
      if (!isSessionTimeoutImmutable())
        mSessionTimeout = v;
    }

    /**
      Get SessionTimeout
    */
    int sessionTimeout() const
    {
      return mSessionTimeout;
    }

    /**
      Is SessionTimeout Immutable
    */
    bool isSessionTimeoutImmutable() const
    {
      return isImmutable( QStringLiteral( "SessionTimeout" ) );
    }

    /**
      Set Connect using the system proxy settings
    */
    void setUseProxy( bool v )
    {
      if (!isUseProxyImmutable())
        mUseProxy = v;
    }

    /**
      Get Connect using the system proxy settings
    */
    bool useProxy() const
    {
      return mUseProxy;
    }

    /**
      Is Connect using the system proxy settings Immutable
    */
    bool isUseProxyImmutable() const
    {
      return isImmutable( QStringLiteral( "UseProxy" ) );
    }

    /**
      Set Defines if all the IMAP data should be cached locally all the time
    */
    void setDisconnectedModeEnabled( bool v )
    {
      if (!isDisconnectedModeEnabledImmutable())
        mDisconnectedModeEnabled = v;
    }

    /**
      Get Defines if all the IMAP data should be cached locally all the time
    */
    bool disconnectedModeEnabled() const
    {
      return mDisconnectedModeEnabled;
    }

    /**
      Is Defines if all the IMAP data should be cached locally all the time Immutable
    */
    bool isDisconnectedModeEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "DisconnectedModeEnabled" ) );
    }

    /**
      Set Defines if interval checking is enabled.
    */
    void setIntervalCheckEnabled( bool v )
    {
      if (!isIntervalCheckEnabledImmutable())
        mIntervalCheckEnabled = v;
    }

    /**
      Get Defines if interval checking is enabled.
    */
    bool intervalCheckEnabled() const
    {
      return mIntervalCheckEnabled;
    }

    /**
      Is Defines if interval checking is enabled. Immutable
    */
    bool isIntervalCheckEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "IntervalCheckEnabled" ) );
    }

    /**
      Set Check interval in minutes
    */
    void setIntervalCheckTime( int v )
    {
      if (!isIntervalCheckTimeImmutable())
        mIntervalCheckTime = v;
    }

    /**
      Get Check interval in minutes
    */
    int intervalCheckTime() const
    {
      return mIntervalCheckTime;
    }

    /**
      Is Check interval in minutes Immutable
    */
    bool isIntervalCheckTimeImmutable() const
    {
      return isImmutable( QStringLiteral( "IntervalCheckTime" ) );
    }

    /**
      Set Defines if the annotations, ACLs and quota information of mailboxes should
             also be retrieved when the mailboxes get listed.
    */
    void setRetrieveMetadataOnFolderListing( bool v )
    {
      if (!isRetrieveMetadataOnFolderListingImmutable())
        mRetrieveMetadataOnFolderListing = v;
    }

    /**
      Get Defines if the annotations, ACLs and quota information of mailboxes should
             also be retrieved when the mailboxes get listed.
    */
    bool retrieveMetadataOnFolderListing() const
    {
      return mRetrieveMetadataOnFolderListing;
    }

    /**
      Is Defines if the annotations, ACLs and quota information of mailboxes should
             also be retrieved when the mailboxes get listed. Immutable
    */
    bool isRetrieveMetadataOnFolderListingImmutable() const
    {
      return isImmutable( QStringLiteral( "RetrieveMetadataOnFolderListing" ) );
    }

    /**
      Set Defines if the expunge command is issued automatically, otherwise it should be
             triggered manually through the D-Bus interface.
    */
    void setAutomaticExpungeEnabled( bool v )
    {
      if (!isAutomaticExpungeEnabledImmutable())
        mAutomaticExpungeEnabled = v;
    }

    /**
      Get Defines if the expunge command is issued automatically, otherwise it should be
             triggered manually through the D-Bus interface.
    */
    bool automaticExpungeEnabled() const
    {
      return mAutomaticExpungeEnabled;
    }

    /**
      Is Defines if the expunge command is issued automatically, otherwise it should be
             triggered manually through the D-Bus interface. Immutable
    */
    bool isAutomaticExpungeEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "AutomaticExpungeEnabled" ) );
    }

    /**
      Set Define which folder is used for trash
    */
    void setTrashCollection( qint64 v )
    {
      if (!isTrashCollectionImmutable())
        mTrashCollection = v;
    }

    /**
      Get Define which folder is used for trash
    */
    qint64 trashCollection() const
    {
      return mTrashCollection;
    }

    /**
      Is Define which folder is used for trash Immutable
    */
    bool isTrashCollectionImmutable() const
    {
      return isImmutable( QStringLiteral( "TrashCollection" ) );
    }

    /**
      Set Define if the trash collection received the special attribute
    */
    void setTrashCollectionMigrated( bool v )
    {
      if (!isTrashCollectionMigratedImmutable())
        mTrashCollectionMigrated = v;
    }

    /**
      Get Define if the trash collection received the special attribute
    */
    bool trashCollectionMigrated() const
    {
      return mTrashCollectionMigrated;
    }

    /**
      Is Define if the trash collection received the special attribute Immutable
    */
    bool isTrashCollectionMigratedImmutable() const
    {
      return isImmutable( QStringLiteral( "TrashCollectionMigrated" ) );
    }

    /**
      Set Define if account uses the default identity
    */
    void setUseDefaultIdentity( bool v )
    {
      if (!isUseDefaultIdentityImmutable())
        mUseDefaultIdentity = v;
    }

    /**
      Get Define if account uses the default identity
    */
    bool useDefaultIdentity() const
    {
      return mUseDefaultIdentity;
    }

    /**
      Is Define if account uses the default identity Immutable
    */
    bool isUseDefaultIdentityImmutable() const
    {
      return isImmutable( QStringLiteral( "UseDefaultIdentity" ) );
    }

    /**
      Set Identity account
    */
    void setAccountIdentity( int v )
    {
      if (!isAccountIdentityImmutable())
        mAccountIdentity = v;
    }

    /**
      Get Identity account
    */
    int accountIdentity() const
    {
      return mAccountIdentity;
    }

    /**
      Is Identity account Immutable
    */
    bool isAccountIdentityImmutable() const
    {
      return isImmutable( QStringLiteral( "AccountIdentity" ) );
    }

    /**
      Set List of mailbox names reported by the server the last time
    */
    void setKnownMailBoxes( const QStringList & v )
    {
      if (!isKnownMailBoxesImmutable())
        mKnownMailBoxes = v;
    }

    /**
      Get List of mailbox names reported by the server the last time
    */
    QStringList knownMailBoxes() const
    {
      return mKnownMailBoxes;
    }

    /**
      Is List of mailbox names reported by the server the last time Immutable
    */
    bool isKnownMailBoxesImmutable() const
    {
      return isImmutable( QStringLiteral( "KnownMailBoxes" ) );
    }

    /**
      Set RID path to the mailbox to watch for changes
    */
    void setIdleRidPath( const QStringList & v )
    {
      if (!isIdleRidPathImmutable())
        mIdleRidPath = v;
    }

    /**
      Get RID path to the mailbox to watch for changes
    */
    QStringList idleRidPath() const
    {
      return mIdleRidPath;
    }

    /**
      Is RID path to the mailbox to watch for changes Immutable
    */
    bool isIdleRidPathImmutable() const
    {
      return isImmutable( QStringLiteral( "IdleRidPath" ) );
    }

    /**
      Set Define if server supports sieve
    */
    void setSieveSupport( bool v )
    {
      if (!isSieveSupportImmutable())
        mSieveSupport = v;
    }

    /**
      Get Define if server supports sieve
    */
    bool sieveSupport() const
    {
      return mSieveSupport;
    }

    /**
      Is Define if server supports sieve Immutable
    */
    bool isSieveSupportImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveSupport" ) );
    }

    /**
      Set Define if we reuse host and login configuration
    */
    void setSieveReuseConfig( bool v )
    {
      if (!isSieveReuseConfigImmutable())
        mSieveReuseConfig = v;
    }

    /**
      Get Define if we reuse host and login configuration
    */
    bool sieveReuseConfig() const
    {
      return mSieveReuseConfig;
    }

    /**
      Is Define if we reuse host and login configuration Immutable
    */
    bool isSieveReuseConfigImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveReuseConfig" ) );
    }

    /**
      Set Define sieve port
    */
    void setSievePort( int v )
    {
      if (!isSievePortImmutable())
        mSievePort = v;
    }

    /**
      Get Define sieve port
    */
    int sievePort() const
    {
      return mSievePort;
    }

    /**
      Is Define sieve port Immutable
    */
    bool isSievePortImmutable() const
    {
      return isImmutable( QStringLiteral( "SievePort" ) );
    }

    /**
      Set Define alternate URL
    */
    void setSieveAlternateUrl( const QString & v )
    {
      if (!isSieveAlternateUrlImmutable())
        mSieveAlternateUrl = v;
    }

    /**
      Get Define alternate URL
    */
    QString sieveAlternateUrl() const
    {
      return mSieveAlternateUrl;
    }

    /**
      Is Define alternate URL Immutable
    */
    bool isSieveAlternateUrlImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveAlternateUrl" ) );
    }

    /**
      Set Defines the authentication type to use for alternate server
    */
    void setAlternateAuthentication( int v )
    {
      if (!isAlternateAuthenticationImmutable())
        mAlternateAuthentication = v;
    }

    /**
      Get Defines the authentication type to use for alternate server
    */
    int alternateAuthentication() const
    {
      return mAlternateAuthentication;
    }

    /**
      Is Defines the authentication type to use for alternate server Immutable
    */
    bool isAlternateAuthenticationImmutable() const
    {
      return isImmutable( QStringLiteral( "AlternateAuthentication" ) );
    }

    /**
      Set Define default sieve vacation filename
    */
    void setSieveVacationFilename( const QString & v )
    {
      if (!isSieveVacationFilenameImmutable())
        mSieveVacationFilename = v;
    }

    /**
      Get Define default sieve vacation filename
    */
    QString sieveVacationFilename() const
    {
      return mSieveVacationFilename;
    }

    /**
      Is Define default sieve vacation filename Immutable
    */
    bool isSieveVacationFilenameImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveVacationFilename" ) );
    }

    /**
      Set Define username used from custom server sieve url
    */
    void setSieveCustomUsername( const QString & v )
    {
      if (!isSieveCustomUsernameImmutable())
        mSieveCustomUsername = v;
    }

    /**
      Get Define username used from custom server sieve url
    */
    QString sieveCustomUsername() const
    {
      return mSieveCustomUsername;
    }

    /**
      Is Define username used from custom server sieve url Immutable
    */
    bool isSieveCustomUsernameImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveCustomUsername" ) );
    }

    /**
      Set Defines the type of identification used by custom sieve server
    */
    void setSieveCustomAuthentification( const QString & v )
    {
      if (!isSieveCustomAuthentificationImmutable())
        mSieveCustomAuthentification = v;
    }

    /**
      Get Defines the type of identification used by custom sieve server
    */
    QString sieveCustomAuthentification() const
    {
      return mSieveCustomAuthentification;
    }

    /**
      Is Defines the type of identification used by custom sieve server Immutable
    */
    bool isSieveCustomAuthentificationImmutable() const
    {
      return isImmutable( QStringLiteral( "SieveCustomAuthentification" ) );
    }

    /**
      Set Whether the activities support of the agent is enabled
    */
    void setActivitiesEnabled( bool v )
    {
      if (!isActivitiesEnabledImmutable())
        mActivitiesEnabled = v;
    }

    /**
      Get Whether the activities support of the agent is enabled
    */
    bool activitiesEnabled() const
    {
      return mActivitiesEnabled;
    }

    /**
      Is Whether the activities support of the agent is enabled Immutable
    */
    bool isActivitiesEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "ActivitiesEnabled" ) );
    }

    /**
      Set The activities of the agent
    */
    void setActivities( const QStringList & v )
    {
      if (!isActivitiesImmutable())
        mActivities = v;
    }

    /**
      Get The activities of the agent
    */
    QStringList activities() const
    {
      return mActivities;
    }

    /**
      Is The activities of the agent Immutable
    */
    bool isActivitiesImmutable() const
    {
      return isImmutable( QStringLiteral( "Activities" ) );
    }

  protected:

    // network
    QString mName;
    QString mImapServer;
    int mImapPort;
    QString mUserName;
    QString mSafety;
    QString mOverrideEncryption;
    int mAuthentication;
    bool mSubscriptionEnabled;
    int mSessionTimeout;
    bool mUseProxy;

    // cache
    bool mDisconnectedModeEnabled;
    bool mIntervalCheckEnabled;
    int mIntervalCheckTime;
    bool mRetrieveMetadataOnFolderListing;
    bool mAutomaticExpungeEnabled;
    qint64 mTrashCollection;
    bool mTrashCollectionMigrated;
    bool mUseDefaultIdentity;
    int mAccountIdentity;
    QStringList mKnownMailBoxes;

    // idle
    QStringList mIdleRidPath;

    // siever
    bool mSieveSupport;
    bool mSieveReuseConfig;
    int mSievePort;
    QString mSieveAlternateUrl;
    int mAlternateAuthentication;
    QString mSieveVacationFilename;
    QString mSieveCustomUsername;
    QString mSieveCustomAuthentification;

    // Activities
    bool mActivitiesEnabled;
    QStringList mActivities;
};

#endif

