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

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

#include <fs/filesystem.h>
#include <util/capacity.h>

class Config : public KConfigSkeleton
{
  public:
    class EnumFileSystem
    {
      public:
      enum type { Unknown, Extended, Ext2, Ext3, Ext4, LinuxSwap, Fat16, Fat32, Ntfs, ReiserFS, Reiser4, Xfs, Jfs, Hfs, HfsPlus, Ufs, Unformatted, Btrfs, Hpfs, Luks, Ocfs2, Zfs, Exfat, Nilfs2, Lvm2_PV, F2fs, Udf, Iso9660, Luks2, Fat12, LinuxRaidMember, BitLocker, Apfs, Minix, Bcachefs, COUNT };
      static const char* const enumToString[];
    };
    class EnumPreferredUnit
    {
      public:
      enum type { Byte, KiB, MiB, GiB, TiB, PiB, EiB, COUNT };
    };
    class EnumShredSource
    {
      public:
      enum type { random, zeros, COUNT };
    };

    static Config *self();
    static void instance(const QString& cfgfilename);
    static void instance(KSharedConfig::Ptr config);
    ~Config() override;

    /**
      Set treePartitionColumnWidths
    */
    static
    void setTreePartitionColumnWidths( const QList<int> & v )
    {
      if (!self()->isTreePartitionColumnWidthsImmutable())
        self()->mTreePartitionColumnWidths = v;
    }

    /**
      Get treePartitionColumnWidths
    */
    static
    QList<int> treePartitionColumnWidths()
    {
      return self()->mTreePartitionColumnWidths;
    }

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

    /**
      Get Item object corresponding to treePartitionColumnWidths()
    */
    ItemIntList *treePartitionColumnWidthsItem()
    {
      return mTreePartitionColumnWidthsItem;
    }

    /**
      Set treePartitionColumnPositions
    */
    static
    void setTreePartitionColumnPositions( const QList<int> & v )
    {
      if (!self()->isTreePartitionColumnPositionsImmutable())
        self()->mTreePartitionColumnPositions = v;
    }

    /**
      Get treePartitionColumnPositions
    */
    static
    QList<int> treePartitionColumnPositions()
    {
      return self()->mTreePartitionColumnPositions;
    }

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

    /**
      Get Item object corresponding to treePartitionColumnPositions()
    */
    ItemIntList *treePartitionColumnPositionsItem()
    {
      return mTreePartitionColumnPositionsItem;
    }

    /**
      Set treePartitionColumnVisible
    */
    static
    void setTreePartitionColumnVisible( const QList<int> & v )
    {
      if (!self()->isTreePartitionColumnVisibleImmutable())
        self()->mTreePartitionColumnVisible = v;
    }

    /**
      Get treePartitionColumnVisible
    */
    static
    QList<int> treePartitionColumnVisible()
    {
      return self()->mTreePartitionColumnVisible;
    }

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

    /**
      Get Item object corresponding to treePartitionColumnVisible()
    */
    ItemIntList *treePartitionColumnVisibleItem()
    {
      return mTreePartitionColumnVisibleItem;
    }

    /**
      Set treeLogColumnWidths
    */
    static
    void setTreeLogColumnWidths( const QList<int> & v )
    {
      if (!self()->isTreeLogColumnWidthsImmutable())
        self()->mTreeLogColumnWidths = v;
    }

    /**
      Get treeLogColumnWidths
    */
    static
    QList<int> treeLogColumnWidths()
    {
      return self()->mTreeLogColumnWidths;
    }

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

    /**
      Get Item object corresponding to treeLogColumnWidths()
    */
    ItemIntList *treeLogColumnWidthsItem()
    {
      return mTreeLogColumnWidthsItem;
    }

    /**
      Set treeLogColumnPositions
    */
    static
    void setTreeLogColumnPositions( const QList<int> & v )
    {
      if (!self()->isTreeLogColumnPositionsImmutable())
        self()->mTreeLogColumnPositions = v;
    }

    /**
      Get treeLogColumnPositions
    */
    static
    QList<int> treeLogColumnPositions()
    {
      return self()->mTreeLogColumnPositions;
    }

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

    /**
      Get Item object corresponding to treeLogColumnPositions()
    */
    ItemIntList *treeLogColumnPositionsItem()
    {
      return mTreeLogColumnPositionsItem;
    }

    /**
      Set treeLogColumnVisible
    */
    static
    void setTreeLogColumnVisible( const QList<int> & v )
    {
      if (!self()->isTreeLogColumnVisibleImmutable())
        self()->mTreeLogColumnVisible = v;
    }

    /**
      Get treeLogColumnVisible
    */
    static
    QList<int> treeLogColumnVisible()
    {
      return self()->mTreeLogColumnVisible;
    }

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

    /**
      Get Item object corresponding to treeLogColumnVisible()
    */
    ItemIntList *treeLogColumnVisibleItem()
    {
      return mTreeLogColumnVisibleItem;
    }

    /**
      Set treeSmartAttributesColumnWidths
    */
    static
    void setTreeSmartAttributesColumnWidths( const QList<int> & v )
    {
      if (!self()->isTreeSmartAttributesColumnWidthsImmutable())
        self()->mTreeSmartAttributesColumnWidths = v;
    }

    /**
      Get treeSmartAttributesColumnWidths
    */
    static
    QList<int> treeSmartAttributesColumnWidths()
    {
      return self()->mTreeSmartAttributesColumnWidths;
    }

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

    /**
      Get Item object corresponding to treeSmartAttributesColumnWidths()
    */
    ItemIntList *treeSmartAttributesColumnWidthsItem()
    {
      return mTreeSmartAttributesColumnWidthsItem;
    }

    /**
      Set treeSmartAttributesColumnPositions
    */
    static
    void setTreeSmartAttributesColumnPositions( const QList<int> & v )
    {
      if (!self()->isTreeSmartAttributesColumnPositionsImmutable())
        self()->mTreeSmartAttributesColumnPositions = v;
    }

    /**
      Get treeSmartAttributesColumnPositions
    */
    static
    QList<int> treeSmartAttributesColumnPositions()
    {
      return self()->mTreeSmartAttributesColumnPositions;
    }

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

    /**
      Get Item object corresponding to treeSmartAttributesColumnPositions()
    */
    ItemIntList *treeSmartAttributesColumnPositionsItem()
    {
      return mTreeSmartAttributesColumnPositionsItem;
    }

    /**
      Set treeSmartAttributesColumnVisible
    */
    static
    void setTreeSmartAttributesColumnVisible( const QList<int> & v )
    {
      if (!self()->isTreeSmartAttributesColumnVisibleImmutable())
        self()->mTreeSmartAttributesColumnVisible = v;
    }

    /**
      Get treeSmartAttributesColumnVisible
    */
    static
    QList<int> treeSmartAttributesColumnVisible()
    {
      return self()->mTreeSmartAttributesColumnVisible;
    }

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

    /**
      Get Item object corresponding to treeSmartAttributesColumnVisible()
    */
    ItemIntList *treeSmartAttributesColumnVisibleItem()
    {
      return mTreeSmartAttributesColumnVisibleItem;
    }

    /**
      Set Is this the first time KDE Partition Manager is being run?
    */
    static
    void setFirstRun( bool v )
    {
      if (!self()->isFirstRunImmutable())
        self()->mFirstRun = v;
    }

    /**
      Get Is this the first time KDE Partition Manager is being run?
    */
    static
    bool firstRun()
    {
      return self()->mFirstRun;
    }

    /**
      Is Is this the first time KDE Partition Manager is being run? Immutable
    */
    static
    bool isFirstRunImmutable()
    {
      return self()->isImmutable( QStringLiteral( "firstRun" ) );
    }

    /**
      Get Item object corresponding to firstRun()
    */
    ItemBool *firstRunItem()
    {
      return mFirstRunItem;
    }

    /**
      Set Hide log messages below
    */
    static
    void setMinLogLevel( int v )
    {
      if (!self()->isMinLogLevelImmutable())
        self()->mMinLogLevel = v;
    }

    /**
      Get Hide log messages below
    */
    static
    int minLogLevel()
    {
      return self()->mMinLogLevel;
    }

    /**
      Is Hide log messages below Immutable
    */
    static
    bool isMinLogLevelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "minLogLevel" ) );
    }

    /**
      Get Item object corresponding to minLogLevel()
    */
    ItemInt *minLogLevelItem()
    {
      return mMinLogLevelItem;
    }

    /**
      Set Partition sector alignment
    */
    static
    void setSectorAlignment( int v )
    {
      if (!self()->isSectorAlignmentImmutable())
        self()->mSectorAlignment = v;
    }

    /**
      Get Partition sector alignment
    */
    static
    int sectorAlignment()
    {
      return self()->mSectorAlignment;
    }

    /**
      Is Partition sector alignment Immutable
    */
    static
    bool isSectorAlignmentImmutable()
    {
      return self()->isImmutable( QStringLiteral( "sectorAlignment" ) );
    }

    /**
      Get Item object corresponding to sectorAlignment()
    */
    ItemInt *sectorAlignmentItem()
    {
      return mSectorAlignmentItem;
    }

    /**
      Set Align partitions per default
    */
    static
    void setAlignDefault( bool v )
    {
      if (!self()->isAlignDefaultImmutable())
        self()->mAlignDefault = v;
    }

    /**
      Get Align partitions per default
    */
    static
    bool alignDefault()
    {
      return self()->mAlignDefault;
    }

    /**
      Is Align partitions per default Immutable
    */
    static
    bool isAlignDefaultImmutable()
    {
      return self()->isImmutable( QStringLiteral( "alignDefault" ) );
    }

    /**
      Get Item object corresponding to alignDefault()
    */
    ItemBool *alignDefaultItem()
    {
      return mAlignDefaultItem;
    }

    /**
      Set File system colors
    */
    static
    void setFileSystemColorCode( int i, const QColor & v )
    {
      if (!self()->isFileSystemColorCodeImmutable( i ))
        self()->mFileSystemColorCode[i] = v;
    }

    /**
      Get File system colors
    */
    static
    QColor fileSystemColorCode( int i )
    {
      return self()->mFileSystemColorCode[i];
    }

    /**
      Is File system colors Immutable
    */
    static
    bool isFileSystemColorCodeImmutable( int i )
    {
      return self()->isImmutable( QStringLiteral( "fileSystemColorCode%1" ).arg( QLatin1String( EnumFileSystem::enumToString[i] ) ) );
    }

    /**
      Get Item object corresponding to fileSystemColorCode()
    */
    ItemColor *fileSystemColorCodeItem( int i )
    {
      return mFileSystemColorCodeItem[i];
    }

    /**
      Set Show the application's menu bar
    */
    static
    void setShowMenuBar( bool v )
    {
      if (!self()->isShowMenuBarImmutable())
        self()->mShowMenuBar = v;
    }

    /**
      Get Show the application's menu bar
    */
    static
    bool showMenuBar()
    {
      return self()->mShowMenuBar;
    }

    /**
      Is Show the application's menu bar Immutable
    */
    static
    bool isShowMenuBarImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showMenuBar" ) );
    }

    /**
      Get Item object corresponding to showMenuBar()
    */
    ItemBool *showMenuBarItem()
    {
      return mShowMenuBarItem;
    }

    /**
      Set Backend plugin
    */
    static
    void setBackend( const QString & v )
    {
      if (!self()->isBackendImmutable())
        self()->mBackend = v;
    }

    /**
      Get Backend plugin
    */
    static
    QString backend()
    {
      return self()->mBackend;
    }

    /**
      Is Backend plugin Immutable
    */
    static
    bool isBackendImmutable()
    {
      return self()->isImmutable( QStringLiteral( "backend" ) );
    }

    /**
      Get Item object corresponding to backend()
    */
    ItemString *backendItem()
    {
      return mBackendItem;
    }

    /**
      Set defaultFileSystem
    */
    static
    void setDefaultFileSystem( int v )
    {
      if (!self()->isDefaultFileSystemImmutable())
        self()->mDefaultFileSystem = v;
    }

    /**
      Get defaultFileSystem
    */
    static
    int defaultFileSystem()
    {
      return self()->mDefaultFileSystem;
    }

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

    /**
      Get Item object corresponding to defaultFileSystem()
    */
    ItemInt *defaultFileSystemItem()
    {
      return mDefaultFileSystemItem;
    }

    /**
      Set Preferred unit:
    */
    static
    void setPreferredUnit( int v )
    {
      if (!self()->isPreferredUnitImmutable())
        self()->mPreferredUnit = v;
    }

    /**
      Get Preferred unit:
    */
    static
    int preferredUnit()
    {
      return self()->mPreferredUnit;
    }

    /**
      Is Preferred unit: Immutable
    */
    static
    bool isPreferredUnitImmutable()
    {
      return self()->isImmutable( QStringLiteral( "preferredUnit" ) );
    }

    /**
      Get Item object corresponding to preferredUnit()
    */
    ItemEnum *preferredUnitItem()
    {
      return mPreferredUnitItem;
    }

    /**
      Set shredSource
    */
    static
    void setShredSource( int v )
    {
      if (!self()->isShredSourceImmutable())
        self()->mShredSource = v;
    }

    /**
      Get shredSource
    */
    static
    int shredSource()
    {
      return self()->mShredSource;
    }

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

    /**
      Get Item object corresponding to shredSource()
    */
    ItemEnum *shredSourceItem()
    {
      return mShredSourceItem;
    }

    /**
      Set hideDeviceDockWidgetByCmdArgs
    */
    static
    void setHideDeviceDockWidgetByCmdArgs( bool v )
    {
      if (!self()->isHideDeviceDockWidgetByCmdArgsImmutable())
        self()->mHideDeviceDockWidgetByCmdArgs = v;
    }

    /**
      Get hideDeviceDockWidgetByCmdArgs
    */
    static
    bool hideDeviceDockWidgetByCmdArgs()
    {
      return self()->mHideDeviceDockWidgetByCmdArgs;
    }

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

    /**
      Get Item object corresponding to hideDeviceDockWidgetByCmdArgs()
    */
    ItemBool *hideDeviceDockWidgetByCmdArgsItem()
    {
      return mHideDeviceDockWidgetByCmdArgsItem;
    }

  protected:
    Config(KSharedConfig::Ptr config);
    friend class ConfigHelper;


    // KDE Partition Manager
    QList<int> mTreePartitionColumnWidths;
    QList<int> mTreePartitionColumnPositions;
    QList<int> mTreePartitionColumnVisible;
    QList<int> mTreeLogColumnWidths;
    QList<int> mTreeLogColumnPositions;
    QList<int> mTreeLogColumnVisible;
    QList<int> mTreeSmartAttributesColumnWidths;
    QList<int> mTreeSmartAttributesColumnPositions;
    QList<int> mTreeSmartAttributesColumnVisible;
    bool mFirstRun;
    int mMinLogLevel;
    int mSectorAlignment;
    bool mAlignDefault;
    QColor mFileSystemColorCode[35];
    bool mShowMenuBar;
    QString mBackend;
    int mDefaultFileSystem;
    int mPreferredUnit;
    int mShredSource;
    bool mHideDeviceDockWidgetByCmdArgs;

  private:
    ItemIntList *mTreePartitionColumnWidthsItem;
    ItemIntList *mTreePartitionColumnPositionsItem;
    ItemIntList *mTreePartitionColumnVisibleItem;
    ItemIntList *mTreeLogColumnWidthsItem;
    ItemIntList *mTreeLogColumnPositionsItem;
    ItemIntList *mTreeLogColumnVisibleItem;
    ItemIntList *mTreeSmartAttributesColumnWidthsItem;
    ItemIntList *mTreeSmartAttributesColumnPositionsItem;
    ItemIntList *mTreeSmartAttributesColumnVisibleItem;
    ItemBool *mFirstRunItem;
    ItemInt *mMinLogLevelItem;
    ItemInt *mSectorAlignmentItem;
    ItemBool *mAlignDefaultItem;
    ItemColor *mFileSystemColorCodeItem[35];
    ItemBool *mShowMenuBarItem;
    ItemString *mBackendItem;
    ItemInt *mDefaultFileSystemItem;
    ItemEnum *mPreferredUnitItem;
    ItemEnum *mShredSourceItem;
    ItemBool *mHideDeviceDockWidgetByCmdArgsItem;
};

#endif

