// 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();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
      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

