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

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

class Config : public KConfigSkeleton
{
  Q_OBJECT
  public:

    Config( QObject *parent = nullptr );
    ~Config() override;

    /**
      Set The last seen release Plasma version. If empty, the welcome experience is shown.
    */
    void setLastSeenVersion( const QString & v )
    {
      if (v != mLastSeenVersion && !isLastSeenVersionImmutable()) {
        mLastSeenVersion = v;
        Q_EMIT LastSeenVersionChanged();
      }
    }

    Q_PROPERTY(QString lastSeenVersion READ lastSeenVersion WRITE setLastSeenVersion NOTIFY LastSeenVersionChanged)
    Q_PROPERTY(bool isLastSeenVersionImmutable READ isLastSeenVersionImmutable CONSTANT)
    /**
      Get The last seen release Plasma version. If empty, the welcome experience is shown.
    */
    QString lastSeenVersion() const
    {
      return mLastSeenVersion;
    }

    /**
      Is The last seen release Plasma version. If empty, the welcome experience is shown. Immutable
    */
    bool isLastSeenVersionImmutable() const
    {
      return isImmutable( QStringLiteral( "LastSeenVersion" ) );
    }

    /**
      Set Whether to show the live environment experience, for distro installers.
    */
    void setLiveEnvironment( bool v )
    {
      if (v != mLiveEnvironment && !isLiveEnvironmentImmutable()) {
        mLiveEnvironment = v;
        Q_EMIT LiveEnvironmentChanged();
      }
    }

    Q_PROPERTY(bool liveEnvironment READ liveEnvironment WRITE setLiveEnvironment NOTIFY LiveEnvironmentChanged)
    Q_PROPERTY(bool isLiveEnvironmentImmutable READ isLiveEnvironmentImmutable CONSTANT)
    Q_PROPERTY(bool defaultLiveEnvironmentValue READ defaultLiveEnvironmentValue CONSTANT)
    /**
      Get Whether to show the live environment experience, for distro installers.
    */
    bool liveEnvironment() const
    {
      return mLiveEnvironment;
    }

    /**
      Is Whether to show the live environment experience, for distro installers. Immutable
    */
    bool isLiveEnvironmentImmutable() const
    {
      return isImmutable( QStringLiteral( "LiveEnvironment" ) );
    }

    /**
      Get Whether to show the live environment experience, for distro installers. default value
    */
    bool defaultLiveEnvironmentValue() const
    {
        return defaultLiveEnvironmentValue_helper();
    }

    /**
      Set The installer application desktop file name for the live environment.
    */
    void setLiveInstaller( const QString & v )
    {
      if (v != mLiveInstaller && !isLiveInstallerImmutable()) {
        mLiveInstaller = v;
        Q_EMIT LiveInstallerChanged();
      }
    }

    Q_PROPERTY(QString liveInstaller READ liveInstaller WRITE setLiveInstaller NOTIFY LiveInstallerChanged)
    Q_PROPERTY(bool isLiveInstallerImmutable READ isLiveInstallerImmutable CONSTANT)
    /**
      Get The installer application desktop file name for the live environment.
    */
    QString liveInstaller() const
    {
      return mLiveInstaller;
    }

    /**
      Is The installer application desktop file name for the live environment. Immutable
    */
    bool isLiveInstallerImmutable() const
    {
      return isImmutable( QStringLiteral( "LiveInstaller" ) );
    }

    /**
      Set Whether to show or skip the update screen.
    */
    void setShowUpdatePage( bool v )
    {
      if (v != mShowUpdatePage && !isShowUpdatePageImmutable()) {
        mShowUpdatePage = v;
        Q_EMIT ShowUpdatePageChanged();
      }
    }

    Q_PROPERTY(bool showUpdatePage READ showUpdatePage WRITE setShowUpdatePage NOTIFY ShowUpdatePageChanged)
    Q_PROPERTY(bool isShowUpdatePageImmutable READ isShowUpdatePageImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowUpdatePageValue READ defaultShowUpdatePageValue CONSTANT)
    /**
      Get Whether to show or skip the update screen.
    */
    bool showUpdatePage() const
    {
      return mShowUpdatePage;
    }

    /**
      Is Whether to show or skip the update screen. Immutable
    */
    bool isShowUpdatePageImmutable() const
    {
      return isImmutable( QStringLiteral( "ShowUpdatePage" ) );
    }

    /**
      Get Whether to show or skip the update screen. default value
    */
    bool defaultShowUpdatePageValue() const
    {
        return defaultShowUpdatePageValue_helper();
    }

    /**
      Set Whether to automatically load the update preview.
    */
    void setAutomaticUpdatePreview( bool v )
    {
      if (v != mAutomaticUpdatePreview && !isAutomaticUpdatePreviewImmutable()) {
        mAutomaticUpdatePreview = v;
        Q_EMIT AutomaticUpdatePreviewChanged();
      }
    }

    Q_PROPERTY(bool automaticUpdatePreview READ automaticUpdatePreview WRITE setAutomaticUpdatePreview NOTIFY AutomaticUpdatePreviewChanged)
    Q_PROPERTY(bool isAutomaticUpdatePreviewImmutable READ isAutomaticUpdatePreviewImmutable CONSTANT)
    Q_PROPERTY(bool defaultAutomaticUpdatePreviewValue READ defaultAutomaticUpdatePreviewValue CONSTANT)
    /**
      Get Whether to automatically load the update preview.
    */
    bool automaticUpdatePreview() const
    {
      return mAutomaticUpdatePreview;
    }

    /**
      Is Whether to automatically load the update preview. Immutable
    */
    bool isAutomaticUpdatePreviewImmutable() const
    {
      return isImmutable( QStringLiteral( "AutomaticUpdatePreview" ) );
    }

    /**
      Get Whether to automatically load the update preview. default value
    */
    bool defaultAutomaticUpdatePreviewValue() const
    {
        return defaultAutomaticUpdatePreviewValue_helper();
    }


    enum {
      signalLastSeenVersionChanged = 1,
      signalLiveEnvironmentChanged = 2,
      signalLiveInstallerChanged = 3,
      signalShowUpdatePageChanged = 4,
      signalAutomaticUpdatePreviewChanged = 5
    };

  Q_SIGNALS:
    void LastSeenVersionChanged();

    void LiveEnvironmentChanged();

    void LiveInstallerChanged();

    void ShowUpdatePageChanged();

    void AutomaticUpdatePreviewChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // General
    QString mLastSeenVersion;
    QString defaultLastSeenVersionValue_helper() const;
    bool mLiveEnvironment;
    bool defaultLiveEnvironmentValue_helper() const;
    QString mLiveInstaller;
    QString defaultLiveInstallerValue_helper() const;
    bool mShowUpdatePage;
    bool defaultShowUpdatePageValue_helper() const;
    bool mAutomaticUpdatePreview;
    bool defaultAutomaticUpdatePreviewValue_helper() const;
};

#endif

