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

#include <qapplication.h>
#include <messageviewer_export.h>
#include <messageviewer/objecttreeparser.h>
#include <messageviewer_debug.h>

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

#include <QFontDatabase>
#include <kcolorscheme.h>
namespace MessageViewer {

class MESSAGEVIEWER_EXPORT MessageViewerSettingsBase : public KConfigSkeleton
{
  public:
    class EnumMimeTreeMode
    {
      public:
      enum type { Never, Always, COUNT };
    };
    class EnumAskForCommentWhenReactingToInvitation
    {
      public:
      enum type { NeverAsk, AskForAllButAcceptance, AlwaysAsk, COUNT };
    };
    class EnumCustomHeadersDefaultPolicy
    {
      public:
      enum type { Display, Hide, COUNT };
    };

    static MessageViewerSettingsBase *self();
    ~MessageViewerSettingsBase();

    /**
      Set Only print selected text in viewer
    */
    static
    void setPrintSelectedText( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "PrintSelectedText" ) ))
        self()->mPrintSelectedText = v;
    }

    /**
      Get Only print selected text in viewer
    */
    static
    bool printSelectedText()
    {
      return self()->mPrintSelectedText;
    }

    /**
      Get Item object corresponding to PrintSelectedText()
    */
    ItemBool *printSelectedTextItem()
    {
      return mPrintSelectedTextItem;
    }

    /**
      Set Respect expand/collapse quote mark which is defined in settings during printing.
    */
    static
    void setRespectExpandCollapseSettings( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RespectExpandCollapseSettings" ) ))
        self()->mRespectExpandCollapseSettings = v;
    }

    /**
      Get Respect expand/collapse quote mark which is defined in settings during printing.
    */
    static
    bool respectExpandCollapseSettings()
    {
      return self()->mRespectExpandCollapseSettings;
    }

    /**
      Get Item object corresponding to RespectExpandCollapseSettings()
    */
    ItemBool *respectExpandCollapseSettingsItem()
    {
      return mRespectExpandCollapseSettingsItem;
    }

    /**
      Set Specifies whether the background color and images are also drawn when the page is printed.
    */
    static
    void setPrintBackgroundColorImages( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "PrintBackgroundColorImages" ) ))
        self()->mPrintBackgroundColorImages = v;
    }

    /**
      Get Specifies whether the background color and images are also drawn when the page is printed.
    */
    static
    bool printBackgroundColorImages()
    {
      return self()->mPrintBackgroundColorImages;
    }

    /**
      Get Item object corresponding to PrintBackgroundColorImages()
    */
    ItemBool *printBackgroundColorImagesItem()
    {
      return mPrintBackgroundColorImagesItem;
    }

    /**
      Set fixed-font
    */
    static
    void setFixedFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FixedFont" ) ))
        self()->mFixedFont = v;
    }

    /**
      Get fixed-font
    */
    static
    QFont fixedFont()
    {
      return self()->mFixedFont;
    }

    /**
      Get Item object corresponding to FixedFont()
    */
    ItemFont *fixedFontItem()
    {
      return mFixedFontItem;
    }

    /**
      Set When we render html do not use font size inferior to minimum size.
    */
    static
    void setMinimumFontSize( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MinimumFontSize" ) ))
        self()->mMinimumFontSize = v;
    }

    /**
      Get When we render html do not use font size inferior to minimum size.
    */
    static
    int minimumFontSize()
    {
      return self()->mMinimumFontSize;
    }

    /**
      Get Item object corresponding to MinimumFontSize()
    */
    ItemInt *minimumFontSizeItem()
    {
      return mMinimumFontSizeItem;
    }

    /**
      Set Specifies the font to use for the message body
    */
    static
    void setBodyFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BodyFont" ) ))
        self()->mBodyFont = v;
    }

    /**
      Get Specifies the font to use for the message body
    */
    static
    QFont bodyFont()
    {
      return self()->mBodyFont;
    }

    /**
      Get Item object corresponding to BodyFont()
    */
    ItemFont *bodyFontItem()
    {
      return mBodyFontItem;
    }

    /**
      Set Specifies the font to use for printing
    */
    static
    void setPrintFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "PrintFont" ) ))
        self()->mPrintFont = v;
    }

    /**
      Get Specifies the font to use for printing
    */
    static
    QFont printFont()
    {
      return self()->mPrintFont;
    }

    /**
      Get Item object corresponding to PrintFont()
    */
    ItemFont *printFontItem()
    {
      return mPrintFontItem;
    }

    /**
      Set AutoImportKeys
    */
    static
    void setAutoImportKeys( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoImportKeys" ) ))
        self()->mAutoImportKeys = v;
    }

    /**
      Get AutoImportKeys
    */
    static
    bool autoImportKeys()
    {
      return self()->mAutoImportKeys;
    }

    /**
      Get Item object corresponding to AutoImportKeys()
    */
    ItemBool *autoImportKeysItem()
    {
      return mAutoImportKeysItem;
    }

    /**
      Set store-displayed-messages-unencrypted
    */
    static
    void setStoreDisplayedMessagesUnencrypted( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "StoreDisplayedMessagesUnencrypted" ) ))
        self()->mStoreDisplayedMessagesUnencrypted = v;
    }

    /**
      Get store-displayed-messages-unencrypted
    */
    static
    bool storeDisplayedMessagesUnencrypted()
    {
      return self()->mStoreDisplayedMessagesUnencrypted;
    }

    /**
      Get Item object corresponding to StoreDisplayedMessagesUnencrypted()
    */
    ItemBool *storeDisplayedMessagesUnencryptedItem()
    {
      return mStoreDisplayedMessagesUnencryptedItem;
    }

    /**
      Set Show HTML status bar
    */
    static
    void setShowColorBar( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "showColorBar" ) ))
        self()->mShowColorBar = v;
    }

    /**
      Get Show HTML status bar
    */
    static
    bool showColorBar()
    {
      return self()->mShowColorBar;
    }

    /**
      Get Item object corresponding to showColorBar()
    */
    ItemBool *showColorBarItem()
    {
      return mShowColorBarItem;
    }

    /**
      Set Show spam status in fancy headers
    */
    static
    void setShowSpamStatus( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "showSpamStatus" ) ))
        self()->mShowSpamStatus = v;
    }

    /**
      Get Show spam status in fancy headers
    */
    static
    bool showSpamStatus()
    {
      return self()->mShowSpamStatus;
    }

    /**
      Get Item object corresponding to showSpamStatus()
    */
    ItemBool *showSpamStatusItem()
    {
      return mShowSpamStatusItem;
    }

    /**
      Set Replace smileys by emoticons
    */
    static
    void setShowEmoticons( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowEmoticons" ) ))
        self()->mShowEmoticons = v;
    }

    /**
      Get Replace smileys by emoticons
    */
    static
    bool showEmoticons()
    {
      return self()->mShowEmoticons;
    }

    /**
      Get Item object corresponding to ShowEmoticons()
    */
    ItemBool *showEmoticonsItem()
    {
      return mShowEmoticonsItem;
    }

    /**
      Set Show expand/collapse quote marks
    */
    static
    void setShowExpandQuotesMark( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowExpandQuotesMark" ) ))
        self()->mShowExpandQuotesMark = v;
    }

    /**
      Get Show expand/collapse quote marks
    */
    static
    bool showExpandQuotesMark()
    {
      return self()->mShowExpandQuotesMark;
    }

    /**
      Get Item object corresponding to ShowExpandQuotesMark()
    */
    ItemBool *showExpandQuotesMarkItem()
    {
      return mShowExpandQuotesMarkItem;
    }

    /**
      Set Automatic collapse level:
    */
    static
    void setCollapseQuoteLevelSpin( int v )
    {
      if (v < 0)
      {
        qCDebug(MESSAGEVIEWER_LOG) << "setCollapseQuoteLevelSpin: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 10)
      {
        qCDebug(MESSAGEVIEWER_LOG) << "setCollapseQuoteLevelSpin: value " << v << " is greater than the maximum value of 10";
        v = 10;
      }

      if (!self()->isImmutable( QStringLiteral( "CollapseQuoteLevelSpin" ) ))
        self()->mCollapseQuoteLevelSpin = v;
    }

    /**
      Get Automatic collapse level:
    */
    static
    int collapseQuoteLevelSpin()
    {
      return self()->mCollapseQuoteLevelSpin;
    }

    /**
      Get Item object corresponding to CollapseQuoteLevelSpin()
    */
    ItemInt *collapseQuoteLevelSpinItem()
    {
      return mCollapseQuoteLevelSpinItem;
    }

    /**
      Set Reduce font size for quoted text
    */
    static
    void setShrinkQuotes( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShrinkQuotes" ) ))
        self()->mShrinkQuotes = v;
    }

    /**
      Get Reduce font size for quoted text
    */
    static
    bool shrinkQuotes()
    {
      return self()->mShrinkQuotes;
    }

    /**
      Get Item object corresponding to ShrinkQuotes()
    */
    ItemBool *shrinkQuotesItem()
    {
      return mShrinkQuotesItem;
    }

    /**
      Set Show user agent in fancy headers
    */
    static
    void setShowUserAgent( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowUserAgent" ) ))
        self()->mShowUserAgent = v;
    }

    /**
      Get Show user agent in fancy headers
    */
    static
    bool showUserAgent()
    {
      return self()->mShowUserAgent;
    }

    /**
      Get Item object corresponding to ShowUserAgent()
    */
    ItemBool *showUserAgentItem()
    {
      return mShowUserAgentItem;
    }

    /**
      Set Allow to edit attachments of existing mails.
    */
    static
    void setAllowAttachmentEditing( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AllowAttachmentEditing" ) ))
        self()->mAllowAttachmentEditing = v;
    }

    /**
      Get Allow to edit attachments of existing mails.
    */
    static
    bool allowAttachmentEditing()
    {
      return self()->mAllowAttachmentEditing;
    }

    /**
      Get Item object corresponding to AllowAttachmentEditing()
    */
    ItemBool *allowAttachmentEditingItem()
    {
      return mAllowAttachmentEditingItem;
    }

    /**
      Set Always decrypt messages when viewing or ask before decrypting
    */
    static
    void setAlwaysDecrypt( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AlwaysDecrypt" ) ))
        self()->mAlwaysDecrypt = v;
    }

    /**
      Get Always decrypt messages when viewing or ask before decrypting
    */
    static
    bool alwaysDecrypt()
    {
      return self()->mAlwaysDecrypt;
    }

    /**
      Get Item object corresponding to AlwaysDecrypt()
    */
    ItemBool *alwaysDecryptItem()
    {
      return mAlwaysDecryptItem;
    }

    /**
      Set Message Structure Viewer
    */
    static
    void setMimeTreeMode( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MimeTreeMode" ) ))
        self()->mMimeTreeMode = v;
    }

    /**
      Get Message Structure Viewer
    */
    static
    int mimeTreeMode()
    {
      return self()->mMimeTreeMode;
    }

    /**
      Get Item object corresponding to MimeTreeMode()
    */
    ItemEnum *mimeTreeModeItem()
    {
      return mMimeTreeModeItem;
    }

    /**
      Set MimePaneHeight
    */
    static
    void setMimePaneHeight( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MimePaneHeight" ) ))
        self()->mMimePaneHeight = v;
    }

    /**
      Get MimePaneHeight
    */
    static
    int mimePaneHeight()
    {
      return self()->mMimePaneHeight;
    }

    /**
      Get Item object corresponding to MimePaneHeight()
    */
    ItemInt *mimePaneHeightItem()
    {
      return mMimePaneHeightItem;
    }

    /**
      Set MessagePaneHeight
    */
    static
    void setMessagePaneHeight( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MessagePaneHeight" ) ))
        self()->mMessagePaneHeight = v;
    }

    /**
      Get MessagePaneHeight
    */
    static
    int messagePaneHeight()
    {
      return self()->mMessagePaneHeight;
    }

    /**
      Get Item object corresponding to MessagePaneHeight()
    */
    ItemInt *messagePaneHeightItem()
    {
      return mMessagePaneHeightItem;
    }

    /**
      Set What style of headers should be displayed
    */
    static
    void setHeaderPluginStyleName( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "headerPluginStyleName" ) ))
        self()->mHeaderPluginStyleName = v;
    }

    /**
      Get What style of headers should be displayed
    */
    static
    QString headerPluginStyleName()
    {
      return self()->mHeaderPluginStyleName;
    }

    /**
      Get Item object corresponding to headerPluginStyleName()
    */
    ItemString *headerPluginStyleNameItem()
    {
      return mHeaderPluginStyleNameItem;
    }

    /**
      Set What style of headers should be displayed
    */
    static
    void setHeaderStyle( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "headerStyle" ) ))
        self()->mHeaderStyle = v;
    }

    /**
      Get What style of headers should be displayed
    */
    static
    QString headerStyle()
    {
      return self()->mHeaderStyle;
    }

    /**
      Get Item object corresponding to headerStyle()
    */
    ItemString *headerStyleItem()
    {
      return mHeaderStyleItem;
    }

    /**
      Set How much of headers should be displayed
    */
    static
    void setHeaderSetDisplayed( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "headerSetDisplayed" ) ))
        self()->mHeaderSetDisplayed = v;
    }

    /**
      Get How much of headers should be displayed
    */
    static
    QString headerSetDisplayed()
    {
      return self()->mHeaderSetDisplayed;
    }

    /**
      Get Item object corresponding to headerSetDisplayed()
    */
    ItemString *headerSetDisplayedItem()
    {
      return mHeaderSetDisplayedItem;
    }

    /**
      Set Prefer HTML to plain text
    */
    static
    void setHtmlMail( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "htmlMail" ) ))
        self()->mHtmlMail = v;
    }

    /**
      Get Prefer HTML to plain text
    */
    static
    bool htmlMail()
    {
      return self()->mHtmlMail;
    }

    /**
      Get Item object corresponding to htmlMail()
    */
    ItemBool *htmlMailItem()
    {
      return mHtmlMailItem;
    }

    /**
      Set Allow messages to load external references from the Internet
    */
    static
    void setHtmlLoadExternal( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "htmlLoadExternal" ) ))
        self()->mHtmlLoadExternal = v;
    }

    /**
      Get Allow messages to load external references from the Internet
    */
    static
    bool htmlLoadExternal()
    {
      return self()->mHtmlLoadExternal;
    }

    /**
      Get Item object corresponding to htmlLoadExternal()
    */
    ItemBool *htmlLoadExternalItem()
    {
      return mHtmlLoadExternalItem;
    }

    /**
      Set Zoom only text
    */
    static
    void setZoomTextOnly( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "zoomTextOnly" ) ))
        self()->mZoomTextOnly = v;
    }

    /**
      Get Zoom only text
    */
    static
    bool zoomTextOnly()
    {
      return self()->mZoomTextOnly;
    }

    /**
      Get Item object corresponding to zoomTextOnly()
    */
    ItemBool *zoomTextOnlyItem()
    {
      return mZoomTextOnlyItem;
    }

    /**
      Set How attachments are shown
    */
    static
    void setAttachmentStrategy( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "attachmentStrategy" ) ))
        self()->mAttachmentStrategy = v;
    }

    /**
      Get How attachments are shown
    */
    static
    QString attachmentStrategy()
    {
      return self()->mAttachmentStrategy;
    }

    /**
      Get Item object corresponding to attachmentStrategy()
    */
    ItemString *attachmentStrategyItem()
    {
      return mAttachmentStrategyItem;
    }

    /**
      Set Specifies whether to reuse the quote color, beyond the 3rd level
    */
    static
    void setRecycleQuoteColors( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RecycleQuoteColors" ) ))
        self()->mRecycleQuoteColors = v;
    }

    /**
      Get Specifies whether to reuse the quote color, beyond the 3rd level
    */
    static
    bool recycleQuoteColors()
    {
      return self()->mRecycleQuoteColors;
    }

    /**
      Get Item object corresponding to RecycleQuoteColors()
    */
    ItemBool *recycleQuoteColorsItem()
    {
      return mRecycleQuoteColorsItem;
    }

    /**
      Set Activate Access Key
    */
    static
    void setAccessKeyEnabled( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AccessKeyEnabled" ) ))
        self()->mAccessKeyEnabled = v;
    }

    /**
      Get Activate Access Key
    */
    static
    bool accessKeyEnabled()
    {
      return self()->mAccessKeyEnabled;
    }

    /**
      Get Item object corresponding to AccessKeyEnabled()
    */
    ItemBool *accessKeyEnabledItem()
    {
      return mAccessKeyEnabledItem;
    }

    /**
      Set KMail can analyze messages for suspected email scams by looking for common techniques used to deceive you
    */
    static
    void setScamDetectionEnabled( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ScamDetectionEnabled" ) ))
        self()->mScamDetectionEnabled = v;
    }

    /**
      Get KMail can analyze messages for suspected email scams by looking for common techniques used to deceive you
    */
    static
    bool scamDetectionEnabled()
    {
      return self()->mScamDetectionEnabled;
    }

    /**
      Get Item object corresponding to ScamDetectionEnabled()
    */
    ItemBool *scamDetectionEnabledItem()
    {
      return mScamDetectionEnabledItem;
    }

    /**
      Set List of emails in scam white list
    */
    static
    void setScamDetectionWhiteList( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ScamDetectionWhiteList" ) ))
        self()->mScamDetectionWhiteList = v;
    }

    /**
      Get List of emails in scam white list
    */
    static
    QStringList scamDetectionWhiteList()
    {
      return self()->mScamDetectionWhiteList;
    }

    /**
      Get Item object corresponding to ScamDetectionWhiteList()
    */
    ItemStringList *scamDetectionWhiteListItem()
    {
      return mScamDetectionWhiteListItem;
    }

    /**
      Set Enabled ad block
    */
    static
    void setAdBlockEnabled( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AdBlockEnabled" ) ))
        self()->mAdBlockEnabled = v;
    }

    /**
      Get Enabled ad block
    */
    static
    bool adBlockEnabled()
    {
      return self()->mAdBlockEnabled;
    }

    /**
      Get Item object corresponding to AdBlockEnabled()
    */
    ItemBool *adBlockEnabledItem()
    {
      return mAdBlockEnabledItem;
    }

    /**
      Set Hide advertisement enabled
    */
    static
    void setHideAdsEnabled( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideAdsEnabled" ) ))
        self()->mHideAdsEnabled = v;
    }

    /**
      Get Hide advertisement enabled
    */
    static
    bool hideAdsEnabled()
    {
      return self()->mHideAdsEnabled;
    }

    /**
      Get Item object corresponding to HideAdsEnabled()
    */
    ItemBool *hideAdsEnabledItem()
    {
      return mHideAdsEnabledItem;
    }

    /**
      Set Update interval list of adblock
    */
    static
    void setAdBlockUpdateInterval( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "AdBlockUpdateInterval" ) ))
        self()->mAdBlockUpdateInterval = v;
    }

    /**
      Get Update interval list of adblock
    */
    static
    int adBlockUpdateInterval()
    {
      return self()->mAdBlockUpdateInterval;
    }

    /**
      Get Item object corresponding to AdBlockUpdateInterval()
    */
    ItemInt *adBlockUpdateIntervalItem()
    {
      return mAdBlockUpdateIntervalItem;
    }

    /**
      Set whiteReferer
    */
    static
    void setWhiteReferer( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "whiteReferer" ) ))
        self()->mWhiteReferer = v;
    }

    /**
      Get whiteReferer
    */
    static
    QStringList whiteReferer()
    {
      return self()->mWhiteReferer;
    }

    /**
      Get Item object corresponding to whiteReferer()
    */
    ItemStringList *whiteRefererItem()
    {
      return mWhiteRefererItem;
    }

    /**
      Set Do not send MDNs in response to encrypted messages
    */
    static
    void setNotSendWhenEncrypted( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "notSendWhenEncrypted" ) ))
        self()->mNotSendWhenEncrypted = v;
    }

    /**
      Get Do not send MDNs in response to encrypted messages
    */
    static
    bool notSendWhenEncrypted()
    {
      return self()->mNotSendWhenEncrypted;
    }

    /**
      Get Item object corresponding to notSendWhenEncrypted()
    */
    ItemBool *notSendWhenEncryptedItem()
    {
      return mNotSendWhenEncryptedItem;
    }

    /**
      Set Specifies the default policy to use, for the Message Disposition Notifications (for internal use only)
    */
    static
    void setDefaultPolicy( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "DefaultPolicy" ) ))
        self()->mDefaultPolicy = v;
    }

    /**
      Get Specifies the default policy to use, for the Message Disposition Notifications (for internal use only)
    */
    static
    int defaultPolicy()
    {
      return self()->mDefaultPolicy;
    }

    /**
      Get Item object corresponding to DefaultPolicy()
    */
    ItemInt *defaultPolicyItem()
    {
      return mDefaultPolicyItem;
    }

    /**
      Set Specifies the default quoting action to take, when replying to a message (for internal use only)
    */
    static
    void setQuoteMessage( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "QuoteMessage" ) ))
        self()->mQuoteMessage = v;
    }

    /**
      Get Specifies the default quoting action to take, when replying to a message (for internal use only)
    */
    static
    int quoteMessage()
    {
      return self()->mQuoteMessage;
    }

    /**
      Get Item object corresponding to QuoteMessage()
    */
    ItemInt *quoteMessageItem()
    {
      return mQuoteMessageItem;
    }

    /**
      Set DelayedMarkAsRead
    */
    static
    void setDelayedMarkAsRead( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "DelayedMarkAsRead" ) ))
        self()->mDelayedMarkAsRead = v;
    }

    /**
      Get DelayedMarkAsRead
    */
    static
    bool delayedMarkAsRead()
    {
      return self()->mDelayedMarkAsRead;
    }

    /**
      Get Item object corresponding to DelayedMarkAsRead()
    */
    ItemBool *delayedMarkAsReadItem()
    {
      return mDelayedMarkAsReadItem;
    }

    /**
      Set DelayedMarkTime
    */
    static
    void setDelayedMarkTime( uint v )
    {
      if (!self()->isImmutable( QStringLiteral( "DelayedMarkTime" ) ))
        self()->mDelayedMarkTime = v;
    }

    /**
      Get DelayedMarkTime
    */
    static
    uint delayedMarkTime()
    {
      return self()->mDelayedMarkTime;
    }

    /**
      Get Item object corresponding to DelayedMarkTime()
    */
    ItemUInt *delayedMarkTimeItem()
    {
      return mDelayedMarkTimeItem;
    }

    /**
      Set Mangle From:/To: headers in replies to replies
    */
    static
    void setLegacyMangleFromToHeaders( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "LegacyMangleFromToHeaders" ) ))
        self()->mLegacyMangleFromToHeaders = v;
    }

    /**
      Get Mangle From:/To: headers in replies to replies
    */
    static
    bool legacyMangleFromToHeaders()
    {
      return self()->mLegacyMangleFromToHeaders;
    }

    /**
      Get Item object corresponding to LegacyMangleFromToHeaders()
    */
    ItemBool *legacyMangleFromToHeadersItem()
    {
      return mLegacyMangleFromToHeadersItem;
    }

    /**
      Set Send groupware invitations in the mail body
    */
    static
    void setLegacyBodyInvites( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "LegacyBodyInvites" ) ))
        self()->mLegacyBodyInvites = v;
    }

    /**
      Get Send groupware invitations in the mail body
    */
    static
    bool legacyBodyInvites()
    {
      return self()->mLegacyBodyInvites;
    }

    /**
      Get Item object corresponding to LegacyBodyInvites()
    */
    ItemBool *legacyBodyInvitesItem()
    {
      return mLegacyBodyInvitesItem;
    }

    /**
      Set Exchange-compatible invitation naming
    */
    static
    void setExchangeCompatibleInvitations( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ExchangeCompatibleInvitations" ) ))
        self()->mExchangeCompatibleInvitations = v;
    }

    /**
      Get Exchange-compatible invitation naming
    */
    static
    bool exchangeCompatibleInvitations()
    {
      return self()->mExchangeCompatibleInvitations;
    }

    /**
      Get Item object corresponding to ExchangeCompatibleInvitations()
    */
    ItemBool *exchangeCompatibleInvitationsItem()
    {
      return mExchangeCompatibleInvitationsItem;
    }

    /**
      Set Outlook compatible invitation reply comments
    */
    static
    void setOutlookCompatibleInvitationReplyComments( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "OutlookCompatibleInvitationReplyComments" ) ))
        self()->mOutlookCompatibleInvitationReplyComments = v;
    }

    /**
      Get Outlook compatible invitation reply comments
    */
    static
    bool outlookCompatibleInvitationReplyComments()
    {
      return self()->mOutlookCompatibleInvitationReplyComments;
    }

    /**
      Get Item object corresponding to OutlookCompatibleInvitationReplyComments()
    */
    ItemBool *outlookCompatibleInvitationReplyCommentsItem()
    {
      return mOutlookCompatibleInvitationReplyCommentsItem;
    }

    /**
      Set Show invitation update differences in the Outlook style
    */
    static
    void setOutlookCompatibleInvitationComparisons( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "OutlookCompatibleInvitationComparisons" ) ))
        self()->mOutlookCompatibleInvitationComparisons = v;
    }

    /**
      Get Show invitation update differences in the Outlook style
    */
    static
    bool outlookCompatibleInvitationComparisons()
    {
      return self()->mOutlookCompatibleInvitationComparisons;
    }

    /**
      Get Item object corresponding to OutlookCompatibleInvitationComparisons()
    */
    ItemBool *outlookCompatibleInvitationComparisonsItem()
    {
      return mOutlookCompatibleInvitationComparisonsItem;
    }

    /**
      Set Automatic invitation sending
    */
    static
    void setAutomaticSending( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutomaticSending" ) ))
        self()->mAutomaticSending = v;
    }

    /**
      Get Automatic invitation sending
    */
    static
    bool automaticSending()
    {
      return self()->mAutomaticSending;
    }

    /**
      Get Item object corresponding to AutomaticSending()
    */
    ItemBool *automaticSendingItem()
    {
      return mAutomaticSendingItem;
    }

    /**
      Set Delete invitation emails after the reply to them has been sent
    */
    static
    void setDeleteInvitationEmailsAfterSendingReply( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "DeleteInvitationEmailsAfterSendingReply" ) ))
        self()->mDeleteInvitationEmailsAfterSendingReply = v;
    }

    /**
      Get Delete invitation emails after the reply to them has been sent
    */
    static
    bool deleteInvitationEmailsAfterSendingReply()
    {
      return self()->mDeleteInvitationEmailsAfterSendingReply;
    }

    /**
      Get Item object corresponding to DeleteInvitationEmailsAfterSendingReply()
    */
    ItemBool *deleteInvitationEmailsAfterSendingReplyItem()
    {
      return mDeleteInvitationEmailsAfterSendingReplyItem;
    }

    /**
      Set AskForCommentWhenReactingToInvitation
    */
    static
    void setAskForCommentWhenReactingToInvitation( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "AskForCommentWhenReactingToInvitation" ) ))
        self()->mAskForCommentWhenReactingToInvitation = v;
    }

    /**
      Get AskForCommentWhenReactingToInvitation
    */
    static
    int askForCommentWhenReactingToInvitation()
    {
      return self()->mAskForCommentWhenReactingToInvitation;
    }

    /**
      Get Item object corresponding to AskForCommentWhenReactingToInvitation()
    */
    ItemEnum *askForCommentWhenReactingToInvitationItem()
    {
      return mAskForCommentWhenReactingToInvitationItem;
    }

    /**
      Set Use Fi&xed Font
    */
    static
    void setUseFixedFont( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "UseFixedFont" ) ))
        self()->mUseFixedFont = v;
    }

    /**
      Get Use Fi&xed Font
    */
    static
    bool useFixedFont()
    {
      return self()->mUseFixedFont;
    }

    /**
      Get Item object corresponding to UseFixedFont()
    */
    ItemBool *useFixedFontItem()
    {
      return mUseFixedFontItem;
    }

    /**
      Set headers to display
    */
    static
    void setHeadersToDisplay( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "HeadersToDisplay" ) ))
        self()->mHeadersToDisplay = v;
    }

    /**
      Get headers to display
    */
    static
    QStringList headersToDisplay()
    {
      return self()->mHeadersToDisplay;
    }

    /**
      Get Item object corresponding to HeadersToDisplay()
    */
    ItemStringList *headersToDisplayItem()
    {
      return mHeadersToDisplayItem;
    }

    /**
      Set headers to hide
    */
    static
    void setHeadersToHide( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "HeadersToHide" ) ))
        self()->mHeadersToHide = v;
    }

    /**
      Get headers to hide
    */
    static
    QStringList headersToHide()
    {
      return self()->mHeadersToHide;
    }

    /**
      Get Item object corresponding to HeadersToHide()
    */
    ItemStringList *headersToHideItem()
    {
      return mHeadersToHideItem;
    }

    /**
      Set CustomHeadersDefaultPolicy
    */
    static
    void setCustomHeadersDefaultPolicy( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "CustomHeadersDefaultPolicy" ) ))
        self()->mCustomHeadersDefaultPolicy = v;
    }

    /**
      Get CustomHeadersDefaultPolicy
    */
    static
    int customHeadersDefaultPolicy()
    {
      return self()->mCustomHeadersDefaultPolicy;
    }

    /**
      Get Item object corresponding to CustomHeadersDefaultPolicy()
    */
    ItemEnum *customHeadersDefaultPolicyItem()
    {
      return mCustomHeadersDefaultPolicyItem;
    }

    /**
      Set LastSelectedFolder
    */
    static
    void setLastSelectedFolder( qint64 v )
    {
      if (!self()->isImmutable( QStringLiteral( "LastSelectedFolder" ) ))
        self()->mLastSelectedFolder = v;
    }

    /**
      Get LastSelectedFolder
    */
    static
    qint64 lastSelectedFolder()
    {
      return self()->mLastSelectedFolder;
    }

    /**
      Get Item object corresponding to LastSelectedFolder()
    */
    ItemLongLong *lastSelectedFolderItem()
    {
      return mLastSelectedFolderItem;
    }

    /**
      Set LastEventSelectedFolder
    */
    static
    void setLastEventSelectedFolder( qint64 v )
    {
      if (!self()->isImmutable( QStringLiteral( "LastEventSelectedFolder" ) ))
        self()->mLastEventSelectedFolder = v;
    }

    /**
      Get LastEventSelectedFolder
    */
    static
    qint64 lastEventSelectedFolder()
    {
      return self()->mLastEventSelectedFolder;
    }

    /**
      Get Item object corresponding to LastEventSelectedFolder()
    */
    ItemLongLong *lastEventSelectedFolderItem()
    {
      return mLastEventSelectedFolderItem;
    }

    /**
      Set LastNoteSelectedFolder
    */
    static
    void setLastNoteSelectedFolder( qint64 v )
    {
      if (!self()->isImmutable( QStringLiteral( "LastNoteSelectedFolder" ) ))
        self()->mLastNoteSelectedFolder = v;
    }

    /**
      Get LastNoteSelectedFolder
    */
    static
    qint64 lastNoteSelectedFolder()
    {
      return self()->mLastNoteSelectedFolder;
    }

    /**
      Get Item object corresponding to LastNoteSelectedFolder()
    */
    ItemLongLong *lastNoteSelectedFolderItem()
    {
      return mLastNoteSelectedFolderItem;
    }

  protected:
    MessageViewerSettingsBase();
    friend class MessageViewerSettingsBaseHelper;


    // Print
    bool mPrintSelectedText;
    bool mRespectExpandCollapseSettings;
    bool mPrintBackgroundColorImages;

    // Fonts
    QFont mFixedFont;
    int mMinimumFontSize;
    QFont mBodyFont;
    QFont mPrintFont;

    // Reader
    bool mAutoImportKeys;
    bool mStoreDisplayedMessagesUnencrypted;
    bool mShowColorBar;
    bool mShowSpamStatus;
    bool mShowEmoticons;
    bool mShowExpandQuotesMark;
    int mCollapseQuoteLevelSpin;
    bool mShrinkQuotes;
    bool mShowUserAgent;
    bool mAllowAttachmentEditing;
    bool mAlwaysDecrypt;
    int mMimeTreeMode;
    int mMimePaneHeight;
    int mMessagePaneHeight;
    QString mHeaderPluginStyleName;
    QString mHeaderStyle;
    QString mHeaderSetDisplayed;
    bool mHtmlMail;
    bool mHtmlLoadExternal;
    bool mZoomTextOnly;
    QString mAttachmentStrategy;
    bool mRecycleQuoteColors;
    bool mAccessKeyEnabled;
    bool mScamDetectionEnabled;
    QStringList mScamDetectionWhiteList;
    bool mAdBlockEnabled;
    bool mHideAdsEnabled;
    int mAdBlockUpdateInterval;
    QStringList mWhiteReferer;

    // MDN
    bool mNotSendWhenEncrypted;
    int mDefaultPolicy;
    int mQuoteMessage;

    // Behaviour
    bool mDelayedMarkAsRead;
    uint mDelayedMarkTime;

    // Invitations
    bool mLegacyMangleFromToHeaders;
    bool mLegacyBodyInvites;
    bool mExchangeCompatibleInvitations;
    bool mOutlookCompatibleInvitationReplyComments;
    bool mOutlookCompatibleInvitationComparisons;
    bool mAutomaticSending;
    bool mDeleteInvitationEmailsAfterSendingReply;
    int mAskForCommentWhenReactingToInvitation;

    // Composer
    bool mUseFixedFont;

    // Custom Headers
    QStringList mHeadersToDisplay;
    QStringList mHeadersToHide;
    int mCustomHeadersDefaultPolicy;

    // Todo
    qint64 mLastSelectedFolder;

    // Event
    qint64 mLastEventSelectedFolder;

    // Note
    qint64 mLastNoteSelectedFolder;

  private:
    ItemBool *mPrintSelectedTextItem;
    ItemBool *mRespectExpandCollapseSettingsItem;
    ItemBool *mPrintBackgroundColorImagesItem;
    ItemFont *mFixedFontItem;
    ItemInt *mMinimumFontSizeItem;
    ItemFont *mBodyFontItem;
    ItemFont *mPrintFontItem;
    ItemBool *mAutoImportKeysItem;
    ItemBool *mStoreDisplayedMessagesUnencryptedItem;
    ItemBool *mShowColorBarItem;
    ItemBool *mShowSpamStatusItem;
    ItemBool *mShowEmoticonsItem;
    ItemBool *mShowExpandQuotesMarkItem;
    ItemInt *mCollapseQuoteLevelSpinItem;
    ItemBool *mShrinkQuotesItem;
    ItemBool *mShowUserAgentItem;
    ItemBool *mAllowAttachmentEditingItem;
    ItemBool *mAlwaysDecryptItem;
    ItemEnum *mMimeTreeModeItem;
    ItemInt *mMimePaneHeightItem;
    ItemInt *mMessagePaneHeightItem;
    ItemString *mHeaderPluginStyleNameItem;
    ItemString *mHeaderStyleItem;
    ItemString *mHeaderSetDisplayedItem;
    ItemBool *mHtmlMailItem;
    ItemBool *mHtmlLoadExternalItem;
    ItemBool *mZoomTextOnlyItem;
    ItemString *mAttachmentStrategyItem;
    ItemBool *mRecycleQuoteColorsItem;
    ItemBool *mAccessKeyEnabledItem;
    ItemBool *mScamDetectionEnabledItem;
    ItemStringList *mScamDetectionWhiteListItem;
    ItemBool *mAdBlockEnabledItem;
    ItemBool *mHideAdsEnabledItem;
    ItemInt *mAdBlockUpdateIntervalItem;
    ItemStringList *mWhiteRefererItem;
    ItemBool *mNotSendWhenEncryptedItem;
    ItemInt *mDefaultPolicyItem;
    ItemInt *mQuoteMessageItem;
    ItemBool *mDelayedMarkAsReadItem;
    ItemUInt *mDelayedMarkTimeItem;
    ItemBool *mLegacyMangleFromToHeadersItem;
    ItemBool *mLegacyBodyInvitesItem;
    ItemBool *mExchangeCompatibleInvitationsItem;
    ItemBool *mOutlookCompatibleInvitationReplyCommentsItem;
    ItemBool *mOutlookCompatibleInvitationComparisonsItem;
    ItemBool *mAutomaticSendingItem;
    ItemBool *mDeleteInvitationEmailsAfterSendingReplyItem;
    ItemEnum *mAskForCommentWhenReactingToInvitationItem;
    ItemBool *mUseFixedFontItem;
    ItemStringList *mHeadersToDisplayItem;
    ItemStringList *mHeadersToHideItem;
    ItemEnum *mCustomHeadersDefaultPolicyItem;
    ItemLongLong *mLastSelectedFolderItem;
    ItemLongLong *mLastEventSelectedFolderItem;
    ItemLongLong *mLastNoteSelectedFolderItem;
};

}

#endif

