// This file is generated by kconfig_compiler_kf6 from kokoconfig.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 <qqmlintegration.h>

#include <qwindow.h>

class QQmlEngine;
class QJSEngine;

class Config : public KConfigSkeleton
{
  Q_OBJECT
  QML_ELEMENT
  QML_SINGLETON
  public:
    class EnumSortBehavior
    {
      public:
      enum type { Natural, AlphabeticalCaseInsensitive, AlphabeticalCaseSensitive, COUNT };
    };
    class EnumImageViewBackgroundColor
    {
      public:
      enum type { Black, White, Theme, Gray, COUNT };
    };

    static Config *self();
    static Config *create(QQmlEngine *, QJSEngine *);
    ~Config() override;

    /**
      Set Initial Run
    */
    static
    void setInitialRun( bool v )
    {
      if (v != self()->mInitialRun && !self()->isInitialRunImmutable()) {
        self()->mInitialRun = v;
        Q_EMIT self()->InitialRunChanged();
      }
    }

    Q_PROPERTY(bool initialRun READ initialRun WRITE setInitialRun NOTIFY InitialRunChanged)
    Q_PROPERTY(bool isInitialRunImmutable READ isInitialRunImmutable CONSTANT)
    Q_PROPERTY(bool defaultInitialRunValue READ defaultInitialRunValue CONSTANT)
    /**
      Get Initial Run
    */
    static
    bool initialRun()
    {
      return self()->mInitialRun;
    }

    /**
      Is Initial Run Immutable
    */
    static
    bool isInitialRunImmutable()
    {
      return self()->isImmutable( QStringLiteral( "InitialRun" ) );
    }

    /**
      Get Initial Run default value
    */
    static
    bool defaultInitialRunValue()
    {
        return defaultInitialRunValue_helper();
    }

    /**
      Set Thumbnail Size
    */
    static
    void setIconSize( int v )
    {
      if (v < 80)
      {
        qDebug() << "setIconSize: value " << v << " is less than the minimum value of 80";
        v = 80;
      }

      if (v > 256)
      {
        qDebug() << "setIconSize: value " << v << " is greater than the maximum value of 256";
        v = 256;
      }

      if (v != self()->mIconSize && !self()->isIconSizeImmutable()) {
        self()->mIconSize = v;
        Q_EMIT self()->IconSizeChanged();
      }
    }

    Q_PROPERTY(int iconSize READ iconSize WRITE setIconSize NOTIFY IconSizeChanged)
    Q_PROPERTY(bool isIconSizeImmutable READ isIconSizeImmutable CONSTANT)
    Q_PROPERTY(int defaultIconSizeValue READ defaultIconSizeValue CONSTANT)
    /**
      Get Thumbnail Size
    */
    static
    int iconSize()
    {
      return self()->mIconSize;
    }

    /**
      Is Thumbnail Size Immutable
    */
    static
    bool isIconSizeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "IconSize" ) );
    }

    /**
      Get Thumbnail Size default value
    */
    static
    int defaultIconSizeValue()
    {
        return defaultIconSizeValue_helper();
    }

    /**
      Set Sorting mode
    */
    static
    void setSortBehavior( int v )
    {
      if (v != self()->mSortBehavior && !self()->isSortBehaviorImmutable()) {
        self()->mSortBehavior = v;
        Q_EMIT self()->SortBehaviorChanged();
      }
    }

    Q_PROPERTY(int sortBehavior READ sortBehavior WRITE setSortBehavior NOTIFY SortBehaviorChanged)
    Q_PROPERTY(bool isSortBehaviorImmutable READ isSortBehaviorImmutable CONSTANT)
    Q_PROPERTY(int defaultSortBehaviorValue READ defaultSortBehaviorValue CONSTANT)
    /**
      Get Sorting mode
    */
    static
    int sortBehavior()
    {
      return self()->mSortBehavior;
    }

    /**
      Is Sorting mode Immutable
    */
    static
    bool isSortBehaviorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SortBehavior" ) );
    }

    /**
      Get Sorting mode default value
    */
    static
    int defaultSortBehaviorValue()
    {
        return defaultSortBehaviorValue_helper();
    }

    /**
      Set Show a thumbnail carousel in image view
    */
    static
    void setImageViewPreview( bool v )
    {
      if (v != self()->mImageViewPreview && !self()->isImageViewPreviewImmutable()) {
        self()->mImageViewPreview = v;
        Q_EMIT self()->ImageViewPreviewChanged();
      }
    }

    Q_PROPERTY(bool imageViewPreview READ imageViewPreview WRITE setImageViewPreview NOTIFY ImageViewPreviewChanged)
    Q_PROPERTY(bool isImageViewPreviewImmutable READ isImageViewPreviewImmutable CONSTANT)
    Q_PROPERTY(bool defaultImageViewPreviewValue READ defaultImageViewPreviewValue CONSTANT)
    /**
      Get Show a thumbnail carousel in image view
    */
    static
    bool imageViewPreview()
    {
      return self()->mImageViewPreview;
    }

    /**
      Is Show a thumbnail carousel in image view Immutable
    */
    static
    bool isImageViewPreviewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ImageViewPreview" ) );
    }

    /**
      Get Show a thumbnail carousel in image view default value
    */
    static
    bool defaultImageViewPreviewValue()
    {
        return defaultImageViewPreviewValue_helper();
    }

    /**
      Set List of saved folders.
    */
    static
    void setSavedFolders( const QStringList & v )
    {
      if (v != self()->mSavedFolders && !self()->isSavedFoldersImmutable()) {
        self()->mSavedFolders = v;
        Q_EMIT self()->SavedFoldersChanged();
      }
    }

    Q_PROPERTY(QStringList savedFolders READ savedFolders WRITE setSavedFolders NOTIFY SavedFoldersChanged)
    Q_PROPERTY(bool isSavedFoldersImmutable READ isSavedFoldersImmutable CONSTANT)
    /**
      Get List of saved folders.
    */
    static
    QStringList savedFolders()
    {
      return self()->mSavedFolders;
    }

    /**
      Is List of saved folders. Immutable
    */
    static
    bool isSavedFoldersImmutable()
    {
      return self()->isImmutable( QStringLiteral( "SavedFolders" ) );
    }

    /**
      Set Background color for image view
    */
    static
    void setImageViewBackgroundColor( int v )
    {
      if (v != self()->mImageViewBackgroundColor && !self()->isImageViewBackgroundColorImmutable()) {
        self()->mImageViewBackgroundColor = v;
        Q_EMIT self()->ImageViewBackgroundColorChanged();
      }
    }

    Q_PROPERTY(int imageViewBackgroundColor READ imageViewBackgroundColor WRITE setImageViewBackgroundColor NOTIFY ImageViewBackgroundColorChanged)
    Q_PROPERTY(bool isImageViewBackgroundColorImmutable READ isImageViewBackgroundColorImmutable CONSTANT)
    Q_PROPERTY(int defaultImageViewBackgroundColorValue READ defaultImageViewBackgroundColorValue CONSTANT)
    /**
      Get Background color for image view
    */
    static
    int imageViewBackgroundColor()
    {
      return self()->mImageViewBackgroundColor;
    }

    /**
      Is Background color for image view Immutable
    */
    static
    bool isImageViewBackgroundColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ImageViewBackgroundColor" ) );
    }

    /**
      Get Background color for image view default value
    */
    static
    int defaultImageViewBackgroundColorValue()
    {
        return defaultImageViewBackgroundColorValue_helper();
    }

    /**
      Set Whether to show a checkerboard background for transparent images
    */
    static
    void setImageViewShowCheckerboard( bool v )
    {
      if (v != self()->mImageViewShowCheckerboard && !self()->isImageViewShowCheckerboardImmutable()) {
        self()->mImageViewShowCheckerboard = v;
        Q_EMIT self()->ImageViewShowCheckerboardChanged();
      }
    }

    Q_PROPERTY(bool imageViewShowCheckerboard READ imageViewShowCheckerboard WRITE setImageViewShowCheckerboard NOTIFY ImageViewShowCheckerboardChanged)
    Q_PROPERTY(bool isImageViewShowCheckerboardImmutable READ isImageViewShowCheckerboardImmutable CONSTANT)
    Q_PROPERTY(bool defaultImageViewShowCheckerboardValue READ defaultImageViewShowCheckerboardValue CONSTANT)
    /**
      Get Whether to show a checkerboard background for transparent images
    */
    static
    bool imageViewShowCheckerboard()
    {
      return self()->mImageViewShowCheckerboard;
    }

    /**
      Is Whether to show a checkerboard background for transparent images Immutable
    */
    static
    bool isImageViewShowCheckerboardImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ImageViewShowCheckerboard" ) );
    }

    /**
      Get Whether to show a checkerboard background for transparent images default value
    */
    static
    bool defaultImageViewShowCheckerboardValue()
    {
        return defaultImageViewShowCheckerboardValue_helper();
    }

    /**
      Set Whether to enlarge images that are smaller than the viewport
    */
    static
    void setEnlargeSmallImages( bool v )
    {
      if (v != self()->mEnlargeSmallImages && !self()->isEnlargeSmallImagesImmutable()) {
        self()->mEnlargeSmallImages = v;
        Q_EMIT self()->EnlargeSmallImagesChanged();
      }
    }

    Q_PROPERTY(bool enlargeSmallImages READ enlargeSmallImages WRITE setEnlargeSmallImages NOTIFY EnlargeSmallImagesChanged)
    Q_PROPERTY(bool isEnlargeSmallImagesImmutable READ isEnlargeSmallImagesImmutable CONSTANT)
    Q_PROPERTY(bool defaultEnlargeSmallImagesValue READ defaultEnlargeSmallImagesValue CONSTANT)
    /**
      Get Whether to enlarge images that are smaller than the viewport
    */
    static
    bool enlargeSmallImages()
    {
      return self()->mEnlargeSmallImages;
    }

    /**
      Is Whether to enlarge images that are smaller than the viewport Immutable
    */
    static
    bool isEnlargeSmallImagesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "EnlargeSmallImages" ) );
    }

    /**
      Get Whether to enlarge images that are smaller than the viewport default value
    */
    static
    bool defaultEnlargeSmallImagesValue()
    {
        return defaultEnlargeSmallImagesValue_helper();
    }

    /**
      Set Whether to remember zoom levels when switching between images
    */
    static
    void setRememberZoom( bool v )
    {
      if (v != self()->mRememberZoom && !self()->isRememberZoomImmutable()) {
        self()->mRememberZoom = v;
        Q_EMIT self()->RememberZoomChanged();
      }
    }

    Q_PROPERTY(bool rememberZoom READ rememberZoom WRITE setRememberZoom NOTIFY RememberZoomChanged)
    Q_PROPERTY(bool isRememberZoomImmutable READ isRememberZoomImmutable CONSTANT)
    Q_PROPERTY(bool defaultRememberZoomValue READ defaultRememberZoomValue CONSTANT)
    /**
      Get Whether to remember zoom levels when switching between images
    */
    static
    bool rememberZoom()
    {
      return self()->mRememberZoom;
    }

    /**
      Is Whether to remember zoom levels when switching between images Immutable
    */
    static
    bool isRememberZoomImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RememberZoom" ) );
    }

    /**
      Get Whether to remember zoom levels when switching between images default value
    */
    static
    bool defaultRememberZoomValue()
    {
        return defaultRememberZoomValue_helper();
    }

    /**
      Set Interval until next image
    */
    static
    void setNextImageInterval( int v )
    {
      if (v != self()->mNextImageInterval && !self()->isNextImageIntervalImmutable()) {
        self()->mNextImageInterval = v;
        Q_EMIT self()->NextImageIntervalChanged();
      }
    }

    Q_PROPERTY(int nextImageInterval READ nextImageInterval WRITE setNextImageInterval NOTIFY NextImageIntervalChanged)
    Q_PROPERTY(bool isNextImageIntervalImmutable READ isNextImageIntervalImmutable CONSTANT)
    Q_PROPERTY(int defaultNextImageIntervalValue READ defaultNextImageIntervalValue CONSTANT)
    /**
      Get Interval until next image
    */
    static
    int nextImageInterval()
    {
      return self()->mNextImageInterval;
    }

    /**
      Is Interval until next image Immutable
    */
    static
    bool isNextImageIntervalImmutable()
    {
      return self()->isImmutable( QStringLiteral( "NextImageInterval" ) );
    }

    /**
      Get Interval until next image default value
    */
    static
    int defaultNextImageIntervalValue()
    {
        return defaultNextImageIntervalValue_helper();
    }

    /**
      Set Loop Slideshow
    */
    static
    void setLoopImages( bool v )
    {
      if (v != self()->mLoopImages && !self()->isLoopImagesImmutable()) {
        self()->mLoopImages = v;
        Q_EMIT self()->LoopImagesChanged();
      }
    }

    Q_PROPERTY(bool loopImages READ loopImages WRITE setLoopImages NOTIFY LoopImagesChanged)
    Q_PROPERTY(bool isLoopImagesImmutable READ isLoopImagesImmutable CONSTANT)
    Q_PROPERTY(bool defaultLoopImagesValue READ defaultLoopImagesValue CONSTANT)
    /**
      Get Loop Slideshow
    */
    static
    bool loopImages()
    {
      return self()->mLoopImages;
    }

    /**
      Is Loop Slideshow Immutable
    */
    static
    bool isLoopImagesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LoopImages" ) );
    }

    /**
      Get Loop Slideshow default value
    */
    static
    bool defaultLoopImagesValue()
    {
        return defaultLoopImagesValue_helper();
    }

    /**
      Set Randomize Slideshow
    */
    static
    void setRandomizeImages( bool v )
    {
      if (v != self()->mRandomizeImages && !self()->isRandomizeImagesImmutable()) {
        self()->mRandomizeImages = v;
        Q_EMIT self()->RandomizeImagesChanged();
      }
    }

    Q_PROPERTY(bool randomizeImages READ randomizeImages WRITE setRandomizeImages NOTIFY RandomizeImagesChanged)
    Q_PROPERTY(bool isRandomizeImagesImmutable READ isRandomizeImagesImmutable CONSTANT)
    Q_PROPERTY(bool defaultRandomizeImagesValue READ defaultRandomizeImagesValue CONSTANT)
    /**
      Get Randomize Slideshow
    */
    static
    bool randomizeImages()
    {
      return self()->mRandomizeImages;
    }

    /**
      Is Randomize Slideshow Immutable
    */
    static
    bool isRandomizeImagesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RandomizeImages" ) );
    }

    /**
      Get Randomize Slideshow default value
    */
    static
    bool defaultRandomizeImagesValue()
    {
        return defaultRandomizeImagesValue_helper();
    }

    /**
      Set Last saved state for QWindow::visibility
    */
    static
    void setVisibility( int v )
    {
      if (v != self()->mVisibility && !self()->isVisibilityImmutable()) {
        self()->mVisibility = v;
        Q_EMIT self()->VisibilityChanged();
      }
    }

    Q_PROPERTY(int visibility READ visibility WRITE setVisibility NOTIFY VisibilityChanged)
    Q_PROPERTY(bool isVisibilityImmutable READ isVisibilityImmutable CONSTANT)
    Q_PROPERTY(int defaultVisibilityValue READ defaultVisibilityValue CONSTANT)
    /**
      Get Last saved state for QWindow::visibility
    */
    static
    int visibility()
    {
      return self()->mVisibility;
    }

    /**
      Is Last saved state for QWindow::visibility Immutable
    */
    static
    bool isVisibilityImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Visibility" ) );
    }

    /**
      Get Last saved state for QWindow::visibility default value
    */
    static
    int defaultVisibilityValue()
    {
        return defaultVisibilityValue_helper();
    }

    /**
      Set Last saved state for Kirigami AbstractApplicationWindow::controlsVisible
    */
    static
    void setControlsVisible( bool v )
    {
      if (v != self()->mControlsVisible && !self()->isControlsVisibleImmutable()) {
        self()->mControlsVisible = v;
        Q_EMIT self()->ControlsVisibleChanged();
      }
    }

    Q_PROPERTY(bool controlsVisible READ controlsVisible WRITE setControlsVisible NOTIFY ControlsVisibleChanged)
    Q_PROPERTY(bool isControlsVisibleImmutable READ isControlsVisibleImmutable CONSTANT)
    Q_PROPERTY(bool defaultControlsVisibleValue READ defaultControlsVisibleValue CONSTANT)
    /**
      Get Last saved state for Kirigami AbstractApplicationWindow::controlsVisible
    */
    static
    bool controlsVisible()
    {
      return self()->mControlsVisible;
    }

    /**
      Is Last saved state for Kirigami AbstractApplicationWindow::controlsVisible Immutable
    */
    static
    bool isControlsVisibleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ControlsVisible" ) );
    }

    /**
      Get Last saved state for Kirigami AbstractApplicationWindow::controlsVisible default value
    */
    static
    bool defaultControlsVisibleValue()
    {
        return defaultControlsVisibleValue_helper();
    }

    /**
      Set List of metadata to display
    */
    static
    void setMetadataToDisplay( const QStringList & v )
    {
      if (v != self()->mMetadataToDisplay && !self()->isMetadataToDisplayImmutable()) {
        self()->mMetadataToDisplay = v;
        Q_EMIT self()->MetadataToDisplayChanged();
      }
    }

    Q_PROPERTY(QStringList metadataToDisplay READ metadataToDisplay WRITE setMetadataToDisplay NOTIFY MetadataToDisplayChanged)
    Q_PROPERTY(bool isMetadataToDisplayImmutable READ isMetadataToDisplayImmutable CONSTANT)
    Q_PROPERTY(QStringList defaultMetadataToDisplayValue READ defaultMetadataToDisplayValue CONSTANT)
    /**
      Get List of metadata to display
    */
    static
    QStringList metadataToDisplay()
    {
      return self()->mMetadataToDisplay;
    }

    /**
      Is List of metadata to display Immutable
    */
    static
    bool isMetadataToDisplayImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MetadataToDisplay" ) );
    }

    /**
      Get List of metadata to display default value
    */
    static
    QStringList defaultMetadataToDisplayValue()
    {
        return defaultMetadataToDisplayValue_helper();
    }


    enum {
      signalInitialRunChanged = 1,
      signalIconSizeChanged = 2,
      signalSortBehaviorChanged = 3,
      signalImageViewPreviewChanged = 4,
      signalSavedFoldersChanged = 5,
      signalImageViewBackgroundColorChanged = 6,
      signalImageViewShowCheckerboardChanged = 7,
      signalEnlargeSmallImagesChanged = 8,
      signalRememberZoomChanged = 9,
      signalNextImageIntervalChanged = 10,
      signalLoopImagesChanged = 11,
      signalRandomizeImagesChanged = 12,
      signalVisibilityChanged = 13,
      signalControlsVisibleChanged = 14,
      signalMetadataToDisplayChanged = 15
    };

  Q_SIGNALS:
    void InitialRunChanged();

    void IconSizeChanged();

    void SortBehaviorChanged();

    void ImageViewPreviewChanged();

    void SavedFoldersChanged();

    void ImageViewBackgroundColorChanged();

    void ImageViewShowCheckerboardChanged();

    void EnlargeSmallImagesChanged();

    void RememberZoomChanged();

    void NextImageIntervalChanged();

    void LoopImagesChanged();

    void RandomizeImagesChanged();

    void VisibilityChanged();

    void ControlsVisibleChanged();

    void MetadataToDisplayChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    Config();
    friend class ConfigHelper;


    // Backend
    bool mInitialRun;
    static bool defaultInitialRunValue_helper();

    // General
    int mIconSize;
    static int defaultIconSizeValue_helper();
    int mSortBehavior;
    static int defaultSortBehaviorValue_helper();
    bool mImageViewPreview;
    static bool defaultImageViewPreviewValue_helper();
    QStringList mSavedFolders;
    static QStringList defaultSavedFoldersValue_helper();
    int mImageViewBackgroundColor;
    static int defaultImageViewBackgroundColorValue_helper();
    bool mImageViewShowCheckerboard;
    static bool defaultImageViewShowCheckerboardValue_helper();
    bool mEnlargeSmallImages;
    static bool defaultEnlargeSmallImagesValue_helper();
    bool mRememberZoom;
    static bool defaultRememberZoomValue_helper();

    // Slideshow
    int mNextImageInterval;
    static int defaultNextImageIntervalValue_helper();
    bool mLoopImages;
    static bool defaultLoopImagesValue_helper();
    bool mRandomizeImages;
    static bool defaultRandomizeImagesValue_helper();

    // WindowState
    int mVisibility;
    static int defaultVisibilityValue_helper();
    bool mControlsVisible;
    static bool defaultControlsVisibleValue_helper();

    // Metadata
    QStringList mMetadataToDisplay;
    static QStringList defaultMetadataToDisplayValue_helper();
};

#endif

