// 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()->isImmutable( QStringLiteral( "dateFormat" ) ))
        self()->mDateFormat = v;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
      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()->isImmutable( QStringLiteral( "QuotedText3" ) ))
        self()->mQuotedText3 = v;
    }

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

    /**
      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()->isImmutable( QStringLiteral( "QuotedText2" ) ))
        self()->mQuotedText2 = v;
    }

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

    /**
      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()->isImmutable( QStringLiteral( "QuotedText1" ) ))
        self()->mQuotedText1 = v;
    }

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

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

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

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

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

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

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

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

    /**
      Set The maximum size in bits that email attachments are allowed to have (-1 for no limit)
    */
    static
    void setMaximumAttachmentSize( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MaximumAttachmentSize" ) ))
        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;
    }

    /**
      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;
    QString mOverrideCharacterEncoding;
    QColor mQuotedText3;
    QColor mQuotedText2;
    QColor mQuotedText1;

    // Composer
    QStringList mReplyPrefixes;
    QStringList mForwardPrefixes;
    int mMaximumAttachmentSize;

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

}

#endif

