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

#include <dolphin_export.h>

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

#include <QDir>
#include <QUrl>
#include <KCompletion>

class DOLPHIN_EXPORT GeneralSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:
    class EnumTabStyle
    {
      public:
      enum type { AutoSize, FullWidth, FixedSize, COUNT };
    };
    class EnumCloseSplitViewChoice
    {
      public:
      enum type { ActiveView, InactiveView, RightView, COUNT };
    };
    class EnumShowStatusBar
    {
      public:
      enum type { Small, FullWidth, Disabled, COUNT };
    };
    class EnumSortingChoice
    {
      public:
      enum type { NaturalSorting, CaseInsensitiveSorting, CaseSensitiveSorting, COUNT };
    };

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

    /**
      Set Select Action
    */
    static
    void setDoubleClickViewAction( const QString & v )
    {
      if (!self()->isDoubleClickViewActionImmutable())
        self()->mDoubleClickViewAction = v;
    }

    /**
      Get Select Action
    */
    static
    QString doubleClickViewAction()
    {
      return self()->mDoubleClickViewAction;
    }

    /**
      Is Select Action Immutable
    */
    static
    bool isDoubleClickViewActionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DoubleClickViewAction" ) );
    }

    /**
      Set Custom Action
    */
    static
    void setDoubleClickViewCustomAction( const QString & v )
    {
      if (!self()->isDoubleClickViewCustomActionImmutable())
        self()->mDoubleClickViewCustomAction = v;
    }

    /**
      Get Custom Action
    */
    static
    QString doubleClickViewCustomAction()
    {
      return self()->mDoubleClickViewCustomAction;
    }

    /**
      Is Custom Action Immutable
    */
    static
    bool isDoubleClickViewCustomActionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DoubleClickViewCustomAction" ) );
    }

    /**
      Set Should the URL be editable for the user
    */
    static
    void setEditableUrl( bool v )
    {
      if (!self()->isEditableUrlImmutable())
        self()->mEditableUrl = v;
    }

    /**
      Get Should the URL be editable for the user
    */
    static
    bool editableUrl()
    {
      return self()->mEditableUrl;
    }

    /**
      Is Should the URL be editable for the user Immutable
    */
    static
    bool isEditableUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EditableUrl" ) );
    }

    /**
      Set Text completion mode of the URL Navigator
    */
    static
    void setUrlCompletionMode( int v )
    {
      if (!self()->isUrlCompletionModeImmutable())
        self()->mUrlCompletionMode = v;
    }

    /**
      Get Text completion mode of the URL Navigator
    */
    static
    int urlCompletionMode()
    {
      return self()->mUrlCompletionMode;
    }

    /**
      Is Text completion mode of the URL Navigator Immutable
    */
    static
    bool isUrlCompletionModeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "UrlCompletionMode" ) );
    }

    /**
      Set Should the full path be shown inside the location bar
    */
    static
    void setShowFullPath( bool v )
    {
      if (!self()->isShowFullPathImmutable())
        self()->mShowFullPath = v;
    }

    /**
      Get Should the full path be shown inside the location bar
    */
    static
    bool showFullPath()
    {
      return self()->mShowFullPath;
    }

    /**
      Is Should the full path be shown inside the location bar Immutable
    */
    static
    bool isShowFullPathImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowFullPath" ) );
    }

    /**
      Set Should the full path be shown in the title bar
    */
    static
    void setShowFullPathInTitlebar( bool v )
    {
      if (!self()->isShowFullPathInTitlebarImmutable())
        self()->mShowFullPathInTitlebar = v;
    }

    /**
      Get Should the full path be shown in the title bar
    */
    static
    bool showFullPathInTitlebar()
    {
      return self()->mShowFullPathInTitlebar;
    }

    /**
      Is Should the full path be shown in the title bar Immutable
    */
    static
    bool isShowFullPathInTitlebarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowFullPathInTitlebar" ) );
    }

    /**
      Set Should an externally called folder open in a new tab in an existing Dolphin instance
    */
    static
    void setOpenExternallyCalledFolderInNewTab( bool v )
    {
      if (!self()->isOpenExternallyCalledFolderInNewTabImmutable())
        self()->mOpenExternallyCalledFolderInNewTab = v;
    }

    /**
      Get Should an externally called folder open in a new tab in an existing Dolphin instance
    */
    static
    bool openExternallyCalledFolderInNewTab()
    {
      return self()->mOpenExternallyCalledFolderInNewTab;
    }

    /**
      Is Should an externally called folder open in a new tab in an existing Dolphin instance Immutable
    */
    static
    bool isOpenExternallyCalledFolderInNewTabImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OpenExternallyCalledFolderInNewTab" ) );
    }

    /**
      Set Should the tab bar always be shown, even when there is only one tab
    */
    static
    void setAlwaysShowTabBar( bool v )
    {
      if (v != self()->mAlwaysShowTabBar && !self()->isAlwaysShowTabBarImmutable()) {
        self()->mAlwaysShowTabBar = v;
        self()->mSettingsChanged.insert(signalTabBarChanged);
      }
    }

    /**
      Get Should the tab bar always be shown, even when there is only one tab
    */
    static
    bool alwaysShowTabBar()
    {
      return self()->mAlwaysShowTabBar;
    }

    /**
      Is Should the tab bar always be shown, even when there is only one tab Immutable
    */
    static
    bool isAlwaysShowTabBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AlwaysShowTabBar" ) );
    }

    /**
      Set Should tabs have close buttons
    */
    static
    void setShowCloseButtonOnTabs( bool v )
    {
      if (v != self()->mShowCloseButtonOnTabs && !self()->isShowCloseButtonOnTabsImmutable()) {
        self()->mShowCloseButtonOnTabs = v;
        self()->mSettingsChanged.insert(signalTabBarChanged);
      }
    }

    /**
      Get Should tabs have close buttons
    */
    static
    bool showCloseButtonOnTabs()
    {
      return self()->mShowCloseButtonOnTabs;
    }

    /**
      Is Should tabs have close buttons Immutable
    */
    static
    bool isShowCloseButtonOnTabsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowCloseButtonOnTabs" ) );
    }

    /**
      Set Tab style
    */
    static
    void setTabStyle( int v )
    {
      if (v != self()->mTabStyle && !self()->isTabStyleImmutable()) {
        self()->mTabStyle = v;
        self()->mSettingsChanged.insert(signalTabBarChanged);
      }
    }

    /**
      Get Tab style
    */
    static
    int tabStyle()
    {
      return self()->mTabStyle;
    }

    /**
      Is Tab style Immutable
    */
    static
    bool isTabStyleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TabStyle" ) );
    }

    /**
      Set Internal config version of Dolphin, mainly Used to determine whether an updated version of Dolphin is running, so as to migrate config entries that were removed/renamed ...etc
    */
    static
    void setVersion( int v )
    {
      if (!self()->isVersionImmutable())
        self()->mVersion = v;
    }

    /**
      Get Internal config version of Dolphin, mainly Used to determine whether an updated version of Dolphin is running, so as to migrate config entries that were removed/renamed ...etc
    */
    static
    int version()
    {
      return self()->mVersion;
    }

    /**
      Is Internal config version of Dolphin, mainly Used to determine whether an updated version of Dolphin is running, so as to migrate config entries that were removed/renamed ...etc Immutable
    */
    static
    bool isVersionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Version" ) );
    }

    /**
      Set Have the startup settings been modified (internal setting not shown in the UI)
    */
    static
    void setModifiedStartupSettings( bool v )
    {
      if (!self()->isModifiedStartupSettingsImmutable())
        self()->mModifiedStartupSettings = v;
    }

    /**
      Get Have the startup settings been modified (internal setting not shown in the UI)
    */
    static
    bool modifiedStartupSettings()
    {
      return self()->mModifiedStartupSettings;
    }

    /**
      Is Have the startup settings been modified (internal setting not shown in the UI) Immutable
    */
    static
    bool isModifiedStartupSettingsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ModifiedStartupSettings" ) );
    }

    /**
      Set Home URL
    */
    static
    void setHomeUrl( const QString & v )
    {
      if (!self()->isHomeUrlImmutable())
        self()->mHomeUrl = v;
    }

    /**
      Get Home URL
    */
    static
    QString homeUrl()
    {
      return self()->mHomeUrl;
    }

    /**
      Is Home URL Immutable
    */
    static
    bool isHomeUrlImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HomeUrl" ) );
    }

    /**
      Set Remember open folders and tabs
    */
    static
    void setRememberOpenedTabs( bool v )
    {
      if (!self()->isRememberOpenedTabsImmutable())
        self()->mRememberOpenedTabs = v;
    }

    /**
      Get Remember open folders and tabs
    */
    static
    bool rememberOpenedTabs()
    {
      return self()->mRememberOpenedTabs;
    }

    /**
      Is Remember open folders and tabs Immutable
    */
    static
    bool isRememberOpenedTabsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RememberOpenedTabs" ) );
    }

    /**
      Set Place two views side by side
    */
    static
    void setSplitView( bool v )
    {
      if (v != self()->mSplitView && !self()->isSplitViewImmutable()) {
        self()->mSplitView = v;
        self()->mSettingsChanged.insert(signalSplitViewChanged);
      }
    }

    /**
      Get Place two views side by side
    */
    static
    bool splitView()
    {
      return self()->mSplitView;
    }

    /**
      Is Place two views side by side Immutable
    */
    static
    bool isSplitViewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SplitView" ) );
    }

    /**
      Set Should the filter bar be shown
    */
    static
    void setFilterBar( bool v )
    {
      if (!self()->isFilterBarImmutable())
        self()->mFilterBar = v;
    }

    /**
      Get Should the filter bar be shown
    */
    static
    bool filterBar()
    {
      return self()->mFilterBar;
    }

    /**
      Is Should the filter bar be shown Immutable
    */
    static
    bool isFilterBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "FilterBar" ) );
    }

    /**
      Set Should the view properties be used for all folders
    */
    static
    void setGlobalViewProps( bool v )
    {
      if (!self()->isGlobalViewPropsImmutable())
        self()->mGlobalViewProps = v;
    }

    /**
      Get Should the view properties be used for all folders
    */
    static
    bool globalViewProps()
    {
      return self()->mGlobalViewProps;
    }

    /**
      Is Should the view properties be used for all folders Immutable
    */
    static
    bool isGlobalViewPropsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "GlobalViewProps" ) );
    }

    /**
      Set Browse through archives
    */
    static
    void setBrowseThroughArchives( bool v )
    {
      if (!self()->isBrowseThroughArchivesImmutable())
        self()->mBrowseThroughArchives = v;
    }

    /**
      Get Browse through archives
    */
    static
    bool browseThroughArchives()
    {
      return self()->mBrowseThroughArchives;
    }

    /**
      Is Browse through archives Immutable
    */
    static
    bool isBrowseThroughArchivesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "BrowseThroughArchives" ) );
    }

    /**
      Set Ask for confirmation when closing windows with multiple tabs.
    */
    static
    void setConfirmClosingMultipleTabs( bool v )
    {
      if (!self()->isConfirmClosingMultipleTabsImmutable())
        self()->mConfirmClosingMultipleTabs = v;
    }

    /**
      Get Ask for confirmation when closing windows with multiple tabs.
    */
    static
    bool confirmClosingMultipleTabs()
    {
      return self()->mConfirmClosingMultipleTabs;
    }

    /**
      Is Ask for confirmation when closing windows with multiple tabs. Immutable
    */
    static
    bool isConfirmClosingMultipleTabsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ConfirmClosingMultipleTabs" ) );
    }

    /**
      Set Ask for confirmation when closing windows with a program that is still running in the Terminal panel.
    */
    static
    void setConfirmClosingTerminalRunningProgram( bool v )
    {
      if (!self()->isConfirmClosingTerminalRunningProgramImmutable())
        self()->mConfirmClosingTerminalRunningProgram = v;
    }

    /**
      Get Ask for confirmation when closing windows with a program that is still running in the Terminal panel.
    */
    static
    bool confirmClosingTerminalRunningProgram()
    {
      return self()->mConfirmClosingTerminalRunningProgram;
    }

    /**
      Is Ask for confirmation when closing windows with a program that is still running in the Terminal panel. Immutable
    */
    static
    bool isConfirmClosingTerminalRunningProgramImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ConfirmClosingTerminalRunningProgram" ) );
    }

    /**
      Set Rename single items inline
    */
    static
    void setRenameInline( bool v )
    {
      if (!self()->isRenameInlineImmutable())
        self()->mRenameInline = v;
    }

    /**
      Get Rename single items inline
    */
    static
    bool renameInline()
    {
      return self()->mRenameInline;
    }

    /**
      Is Rename single items inline Immutable
    */
    static
    bool isRenameInlineImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RenameInline" ) );
    }

    /**
      Set Show selection toggle
    */
    static
    void setShowSelectionToggle( bool v )
    {
      if (!self()->isShowSelectionToggleImmutable())
        self()->mShowSelectionToggle = v;
    }

    /**
      Get Show selection toggle
    */
    static
    bool showSelectionToggle()
    {
      return self()->mShowSelectionToggle;
    }

    /**
      Is Show selection toggle Immutable
    */
    static
    bool isShowSelectionToggleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowSelectionToggle" ) );
    }

    /**
      Set Show a bar for easy pasting after a cut or copy was done using the selection mode bottom bar.
    */
    static
    void setShowPasteBarAfterCopying( bool v )
    {
      if (!self()->isShowPasteBarAfterCopyingImmutable())
        self()->mShowPasteBarAfterCopying = v;
    }

    /**
      Get Show a bar for easy pasting after a cut or copy was done using the selection mode bottom bar.
    */
    static
    bool showPasteBarAfterCopying()
    {
      return self()->mShowPasteBarAfterCopying;
    }

    /**
      Is Show a bar for easy pasting after a cut or copy was done using the selection mode bottom bar. Immutable
    */
    static
    bool isShowPasteBarAfterCopyingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowPasteBarAfterCopying" ) );
    }

    /**
      Set Close split view
    */
    static
    void setCloseSplitViewChoice( int v )
    {
      if (!self()->isCloseSplitViewChoiceImmutable())
        self()->mCloseSplitViewChoice = v;
    }

    /**
      Get Close split view
    */
    static
    int closeSplitViewChoice()
    {
      return self()->mCloseSplitViewChoice;
    }

    /**
      Is Close split view Immutable
    */
    static
    bool isCloseSplitViewChoiceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CloseSplitViewChoice" ) );
    }

    /**
      Set New tab will be open after last one
    */
    static
    void setOpenNewTabAfterLastTab( bool v )
    {
      if (!self()->isOpenNewTabAfterLastTabImmutable())
        self()->mOpenNewTabAfterLastTab = v;
    }

    /**
      Get New tab will be open after last one
    */
    static
    bool openNewTabAfterLastTab()
    {
      return self()->mOpenNewTabAfterLastTab;
    }

    /**
      Is New tab will be open after last one Immutable
    */
    static
    bool isOpenNewTabAfterLastTabImmutable()
    {
      return self()->isImmutable( QStringLiteral( "OpenNewTabAfterLastTab" ) );
    }

    /**
      Set Show item information on hover
    */
    static
    void setShowToolTips( bool v )
    {
      if (!self()->isShowToolTipsImmutable())
        self()->mShowToolTips = v;
    }

    /**
      Get Show item information on hover
    */
    static
    bool showToolTips()
    {
      return self()->mShowToolTips;
    }

    /**
      Is Show item information on hover Immutable
    */
    static
    bool isShowToolTipsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowToolTips" ) );
    }

    /**
      Set Timestamp since when the view properties are valid
    */
    static
    void setViewPropsTimestamp( const QDateTime & v )
    {
      if (!self()->isViewPropsTimestampImmutable())
        self()->mViewPropsTimestamp = v;
    }

    /**
      Get Timestamp since when the view properties are valid
    */
    static
    QDateTime viewPropsTimestamp()
    {
      return self()->mViewPropsTimestamp;
    }

    /**
      Is Timestamp since when the view properties are valid Immutable
    */
    static
    bool isViewPropsTimestampImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ViewPropsTimestamp" ) );
    }

    /**
      Set Use auto-expanding folders for all view types
    */
    static
    void setAutoExpandFolders( bool v )
    {
      if (!self()->isAutoExpandFoldersImmutable())
        self()->mAutoExpandFolders = v;
    }

    /**
      Get Use auto-expanding folders for all view types
    */
    static
    bool autoExpandFolders()
    {
      return self()->mAutoExpandFolders;
    }

    /**
      Is Use auto-expanding folders for all view types Immutable
    */
    static
    bool isAutoExpandFoldersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AutoExpandFolders" ) );
    }

    /**
      Set Statusbar
    */
    static
    void setShowStatusBar( int v )
    {
      if (v != self()->mShowStatusBar && !self()->isShowStatusBarImmutable()) {
        self()->mShowStatusBar = v;
        self()->mSettingsChanged.insert(signalShowStatusBarChanged);
      }
    }

    /**
      Get Statusbar
    */
    static
    int showStatusBar()
    {
      return self()->mShowStatusBar;
    }

    /**
      Is Statusbar Immutable
    */
    static
    bool isShowStatusBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowStatusBar" ) );
    }

    /**
      Set Show zoom slider in the statusbar
    */
    static
    void setShowZoomSlider( bool v )
    {
      if (!self()->isShowZoomSliderImmutable())
        self()->mShowZoomSlider = v;
    }

    /**
      Get Show zoom slider in the statusbar
    */
    static
    bool showZoomSlider()
    {
      return self()->mShowZoomSlider;
    }

    /**
      Is Show zoom slider in the statusbar Immutable
    */
    static
    bool isShowZoomSliderImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowZoomSlider" ) );
    }

    /**
      Set Lock the layout of the panels
    */
    static
    void setLockPanels( bool v )
    {
      if (!self()->isLockPanelsImmutable())
        self()->mLockPanels = v;
    }

    /**
      Get Lock the layout of the panels
    */
    static
    bool lockPanels()
    {
      return self()->mLockPanels;
    }

    /**
      Is Lock the layout of the panels Immutable
    */
    static
    bool isLockPanelsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LockPanels" ) );
    }

    /**
      Set Enlarge Small Previews
    */
    static
    void setEnlargeSmallPreviews( bool v )
    {
      if (!self()->isEnlargeSmallPreviewsImmutable())
        self()->mEnlargeSmallPreviews = v;
    }

    /**
      Get Enlarge Small Previews
    */
    static
    bool enlargeSmallPreviews()
    {
      return self()->mEnlargeSmallPreviews;
    }

    /**
      Is Enlarge Small Previews Immutable
    */
    static
    bool isEnlargeSmallPreviewsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EnlargeSmallPreviews" ) );
    }

    /**
      Set Choose Natural, Case Sensitive, or Case Insensitive order of sorting the items
    */
    static
    void setSortingChoice( int v )
    {
      if (v != self()->mSortingChoice && !self()->isSortingChoiceImmutable()) {
        self()->mSortingChoice = v;
        self()->mSettingsChanged.insert(signalSortingChoiceChanged);
      }
    }

    /**
      Get Choose Natural, Case Sensitive, or Case Insensitive order of sorting the items
    */
    static
    int sortingChoice()
    {
      return self()->mSortingChoice;
    }

    /**
      Is Choose Natural, Case Sensitive, or Case Insensitive order of sorting the items Immutable
    */
    static
    bool isSortingChoiceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SortingChoice" ) );
    }

    /**
      Set Also hide files with application/x-trash mimetype
    */
    static
    void setHideXTrashFile( bool v )
    {
      if (!self()->isHideXTrashFileImmutable())
        self()->mHideXTrashFile = v;
    }

    /**
      Get Also hide files with application/x-trash mimetype
    */
    static
    bool hideXTrashFile()
    {
      return self()->mHideXTrashFile;
    }

    /**
      Is Also hide files with application/x-trash mimetype Immutable
    */
    static
    bool isHideXTrashFileImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HideXTrashFile" ) );
    }

    /**
      Set Enable dynamic view
    */
    static
    void setDynamicView( bool v )
    {
      if (!self()->isDynamicViewImmutable())
        self()->mDynamicView = v;
    }

    /**
      Get Enable dynamic view
    */
    static
    bool dynamicView()
    {
      return self()->mDynamicView;
    }

    /**
      Is Enable dynamic view Immutable
    */
    static
    bool isDynamicViewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DynamicView" ) );
    }

    /**
      Set Ask for confirmation when opening many folders at once.
    */
    static
    void setConfirmOpenManyFolders( bool v )
    {
      if (!self()->isConfirmOpenManyFoldersImmutable())
        self()->mConfirmOpenManyFolders = v;
    }

    /**
      Get Ask for confirmation when opening many folders at once.
    */
    static
    bool confirmOpenManyFolders()
    {
      return self()->mConfirmOpenManyFolders;
    }

    /**
      Is Ask for confirmation when opening many folders at once. Immutable
    */
    static
    bool isConfirmOpenManyFoldersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ConfirmOpenManyFolders" ) );
    }

    /**
      Set Ask for confirmation when opening many terminals at once.
    */
    static
    void setConfirmOpenManyTerminals( bool v )
    {
      if (!self()->isConfirmOpenManyTerminalsImmutable())
        self()->mConfirmOpenManyTerminals = v;
    }

    /**
      Get Ask for confirmation when opening many terminals at once.
    */
    static
    bool confirmOpenManyTerminals()
    {
      return self()->mConfirmOpenManyTerminals;
    }

    /**
      Is Ask for confirmation when opening many terminals at once. Immutable
    */
    static
    bool isConfirmOpenManyTerminalsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ConfirmOpenManyTerminals" ) );
    }

    /**
      Set Ask for confirmation when renaming file changes its type.
    */
    static
    void setConfirmRenameFileType( bool v )
    {
      if (!self()->isConfirmRenameFileTypeImmutable())
        self()->mConfirmRenameFileType = v;
    }

    /**
      Get Ask for confirmation when renaming file changes its type.
    */
    static
    bool confirmRenameFileType()
    {
      return self()->mConfirmRenameFileType;
    }

    /**
      Is Ask for confirmation when renaming file changes its type. Immutable
    */
    static
    bool isConfirmRenameFileTypeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ConfirmRenameFileType" ) );
    }


    enum {
      signalTabBarChanged = 1,
      signalSortingChoiceChanged = 2,
      signalSplitViewChanged = 3,
      signalShowStatusBarChanged = 4
    };

  Q_SIGNALS:
    void tabBarChanged();

    void sortingChoiceChanged();

    void splitViewChanged();

    void showStatusBarChanged(bool showStatusBar);

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    GeneralSettings();
    friend class GeneralSettingsHelper;

    bool usrSave() override;

    // General
    QString mDoubleClickViewAction;
    QString mDoubleClickViewCustomAction;
    bool mEditableUrl;
    int mUrlCompletionMode;
    bool mShowFullPath;
    bool mShowFullPathInTitlebar;
    bool mOpenExternallyCalledFolderInNewTab;
    bool mAlwaysShowTabBar;
    bool mShowCloseButtonOnTabs;
    int mTabStyle;
    int mVersion;
    bool mModifiedStartupSettings;
    QString mHomeUrl;
    bool mRememberOpenedTabs;
    bool mSplitView;
    bool mFilterBar;
    bool mGlobalViewProps;
    bool mBrowseThroughArchives;
    bool mConfirmClosingMultipleTabs;
    bool mConfirmClosingTerminalRunningProgram;
    bool mRenameInline;
    bool mShowSelectionToggle;
    bool mShowPasteBarAfterCopying;
    int mCloseSplitViewChoice;
    bool mOpenNewTabAfterLastTab;
    bool mShowToolTips;
    QDateTime mViewPropsTimestamp;
    bool mAutoExpandFolders;
    int mShowStatusBar;
    bool mShowZoomSlider;
    bool mLockPanels;
    bool mEnlargeSmallPreviews;
    int mSortingChoice;
    bool mHideXTrashFile;
    bool mDynamicView;

    // Notification Messages
    bool mConfirmOpenManyFolders;
    bool mConfirmOpenManyTerminals;
    bool mConfirmRenameFileType;

  private:
    QSet<quint64> mSettingsChanged;
};

#endif

