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

#include <metatype.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" ) );
    }

    /**
      Get Item object corresponding to name()
    */
    ItemString *nameItem()
    {
      return mNameItem;
    }

    /**
      Set unitTestPassword
    */
    void setUnitTestPassword( const QString & v )
    {
      if (!isUnitTestPasswordImmutable())
        mUnitTestPassword = v;
    }

    /**
      Get unitTestPassword
    */
    QString unitTestPassword() const
    {
      return mUnitTestPassword;
    }

    /**
      Is unitTestPassword Immutable
    */
    bool isUnitTestPasswordImmutable() const
    {
      return isImmutable( QStringLiteral( "unitTestPassword" ) );
    }

    /**
      Get Item object corresponding to unitTestPassword()
    */
    ItemString *unitTestPasswordItem()
    {
      return mUnitTestPasswordItem;
    }

    /**
      Set login
    */
    void setLogin( const QString & v )
    {
      if (!isLoginImmutable())
        mLogin = v;
    }

    /**
      Get login
    */
    QString login() const
    {
      return mLogin;
    }

    /**
      Is login Immutable
    */
    bool isLoginImmutable() const
    {
      return isImmutable( QStringLiteral( "login" ) );
    }

    /**
      Get Item object corresponding to login()
    */
    ItemString *loginItem()
    {
      return mLoginItem;
    }

    /**
      Set host
    */
    void setHost( const QString & v )
    {
      if (!isHostImmutable())
        mHost = v;
    }

    /**
      Get host
    */
    QString host() const
    {
      return mHost;
    }

    /**
      Is host Immutable
    */
    bool isHostImmutable() const
    {
      return isImmutable( QStringLiteral( "host" ) );
    }

    /**
      Get Item object corresponding to host()
    */
    ItemString *hostItem()
    {
      return mHostItem;
    }

    /**
      Set port
    */
    void setPort( uint v )
    {
      if (!isPortImmutable())
        mPort = v;
    }

    /**
      Get port
    */
    uint port() const
    {
      return mPort;
    }

    /**
      Is port Immutable
    */
    bool isPortImmutable() const
    {
      return isImmutable( QStringLiteral( "port" ) );
    }

    /**
      Get Item object corresponding to port()
    */
    ItemUInt *portItem()
    {
      return mPortItem;
    }

    /**
      Set Defines the authentication type to use
    */
    void setAuthenticationMethod( int v )
    {
      if (!isAuthenticationMethodImmutable())
        mAuthenticationMethod = v;
    }

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

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

    /**
      Get Item object corresponding to authenticationMethod()
    */
    ItemInt *authenticationMethodItem()
    {
      return mAuthenticationMethodItem;
    }

    /**
      Set useSSL
    */
    void setUseSSL( bool v )
    {
      if (!isUseSSLImmutable())
        mUseSSL = v;
    }

    /**
      Get useSSL
    */
    bool useSSL() const
    {
      return mUseSSL;
    }

    /**
      Is useSSL Immutable
    */
    bool isUseSSLImmutable() const
    {
      return isImmutable( QStringLiteral( "useSSL" ) );
    }

    /**
      Get Item object corresponding to useSSL()
    */
    ItemBool *useSSLItem()
    {
      return mUseSSLItem;
    }

    /**
      Set useTLS
    */
    void setUseTLS( bool v )
    {
      if (!isUseTLSImmutable())
        mUseTLS = v;
    }

    /**
      Get useTLS
    */
    bool useTLS() const
    {
      return mUseTLS;
    }

    /**
      Is useTLS Immutable
    */
    bool isUseTLSImmutable() const
    {
      return isImmutable( QStringLiteral( "useTLS" ) );
    }

    /**
      Get Item object corresponding to useTLS()
    */
    ItemBool *useTLSItem()
    {
      return mUseTLSItem;
    }

    /**
      Set pipelining
    */
    void setPipelining( bool v )
    {
      if (!isPipeliningImmutable())
        mPipelining = v;
    }

    /**
      Get pipelining
    */
    bool pipelining() const
    {
      return mPipelining;
    }

    /**
      Is pipelining Immutable
    */
    bool isPipeliningImmutable() const
    {
      return isImmutable( QStringLiteral( "pipelining" ) );
    }

    /**
      Get Item object corresponding to pipelining()
    */
    ItemBool *pipeliningItem()
    {
      return mPipeliningItem;
    }

    /**
      Set useProxy
    */
    void setUseProxy( bool v )
    {
      if (!isUseProxyImmutable())
        mUseProxy = v;
    }

    /**
      Get useProxy
    */
    bool useProxy() const
    {
      return mUseProxy;
    }

    /**
      Is useProxy Immutable
    */
    bool isUseProxyImmutable() const
    {
      return isImmutable( QStringLiteral( "useProxy" ) );
    }

    /**
      Get Item object corresponding to useProxy()
    */
    ItemBool *useProxyItem()
    {
      return mUseProxyItem;
    }

    /**
      Set leaveOnServer
    */
    void setLeaveOnServer( bool v )
    {
      if (!isLeaveOnServerImmutable())
        mLeaveOnServer = v;
    }

    /**
      Get leaveOnServer
    */
    bool leaveOnServer() const
    {
      return mLeaveOnServer;
    }

    /**
      Is leaveOnServer Immutable
    */
    bool isLeaveOnServerImmutable() const
    {
      return isImmutable( QStringLiteral( "leaveOnServer" ) );
    }

    /**
      Get Item object corresponding to leaveOnServer()
    */
    ItemBool *leaveOnServerItem()
    {
      return mLeaveOnServerItem;
    }

    /**
      Set leaveOnServerDays
    */
    void setLeaveOnServerDays( int v )
    {
      if (!isLeaveOnServerDaysImmutable())
        mLeaveOnServerDays = v;
    }

    /**
      Get leaveOnServerDays
    */
    int leaveOnServerDays() const
    {
      return mLeaveOnServerDays;
    }

    /**
      Is leaveOnServerDays Immutable
    */
    bool isLeaveOnServerDaysImmutable() const
    {
      return isImmutable( QStringLiteral( "leaveOnServerDays" ) );
    }

    /**
      Get Item object corresponding to leaveOnServerDays()
    */
    ItemInt *leaveOnServerDaysItem()
    {
      return mLeaveOnServerDaysItem;
    }

    /**
      Set leaveOnServerCount
    */
    void setLeaveOnServerCount( int v )
    {
      if (!isLeaveOnServerCountImmutable())
        mLeaveOnServerCount = v;
    }

    /**
      Get leaveOnServerCount
    */
    int leaveOnServerCount() const
    {
      return mLeaveOnServerCount;
    }

    /**
      Is leaveOnServerCount Immutable
    */
    bool isLeaveOnServerCountImmutable() const
    {
      return isImmutable( QStringLiteral( "leaveOnServerCount" ) );
    }

    /**
      Get Item object corresponding to leaveOnServerCount()
    */
    ItemInt *leaveOnServerCountItem()
    {
      return mLeaveOnServerCountItem;
    }

    /**
      Set leaveOnServerSize
    */
    void setLeaveOnServerSize( int v )
    {
      if (!isLeaveOnServerSizeImmutable())
        mLeaveOnServerSize = v;
    }

    /**
      Get leaveOnServerSize
    */
    int leaveOnServerSize() const
    {
      return mLeaveOnServerSize;
    }

    /**
      Is leaveOnServerSize Immutable
    */
    bool isLeaveOnServerSizeImmutable() const
    {
      return isImmutable( QStringLiteral( "leaveOnServerSize" ) );
    }

    /**
      Get Item object corresponding to leaveOnServerSize()
    */
    ItemInt *leaveOnServerSizeItem()
    {
      return mLeaveOnServerSizeItem;
    }

    /**
      Set filterOnServer
    */
    void setFilterOnServer( bool v )
    {
      if (!isFilterOnServerImmutable())
        mFilterOnServer = v;
    }

    /**
      Get filterOnServer
    */
    bool filterOnServer() const
    {
      return mFilterOnServer;
    }

    /**
      Is filterOnServer Immutable
    */
    bool isFilterOnServerImmutable() const
    {
      return isImmutable( QStringLiteral( "filterOnServer" ) );
    }

    /**
      Get Item object corresponding to filterOnServer()
    */
    ItemBool *filterOnServerItem()
    {
      return mFilterOnServerItem;
    }

    /**
      Set filterCheckSize
    */
    void setFilterCheckSize( uint v )
    {
      if (!isFilterCheckSizeImmutable())
        mFilterCheckSize = v;
    }

    /**
      Get filterCheckSize
    */
    uint filterCheckSize() const
    {
      return mFilterCheckSize;
    }

    /**
      Is filterCheckSize Immutable
    */
    bool isFilterCheckSizeImmutable() const
    {
      return isImmutable( QStringLiteral( "filterCheckSize" ) );
    }

    /**
      Get Item object corresponding to filterCheckSize()
    */
    ItemUInt *filterCheckSizeItem()
    {
      return mFilterCheckSizeItem;
    }

    /**
      Set targetCollection
    */
    void setTargetCollection( qint64 v )
    {
      if (!isTargetCollectionImmutable())
        mTargetCollection = v;
    }

    /**
      Get targetCollection
    */
    qint64 targetCollection() const
    {
      return mTargetCollection;
    }

    /**
      Is targetCollection Immutable
    */
    bool isTargetCollectionImmutable() const
    {
      return isImmutable( QStringLiteral( "targetCollection" ) );
    }

    /**
      Get Item object corresponding to targetCollection()
    */
    ItemLongLong *targetCollectionItem()
    {
      return mTargetCollectionItem;
    }

    /**
      Set precommand
    */
    void setPrecommand( const QString & v )
    {
      if (!isPrecommandImmutable())
        mPrecommand = v;
    }

    /**
      Get precommand
    */
    QString precommand() const
    {
      return mPrecommand;
    }

    /**
      Is precommand Immutable
    */
    bool isPrecommandImmutable() const
    {
      return isImmutable( QStringLiteral( "precommand" ) );
    }

    /**
      Get Item object corresponding to precommand()
    */
    ItemString *precommandItem()
    {
      return mPrecommandItem;
    }

    /**
      Set intervalCheckEnabled
    */
    void setIntervalCheckEnabled( bool v )
    {
      if (!isIntervalCheckEnabledImmutable())
        mIntervalCheckEnabled = v;
    }

    /**
      Get intervalCheckEnabled
    */
    bool intervalCheckEnabled() const
    {
      return mIntervalCheckEnabled;
    }

    /**
      Is intervalCheckEnabled Immutable
    */
    bool isIntervalCheckEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "intervalCheckEnabled" ) );
    }

    /**
      Get Item object corresponding to intervalCheckEnabled()
    */
    ItemBool *intervalCheckEnabledItem()
    {
      return mIntervalCheckEnabledItem;
    }

    /**
      Set intervalCheckInterval
    */
    void setIntervalCheckInterval( int v )
    {
      if (!isIntervalCheckIntervalImmutable())
        mIntervalCheckInterval = v;
    }

    /**
      Get intervalCheckInterval
    */
    int intervalCheckInterval() const
    {
      return mIntervalCheckInterval;
    }

    /**
      Is intervalCheckInterval Immutable
    */
    bool isIntervalCheckIntervalImmutable() const
    {
      return isImmutable( QStringLiteral( "intervalCheckInterval" ) );
    }

    /**
      Get Item object corresponding to intervalCheckInterval()
    */
    ItemInt *intervalCheckIntervalItem()
    {
      return mIntervalCheckIntervalItem;
    }

    /**
      Set seenUidList
    */
    void setSeenUidList( const QStringList & v )
    {
      if (!isSeenUidListImmutable())
        mSeenUidList = v;
    }

    /**
      Get seenUidList
    */
    QStringList seenUidList() const
    {
      return mSeenUidList;
    }

    /**
      Is seenUidList Immutable
    */
    bool isSeenUidListImmutable() const
    {
      return isImmutable( QStringLiteral( "seenUidList" ) );
    }

    /**
      Get Item object corresponding to seenUidList()
    */
    ItemStringList *seenUidListItem()
    {
      return mSeenUidListItem;
    }

    /**
      Set seenUidTimeList
    */
    void setSeenUidTimeList( const QList<int> & v )
    {
      if (!isSeenUidTimeListImmutable())
        mSeenUidTimeList = v;
    }

    /**
      Get seenUidTimeList
    */
    QList<int> seenUidTimeList() const
    {
      return mSeenUidTimeList;
    }

    /**
      Is seenUidTimeList Immutable
    */
    bool isSeenUidTimeListImmutable() const
    {
      return isImmutable( QStringLiteral( "seenUidTimeList" ) );
    }

    /**
      Get Item object corresponding to seenUidTimeList()
    */
    ItemIntList *seenUidTimeListItem()
    {
      return mSeenUidTimeListItem;
    }

    /**
      Set downloadLater
    */
    void setDownloadLater( const QStringList & v )
    {
      if (!isDownloadLaterImmutable())
        mDownloadLater = v;
    }

    /**
      Get downloadLater
    */
    QStringList downloadLater() const
    {
      return mDownloadLater;
    }

    /**
      Is downloadLater Immutable
    */
    bool isDownloadLaterImmutable() const
    {
      return isImmutable( QStringLiteral( "downloadLater" ) );
    }

    /**
      Get Item object corresponding to downloadLater()
    */
    ItemStringList *downloadLaterItem()
    {
      return mDownloadLaterItem;
    }

  protected:

    // General
    QString mName;
    QString mUnitTestPassword;
    QString mLogin;
    QString mHost;
    uint mPort;
    int mAuthenticationMethod;
    bool mUseSSL;
    bool mUseTLS;
    bool mPipelining;
    bool mUseProxy;
    bool mLeaveOnServer;
    int mLeaveOnServerDays;
    int mLeaveOnServerCount;
    int mLeaveOnServerSize;
    bool mFilterOnServer;
    uint mFilterCheckSize;
    qint64 mTargetCollection;
    QString mPrecommand;
    bool mIntervalCheckEnabled;
    int mIntervalCheckInterval;

    // LeaveOnServer
    QStringList mSeenUidList;
    QList<int> mSeenUidTimeList;
    QStringList mDownloadLater;

  private:
    ItemString *mNameItem;
    ItemString *mUnitTestPasswordItem;
    ItemString *mLoginItem;
    ItemString *mHostItem;
    ItemUInt *mPortItem;
    ItemInt *mAuthenticationMethodItem;
    ItemBool *mUseSSLItem;
    ItemBool *mUseTLSItem;
    ItemBool *mPipeliningItem;
    ItemBool *mUseProxyItem;
    ItemBool *mLeaveOnServerItem;
    ItemInt *mLeaveOnServerDaysItem;
    ItemInt *mLeaveOnServerCountItem;
    ItemInt *mLeaveOnServerSizeItem;
    ItemBool *mFilterOnServerItem;
    ItemUInt *mFilterCheckSizeItem;
    ItemLongLong *mTargetCollectionItem;
    ItemString *mPrecommandItem;
    ItemBool *mIntervalCheckEnabledItem;
    ItemInt *mIntervalCheckIntervalItem;
    ItemStringList *mSeenUidListItem;
    ItemIntList *mSeenUidTimeListItem;
    ItemStringList *mDownloadLaterItem;
};

#endif

