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

#include <libkopete_export.h>
#include <klocalizedstring.h>

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

namespace Kopete {

class LIBKOPETE_EXPORT BehaviorSettings : public KConfigSkeleton
{
  public:
    class EnumInitialStatus
    {
      public:
      enum type { Offline, Online, Away, Busy, Invisible, COUNT };
    };
    class EnumChatWindowGroupPolicy
    {
      public:
      enum type { OpenNewWindow, GroupByAccount, GroupAll, GroupByGroup, GroupByMetaContact, COUNT };
    };

    static BehaviorSettings *self();
    ~BehaviorSettings() override;

    /**
      Set Start Kopete docked.
    */
    static
    void setStartDocked( bool v )
    {
      if (!self()->isStartDockedImmutable())
        self()->mStartDocked = v;
    }

    /**
      Get Start Kopete docked.
    */
    static
    bool startDocked()
    {
      return self()->mStartDocked;
    }

    /**
      Is Start Kopete docked. Immutable
    */
    static
    bool isStartDockedImmutable()
    {
      return self()->isImmutable( QStringLiteral( "startDocked" ) );
    }

    /**
      Get Item object corresponding to startDocked()
    */
    ItemBool *startDockedItem()
    {
      return mStartDockedItem;
    }

    /**
      Set Show Kopete in system tray.
    */
    static
    void setShowSystemTray( bool v )
    {
      if (!self()->isShowSystemTrayImmutable())
        self()->mShowSystemTray = v;
    }

    /**
      Get Show Kopete in system tray.
    */
    static
    bool showSystemTray()
    {
      return self()->mShowSystemTray;
    }

    /**
      Is Show Kopete in system tray. Immutable
    */
    static
    bool isShowSystemTrayImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showSystemTray" ) );
    }

    /**
      Get Item object corresponding to showSystemTray()
    */
    ItemBool *showSystemTrayItem()
    {
      return mShowSystemTrayItem;
    }

    /**
      Set Use message queue.
    */
    static
    void setUseMessageQueue( bool v )
    {
      if (!self()->isUseMessageQueueImmutable())
        self()->mUseMessageQueue = v;
    }

    /**
      Get Use message queue.
    */
    static
    bool useMessageQueue()
    {
      return self()->mUseMessageQueue;
    }

    /**
      Is Use message queue. Immutable
    */
    static
    bool isUseMessageQueueImmutable()
    {
      return self()->isImmutable( QStringLiteral( "useMessageQueue" ) );
    }

    /**
      Get Item object corresponding to useMessageQueue()
    */
    ItemBool *useMessageQueueItem()
    {
      return mUseMessageQueueItem;
    }

    /**
      Set Queue unread messages.
    */
    static
    void setQueueUnreadMessages( bool v )
    {
      if (!self()->isQueueUnreadMessagesImmutable())
        self()->mQueueUnreadMessages = v;
    }

    /**
      Get Queue unread messages.
    */
    static
    bool queueUnreadMessages()
    {
      return self()->mQueueUnreadMessages;
    }

    /**
      Is Queue unread messages. Immutable
    */
    static
    bool isQueueUnreadMessagesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "queueUnreadMessages" ) );
    }

    /**
      Get Item object corresponding to queueUnreadMessages()
    */
    ItemBool *queueUnreadMessagesItem()
    {
      return mQueueUnreadMessagesItem;
    }

    /**
      Set Use mouse navigation only in contact list.
    */
    static
    void setContactListMouseNavigation( bool v )
    {
      if (!self()->isContactListMouseNavigationImmutable())
        self()->mContactListMouseNavigation = v;
    }

    /**
      Get Use mouse navigation only in contact list.
    */
    static
    bool contactListMouseNavigation()
    {
      return self()->mContactListMouseNavigation;
    }

    /**
      Is Use mouse navigation only in contact list. Immutable
    */
    static
    bool isContactListMouseNavigationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "contactListMouseNavigation" ) );
    }

    /**
      Get Item object corresponding to contactListMouseNavigation()
    */
    ItemBool *contactListMouseNavigationItem()
    {
      return mContactListMouseNavigationItem;
    }

    /**
      Set Reconnect on disconnect.
    */
    static
    void setReconnectOnDisconnect( bool v )
    {
      if (!self()->isReconnectOnDisconnectImmutable())
        self()->mReconnectOnDisconnect = v;
    }

    /**
      Get Reconnect on disconnect.
    */
    static
    bool reconnectOnDisconnect()
    {
      return self()->mReconnectOnDisconnect;
    }

    /**
      Is Reconnect on disconnect. Immutable
    */
    static
    bool isReconnectOnDisconnectImmutable()
    {
      return self()->isImmutable( QStringLiteral( "reconnectOnDisconnect" ) );
    }

    /**
      Get Item object corresponding to reconnectOnDisconnect()
    */
    ItemBool *reconnectOnDisconnectItem()
    {
      return mReconnectOnDisconnectItem;
    }

    /**
      Set Initial Status
    */
    static
    void setInitialStatus( int v )
    {
      if (!self()->isInitialStatusImmutable())
        self()->mInitialStatus = v;
    }

    /**
      Get Initial Status
    */
    static
    int initialStatus()
    {
      return self()->mInitialStatus;
    }

    /**
      Is Initial Status Immutable
    */
    static
    bool isInitialStatusImmutable()
    {
      return self()->isImmutable( QStringLiteral( "initialStatus" ) );
    }

    /**
      Get Item object corresponding to initialStatus()
    */
    ItemEnum *initialStatusItem()
    {
      return mInitialStatusItem;
    }

    /**
      Set Raise message view on new messages.
    */
    static
    void setRaiseMessageWindow( bool v )
    {
      if (!self()->isRaiseMessageWindowImmutable())
        self()->mRaiseMessageWindow = v;
    }

    /**
      Get Raise message view on new messages.
    */
    static
    bool raiseMessageWindow()
    {
      return self()->mRaiseMessageWindow;
    }

    /**
      Is Raise message view on new messages. Immutable
    */
    static
    bool isRaiseMessageWindowImmutable()
    {
      return self()->isImmutable( QStringLiteral( "raiseMessageWindow" ) );
    }

    /**
      Get Item object corresponding to raiseMessageWindow()
    */
    ItemBool *raiseMessageWindowItem()
    {
      return mRaiseMessageWindowItem;
    }

    /**
      Set Show events in chat window.
    */
    static
    void setShowEvents( bool v )
    {
      if (!self()->isShowEventsImmutable())
        self()->mShowEvents = v;
    }

    /**
      Get Show events in chat window.
    */
    static
    bool showEvents()
    {
      return self()->mShowEvents;
    }

    /**
      Is Show events in chat window. Immutable
    */
    static
    bool isShowEventsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showEvents" ) );
    }

    /**
      Get Item object corresponding to showEvents()
    */
    ItemBool *showEventsItem()
    {
      return mShowEventsItem;
    }

    /**
      Set Queue only highlighted messages in group chats
    */
    static
    void setQueueOnlyHighlightedMessagesInGroupChats( bool v )
    {
      if (!self()->isQueueOnlyHighlightedMessagesInGroupChatsImmutable())
        self()->mQueueOnlyHighlightedMessagesInGroupChats = v;
    }

    /**
      Get Queue only highlighted messages in group chats
    */
    static
    bool queueOnlyHighlightedMessagesInGroupChats()
    {
      return self()->mQueueOnlyHighlightedMessagesInGroupChats;
    }

    /**
      Is Queue only highlighted messages in group chats Immutable
    */
    static
    bool isQueueOnlyHighlightedMessagesInGroupChatsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "queueOnlyHighlightedMessagesInGroupChats" ) );
    }

    /**
      Get Item object corresponding to queueOnlyHighlightedMessagesInGroupChats()
    */
    ItemBool *queueOnlyHighlightedMessagesInGroupChatsItem()
    {
      return mQueueOnlyHighlightedMessagesInGroupChatsItem;
    }

    /**
      Set Queue Only Messages On Another Desktop
    */
    static
    void setQueueOnlyMessagesOnAnotherDesktop( bool v )
    {
      if (!self()->isQueueOnlyMessagesOnAnotherDesktopImmutable())
        self()->mQueueOnlyMessagesOnAnotherDesktop = v;
    }

    /**
      Get Queue Only Messages On Another Desktop
    */
    static
    bool queueOnlyMessagesOnAnotherDesktop()
    {
      return self()->mQueueOnlyMessagesOnAnotherDesktop;
    }

    /**
      Is Queue Only Messages On Another Desktop Immutable
    */
    static
    bool isQueueOnlyMessagesOnAnotherDesktopImmutable()
    {
      return self()->isImmutable( QStringLiteral( "queueOnlyMessagesOnAnotherDesktop" ) );
    }

    /**
      Get Item object corresponding to queueOnlyMessagesOnAnotherDesktop()
    */
    ItemBool *queueOnlyMessagesOnAnotherDesktopItem()
    {
      return mQueueOnlyMessagesOnAnotherDesktopItem;
    }

    /**
      Set Single notification for messages from the same sender.
    */
    static
    void setBalloonGroupMessageNotificationsPerSender( bool v )
    {
      if (!self()->isBalloonGroupMessageNotificationsPerSenderImmutable())
        self()->mBalloonGroupMessageNotificationsPerSender = v;
    }

    /**
      Get Single notification for messages from the same sender.
    */
    static
    bool balloonGroupMessageNotificationsPerSender()
    {
      return self()->mBalloonGroupMessageNotificationsPerSender;
    }

    /**
      Is Single notification for messages from the same sender. Immutable
    */
    static
    bool isBalloonGroupMessageNotificationsPerSenderImmutable()
    {
      return self()->isImmutable( QStringLiteral( "balloonGroupMessageNotificationsPerSender" ) );
    }

    /**
      Get Item object corresponding to balloonGroupMessageNotificationsPerSender()
    */
    ItemBool *balloonGroupMessageNotificationsPerSenderItem()
    {
      return mBalloonGroupMessageNotificationsPerSenderItem;
    }

    /**
      Set Balloon Notification Ignore Closes Chat View
    */
    static
    void setBalloonNotifyIgnoreClosesChatView( bool v )
    {
      if (!self()->isBalloonNotifyIgnoreClosesChatViewImmutable())
        self()->mBalloonNotifyIgnoreClosesChatView = v;
    }

    /**
      Get Balloon Notification Ignore Closes Chat View
    */
    static
    bool balloonNotifyIgnoreClosesChatView()
    {
      return self()->mBalloonNotifyIgnoreClosesChatView;
    }

    /**
      Is Balloon Notification Ignore Closes Chat View Immutable
    */
    static
    bool isBalloonNotifyIgnoreClosesChatViewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "balloonNotifyIgnoreClosesChatView" ) );
    }

    /**
      Get Item object corresponding to balloonNotifyIgnoreClosesChatView()
    */
    ItemBool *balloonNotifyIgnoreClosesChatViewItem()
    {
      return mBalloonNotifyIgnoreClosesChatViewItem;
    }

    /**
      Set Trayflash Notification
    */
    static
    void setTrayflashNotify( bool v )
    {
      if (!self()->isTrayflashNotifyImmutable())
        self()->mTrayflashNotify = v;
    }

    /**
      Get Trayflash Notification
    */
    static
    bool trayflashNotify()
    {
      return self()->mTrayflashNotify;
    }

    /**
      Is Trayflash Notification Immutable
    */
    static
    bool isTrayflashNotifyImmutable()
    {
      return self()->isImmutable( QStringLiteral( "trayflashNotify" ) );
    }

    /**
      Get Item object corresponding to trayflashNotify()
    */
    ItemBool *trayflashNotifyItem()
    {
      return mTrayflashNotifyItem;
    }

    /**
      Set Trayflash Notification Left Click Opens Message.
    */
    static
    void setTrayflashNotifyLeftClickOpensMessage( bool v )
    {
      if (!self()->isTrayflashNotifyLeftClickOpensMessageImmutable())
        self()->mTrayflashNotifyLeftClickOpensMessage = v;
    }

    /**
      Get Trayflash Notification Left Click Opens Message.
    */
    static
    bool trayflashNotifyLeftClickOpensMessage()
    {
      return self()->mTrayflashNotifyLeftClickOpensMessage;
    }

    /**
      Is Trayflash Notification Left Click Opens Message. Immutable
    */
    static
    bool isTrayflashNotifyLeftClickOpensMessageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "trayflashNotifyLeftClickOpensMessage" ) );
    }

    /**
      Get Item object corresponding to trayflashNotifyLeftClickOpensMessage()
    */
    ItemBool *trayflashNotifyLeftClickOpensMessageItem()
    {
      return mTrayflashNotifyLeftClickOpensMessageItem;
    }

    /**
      Set Animate on message with open chat.
    */
    static
    void setAnimateOnMessageWithOpenChat( bool v )
    {
      if (!self()->isAnimateOnMessageWithOpenChatImmutable())
        self()->mAnimateOnMessageWithOpenChat = v;
    }

    /**
      Get Animate on message with open chat.
    */
    static
    bool animateOnMessageWithOpenChat()
    {
      return self()->mAnimateOnMessageWithOpenChat;
    }

    /**
      Is Animate on message with open chat. Immutable
    */
    static
    bool isAnimateOnMessageWithOpenChatImmutable()
    {
      return self()->isImmutable( QStringLiteral( "animateOnMessageWithOpenChat" ) );
    }

    /**
      Get Item object corresponding to animateOnMessageWithOpenChat()
    */
    ItemBool *animateOnMessageWithOpenChatItem()
    {
      return mAnimateOnMessageWithOpenChatItem;
    }

    /**
      Set Trayflash Notification Set Current Desktop To Chat View
    */
    static
    void setTrayflashNotifySetCurrentDesktopToChatView( bool v )
    {
      if (!self()->isTrayflashNotifySetCurrentDesktopToChatViewImmutable())
        self()->mTrayflashNotifySetCurrentDesktopToChatView = v;
    }

    /**
      Get Trayflash Notification Set Current Desktop To Chat View
    */
    static
    bool trayflashNotifySetCurrentDesktopToChatView()
    {
      return self()->mTrayflashNotifySetCurrentDesktopToChatView;
    }

    /**
      Is Trayflash Notification Set Current Desktop To Chat View Immutable
    */
    static
    bool isTrayflashNotifySetCurrentDesktopToChatViewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "trayflashNotifySetCurrentDesktopToChatView" ) );
    }

    /**
      Get Item object corresponding to trayflashNotifySetCurrentDesktopToChatView()
    */
    ItemBool *trayflashNotifySetCurrentDesktopToChatViewItem()
    {
      return mTrayflashNotifySetCurrentDesktopToChatViewItem;
    }

    /**
      Set Enable events while away.
    */
    static
    void setEnableEventsWhileAway( bool v )
    {
      if (!self()->isEnableEventsWhileAwayImmutable())
        self()->mEnableEventsWhileAway = v;
    }

    /**
      Get Enable events while away.
    */
    static
    bool enableEventsWhileAway()
    {
      return self()->mEnableEventsWhileAway;
    }

    /**
      Is Enable events while away. Immutable
    */
    static
    bool isEnableEventsWhileAwayImmutable()
    {
      return self()->isImmutable( QStringLiteral( "enableEventsWhileAway" ) );
    }

    /**
      Get Item object corresponding to enableEventsWhileAway()
    */
    ItemBool *enableEventsWhileAwayItem()
    {
      return mEnableEventsWhileAwayItem;
    }

    /**
      Set Chat window grouping policy.
    */
    static
    void setChatWindowGroupPolicy( int v )
    {
      if (!self()->isChatWindowGroupPolicyImmutable())
        self()->mChatWindowGroupPolicy = v;
    }

    /**
      Get Chat window grouping policy.
    */
    static
    int chatWindowGroupPolicy()
    {
      return self()->mChatWindowGroupPolicy;
    }

    /**
      Is Chat window grouping policy. Immutable
    */
    static
    bool isChatWindowGroupPolicyImmutable()
    {
      return self()->isImmutable( QStringLiteral( "chatWindowGroupPolicy" ) );
    }

    /**
      Get Item object corresponding to chatWindowGroupPolicy()
    */
    ItemEnum *chatWindowGroupPolicyItem()
    {
      return mChatWindowGroupPolicyItem;
    }

    /**
      Set Enable spell checking by default.
    */
    static
    void setSpellCheck( bool v )
    {
      if (!self()->isSpellCheckImmutable())
        self()->mSpellCheck = v;
    }

    /**
      Get Enable spell checking by default.
    */
    static
    bool spellCheck()
    {
      return self()->mSpellCheck;
    }

    /**
      Is Enable spell checking by default. Immutable
    */
    static
    bool isSpellCheckImmutable()
    {
      return self()->isImmutable( QStringLiteral( "spellCheck" ) );
    }

    /**
      Get Item object corresponding to spellCheck()
    */
    ItemBool *spellCheckItem()
    {
      return mSpellCheckItem;
    }

    /**
      Set Enable rich text by default.
    */
    static
    void setRichTextByDefault( bool v )
    {
      if (!self()->isRichTextByDefaultImmutable())
        self()->mRichTextByDefault = v;
    }

    /**
      Get Enable rich text by default.
    */
    static
    bool richTextByDefault()
    {
      return self()->mRichTextByDefault;
    }

    /**
      Is Enable rich text by default. Immutable
    */
    static
    bool isRichTextByDefaultImmutable()
    {
      return self()->isImmutable( QStringLiteral( "richTextByDefault" ) );
    }

    /**
      Get Item object corresponding to richTextByDefault()
    */
    ItemBool *richTextByDefaultItem()
    {
      return mRichTextByDefaultItem;
    }

    /**
      Set Show send button in Chat Window.
    */
    static
    void setChatWindowShowSendButton( bool v )
    {
      if (!self()->isChatWindowShowSendButtonImmutable())
        self()->mChatWindowShowSendButton = v;
    }

    /**
      Get Show send button in Chat Window.
    */
    static
    bool chatWindowShowSendButton()
    {
      return self()->mChatWindowShowSendButton;
    }

    /**
      Is Show send button in Chat Window. Immutable
    */
    static
    bool isChatWindowShowSendButtonImmutable()
    {
      return self()->isImmutable( QStringLiteral( "chatWindowShowSendButton" ) );
    }

    /**
      Get Item object corresponding to chatWindowShowSendButton()
    */
    ItemBool *chatWindowShowSendButtonItem()
    {
      return mChatWindowShowSendButtonItem;
    }

    /**
      Set Show message dates.
    */
    static
    void setShowDates( bool v )
    {
      if (!self()->isShowDatesImmutable())
        self()->mShowDates = v;
    }

    /**
      Get Show message dates.
    */
    static
    bool showDates()
    {
      return self()->mShowDates;
    }

    /**
      Is Show message dates. Immutable
    */
    static
    bool isShowDatesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showDates" ) );
    }

    /**
      Get Item object corresponding to showDates()
    */
    ItemBool *showDatesItem()
    {
      return mShowDatesItem;
    }

    /**
      Set Truncate contact name.
    */
    static
    void setTruncateContactName( bool v )
    {
      if (!self()->isTruncateContactNameImmutable())
        self()->mTruncateContactName = v;
    }

    /**
      Get Truncate contact name.
    */
    static
    bool truncateContactName()
    {
      return self()->mTruncateContactName;
    }

    /**
      Is Truncate contact name. Immutable
    */
    static
    bool isTruncateContactNameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "truncateContactName" ) );
    }

    /**
      Get Item object corresponding to truncateContactName()
    */
    ItemBool *truncateContactNameItem()
    {
      return mTruncateContactNameItem;
    }

    /**
      Set Truncate contact name max length.
    */
    static
    void setTruncateContactNameLength( int v )
    {
      if (!self()->isTruncateContactNameLengthImmutable())
        self()->mTruncateContactNameLength = v;
    }

    /**
      Get Truncate contact name max length.
    */
    static
    int truncateContactNameLength()
    {
      return self()->mTruncateContactNameLength;
    }

    /**
      Is Truncate contact name max length. Immutable
    */
    static
    bool isTruncateContactNameLengthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "truncateContactNameLength" ) );
    }

    /**
      Get Item object corresponding to truncateContactNameLength()
    */
    ItemInt *truncateContactNameLengthItem()
    {
      return mTruncateContactNameLengthItem;
    }

    /**
      Set Maximum number of messages to show in a chat window.
    */
    static
    void setChatWindowBufferViewSize( int v )
    {
      if (!self()->isChatWindowBufferViewSizeImmutable())
        self()->mChatWindowBufferViewSize = v;
    }

    /**
      Get Maximum number of messages to show in a chat window.
    */
    static
    int chatWindowBufferViewSize()
    {
      return self()->mChatWindowBufferViewSize;
    }

    /**
      Is Maximum number of messages to show in a chat window. Immutable
    */
    static
    bool isChatWindowBufferViewSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "chatWindowBufferViewSize" ) );
    }

    /**
      Get Item object corresponding to chatWindowBufferViewSize()
    */
    ItemInt *chatWindowBufferViewSizeItem()
    {
      return mChatWindowBufferViewSizeItem;
    }

    /**
      Set Hightlight messages containing your nickname.
    */
    static
    void setHighlightEnabled( bool v )
    {
      if (!self()->isHighlightEnabledImmutable())
        self()->mHighlightEnabled = v;
    }

    /**
      Get Hightlight messages containing your nickname.
    */
    static
    bool highlightEnabled()
    {
      return self()->mHighlightEnabled;
    }

    /**
      Is Hightlight messages containing your nickname. Immutable
    */
    static
    bool isHighlightEnabledImmutable()
    {
      return self()->isImmutable( QStringLiteral( "highlightEnabled" ) );
    }

    /**
      Get Item object corresponding to highlightEnabled()
    */
    ItemBool *highlightEnabledItem()
    {
      return mHighlightEnabledItem;
    }

    /**
      Set Selected view plugin for Chat Window.
    */
    static
    void setViewPlugin( const QString & v )
    {
      if (!self()->isViewPluginImmutable())
        self()->mViewPlugin = v;
    }

    /**
      Get Selected view plugin for Chat Window.
    */
    static
    QString viewPlugin()
    {
      return self()->mViewPlugin;
    }

    /**
      Is Selected view plugin for Chat Window. Immutable
    */
    static
    bool isViewPluginImmutable()
    {
      return self()->isImmutable( QStringLiteral( "viewPlugin" ) );
    }

    /**
      Get Item object corresponding to viewPlugin()
    */
    ItemString *viewPluginItem()
    {
      return mViewPluginItem;
    }

    /**
      Set Use auto away.
    */
    static
    void setUseAutoAway( bool v )
    {
      if (!self()->isUseAutoAwayImmutable())
        self()->mUseAutoAway = v;
    }

    /**
      Get Use auto away.
    */
    static
    bool useAutoAway()
    {
      return self()->mUseAutoAway;
    }

    /**
      Is Use auto away. Immutable
    */
    static
    bool isUseAutoAwayImmutable()
    {
      return self()->isImmutable( QStringLiteral( "useAutoAway" ) );
    }

    /**
      Get Item object corresponding to useAutoAway()
    */
    ItemBool *useAutoAwayItem()
    {
      return mUseAutoAwayItem;
    }

    /**
      Set Auto away timeout.
    */
    static
    void setAutoAwayTimeout( int v )
    {
      if (!self()->isAutoAwayTimeoutImmutable())
        self()->mAutoAwayTimeout = v;
    }

    /**
      Get Auto away timeout.
    */
    static
    int autoAwayTimeout()
    {
      return self()->mAutoAwayTimeout;
    }

    /**
      Is Auto away timeout. Immutable
    */
    static
    bool isAutoAwayTimeoutImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoAwayTimeout" ) );
    }

    /**
      Get Item object corresponding to autoAwayTimeout()
    */
    ItemInt *autoAwayTimeoutItem()
    {
      return mAutoAwayTimeoutItem;
    }

    /**
      Set Go available after detecting an activity.
    */
    static
    void setAutoAwayGoAvailable( bool v )
    {
      if (!self()->isAutoAwayGoAvailableImmutable())
        self()->mAutoAwayGoAvailable = v;
    }

    /**
      Get Go available after detecting an activity.
    */
    static
    bool autoAwayGoAvailable()
    {
      return self()->mAutoAwayGoAvailable;
    }

    /**
      Is Go available after detecting an activity. Immutable
    */
    static
    bool isAutoAwayGoAvailableImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoAwayGoAvailable" ) );
    }

    /**
      Get Item object corresponding to autoAwayGoAvailable()
    */
    ItemBool *autoAwayGoAvailableItem()
    {
      return mAutoAwayGoAvailableItem;
    }

    /**
      Set Confirm Before Coming Back from Auto Away
    */
    static
    void setAutoAwayAskAvailable( bool v )
    {
      if (!self()->isAutoAwayAskAvailableImmutable())
        self()->mAutoAwayAskAvailable = v;
    }

    /**
      Get Confirm Before Coming Back from Auto Away
    */
    static
    bool autoAwayAskAvailable()
    {
      return self()->mAutoAwayAskAvailable;
    }

    /**
      Is Confirm Before Coming Back from Auto Away Immutable
    */
    static
    bool isAutoAwayAskAvailableImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoAwayAskAvailable" ) );
    }

    /**
      Get Item object corresponding to autoAwayAskAvailable()
    */
    ItemBool *autoAwayAskAvailableItem()
    {
      return mAutoAwayAskAvailableItem;
    }

    /**
      Set When setting the auto away message, use the latest away message.
    */
    static
    void setUseLastAwayMessage( bool v )
    {
      if (!self()->isUseLastAwayMessageImmutable())
        self()->mUseLastAwayMessage = v;
    }

    /**
      Get When setting the auto away message, use the latest away message.
    */
    static
    bool useLastAwayMessage()
    {
      return self()->mUseLastAwayMessage;
    }

    /**
      Is When setting the auto away message, use the latest away message. Immutable
    */
    static
    bool isUseLastAwayMessageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "useLastAwayMessage" ) );
    }

    /**
      Get Item object corresponding to useLastAwayMessage()
    */
    ItemBool *useLastAwayMessageItem()
    {
      return mUseLastAwayMessageItem;
    }

    /**
      Set When setting the auto away message, use a custom away message.
    */
    static
    void setUseCustomAwayMessage( bool v )
    {
      if (!self()->isUseCustomAwayMessageImmutable())
        self()->mUseCustomAwayMessage = v;
    }

    /**
      Get When setting the auto away message, use a custom away message.
    */
    static
    bool useCustomAwayMessage()
    {
      return self()->mUseCustomAwayMessage;
    }

    /**
      Is When setting the auto away message, use a custom away message. Immutable
    */
    static
    bool isUseCustomAwayMessageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "useCustomAwayMessage" ) );
    }

    /**
      Get Item object corresponding to useCustomAwayMessage()
    */
    ItemBool *useCustomAwayMessageItem()
    {
      return mUseCustomAwayMessageItem;
    }

    /**
      Set The custom auto away title.
    */
    static
    void setAutoAwayCustomTitle( const QString & v )
    {
      if (!self()->isAutoAwayCustomTitleImmutable())
        self()->mAutoAwayCustomTitle = v;
    }

    /**
      Get The custom auto away title.
    */
    static
    QString autoAwayCustomTitle()
    {
      return self()->mAutoAwayCustomTitle;
    }

    /**
      Is The custom auto away title. Immutable
    */
    static
    bool isAutoAwayCustomTitleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoAwayCustomTitle" ) );
    }

    /**
      Get Item object corresponding to autoAwayCustomTitle()
    */
    ItemString *autoAwayCustomTitleItem()
    {
      return mAutoAwayCustomTitleItem;
    }

    /**
      Set The custom auto away message.
    */
    static
    void setAutoAwayCustomMessage( const QString & v )
    {
      if (!self()->isAutoAwayCustomMessageImmutable())
        self()->mAutoAwayCustomMessage = v;
    }

    /**
      Get The custom auto away message.
    */
    static
    QString autoAwayCustomMessage()
    {
      return self()->mAutoAwayCustomMessage;
    }

    /**
      Is The custom auto away message. Immutable
    */
    static
    bool isAutoAwayCustomMessageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "autoAwayCustomMessage" ) );
    }

    /**
      Get Item object corresponding to autoAwayCustomMessage()
    */
    ItemString *autoAwayCustomMessageItem()
    {
      return mAutoAwayCustomMessageItem;
    }

    /**
      Set Enable smooth scrolling in contact list.
    */
    static
    void setSmoothScrolling( bool v )
    {
      if (!self()->isSmoothScrollingImmutable())
        self()->mSmoothScrolling = v;
    }

    /**
      Get Enable smooth scrolling in contact list.
    */
    static
    bool smoothScrolling()
    {
      return self()->mSmoothScrolling;
    }

    /**
      Is Enable smooth scrolling in contact list. Immutable
    */
    static
    bool isSmoothScrollingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "smoothScrolling" ) );
    }

    /**
      Get Item object corresponding to smoothScrolling()
    */
    ItemBool *smoothScrollingItem()
    {
      return mSmoothScrollingItem;
    }

    /**
      Set Always show tabs.
    */
    static
    void setAlwaysShowTabs( bool v )
    {
      if (!self()->isAlwaysShowTabsImmutable())
        self()->mAlwaysShowTabs = v;
    }

    /**
      Get Always show tabs.
    */
    static
    bool alwaysShowTabs()
    {
      return self()->mAlwaysShowTabs;
    }

    /**
      Is Always show tabs. Immutable
    */
    static
    bool isAlwaysShowTabsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AlwaysShowTabs" ) );
    }

    /**
      Get Item object corresponding to AlwaysShowTabs()
    */
    ItemBool *alwaysShowTabsItem()
    {
      return mAlwaysShowTabsItem;
    }

    /**
      Set Show contact name for each tab.
    */
    static
    void setShowContactName( bool v )
    {
      if (!self()->isShowContactNameImmutable())
        self()->mShowContactName = v;
    }

    /**
      Get Show contact name for each tab.
    */
    static
    bool showContactName()
    {
      return self()->mShowContactName;
    }

    /**
      Is Show contact name for each tab. Immutable
    */
    static
    bool isShowContactNameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowContactName" ) );
    }

    /**
      Get Item object corresponding to ShowContactName()
    */
    ItemBool *showContactNameItem()
    {
      return mShowContactNameItem;
    }

    /**
      Set Show close button for each tab.
    */
    static
    void setHoverClose( bool v )
    {
      if (!self()->isHoverCloseImmutable())
        self()->mHoverClose = v;
    }

    /**
      Get Show close button for each tab.
    */
    static
    bool hoverClose()
    {
      return self()->mHoverClose;
    }

    /**
      Is Show close button for each tab. Immutable
    */
    static
    bool isHoverCloseImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HoverClose" ) );
    }

    /**
      Get Item object corresponding to HoverClose()
    */
    ItemBool *hoverCloseItem()
    {
      return mHoverCloseItem;
    }

  protected:
    BehaviorSettings();
    friend class BehaviorSettingsHelper;


    // Behavior
    bool mStartDocked;
    bool mShowSystemTray;
    bool mUseMessageQueue;
    bool mQueueUnreadMessages;
    bool mContactListMouseNavigation;
    bool mReconnectOnDisconnect;
    int mInitialStatus;
    bool mRaiseMessageWindow;
    bool mShowEvents;
    bool mQueueOnlyHighlightedMessagesInGroupChats;
    bool mQueueOnlyMessagesOnAnotherDesktop;
    bool mBalloonGroupMessageNotificationsPerSender;
    bool mBalloonNotifyIgnoreClosesChatView;
    bool mTrayflashNotify;
    bool mTrayflashNotifyLeftClickOpensMessage;
    bool mAnimateOnMessageWithOpenChat;
    bool mTrayflashNotifySetCurrentDesktopToChatView;
    bool mEnableEventsWhileAway;
    int mChatWindowGroupPolicy;
    bool mSpellCheck;
    bool mRichTextByDefault;
    bool mChatWindowShowSendButton;
    bool mShowDates;
    bool mTruncateContactName;
    int mTruncateContactNameLength;
    int mChatWindowBufferViewSize;
    bool mHighlightEnabled;
    QString mViewPlugin;

    // AutoAway
    bool mUseAutoAway;
    int mAutoAwayTimeout;
    bool mAutoAwayGoAvailable;
    bool mAutoAwayAskAvailable;
    bool mUseLastAwayMessage;
    bool mUseCustomAwayMessage;
    QString mAutoAwayCustomTitle;
    QString mAutoAwayCustomMessage;

    // ContactList
    bool mSmoothScrolling;

    // ChatWindowSettings
    bool mAlwaysShowTabs;
    bool mShowContactName;
    bool mHoverClose;

  private:
    ItemBool *mStartDockedItem;
    ItemBool *mShowSystemTrayItem;
    ItemBool *mUseMessageQueueItem;
    ItemBool *mQueueUnreadMessagesItem;
    ItemBool *mContactListMouseNavigationItem;
    ItemBool *mReconnectOnDisconnectItem;
    ItemEnum *mInitialStatusItem;
    ItemBool *mRaiseMessageWindowItem;
    ItemBool *mShowEventsItem;
    ItemBool *mQueueOnlyHighlightedMessagesInGroupChatsItem;
    ItemBool *mQueueOnlyMessagesOnAnotherDesktopItem;
    ItemBool *mBalloonGroupMessageNotificationsPerSenderItem;
    ItemBool *mBalloonNotifyIgnoreClosesChatViewItem;
    ItemBool *mTrayflashNotifyItem;
    ItemBool *mTrayflashNotifyLeftClickOpensMessageItem;
    ItemBool *mAnimateOnMessageWithOpenChatItem;
    ItemBool *mTrayflashNotifySetCurrentDesktopToChatViewItem;
    ItemBool *mEnableEventsWhileAwayItem;
    ItemEnum *mChatWindowGroupPolicyItem;
    ItemBool *mSpellCheckItem;
    ItemBool *mRichTextByDefaultItem;
    ItemBool *mChatWindowShowSendButtonItem;
    ItemBool *mShowDatesItem;
    ItemBool *mTruncateContactNameItem;
    ItemInt *mTruncateContactNameLengthItem;
    ItemInt *mChatWindowBufferViewSizeItem;
    ItemBool *mHighlightEnabledItem;
    ItemString *mViewPluginItem;
    ItemBool *mUseAutoAwayItem;
    ItemInt *mAutoAwayTimeoutItem;
    ItemBool *mAutoAwayGoAvailableItem;
    ItemBool *mAutoAwayAskAvailableItem;
    ItemBool *mUseLastAwayMessageItem;
    ItemBool *mUseCustomAwayMessageItem;
    ItemString *mAutoAwayCustomTitleItem;
    ItemString *mAutoAwayCustomMessageItem;
    ItemBool *mSmoothScrollingItem;
    ItemBool *mAlwaysShowTabsItem;
    ItemBool *mShowContactNameItem;
    ItemBool *mHoverCloseItem;
};

}

#endif

