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

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

namespace Konsole {

class KonsoleSettings : public KConfigSkeleton
{
  public:
    enum EnumTabBarVisibility { AlwaysShowTabBar, ShowTabBarWhenNeeded, AlwaysHideTabBar };
    enum EnumTabBarPosition { Top, Bottom };
    enum EnumNewTabBehavior { PutNewTabAtTheEnd, PutNewTabAfterCurrentTab };

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

    /**
      Set Show menubar by default
    */
    static
    void setShowMenuBarByDefault( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowMenuBarByDefault" ) ))
        self()->mShowMenuBarByDefault = v;
    }

    /**
      Get Show menubar by default
    */
    static
    bool showMenuBarByDefault()
    {
      return self()->mShowMenuBarByDefault;
    }

    /**
      Get Item object corresponding to ShowMenuBarByDefault()
    */
    ItemBool *showMenuBarByDefaultItem()
    {
      return mShowMenuBarByDefaultItem;
    }

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

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

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

    /**
      Set Show "- Konsole" on the titlebar
    */
    static
    void setShowAppNameOnTitleBar( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowAppNameOnTitleBar" ) ))
        self()->mShowAppNameOnTitleBar = v;
    }

    /**
      Get Show "- Konsole" on the titlebar
    */
    static
    bool showAppNameOnTitleBar()
    {
      return self()->mShowAppNameOnTitleBar;
    }

    /**
      Get Item object corresponding to ShowAppNameOnTitleBar()
    */
    ItemBool *showAppNameOnTitleBarItem()
    {
      return mShowAppNameOnTitleBarItem;
    }

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

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

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

    /**
      Set Show hint for terminal size after resizing
    */
    static
    void setShowTerminalSizeHint( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowTerminalSizeHint" ) ))
        self()->mShowTerminalSizeHint = v;
    }

    /**
      Get Show hint for terminal size after resizing
    */
    static
    bool showTerminalSizeHint()
    {
      return self()->mShowTerminalSizeHint;
    }

    /**
      Get Item object corresponding to ShowTerminalSizeHint()
    */
    ItemBool *showTerminalSizeHintItem()
    {
      return mShowTerminalSizeHintItem;
    }

    /**
      Set Use current window size on next startup
    */
    static
    void setSaveGeometryOnExit( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "SaveGeometryOnExit" ) ))
        self()->mSaveGeometryOnExit = v;
    }

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

    /**
      Get Item object corresponding to SaveGeometryOnExit()
    */
    ItemBool *saveGeometryOnExitItem()
    {
      return mSaveGeometryOnExitItem;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
      Set Control the visibility of quick buttons on the tab bar
    */
    static
    void setShowQuickButtons( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowQuickButtons" ) ))
        self()->mShowQuickButtons = v;
    }

    /**
      Get Control the visibility of quick buttons on the tab bar
    */
    static
    bool showQuickButtons()
    {
      return self()->mShowQuickButtons;
    }

    /**
      Get Item object corresponding to ShowQuickButtons()
    */
    ItemBool *showQuickButtonsItem()
    {
      return mShowQuickButtonsItem;
    }

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

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

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

    /**
      Set Expand the tab widths (Qt5.9+ uses the full window width)
    */
    static
    void setExpandTabWidth( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ExpandTabWidth" ) ))
        self()->mExpandTabWidth = v;
    }

    /**
      Get Expand the tab widths (Qt5.9+ uses the full window width)
    */
    static
    bool expandTabWidth()
    {
      return self()->mExpandTabWidth;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  protected:
    KonsoleSettings();
    friend class KonsoleSettingsHelper;


    // KonsoleWindow
    bool mShowMenuBarByDefault;
    bool mShowWindowTitleOnTitleBar;
    bool mShowAppNameOnTitleBar;
    bool mAllowMenuAccelerators;
    bool mShowTerminalSizeHint;
    bool mSaveGeometryOnExit;
    bool mUseSingleInstance;

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

    // TabBar
    int mTabBarVisibility;
    int mTabBarPosition;
    QString mTabBarStyleSheet;
    bool mTabBarUseUserStyleSheet;
    QUrl mTabBarUserStyleSheetFile;
    bool mShowQuickButtons;
    int mNewTabBehavior;
    bool mExpandTabWidth;

    // PrintOptions
    bool mPrinterFriendly;
    bool mScaleOutput;

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

  private:
    ItemBool *mShowMenuBarByDefaultItem;
    ItemBool *mShowWindowTitleOnTitleBarItem;
    ItemBool *mShowAppNameOnTitleBarItem;
    ItemBool *mAllowMenuAcceleratorsItem;
    ItemBool *mShowTerminalSizeHintItem;
    ItemBool *mSaveGeometryOnExitItem;
    ItemBool *mUseSingleInstanceItem;
    ItemBool *mSearchCaseSensitiveItem;
    ItemBool *mSearchRegExpressionItem;
    ItemBool *mSearchHighlightMatchesItem;
    ItemBool *mSearchReverseSearchItem;
    ItemEnum *mTabBarVisibilityItem;
    ItemEnum *mTabBarPositionItem;
    ItemString *mTabBarStyleSheetItem;
    ItemBool *mTabBarUseUserStyleSheetItem;
    ItemUrl *mTabBarUserStyleSheetFileItem;
    ItemBool *mShowQuickButtonsItem;
    ItemEnum *mNewTabBehaviorItem;
    ItemBool *mExpandTabWidthItem;
    ItemBool *mPrinterFriendlyItem;
    ItemBool *mScaleOutputItem;
    ItemBool *mScrollbackUseSystemLocationItem;
    ItemBool *mScrollbackUseCacheLocationItem;
    ItemBool *mScrollbackUseSpecifiedLocationItem;
    ItemUrl *mScrollbackUseSpecifiedLocationDirectoryItem;
};

}

#endif

