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

#include <messagecoreutil.h>
#include <messagecore_export.h>
#include <kmime/kmime_dateformatter.h>
#include <kcolorscheme.h>

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

#include <qtextcodec.h>
#include <QFontDatabase>

namespace MessageCore {

class MESSAGECORE_EXPORT MessageCoreSettingsBase : public KConfigSkeleton
{
  public:

    static MessageCoreSettingsBase *self();
    ~MessageCoreSettingsBase();

    /**
      Set dateFormat
    */
    static
    void setDateFormat( int v )
    {
      if (!self()->isDateFormatImmutable())
        self()->mDateFormat = v;
    }

    /**
      Get dateFormat
    */
    static
    int dateFormat()
    {
      return self()->mDateFormat;
    }

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

    /**
      Get Item object corresponding to dateFormat()
    */
    ItemInt *dateFormatItem()
    {
      return mDateFormatItem;
    }

    /**
      Set customDateFormat
    */
    static
    void setCustomDateFormat( const QString & v )
    {
      if (!self()->isCustomDateFormatImmutable())
        self()->mCustomDateFormat = v;
    }

    /**
      Get customDateFormat
    */
    static
    QString customDateFormat()
    {
      return self()->mCustomDateFormat;
    }

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

    /**
      Get Item object corresponding to customDateFormat()
    */
    ItemString *customDateFormatItem()
    {
      return mCustomDateFormatItem;
    }

    /**
      Set defaultFonts
    */
    static
    void setUseDefaultFonts( bool v )
    {
      if (!self()->isUseDefaultFontsImmutable())
        self()->mUseDefaultFonts = v;
    }

    /**
      Get defaultFonts
    */
    static
    bool useDefaultFonts()
    {
      return self()->mUseDefaultFonts;
    }

    /**
      Is defaultFonts Immutable
    */
    static
    bool isUseDefaultFontsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "UseDefaultFonts" ) );
    }

    /**
      Get Item object corresponding to UseDefaultFonts()
    */
    ItemBool *useDefaultFontsItem()
    {
      return mUseDefaultFontsItem;
    }

    /**
      Set defaultColors
    */
    static
    void setUseDefaultColors( bool v )
    {
      if (!self()->isUseDefaultColorsImmutable())
        self()->mUseDefaultColors = v;
    }

    /**
      Get defaultColors
    */
    static
    bool useDefaultColors()
    {
      return self()->mUseDefaultColors;
    }

    /**
      Is defaultColors Immutable
    */
    static
    bool isUseDefaultColorsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "UseDefaultColors" ) );
    }

    /**
      Get Item object corresponding to UseDefaultColors()
    */
    ItemBool *useDefaultColorsItem()
    {
      return mUseDefaultColorsItem;
    }

    /**
      Set realHtmlMailColor
    */
    static
    void setUseRealHtmlMailColor( bool v )
    {
      if (!self()->isUseRealHtmlMailColorImmutable())
        self()->mUseRealHtmlMailColor = v;
    }

    /**
      Get realHtmlMailColor
    */
    static
    bool useRealHtmlMailColor()
    {
      return self()->mUseRealHtmlMailColor;
    }

    /**
      Is realHtmlMailColor Immutable
    */
    static
    bool isUseRealHtmlMailColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "UseRealHtmlMailColor" ) );
    }

    /**
      Get Item object corresponding to UseRealHtmlMailColor()
    */
    ItemBool *useRealHtmlMailColorItem()
    {
      return mUseRealHtmlMailColorItem;
    }

    /**
      Set encoding
    */
    static
    void setOverrideCharacterEncoding( const QString & v )
    {
      if (!self()->isOverrideCharacterEncodingImmutable())
        self()->mOverrideCharacterEncoding = v;
    }

    /**
      Get encoding
    */
    static
    QString overrideCharacterEncoding()
    {
      return self()->mOverrideCharacterEncoding;
    }

    /**
      Is encoding Immutable
    */
    static
    bool isOverrideCharacterEncodingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OverrideCharacterEncoding" ) );
    }

    /**
      Get Item object corresponding to OverrideCharacterEncoding()
    */
    ItemString *overrideCharacterEncodingItem()
    {
      return mOverrideCharacterEncodingItem;
    }

    /**
      Set This is the color used in the 3rd level of quoted text
    */
    static
    void setQuotedText3( const QColor & v )
    {
      if (!self()->isQuotedText3Immutable())
        self()->mQuotedText3 = v;
    }

    /**
      Get This is the color used in the 3rd level of quoted text
    */
    static
    QColor quotedText3()
    {
      return self()->mQuotedText3;
    }

    /**
      Is This is the color used in the 3rd level of quoted text Immutable
    */
    static
    bool isQuotedText3Immutable()
    {
      return self()->isImmutable( QStringLiteral( "QuotedText3" ) );
    }

    /**
      Get Item object corresponding to QuotedText3()
    */
    ItemColor *quotedText3Item()
    {
      return mQuotedText3Item;
    }

    /**
      Set This is the color used in the 2nd level of quoted text
    */
    static
    void setQuotedText2( const QColor & v )
    {
      if (!self()->isQuotedText2Immutable())
        self()->mQuotedText2 = v;
    }

    /**
      Get This is the color used in the 2nd level of quoted text
    */
    static
    QColor quotedText2()
    {
      return self()->mQuotedText2;
    }

    /**
      Is This is the color used in the 2nd level of quoted text Immutable
    */
    static
    bool isQuotedText2Immutable()
    {
      return self()->isImmutable( QStringLiteral( "QuotedText2" ) );
    }

    /**
      Get Item object corresponding to QuotedText2()
    */
    ItemColor *quotedText2Item()
    {
      return mQuotedText2Item;
    }

    /**
      Set This is the color used in the 1st level of quoted text
    */
    static
    void setQuotedText1( const QColor & v )
    {
      if (!self()->isQuotedText1Immutable())
        self()->mQuotedText1 = v;
    }

    /**
      Get This is the color used in the 1st level of quoted text
    */
    static
    QColor quotedText1()
    {
      return self()->mQuotedText1;
    }

    /**
      Is This is the color used in the 1st level of quoted text Immutable
    */
    static
    bool isQuotedText1Immutable()
    {
      return self()->isImmutable( QStringLiteral( "QuotedText1" ) );
    }

    /**
      Get Item object corresponding to QuotedText1()
    */
    ItemColor *quotedText1Item()
    {
      return mQuotedText1Item;
    }

    /**
      Set reply-prefixes
    */
    static
    void setReplyPrefixes( const QStringList & v )
    {
      if (!self()->isReplyPrefixesImmutable())
        self()->mReplyPrefixes = v;
    }

    /**
      Get reply-prefixes
    */
    static
    QStringList replyPrefixes()
    {
      return self()->mReplyPrefixes;
    }

    /**
      Is reply-prefixes Immutable
    */
    static
    bool isReplyPrefixesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ReplyPrefixes" ) );
    }

    /**
      Get Item object corresponding to ReplyPrefixes()
    */
    ItemStringList *replyPrefixesItem()
    {
      return mReplyPrefixesItem;
    }

    /**
      Set Replace recognized prefi&x with "Re:"
    */
    static
    void setReplaceReplyPrefix( bool v )
    {
      if (!self()->isReplaceReplyPrefixImmutable())
        self()->mReplaceReplyPrefix = v;
    }

    /**
      Get Replace recognized prefi&x with "Re:"
    */
    static
    bool replaceReplyPrefix()
    {
      return self()->mReplaceReplyPrefix;
    }

    /**
      Is Replace recognized prefi&x with "Re:" Immutable
    */
    static
    bool isReplaceReplyPrefixImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ReplaceReplyPrefix" ) );
    }

    /**
      Get Item object corresponding to ReplaceReplyPrefix()
    */
    ItemBool *replaceReplyPrefixItem()
    {
      return mReplaceReplyPrefixItem;
    }

    /**
      Set forward-prefixes
    */
    static
    void setForwardPrefixes( const QStringList & v )
    {
      if (!self()->isForwardPrefixesImmutable())
        self()->mForwardPrefixes = v;
    }

    /**
      Get forward-prefixes
    */
    static
    QStringList forwardPrefixes()
    {
      return self()->mForwardPrefixes;
    }

    /**
      Is forward-prefixes Immutable
    */
    static
    bool isForwardPrefixesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ForwardPrefixes" ) );
    }

    /**
      Get Item object corresponding to ForwardPrefixes()
    */
    ItemStringList *forwardPrefixesItem()
    {
      return mForwardPrefixesItem;
    }

    /**
      Set Replace recognized prefix with "&Fwd:"
    */
    static
    void setReplaceForwardPrefix( bool v )
    {
      if (!self()->isReplaceForwardPrefixImmutable())
        self()->mReplaceForwardPrefix = v;
    }

    /**
      Get Replace recognized prefix with "&Fwd:"
    */
    static
    bool replaceForwardPrefix()
    {
      return self()->mReplaceForwardPrefix;
    }

    /**
      Is Replace recognized prefix with "&Fwd:" Immutable
    */
    static
    bool isReplaceForwardPrefixImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ReplaceForwardPrefix" ) );
    }

    /**
      Get Item object corresponding to ReplaceForwardPrefix()
    */
    ItemBool *replaceForwardPrefixItem()
    {
      return mReplaceForwardPrefixItem;
    }

    /**
      Set The maximum size in bits that email attachments are allowed to have (-1 for no limit)
    */
    static
    void setMaximumAttachmentSize( int v )
    {
      if (!self()->isMaximumAttachmentSizeImmutable())
        self()->mMaximumAttachmentSize = v;
    }

    /**
      Get The maximum size in bits that email attachments are allowed to have (-1 for no limit)
    */
    static
    int maximumAttachmentSize()
    {
      return self()->mMaximumAttachmentSize;
    }

    /**
      Is The maximum size in bits that email attachments are allowed to have (-1 for no limit) Immutable
    */
    static
    bool isMaximumAttachmentSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MaximumAttachmentSize" ) );
    }

    /**
      Get Item object corresponding to MaximumAttachmentSize()
    */
    ItemInt *maximumAttachmentSizeItem()
    {
      return mMaximumAttachmentSizeItem;
    }

  protected:
    MessageCoreSettingsBase();
    friend class MessageCoreSettingsBaseHelper;


    // General
    int mDateFormat;
    QString mCustomDateFormat;

    // Fonts
    bool mUseDefaultFonts;

    // Reader
    bool mUseDefaultColors;
    bool mUseRealHtmlMailColor;
    QString mOverrideCharacterEncoding;
    QColor mQuotedText3;
    QColor mQuotedText2;
    QColor mQuotedText1;

    // Composer
    QStringList mReplyPrefixes;
    bool mReplaceReplyPrefix;
    QStringList mForwardPrefixes;
    bool mReplaceForwardPrefix;
    int mMaximumAttachmentSize;

  private:
    ItemInt *mDateFormatItem;
    ItemString *mCustomDateFormatItem;
    ItemBool *mUseDefaultFontsItem;
    ItemBool *mUseDefaultColorsItem;
    ItemBool *mUseRealHtmlMailColorItem;
    ItemString *mOverrideCharacterEncodingItem;
    ItemColor *mQuotedText3Item;
    ItemColor *mQuotedText2Item;
    ItemColor *mQuotedText1Item;
    ItemStringList *mReplyPrefixesItem;
    ItemBool *mReplaceReplyPrefixItem;
    ItemStringList *mForwardPrefixesItem;
    ItemBool *mReplaceForwardPrefixItem;
    ItemInt *mMaximumAttachmentSizeItem;
};

}

#endif

