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

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

class CameraSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set resolution
    */
    static
    void setResolution( const QSize & v )
    {
      if (v != self()->mResolution && !self()->isResolutionImmutable()) {
        self()->mResolution = v;
        Q_EMIT self()->resolutionChanged();
      }
    }

    Q_PROPERTY(QSize resolution READ resolution WRITE setResolution NOTIFY resolutionChanged)
    Q_PROPERTY(bool isResolutionImmutable READ isResolutionImmutable CONSTANT)
    /**
      Get resolution
    */
    static
    QSize resolution()
    {
      return self()->mResolution;
    }

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

    /**
      Set cameraDeviceId
    */
    static
    void setCameraDeviceId( const QString & v )
    {
      if (v != self()->mCameraDeviceId && !self()->isCameraDeviceIdImmutable()) {
        self()->mCameraDeviceId = v;
        Q_EMIT self()->cameraDeviceIdChanged();
      }
    }

    Q_PROPERTY(QString cameraDeviceId READ cameraDeviceId WRITE setCameraDeviceId NOTIFY cameraDeviceIdChanged)
    Q_PROPERTY(bool isCameraDeviceIdImmutable READ isCameraDeviceIdImmutable CONSTANT)
    /**
      Get cameraDeviceId
    */
    static
    QString cameraDeviceId()
    {
      return self()->mCameraDeviceId;
    }

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

    /**
      Set cameraPosition
    */
    static
    void setCameraPosition( int v )
    {
      if (v != self()->mCameraPosition && !self()->isCameraPositionImmutable()) {
        self()->mCameraPosition = v;
        Q_EMIT self()->cameraPositionChanged();
      }
    }

    Q_PROPERTY(int cameraPosition READ cameraPosition WRITE setCameraPosition NOTIFY cameraPositionChanged)
    Q_PROPERTY(bool isCameraPositionImmutable READ isCameraPositionImmutable CONSTANT)
    /**
      Get cameraPosition
    */
    static
    int cameraPosition()
    {
      return self()->mCameraPosition;
    }

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

    /**
      Set whiteBalanceMode
    */
    static
    void setWhiteBalanceMode( int v )
    {
      if (v != self()->mWhiteBalanceMode && !self()->isWhiteBalanceModeImmutable()) {
        self()->mWhiteBalanceMode = v;
        Q_EMIT self()->whiteBalanceModeChanged();
      }
    }

    Q_PROPERTY(int whiteBalanceMode READ whiteBalanceMode WRITE setWhiteBalanceMode NOTIFY whiteBalanceModeChanged)
    Q_PROPERTY(bool isWhiteBalanceModeImmutable READ isWhiteBalanceModeImmutable CONSTANT)
    /**
      Get whiteBalanceMode
    */
    static
    int whiteBalanceMode()
    {
      return self()->mWhiteBalanceMode;
    }

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

    /**
      Set videoRecordingFps
    */
    static
    void setVideoRecordingFps( int v )
    {
      if (v != self()->mVideoRecordingFps && !self()->isVideoRecordingFpsImmutable()) {
        self()->mVideoRecordingFps = v;
        Q_EMIT self()->videoRecordingFpsChanged();
      }
    }

    Q_PROPERTY(int videoRecordingFps READ videoRecordingFps WRITE setVideoRecordingFps NOTIFY videoRecordingFpsChanged)
    Q_PROPERTY(bool isVideoRecordingFpsImmutable READ isVideoRecordingFpsImmutable CONSTANT)
    Q_PROPERTY(int defaultVideoRecordingFpsValue READ defaultVideoRecordingFpsValue CONSTANT)
    /**
      Get videoRecordingFps
    */
    static
    int videoRecordingFps()
    {
      return self()->mVideoRecordingFps;
    }

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

    /**
      Get videoRecordingFps default value
    */
    static
    int defaultVideoRecordingFpsValue()
    {
        return defaultVideoRecordingFpsValue_helper();
    }

    /**
      Set videoRecordingQuality
    */
    static
    void setVideoRecordingQuality( int v )
    {
      if (v != self()->mVideoRecordingQuality && !self()->isVideoRecordingQualityImmutable()) {
        self()->mVideoRecordingQuality = v;
        Q_EMIT self()->videoRecordingQualityChanged();
      }
    }

    Q_PROPERTY(int videoRecordingQuality READ videoRecordingQuality WRITE setVideoRecordingQuality NOTIFY videoRecordingQualityChanged)
    Q_PROPERTY(bool isVideoRecordingQualityImmutable READ isVideoRecordingQualityImmutable CONSTANT)
    Q_PROPERTY(int defaultVideoRecordingQualityValue READ defaultVideoRecordingQualityValue CONSTANT)
    /**
      Get videoRecordingQuality
    */
    static
    int videoRecordingQuality()
    {
      return self()->mVideoRecordingQuality;
    }

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

    /**
      Get videoRecordingQuality default value
    */
    static
    int defaultVideoRecordingQualityValue()
    {
        return defaultVideoRecordingQualityValue_helper();
    }

    /**
      Set videoResolution
    */
    static
    void setVideoResolution( int v )
    {
      if (v != self()->mVideoResolution && !self()->isVideoResolutionImmutable()) {
        self()->mVideoResolution = v;
        Q_EMIT self()->videoResolutionChanged();
      }
    }

    Q_PROPERTY(int videoResolution READ videoResolution WRITE setVideoResolution NOTIFY videoResolutionChanged)
    Q_PROPERTY(bool isVideoResolutionImmutable READ isVideoResolutionImmutable CONSTANT)
    Q_PROPERTY(int defaultVideoResolutionValue READ defaultVideoResolutionValue CONSTANT)
    /**
      Get videoResolution
    */
    static
    int videoResolution()
    {
      return self()->mVideoResolution;
    }

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

    /**
      Get videoResolution default value
    */
    static
    int defaultVideoResolutionValue()
    {
        return defaultVideoResolutionValue_helper();
    }

    /**
      Set videoCodec
    */
    static
    void setVideoCodec( int v )
    {
      if (v != self()->mVideoCodec && !self()->isVideoCodecImmutable()) {
        self()->mVideoCodec = v;
        Q_EMIT self()->videoCodecChanged();
      }
    }

    Q_PROPERTY(int videoCodec READ videoCodec WRITE setVideoCodec NOTIFY videoCodecChanged)
    Q_PROPERTY(bool isVideoCodecImmutable READ isVideoCodecImmutable CONSTANT)
    Q_PROPERTY(int defaultVideoCodecValue READ defaultVideoCodecValue CONSTANT)
    /**
      Get videoCodec
    */
    static
    int videoCodec()
    {
      return self()->mVideoCodec;
    }

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

    /**
      Get videoCodec default value
    */
    static
    int defaultVideoCodecValue()
    {
        return defaultVideoCodecValue_helper();
    }

    /**
      Set filenamePattern
    */
    static
    void setFilenamePattern( int v )
    {
      if (v != self()->mFilenamePattern && !self()->isFilenamePatternImmutable()) {
        self()->mFilenamePattern = v;
        Q_EMIT self()->filenamePatternChanged();
      }
    }

    Q_PROPERTY(int filenamePattern READ filenamePattern WRITE setFilenamePattern NOTIFY filenamePatternChanged)
    Q_PROPERTY(bool isFilenamePatternImmutable READ isFilenamePatternImmutable CONSTANT)
    Q_PROPERTY(int defaultFilenamePatternValue READ defaultFilenamePatternValue CONSTANT)
    /**
      Get filenamePattern
    */
    static
    int filenamePattern()
    {
      return self()->mFilenamePattern;
    }

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

    /**
      Get filenamePattern default value
    */
    static
    int defaultFilenamePatternValue()
    {
        return defaultFilenamePatternValue_helper();
    }

    /**
      Set outputPath
    */
    static
    void setOutputPath( int v )
    {
      if (v != self()->mOutputPath && !self()->isOutputPathImmutable()) {
        self()->mOutputPath = v;
        Q_EMIT self()->outputPathChanged();
      }
    }

    Q_PROPERTY(int outputPath READ outputPath WRITE setOutputPath NOTIFY outputPathChanged)
    Q_PROPERTY(bool isOutputPathImmutable READ isOutputPathImmutable CONSTANT)
    Q_PROPERTY(int defaultOutputPathValue READ defaultOutputPathValue CONSTANT)
    /**
      Get outputPath
    */
    static
    int outputPath()
    {
      return self()->mOutputPath;
    }

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

    /**
      Get outputPath default value
    */
    static
    int defaultOutputPathValue()
    {
        return defaultOutputPathValue_helper();
    }


    enum {
      signalResolutionChanged = 1,
      signalCameraDeviceIdChanged = 2,
      signalCameraPositionChanged = 3,
      signalWhiteBalanceModeChanged = 4,
      signalVideoRecordingFpsChanged = 5,
      signalVideoRecordingQualityChanged = 6,
      signalVideoResolutionChanged = 7,
      signalVideoCodecChanged = 8,
      signalFilenamePatternChanged = 9,
      signalOutputPathChanged = 10
    };

  Q_SIGNALS:
    void resolutionChanged();

    void cameraDeviceIdChanged();

    void cameraPositionChanged();

    void whiteBalanceModeChanged();

    void videoRecordingFpsChanged();

    void videoRecordingQualityChanged();

    void videoResolutionChanged();

    void videoCodecChanged();

    void filenamePatternChanged();

    void outputPathChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    CameraSettings(QObject *parent = nullptr);
    friend class CameraSettingsHelper;


    // General
    QSize mResolution;
    static QSize defaultResolutionValue_helper();
    QString mCameraDeviceId;
    static QString defaultCameraDeviceIdValue_helper();
    int mCameraPosition;
    static int defaultCameraPositionValue_helper();
    int mWhiteBalanceMode;
    static int defaultWhiteBalanceModeValue_helper();
    int mVideoRecordingFps;
    static int defaultVideoRecordingFpsValue_helper();
    int mVideoRecordingQuality;
    static int defaultVideoRecordingQualityValue_helper();
    int mVideoResolution;
    static int defaultVideoResolutionValue_helper();
    int mVideoCodec;
    static int defaultVideoCodecValue_helper();
    int mFilenamePattern;
    static int defaultFilenamePatternValue_helper();
    int mOutputPath;
    static int defaultOutputPathValue_helper();
};

#endif

