// This file is generated by kconfig_compiler_kf6 from konsole.kcfg.
// All changes you do to this file will be lost.
#ifndef KONSOLE_KONSOLESETTINGS_H
#define KONSOLE_KONSOLESETTINGS_H

#include "konsoleprivate_export.h"

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

namespace Konsole {

class KONSOLEPRIVATE_EXPORT KonsoleSettings : public KConfigSkeleton
{
  public:
    enum EnumSplitViewVisibility { AlwaysShowSplitHeader, ShowSplitHeaderWhenNeeded, AlwaysHideSplitHeader };
    enum EnumSplitDragHandleSize { SplitDragHandleSmall, SplitDragHandleMedium, SplitDragHandleLarge };
    enum EnumTabBarVisibility { AlwaysShowTabBar, ShowTabBarWhenNeeded, AlwaysHideTabBar };
    enum EnumTabBarPosition { Top, Bottom, Left, Right };
    enum EnumSearchTabsButton { ShowSearchTabsButton, HideSearchTabsButton };
    enum EnumCloseTabButton { OnEachTab, OnTabBar, None };
    enum EnumNewTabBehavior { PutNewTabAtTheEnd, PutNewTabAfterCurrentTab };

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

    /**
      Set Remove window titlebar and frame
    */
    static
    void setRemoveWindowTitleBarAndFrame( bool v )
    {
      if (!self()->isRemoveWindowTitleBarAndFrameImmutable())
        self()->mRemoveWindowTitleBarAndFrame = v;
    }

    /**
      Get Remove window titlebar and frame
    */
    static
    bool removeWindowTitleBarAndFrame()
    {
      return self()->mRemoveWindowTitleBarAndFrame;
    }

    /**
      Is Remove window titlebar and frame Immutable
    */
    static
    bool isRemoveWindowTitleBarAndFrameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RemoveWindowTitleBarAndFrame" ) );
    }

    /**
      Get Item object corresponding to RemoveWindowTitleBarAndFrame()
    */
    ItemBool *removeWindowTitleBarAndFrameItem()
    {
      return mRemoveWindowTitleBarAndFrameItem;
    }

    /**
      Set Focus terminals when the mouse pointer is moved over them
    */
    static
    void setFocusFollowsMouse( bool v )
    {
      if (!self()->isFocusFollowsMouseImmutable())
        self()->mFocusFollowsMouse = v;
    }

    /**
      Get Focus terminals when the mouse pointer is moved over them
    */
    static
    bool focusFollowsMouse()
    {
      return self()->mFocusFollowsMouse;
    }

    /**
      Is Focus terminals when the mouse pointer is moved over them Immutable
    */
    static
    bool isFocusFollowsMouseImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FocusFollowsMouse" ) );
    }

    /**
      Get Item object corresponding to FocusFollowsMouse()
    */
    ItemBool *focusFollowsMouseItem()
    {
      return mFocusFollowsMouseItem;
    }

    /**
      Set Show window title on the titlebar
    */
    static
    void setShowWindowTitleOnTitleBar( bool v )
    {
      if (!self()->isShowWindowTitleOnTitleBarImmutable())
        self()->mShowWindowTitleOnTitleBar = v;
    }

    /**
      Get Show window title on the titlebar
    */
    static
    bool showWindowTitleOnTitleBar()
    {
      return self()->mShowWindowTitleOnTitleBar;
    }

    /**
      Is Show window title on the titlebar Immutable
    */
    static
    bool isShowWindowTitleOnTitleBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowWindowTitleOnTitleBar" ) );
    }

    /**
      Get Item object corresponding to ShowWindowTitleOnTitleBar()
    */
    ItemBool *showWindowTitleOnTitleBarItem()
    {
      return mShowWindowTitleOnTitleBarItem;
    }

    /**
      Set Enable menu accelerators
    */
    static
    void setAllowMenuAccelerators( bool v )
    {
      if (!self()->isAllowMenuAcceleratorsImmutable())
        self()->mAllowMenuAccelerators = v;
    }

    /**
      Get Enable menu accelerators
    */
    static
    bool allowMenuAccelerators()
    {
      return self()->mAllowMenuAccelerators;
    }

    /**
      Is Enable menu accelerators Immutable
    */
    static
    bool isAllowMenuAcceleratorsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AllowMenuAccelerators" ) );
    }

    /**
      Get Item object corresponding to AllowMenuAccelerators()
    */
    ItemBool *allowMenuAcceleratorsItem()
    {
      return mAllowMenuAcceleratorsItem;
    }

    /**
      Set Use current window size on next startup
    */
    static
    void setRememberWindowSize( bool v )
    {
      if (!self()->isRememberWindowSizeImmutable())
        self()->mRememberWindowSize = v;
    }

    /**
      Get Use current window size on next startup
    */
    static
    bool rememberWindowSize()
    {
      return self()->mRememberWindowSize;
    }

    /**
      Is Use current window size on next startup Immutable
    */
    static
    bool isRememberWindowSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RememberWindowSize" ) );
    }

    /**
      Get Item object corresponding to RememberWindowSize()
    */
    ItemBool *rememberWindowSizeItem()
    {
      return mRememberWindowSizeItem;
    }

    /**
      Set Run all Konsole windows in a single process
    */
    static
    void setUseSingleInstance( bool v )
    {
      if (!self()->isUseSingleInstanceImmutable())
        self()->mUseSingleInstance = v;
    }

    /**
      Get Run all Konsole windows in a single process
    */
    static
    bool useSingleInstance()
    {
      return self()->mUseSingleInstance;
    }

    /**
      Is Run all Konsole windows in a single process Immutable
    */
    static
    bool isUseSingleInstanceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "UseSingleInstance" ) );
    }

    /**
      Get Item object corresponding to UseSingleInstance()
    */
    ItemBool *useSingleInstanceItem()
    {
      return mUseSingleInstanceItem;
    }

    /**
      Set Force new tabs
    */
    static
    void setForceNewTabs( bool v )
    {
      if (!self()->isForceNewTabsImmutable())
        self()->mForceNewTabs = v;
    }

    /**
      Get Force new tabs
    */
    static
    bool forceNewTabs()
    {
      return self()->mForceNewTabs;
    }

    /**
      Is Force new tabs Immutable
    */
    static
    bool isForceNewTabsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ForceNewTabs" ) );
    }

    /**
      Get Item object corresponding to ForceNewTabs()
    */
    ItemBool *forceNewTabsItem()
    {
      return mForceNewTabsItem;
    }

    /**
      Set Show progress in task bar
    */
    static
    void setShowProgressInTaskBar( bool v )
    {
      if (!self()->isShowProgressInTaskBarImmutable())
        self()->mShowProgressInTaskBar = v;
    }

    /**
      Get Show progress in task bar
    */
    static
    bool showProgressInTaskBar()
    {
      return self()->mShowProgressInTaskBar;
    }

    /**
      Is Show progress in task bar Immutable
    */
    static
    bool isShowProgressInTaskBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowProgressInTaskBar" ) );
    }

    /**
      Get Item object corresponding to ShowProgressInTaskBar()
    */
    ItemBool *showProgressInTaskBarItem()
    {
      return mShowProgressInTaskBarItem;
    }

    /**
      Set Enable the security sensitive parts of the DBus API
    */
    static
    void setEnableSecuritySensitiveDBusAPI( bool v )
    {
      if (!self()->isEnableSecuritySensitiveDBusAPIImmutable())
        self()->mEnableSecuritySensitiveDBusAPI = v;
    }

    /**
      Get Enable the security sensitive parts of the DBus API
    */
    static
    bool enableSecuritySensitiveDBusAPI()
    {
      return self()->mEnableSecuritySensitiveDBusAPI;
    }

    /**
      Is Enable the security sensitive parts of the DBus API Immutable
    */
    static
    bool isEnableSecuritySensitiveDBusAPIImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EnableSecuritySensitiveDBusAPI" ) );
    }

    /**
      Get Item object corresponding to EnableSecuritySensitiveDBusAPI()
    */
    ItemBool *enableSecuritySensitiveDBusAPIItem()
    {
      return mEnableSecuritySensitiveDBusAPIItem;
    }

    /**
      Set Listen for ZModem Terminal codes
    */
    static
    void setListenForZModemTerminalCodes( bool v )
    {
      if (!self()->isListenForZModemTerminalCodesImmutable())
        self()->mListenForZModemTerminalCodes = v;
    }

    /**
      Get Listen for ZModem Terminal codes
    */
    static
    bool listenForZModemTerminalCodes()
    {
      return self()->mListenForZModemTerminalCodes;
    }

    /**
      Is Listen for ZModem Terminal codes Immutable
    */
    static
    bool isListenForZModemTerminalCodesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ListenForZModemTerminalCodes" ) );
    }

    /**
      Get Item object corresponding to ListenForZModemTerminalCodes()
    */
    ItemBool *listenForZModemTerminalCodesItem()
    {
      return mListenForZModemTerminalCodesItem;
    }

    /**
      Set EnableThumbnails
    */
    static
    void setEnableThumbnails( bool v )
    {
      if (!self()->isEnableThumbnailsImmutable())
        self()->mEnableThumbnails = v;
    }

    /**
      Get EnableThumbnails
    */
    static
    bool enableThumbnails()
    {
      return self()->mEnableThumbnails;
    }

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

    /**
      Get Item object corresponding to EnableThumbnails()
    */
    ItemBool *enableThumbnailsItem()
    {
      return mEnableThumbnailsItem;
    }

    /**
      Set Thumbnail Width
    */
    static
    void setThumbnailSize( int v )
    {
      if (!self()->isThumbnailSizeImmutable())
        self()->mThumbnailSize = v;
    }

    /**
      Get Thumbnail Width
    */
    static
    int thumbnailSize()
    {
      return self()->mThumbnailSize;
    }

    /**
      Is Thumbnail Width Immutable
    */
    static
    bool isThumbnailSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ThumbnailSize" ) );
    }

    /**
      Get Item object corresponding to ThumbnailSize()
    */
    ItemInt *thumbnailSizeItem()
    {
      return mThumbnailSizeItem;
    }

    /**
      Set Use Shift to display a thumbnail
    */
    static
    void setThumbnailShift( bool v )
    {
      if (!self()->isThumbnailShiftImmutable())
        self()->mThumbnailShift = v;
    }

    /**
      Get Use Shift to display a thumbnail
    */
    static
    bool thumbnailShift()
    {
      return self()->mThumbnailShift;
    }

    /**
      Is Use Shift to display a thumbnail Immutable
    */
    static
    bool isThumbnailShiftImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ThumbnailShift" ) );
    }

    /**
      Get Item object corresponding to ThumbnailShift()
    */
    ItemBool *thumbnailShiftItem()
    {
      return mThumbnailShiftItem;
    }

    /**
      Set Use Alt to display a thumbnail
    */
    static
    void setThumbnailAlt( bool v )
    {
      if (!self()->isThumbnailAltImmutable())
        self()->mThumbnailAlt = v;
    }

    /**
      Get Use Alt to display a thumbnail
    */
    static
    bool thumbnailAlt()
    {
      return self()->mThumbnailAlt;
    }

    /**
      Is Use Alt to display a thumbnail Immutable
    */
    static
    bool isThumbnailAltImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ThumbnailAlt" ) );
    }

    /**
      Get Item object corresponding to ThumbnailAlt()
    */
    ItemBool *thumbnailAltItem()
    {
      return mThumbnailAltItem;
    }

    /**
      Set Use Ctrl to display a thumbnail
    */
    static
    void setThumbnailCtrl( bool v )
    {
      if (!self()->isThumbnailCtrlImmutable())
        self()->mThumbnailCtrl = v;
    }

    /**
      Get Use Ctrl to display a thumbnail
    */
    static
    bool thumbnailCtrl()
    {
      return self()->mThumbnailCtrl;
    }

    /**
      Is Use Ctrl to display a thumbnail Immutable
    */
    static
    bool isThumbnailCtrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ThumbnailCtrl" ) );
    }

    /**
      Get Item object corresponding to ThumbnailCtrl()
    */
    ItemBool *thumbnailCtrlItem()
    {
      return mThumbnailCtrlItem;
    }

    /**
      Set Search is case sensitive
    */
    static
    void setSearchCaseSensitive( bool v )
    {
      if (!self()->isSearchCaseSensitiveImmutable())
        self()->mSearchCaseSensitive = v;
    }

    /**
      Get Search is case sensitive
    */
    static
    bool searchCaseSensitive()
    {
      return self()->mSearchCaseSensitive;
    }

    /**
      Is Search is case sensitive Immutable
    */
    static
    bool isSearchCaseSensitiveImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchCaseSensitive" ) );
    }

    /**
      Get Item object corresponding to SearchCaseSensitive()
    */
    ItemBool *searchCaseSensitiveItem()
    {
      return mSearchCaseSensitiveItem;
    }

    /**
      Set Match using regular expressions
    */
    static
    void setSearchRegExpression( bool v )
    {
      if (!self()->isSearchRegExpressionImmutable())
        self()->mSearchRegExpression = v;
    }

    /**
      Get Match using regular expressions
    */
    static
    bool searchRegExpression()
    {
      return self()->mSearchRegExpression;
    }

    /**
      Is Match using regular expressions Immutable
    */
    static
    bool isSearchRegExpressionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchRegExpression" ) );
    }

    /**
      Get Item object corresponding to SearchRegExpression()
    */
    ItemBool *searchRegExpressionItem()
    {
      return mSearchRegExpressionItem;
    }

    /**
      Set Highlight all search matches
    */
    static
    void setSearchHighlightMatches( bool v )
    {
      if (!self()->isSearchHighlightMatchesImmutable())
        self()->mSearchHighlightMatches = v;
    }

    /**
      Get Highlight all search matches
    */
    static
    bool searchHighlightMatches()
    {
      return self()->mSearchHighlightMatches;
    }

    /**
      Is Highlight all search matches Immutable
    */
    static
    bool isSearchHighlightMatchesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchHighlightMatches" ) );
    }

    /**
      Get Item object corresponding to SearchHighlightMatches()
    */
    ItemBool *searchHighlightMatchesItem()
    {
      return mSearchHighlightMatchesItem;
    }

    /**
      Set Search backwards
    */
    static
    void setSearchReverseSearch( bool v )
    {
      if (!self()->isSearchReverseSearchImmutable())
        self()->mSearchReverseSearch = v;
    }

    /**
      Get Search backwards
    */
    static
    bool searchReverseSearch()
    {
      return self()->mSearchReverseSearch;
    }

    /**
      Is Search backwards Immutable
    */
    static
    bool isSearchReverseSearchImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchReverseSearch" ) );
    }

    /**
      Get Item object corresponding to SearchReverseSearch()
    */
    ItemBool *searchReverseSearchItem()
    {
      return mSearchReverseSearchItem;
    }

    /**
      Set Search stops instead of wrapping
    */
    static
    void setSearchNoWrap( bool v )
    {
      if (!self()->isSearchNoWrapImmutable())
        self()->mSearchNoWrap = v;
    }

    /**
      Get Search stops instead of wrapping
    */
    static
    bool searchNoWrap()
    {
      return self()->mSearchNoWrap;
    }

    /**
      Is Search stops instead of wrapping Immutable
    */
    static
    bool isSearchNoWrapImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchNoWrap" ) );
    }

    /**
      Get Item object corresponding to SearchNoWrap()
    */
    ItemBool *searchNoWrapItem()
    {
      return mSearchNoWrapItem;
    }

    /**
      Set Control whether child cgroups are created for individual tabs
    */
    static
    void setEnableMemoryMonitoring( bool v )
    {
      if (!self()->isEnableMemoryMonitoringImmutable())
        self()->mEnableMemoryMonitoring = v;
    }

    /**
      Get Control whether child cgroups are created for individual tabs
    */
    static
    bool enableMemoryMonitoring()
    {
      return self()->mEnableMemoryMonitoring;
    }

    /**
      Is Control whether child cgroups are created for individual tabs Immutable
    */
    static
    bool isEnableMemoryMonitoringImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EnableMemoryMonitoring" ) );
    }

    /**
      Get Item object corresponding to EnableMemoryMonitoring()
    */
    ItemBool *enableMemoryMonitoringItem()
    {
      return mEnableMemoryMonitoringItem;
    }

    /**
      Set Determines the memory consumption level above which throttling will start
    */
    static
    void setMemoryLimitValue( int v )
    {
      if (!self()->isMemoryLimitValueImmutable())
        self()->mMemoryLimitValue = v;
    }

    /**
      Get Determines the memory consumption level above which throttling will start
    */
    static
    int memoryLimitValue()
    {
      return self()->mMemoryLimitValue;
    }

    /**
      Is Determines the memory consumption level above which throttling will start Immutable
    */
    static
    bool isMemoryLimitValueImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MemoryLimitValue" ) );
    }

    /**
      Get Item object corresponding to MemoryLimitValue()
    */
    ItemInt *memoryLimitValueItem()
    {
      return mMemoryLimitValueItem;
    }

    /**
      Set Control the visibility of the whole tab bar
    */
    static
    void setSplitViewVisibility( int v )
    {
      if (!self()->isSplitViewVisibilityImmutable())
        self()->mSplitViewVisibility = v;
    }

    /**
      Get Control the visibility of the whole tab bar
    */
    static
    int splitViewVisibility()
    {
      return self()->mSplitViewVisibility;
    }

    /**
      Is Control the visibility of the whole tab bar Immutable
    */
    static
    bool isSplitViewVisibilityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SplitViewVisibility" ) );
    }

    /**
      Get Item object corresponding to SplitViewVisibility()
    */
    ItemEnum *splitViewVisibilityItem()
    {
      return mSplitViewVisibilityItem;
    }

    /**
      Set Control the size of the handle between panels
    */
    static
    void setSplitDragHandleSize( int v )
    {
      if (!self()->isSplitDragHandleSizeImmutable())
        self()->mSplitDragHandleSize = v;
    }

    /**
      Get Control the size of the handle between panels
    */
    static
    int splitDragHandleSize()
    {
      return self()->mSplitDragHandleSize;
    }

    /**
      Is Control the size of the handle between panels Immutable
    */
    static
    bool isSplitDragHandleSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SplitDragHandleSize" ) );
    }

    /**
      Get Item object corresponding to SplitDragHandleSize()
    */
    ItemEnum *splitDragHandleSizeItem()
    {
      return mSplitDragHandleSizeItem;
    }

    /**
      Set Control the visibility of the whole tab bar
    */
    static
    void setTabBarVisibility( int v )
    {
      if (!self()->isTabBarVisibilityImmutable())
        self()->mTabBarVisibility = v;
    }

    /**
      Get Control the visibility of the whole tab bar
    */
    static
    int tabBarVisibility()
    {
      return self()->mTabBarVisibility;
    }

    /**
      Is Control the visibility of the whole tab bar Immutable
    */
    static
    bool isTabBarVisibilityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabBarVisibility" ) );
    }

    /**
      Get Item object corresponding to TabBarVisibility()
    */
    ItemEnum *tabBarVisibilityItem()
    {
      return mTabBarVisibilityItem;
    }

    /**
      Set Control the position of the tab bar
    */
    static
    void setTabBarPosition( int v )
    {
      if (!self()->isTabBarPositionImmutable())
        self()->mTabBarPosition = v;
    }

    /**
      Get Control the position of the tab bar
    */
    static
    int tabBarPosition()
    {
      return self()->mTabBarPosition;
    }

    /**
      Is Control the position of the tab bar Immutable
    */
    static
    bool isTabBarPositionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabBarPosition" ) );
    }

    /**
      Get Item object corresponding to TabBarPosition()
    */
    ItemEnum *tabBarPositionItem()
    {
      return mTabBarPositionItem;
    }

    /**
      Set Control the visual style of the tab bar
    */
    static
    void setTabBarStyleSheet( const QString & v )
    {
      if (!self()->isTabBarStyleSheetImmutable())
        self()->mTabBarStyleSheet = v;
    }

    /**
      Get Control the visual style of the tab bar
    */
    static
    QString tabBarStyleSheet()
    {
      return self()->mTabBarStyleSheet;
    }

    /**
      Is Control the visual style of the tab bar Immutable
    */
    static
    bool isTabBarStyleSheetImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabBarStyleSheet" ) );
    }

    /**
      Get Item object corresponding to TabBarStyleSheet()
    */
    ItemString *tabBarStyleSheetItem()
    {
      return mTabBarStyleSheetItem;
    }

    /**
      Set Use a user-defined .css file for the tab bar
    */
    static
    void setTabBarUseUserStyleSheet( bool v )
    {
      if (!self()->isTabBarUseUserStyleSheetImmutable())
        self()->mTabBarUseUserStyleSheet = v;
    }

    /**
      Get Use a user-defined .css file for the tab bar
    */
    static
    bool tabBarUseUserStyleSheet()
    {
      return self()->mTabBarUseUserStyleSheet;
    }

    /**
      Is Use a user-defined .css file for the tab bar Immutable
    */
    static
    bool isTabBarUseUserStyleSheetImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabBarUseUserStyleSheet" ) );
    }

    /**
      Get Item object corresponding to TabBarUseUserStyleSheet()
    */
    ItemBool *tabBarUseUserStyleSheetItem()
    {
      return mTabBarUseUserStyleSheetItem;
    }

    /**
      Set The .css file to use for the tab bar style
    */
    static
    void setTabBarUserStyleSheetFile( const QUrl & v )
    {
      if (!self()->isTabBarUserStyleSheetFileImmutable())
        self()->mTabBarUserStyleSheetFile = v;
    }

    /**
      Get The .css file to use for the tab bar style
    */
    static
    QUrl tabBarUserStyleSheetFile()
    {
      return self()->mTabBarUserStyleSheetFile;
    }

    /**
      Is The .css file to use for the tab bar style Immutable
    */
    static
    bool isTabBarUserStyleSheetFileImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabBarUserStyleSheetFile" ) );
    }

    /**
      Get Item object corresponding to TabBarUserStyleSheetFile()
    */
    ItemUrl *tabBarUserStyleSheetFileItem()
    {
      return mTabBarUserStyleSheetFileItem;
    }

    /**
      Set Allow middle-clicking on open tabs to close them
    */
    static
    void setCloseTabOnMiddleMouseButton( bool v )
    {
      if (!self()->isCloseTabOnMiddleMouseButtonImmutable())
        self()->mCloseTabOnMiddleMouseButton = v;
    }

    /**
      Get Allow middle-clicking on open tabs to close them
    */
    static
    bool closeTabOnMiddleMouseButton()
    {
      return self()->mCloseTabOnMiddleMouseButton;
    }

    /**
      Is Allow middle-clicking on open tabs to close them Immutable
    */
    static
    bool isCloseTabOnMiddleMouseButtonImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CloseTabOnMiddleMouseButton" ) );
    }

    /**
      Get Item object corresponding to CloseTabOnMiddleMouseButton()
    */
    ItemBool *closeTabOnMiddleMouseButtonItem()
    {
      return mCloseTabOnMiddleMouseButtonItem;
    }

    /**
      Set Control the visibility of 'New Tab' button on the tab bar
    */
    static
    void setNewTabButton( bool v )
    {
      if (!self()->isNewTabButtonImmutable())
        self()->mNewTabButton = v;
    }

    /**
      Get Control the visibility of 'New Tab' button on the tab bar
    */
    static
    bool newTabButton()
    {
      return self()->mNewTabButton;
    }

    /**
      Is Control the visibility of 'New Tab' button on the tab bar Immutable
    */
    static
    bool isNewTabButtonImmutable()
    {
      return self()->isImmutable( QStringLiteral( "NewTabButton" ) );
    }

    /**
      Get Item object corresponding to NewTabButton()
    */
    ItemBool *newTabButtonItem()
    {
      return mNewTabButtonItem;
    }

    /**
      Set Control the visibility of 'Search Tabs' button on the tab bar
    */
    static
    void setSearchTabsButton( int v )
    {
      if (!self()->isSearchTabsButtonImmutable())
        self()->mSearchTabsButton = v;
    }

    /**
      Get Control the visibility of 'Search Tabs' button on the tab bar
    */
    static
    int searchTabsButton()
    {
      return self()->mSearchTabsButton;
    }

    /**
      Is Control the visibility of 'Search Tabs' button on the tab bar Immutable
    */
    static
    bool isSearchTabsButtonImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SearchTabsButton" ) );
    }

    /**
      Get Item object corresponding to SearchTabsButton()
    */
    ItemEnum *searchTabsButtonItem()
    {
      return mSearchTabsButtonItem;
    }

    /**
      Set Control where the "Close tab" button will be displayed
    */
    static
    void setCloseTabButton( int v )
    {
      if (!self()->isCloseTabButtonImmutable())
        self()->mCloseTabButton = v;
    }

    /**
      Get Control where the "Close tab" button will be displayed
    */
    static
    int closeTabButton()
    {
      return self()->mCloseTabButton;
    }

    /**
      Is Control where the "Close tab" button will be displayed Immutable
    */
    static
    bool isCloseTabButtonImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CloseTabButton" ) );
    }

    /**
      Get Item object corresponding to CloseTabButton()
    */
    ItemEnum *closeTabButtonItem()
    {
      return mCloseTabButtonItem;
    }

    /**
      Set Control where to put the new tab
    */
    static
    void setNewTabBehavior( int v )
    {
      if (!self()->isNewTabBehaviorImmutable())
        self()->mNewTabBehavior = v;
    }

    /**
      Get Control where to put the new tab
    */
    static
    int newTabBehavior()
    {
      return self()->mNewTabBehavior;
    }

    /**
      Is Control where to put the new tab Immutable
    */
    static
    bool isNewTabBehaviorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "NewTabBehavior" ) );
    }

    /**
      Get Item object corresponding to NewTabBehavior()
    */
    ItemEnum *newTabBehaviorItem()
    {
      return mNewTabBehaviorItem;
    }

    /**
      Set Expand the tab widths
    */
    static
    void setExpandTabWidth( bool v )
    {
      if (!self()->isExpandTabWidthImmutable())
        self()->mExpandTabWidth = v;
    }

    /**
      Get Expand the tab widths
    */
    static
    bool expandTabWidth()
    {
      return self()->mExpandTabWidth;
    }

    /**
      Is Expand the tab widths Immutable
    */
    static
    bool isExpandTabWidthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ExpandTabWidth" ) );
    }

    /**
      Get Item object corresponding to ExpandTabWidth()
    */
    ItemBool *expandTabWidthItem()
    {
      return mExpandTabWidthItem;
    }

    /**
      Set Printer &friendly mode (black text, no background)
    */
    static
    void setPrinterFriendly( bool v )
    {
      if (!self()->isPrinterFriendlyImmutable())
        self()->mPrinterFriendly = v;
    }

    /**
      Get Printer &friendly mode (black text, no background)
    */
    static
    bool printerFriendly()
    {
      return self()->mPrinterFriendly;
    }

    /**
      Is Printer &friendly mode (black text, no background) Immutable
    */
    static
    bool isPrinterFriendlyImmutable()
    {
      return self()->isImmutable( QStringLiteral( "PrinterFriendly" ) );
    }

    /**
      Get Item object corresponding to PrinterFriendly()
    */
    ItemBool *printerFriendlyItem()
    {
      return mPrinterFriendlyItem;
    }

    /**
      Set &Scale output
    */
    static
    void setScaleOutput( bool v )
    {
      if (!self()->isScaleOutputImmutable())
        self()->mScaleOutput = v;
    }

    /**
      Get &Scale output
    */
    static
    bool scaleOutput()
    {
      return self()->mScaleOutput;
    }

    /**
      Is &Scale output Immutable
    */
    static
    bool isScaleOutputImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ScaleOutput" ) );
    }

    /**
      Get Item object corresponding to ScaleOutput()
    */
    ItemBool *scaleOutputItem()
    {
      return mScaleOutputItem;
    }

    /**
      Set For scrollback files, use system-wide folder location
    */
    static
    void setScrollbackUseSystemLocation( bool v )
    {
      if (!self()->isScrollbackUseSystemLocationImmutable())
        self()->mScrollbackUseSystemLocation = v;
    }

    /**
      Get For scrollback files, use system-wide folder location
    */
    static
    bool scrollbackUseSystemLocation()
    {
      return self()->mScrollbackUseSystemLocation;
    }

    /**
      Is For scrollback files, use system-wide folder location Immutable
    */
    static
    bool isScrollbackUseSystemLocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "scrollbackUseSystemLocation" ) );
    }

    /**
      Get Item object corresponding to scrollbackUseSystemLocation()
    */
    ItemBool *scrollbackUseSystemLocationItem()
    {
      return mScrollbackUseSystemLocationItem;
    }

    /**
      Set For scrollback files, use user's specific folder location
    */
    static
    void setScrollbackUseCacheLocation( bool v )
    {
      if (!self()->isScrollbackUseCacheLocationImmutable())
        self()->mScrollbackUseCacheLocation = v;
    }

    /**
      Get For scrollback files, use user's specific folder location
    */
    static
    bool scrollbackUseCacheLocation()
    {
      return self()->mScrollbackUseCacheLocation;
    }

    /**
      Is For scrollback files, use user's specific folder location Immutable
    */
    static
    bool isScrollbackUseCacheLocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "scrollbackUseCacheLocation" ) );
    }

    /**
      Get Item object corresponding to scrollbackUseCacheLocation()
    */
    ItemBool *scrollbackUseCacheLocationItem()
    {
      return mScrollbackUseCacheLocationItem;
    }

    /**
      Set For scrollback files, use specified folder location
    */
    static
    void setScrollbackUseSpecifiedLocation( bool v )
    {
      if (!self()->isScrollbackUseSpecifiedLocationImmutable())
        self()->mScrollbackUseSpecifiedLocation = v;
    }

    /**
      Get For scrollback files, use specified folder location
    */
    static
    bool scrollbackUseSpecifiedLocation()
    {
      return self()->mScrollbackUseSpecifiedLocation;
    }

    /**
      Is For scrollback files, use specified folder location Immutable
    */
    static
    bool isScrollbackUseSpecifiedLocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "scrollbackUseSpecifiedLocation" ) );
    }

    /**
      Get Item object corresponding to scrollbackUseSpecifiedLocation()
    */
    ItemBool *scrollbackUseSpecifiedLocationItem()
    {
      return mScrollbackUseSpecifiedLocationItem;
    }

    /**
      Set For scrollback files, use this folder
    */
    static
    void setScrollbackUseSpecifiedLocationDirectory( const QUrl & v )
    {
      if (!self()->isScrollbackUseSpecifiedLocationDirectoryImmutable())
        self()->mScrollbackUseSpecifiedLocationDirectory = v;
    }

    /**
      Get For scrollback files, use this folder
    */
    static
    QUrl scrollbackUseSpecifiedLocationDirectory()
    {
      return self()->mScrollbackUseSpecifiedLocationDirectory;
    }

    /**
      Is For scrollback files, use this folder Immutable
    */
    static
    bool isScrollbackUseSpecifiedLocationDirectoryImmutable()
    {
      return self()->isImmutable( QStringLiteral( "scrollbackUseSpecifiedLocationDirectory" ) );
    }

    /**
      Get Item object corresponding to scrollbackUseSpecifiedLocationDirectory()
    */
    ItemUrl *scrollbackUseSpecifiedLocationDirectoryItem()
    {
      return mScrollbackUseSpecifiedLocationDirectoryItem;
    }

    /**
      Set Sync profile with system theme
    */
    static
    void setSyncProfileWithSystemTheme( bool v )
    {
      if (!self()->isSyncProfileWithSystemThemeImmutable())
        self()->mSyncProfileWithSystemTheme = v;
    }

    /**
      Get Sync profile with system theme
    */
    static
    bool syncProfileWithSystemTheme()
    {
      return self()->mSyncProfileWithSystemTheme;
    }

    /**
      Is Sync profile with system theme Immutable
    */
    static
    bool isSyncProfileWithSystemThemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SyncProfileWithSystemTheme" ) );
    }

    /**
      Get Item object corresponding to SyncProfileWithSystemTheme()
    */
    ItemBool *syncProfileWithSystemThemeItem()
    {
      return mSyncProfileWithSystemThemeItem;
    }

    /**
      Set Profile to use for light system theme
    */
    static
    void setLightThemeProfile( const QString & v )
    {
      if (!self()->isLightThemeProfileImmutable())
        self()->mLightThemeProfile = v;
    }

    /**
      Get Profile to use for light system theme
    */
    static
    QString lightThemeProfile()
    {
      return self()->mLightThemeProfile;
    }

    /**
      Is Profile to use for light system theme Immutable
    */
    static
    bool isLightThemeProfileImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LightThemeProfile" ) );
    }

    /**
      Get Item object corresponding to LightThemeProfile()
    */
    ItemString *lightThemeProfileItem()
    {
      return mLightThemeProfileItem;
    }

    /**
      Set Profile to use for dark system theme
    */
    static
    void setDarkThemeProfile( const QString & v )
    {
      if (!self()->isDarkThemeProfileImmutable())
        self()->mDarkThemeProfile = v;
    }

    /**
      Get Profile to use for dark system theme
    */
    static
    QString darkThemeProfile()
    {
      return self()->mDarkThemeProfile;
    }

    /**
      Is Profile to use for dark system theme Immutable
    */
    static
    bool isDarkThemeProfileImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DarkThemeProfile" ) );
    }

    /**
      Get Item object corresponding to DarkThemeProfile()
    */
    ItemString *darkThemeProfileItem()
    {
      return mDarkThemeProfileItem;
    }

  protected:
    KonsoleSettings();
    friend class KonsoleSettingsHelper;


    // KonsoleWindow
    bool mRemoveWindowTitleBarAndFrame;
    bool mFocusFollowsMouse;
    bool mShowWindowTitleOnTitleBar;
    bool mAllowMenuAccelerators;
    bool mRememberWindowSize;
    bool mUseSingleInstance;
    bool mForceNewTabs;
    bool mShowProgressInTaskBar;
    bool mEnableSecuritySensitiveDBusAPI;
    bool mListenForZModemTerminalCodes;

    // ThumbnailsSettings
    bool mEnableThumbnails;
    int mThumbnailSize;
    bool mThumbnailShift;
    bool mThumbnailAlt;
    bool mThumbnailCtrl;

    // SearchSettings
    bool mSearchCaseSensitive;
    bool mSearchRegExpression;
    bool mSearchHighlightMatches;
    bool mSearchReverseSearch;
    bool mSearchNoWrap;

    // MemorySettings
    bool mEnableMemoryMonitoring;
    int mMemoryLimitValue;

    // SplitView
    int mSplitViewVisibility;
    int mSplitDragHandleSize;

    // TabBar
    int mTabBarVisibility;
    int mTabBarPosition;
    QString mTabBarStyleSheet;
    bool mTabBarUseUserStyleSheet;
    QUrl mTabBarUserStyleSheetFile;
    bool mCloseTabOnMiddleMouseButton;
    bool mNewTabButton;
    int mSearchTabsButton;
    int mCloseTabButton;
    int mNewTabBehavior;
    bool mExpandTabWidth;

    // PrintOptions
    bool mPrinterFriendly;
    bool mScaleOutput;

    // FileLocation
    bool mScrollbackUseSystemLocation;
    bool mScrollbackUseCacheLocation;
    bool mScrollbackUseSpecifiedLocation;
    QUrl mScrollbackUseSpecifiedLocationDirectory;

    // LightDarkTheme
    bool mSyncProfileWithSystemTheme;
    QString mLightThemeProfile;
    QString mDarkThemeProfile;

  private:
    ItemBool *mRemoveWindowTitleBarAndFrameItem;
    ItemBool *mFocusFollowsMouseItem;
    ItemBool *mShowWindowTitleOnTitleBarItem;
    ItemBool *mAllowMenuAcceleratorsItem;
    ItemBool *mRememberWindowSizeItem;
    ItemBool *mUseSingleInstanceItem;
    ItemBool *mForceNewTabsItem;
    ItemBool *mShowProgressInTaskBarItem;
    ItemBool *mEnableSecuritySensitiveDBusAPIItem;
    ItemBool *mListenForZModemTerminalCodesItem;
    ItemBool *mEnableThumbnailsItem;
    ItemInt *mThumbnailSizeItem;
    ItemBool *mThumbnailShiftItem;
    ItemBool *mThumbnailAltItem;
    ItemBool *mThumbnailCtrlItem;
    ItemBool *mSearchCaseSensitiveItem;
    ItemBool *mSearchRegExpressionItem;
    ItemBool *mSearchHighlightMatchesItem;
    ItemBool *mSearchReverseSearchItem;
    ItemBool *mSearchNoWrapItem;
    ItemBool *mEnableMemoryMonitoringItem;
    ItemInt *mMemoryLimitValueItem;
    ItemEnum *mSplitViewVisibilityItem;
    ItemEnum *mSplitDragHandleSizeItem;
    ItemEnum *mTabBarVisibilityItem;
    ItemEnum *mTabBarPositionItem;
    ItemString *mTabBarStyleSheetItem;
    ItemBool *mTabBarUseUserStyleSheetItem;
    ItemUrl *mTabBarUserStyleSheetFileItem;
    ItemBool *mCloseTabOnMiddleMouseButtonItem;
    ItemBool *mNewTabButtonItem;
    ItemEnum *mSearchTabsButtonItem;
    ItemEnum *mCloseTabButtonItem;
    ItemEnum *mNewTabBehaviorItem;
    ItemBool *mExpandTabWidthItem;
    ItemBool *mPrinterFriendlyItem;
    ItemBool *mScaleOutputItem;
    ItemBool *mScrollbackUseSystemLocationItem;
    ItemBool *mScrollbackUseCacheLocationItem;
    ItemBool *mScrollbackUseSpecifiedLocationItem;
    ItemUrl *mScrollbackUseSpecifiedLocationDirectoryItem;
    ItemBool *mSyncProfileWithSystemThemeItem;
    ItemString *mLightThemeProfileItem;
    ItemString *mDarkThemeProfileItem;
};

}

#endif

