// 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 <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>
#include <qqmlintegration.h>

#include <Kirigami/Platform/PlatformTheme>
#include <QNetworkRequest>

class QQmlEngine;
class QJSEngine;

class Config : public KConfigSkeleton
{
  Q_OBJECT
  QML_ELEMENT
  QML_SINGLETON
  public:
    class EnumProxyType
    {
      public:
      enum type { System, HTTP, Socks5, NoProxy, COUNT };
    };

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

    /**
      Set Show statistics about stats
    */
    static
    void setShowPostStats( bool v )
    {
      if (v != self()->mShowPostStats && !self()->isShowPostStatsImmutable()) {
        self()->mShowPostStats = v;
        Q_EMIT self()->ShowPostStatsChanged();
      }
    }

    Q_PROPERTY(bool showPostStats READ showPostStats WRITE setShowPostStats NOTIFY ShowPostStatsChanged)
    Q_PROPERTY(bool isShowPostStatsImmutable READ isShowPostStatsImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowPostStatsValue READ defaultShowPostStatsValue CONSTANT)
    /**
      Get Show statistics about stats
    */
    static
    bool showPostStats()
    {
      return self()->mShowPostStats;
    }

    /**
      Is Show statistics about stats Immutable
    */
    static
    bool isShowPostStatsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowPostStats" ) );
    }

    /**
      Get Show statistics about stats default value
    */
    static
    bool defaultShowPostStatsValue()
    {
        return defaultShowPostStatsValue_helper();
    }

    /**
      Set Show link preview
    */
    static
    void setShowLinkPreview( bool v )
    {
      if (v != self()->mShowLinkPreview && !self()->isShowLinkPreviewImmutable()) {
        self()->mShowLinkPreview = v;
        Q_EMIT self()->ShowLinkPreviewChanged();
      }
    }

    Q_PROPERTY(bool showLinkPreview READ showLinkPreview WRITE setShowLinkPreview NOTIFY ShowLinkPreviewChanged)
    Q_PROPERTY(bool isShowLinkPreviewImmutable READ isShowLinkPreviewImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowLinkPreviewValue READ defaultShowLinkPreviewValue CONSTANT)
    /**
      Get Show link preview
    */
    static
    bool showLinkPreview()
    {
      return self()->mShowLinkPreview;
    }

    /**
      Is Show link preview Immutable
    */
    static
    bool isShowLinkPreviewImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowLinkPreview" ) );
    }

    /**
      Get Show link preview default value
    */
    static
    bool defaultShowLinkPreviewValue()
    {
        return defaultShowLinkPreviewValue_helper();
    }

    /**
      Set Use the standalone composer by default
    */
    static
    void setPopOutByDefault( bool v )
    {
      if (v != self()->mPopOutByDefault && !self()->isPopOutByDefaultImmutable()) {
        self()->mPopOutByDefault = v;
        Q_EMIT self()->PopOutByDefaultChanged();
      }
    }

    Q_PROPERTY(bool popOutByDefault READ popOutByDefault WRITE setPopOutByDefault NOTIFY PopOutByDefaultChanged)
    Q_PROPERTY(bool isPopOutByDefaultImmutable READ isPopOutByDefaultImmutable CONSTANT)
    Q_PROPERTY(bool defaultPopOutByDefaultValue READ defaultPopOutByDefaultValue CONSTANT)
    /**
      Get Use the standalone composer by default
    */
    static
    bool popOutByDefault()
    {
      return self()->mPopOutByDefault;
    }

    /**
      Is Use the standalone composer by default Immutable
    */
    static
    bool isPopOutByDefaultImmutable()
    {
      return self()->isImmutable( QStringLiteral( "PopOutByDefault" ) );
    }

    /**
      Get Use the standalone composer by default default value
    */
    static
    bool defaultPopOutByDefaultValue()
    {
        return defaultPopOutByDefaultValue_helper();
    }

    /**
      Set If checked, Tokodon will save where you were in your Home timeline.
    */
    static
    void setContinueReading( bool v )
    {
      if (v != self()->mContinueReading && !self()->isContinueReadingImmutable()) {
        self()->mContinueReading = v;
        Q_EMIT self()->ContinueReadingChanged();
      }
    }

    Q_PROPERTY(bool continueReading READ continueReading WRITE setContinueReading NOTIFY ContinueReadingChanged)
    Q_PROPERTY(bool isContinueReadingImmutable READ isContinueReadingImmutable CONSTANT)
    Q_PROPERTY(bool defaultContinueReadingValue READ defaultContinueReadingValue CONSTANT)
    /**
      Get If checked, Tokodon will save where you were in your Home timeline.
    */
    static
    bool continueReading()
    {
      return self()->mContinueReading;
    }

    /**
      Is If checked, Tokodon will save where you were in your Home timeline. Immutable
    */
    static
    bool isContinueReadingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ContinueReading" ) );
    }

    /**
      Get If checked, Tokodon will save where you were in your Home timeline. default value
    */
    static
    bool defaultContinueReadingValue()
    {
        return defaultContinueReadingValue_helper();
    }

    /**
      Set If checked, Tokodon will automatically update certain timelines as new posts come in.
    */
    static
    void setAutoUpdate( bool v )
    {
      if (v != self()->mAutoUpdate && !self()->isAutoUpdateImmutable()) {
        self()->mAutoUpdate = v;
        Q_EMIT self()->AutoUpdateChanged();
      }
    }

    Q_PROPERTY(bool autoUpdate READ autoUpdate WRITE setAutoUpdate NOTIFY AutoUpdateChanged)
    Q_PROPERTY(bool isAutoUpdateImmutable READ isAutoUpdateImmutable CONSTANT)
    Q_PROPERTY(bool defaultAutoUpdateValue READ defaultAutoUpdateValue CONSTANT)
    /**
      Get If checked, Tokodon will automatically update certain timelines as new posts come in.
    */
    static
    bool autoUpdate()
    {
      return self()->mAutoUpdate;
    }

    /**
      Is If checked, Tokodon will automatically update certain timelines as new posts come in. Immutable
    */
    static
    bool isAutoUpdateImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AutoUpdate" ) );
    }

    /**
      Get If checked, Tokodon will automatically update certain timelines as new posts come in. default value
    */
    static
    bool defaultAutoUpdateValue()
    {
        return defaultAutoUpdateValue_helper();
    }

    /**
      Set Crop images in the timeline to 16:9
    */
    static
    void setCropMedia( bool v )
    {
      if (v != self()->mCropMedia && !self()->isCropMediaImmutable()) {
        self()->mCropMedia = v;
        Q_EMIT self()->CropMediaChanged();
      }
    }

    Q_PROPERTY(bool cropMedia READ cropMedia WRITE setCropMedia NOTIFY CropMediaChanged)
    Q_PROPERTY(bool isCropMediaImmutable READ isCropMediaImmutable CONSTANT)
    Q_PROPERTY(bool defaultCropMediaValue READ defaultCropMediaValue CONSTANT)
    /**
      Get Crop images in the timeline to 16:9
    */
    static
    bool cropMedia()
    {
      return self()->mCropMedia;
    }

    /**
      Is Crop images in the timeline to 16:9 Immutable
    */
    static
    bool isCropMediaImmutable()
    {
      return self()->isImmutable( QStringLiteral( "CropMedia" ) );
    }

    /**
      Get Crop images in the timeline to 16:9 default value
    */
    static
    bool defaultCropMediaValue()
    {
        return defaultCropMediaValue_helper();
    }

    /**
      Set Auto-play animated GIFs
    */
    static
    void setAutoPlayGif( bool v )
    {
      if (v != self()->mAutoPlayGif && !self()->isAutoPlayGifImmutable()) {
        self()->mAutoPlayGif = v;
        Q_EMIT self()->AutoPlayGifChanged();
      }
    }

    Q_PROPERTY(bool autoPlayGif READ autoPlayGif WRITE setAutoPlayGif NOTIFY AutoPlayGifChanged)
    Q_PROPERTY(bool isAutoPlayGifImmutable READ isAutoPlayGifImmutable CONSTANT)
    Q_PROPERTY(bool defaultAutoPlayGifValue READ defaultAutoPlayGifValue CONSTANT)
    /**
      Get Auto-play animated GIFs
    */
    static
    bool autoPlayGif()
    {
      return self()->mAutoPlayGif;
    }

    /**
      Is Auto-play animated GIFs Immutable
    */
    static
    bool isAutoPlayGifImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AutoPlayGif" ) );
    }

    /**
      Get Auto-play animated GIFs default value
    */
    static
    bool defaultAutoPlayGifValue()
    {
        return defaultAutoPlayGifValue_helper();
    }

    /**
      Set Last used account
    */
    static
    void setLastUsedAccount( const QString & v )
    {
      if (v != self()->mLastUsedAccount && !self()->isLastUsedAccountImmutable()) {
        self()->mLastUsedAccount = v;
        Q_EMIT self()->LastUsedAccountChanged();
      }
    }

    Q_PROPERTY(QString lastUsedAccount READ lastUsedAccount WRITE setLastUsedAccount NOTIFY LastUsedAccountChanged)
    Q_PROPERTY(bool isLastUsedAccountImmutable READ isLastUsedAccountImmutable CONSTANT)
    /**
      Get Last used account
    */
    static
    QString lastUsedAccount()
    {
      return self()->mLastUsedAccount;
    }

    /**
      Is Last used account Immutable
    */
    static
    bool isLastUsedAccountImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LastUsedAccount" ) );
    }

    /**
      Set Color scheme
    */
    static
    void setColorScheme( const QString & v )
    {
      if (v != self()->mColorScheme && !self()->isColorSchemeImmutable()) {
        self()->mColorScheme = v;
        Q_EMIT self()->ColorSchemeChanged();
      }
    }

    Q_PROPERTY(QString colorScheme READ colorScheme WRITE setColorScheme NOTIFY ColorSchemeChanged)
    Q_PROPERTY(bool isColorSchemeImmutable READ isColorSchemeImmutable CONSTANT)
    /**
      Get Color scheme
    */
    static
    QString colorScheme()
    {
      return self()->mColorScheme;
    }

    /**
      Is Color scheme Immutable
    */
    static
    bool isColorSchemeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ColorScheme" ) );
    }

    /**
      Set Default font
    */
    static
    void setDefaultFont( const QFont & v )
    {
      if (v != self()->mDefaultFont && !self()->isDefaultFontImmutable()) {
        self()->mDefaultFont = v;
        Q_EMIT self()->defaultFontChanged();
      }
    }

    Q_PROPERTY(QFont defaultFont READ defaultFont WRITE setDefaultFont NOTIFY defaultFontChanged)
    Q_PROPERTY(bool isDefaultFontImmutable READ isDefaultFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultDefaultFontValue READ defaultDefaultFontValue CONSTANT)
    /**
      Get Default font
    */
    static
    QFont defaultFont()
    {
      return self()->mDefaultFont;
    }

    /**
      Is Default font Immutable
    */
    static
    bool isDefaultFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "defaultFont" ) );
    }

    /**
      Get Default font default value
    */
    static
    QFont defaultDefaultFontValue()
    {
        return defaultDefaultFontValue_helper();
    }

    /**
      Set PromptedNotificationPermission
    */
    static
    void setPromptedNotificationPermission( bool v )
    {
      if (v != self()->mPromptedNotificationPermission && !self()->isPromptedNotificationPermissionImmutable()) {
        self()->mPromptedNotificationPermission = v;
        Q_EMIT self()->PromptedNotificationPermissionChanged();
      }
    }

    Q_PROPERTY(bool promptedNotificationPermission READ promptedNotificationPermission WRITE setPromptedNotificationPermission NOTIFY PromptedNotificationPermissionChanged)
    Q_PROPERTY(bool isPromptedNotificationPermissionImmutable READ isPromptedNotificationPermissionImmutable CONSTANT)
    Q_PROPERTY(bool defaultPromptedNotificationPermissionValue READ defaultPromptedNotificationPermissionValue CONSTANT)
    /**
      Get PromptedNotificationPermission
    */
    static
    bool promptedNotificationPermission()
    {
      return self()->mPromptedNotificationPermission;
    }

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

    /**
      Get PromptedNotificationPermission default value
    */
    static
    bool defaultPromptedNotificationPermissionValue()
    {
        return defaultPromptedNotificationPermissionValue_helper();
    }

    /**
      Set AskBeforeBoosting
    */
    static
    void setAskBeforeBoosting( bool v )
    {
      if (v != self()->mAskBeforeBoosting && !self()->isAskBeforeBoostingImmutable()) {
        self()->mAskBeforeBoosting = v;
        Q_EMIT self()->AskBeforeBoostingChanged();
      }
    }

    Q_PROPERTY(bool askBeforeBoosting READ askBeforeBoosting WRITE setAskBeforeBoosting NOTIFY AskBeforeBoostingChanged)
    Q_PROPERTY(bool isAskBeforeBoostingImmutable READ isAskBeforeBoostingImmutable CONSTANT)
    Q_PROPERTY(bool defaultAskBeforeBoostingValue READ defaultAskBeforeBoostingValue CONSTANT)
    /**
      Get AskBeforeBoosting
    */
    static
    bool askBeforeBoosting()
    {
      return self()->mAskBeforeBoosting;
    }

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

    /**
      Get AskBeforeBoosting default value
    */
    static
    bool defaultAskBeforeBoostingValue()
    {
        return defaultAskBeforeBoostingValue_helper();
    }

    /**
      Set The type of proxy used by the application.
    */
    static
    void setProxyType( int v )
    {
      if (v != self()->mProxyType && !self()->isProxyTypeImmutable()) {
        self()->mProxyType = v;
        Q_EMIT self()->ProxyTypeChanged();
      }
    }

    Q_PROPERTY(int proxyType READ proxyType WRITE setProxyType NOTIFY ProxyTypeChanged)
    Q_PROPERTY(bool isProxyTypeImmutable READ isProxyTypeImmutable CONSTANT)
    Q_PROPERTY(int defaultProxyTypeValue READ defaultProxyTypeValue CONSTANT)
    /**
      Get The type of proxy used by the application.
    */
    static
    int proxyType()
    {
      return self()->mProxyType;
    }

    /**
      Is The type of proxy used by the application. Immutable
    */
    static
    bool isProxyTypeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProxyType" ) );
    }

    /**
      Get The type of proxy used by the application. default value
    */
    static
    int defaultProxyTypeValue()
    {
        return defaultProxyTypeValue_helper();
    }

    /**
      Set IP or hostname of the proxy
    */
    static
    void setProxyHost( const QString & v )
    {
      if (v != self()->mProxyHost && !self()->isProxyHostImmutable()) {
        self()->mProxyHost = v;
        Q_EMIT self()->ProxyHostChanged();
      }
    }

    Q_PROPERTY(QString proxyHost READ proxyHost WRITE setProxyHost NOTIFY ProxyHostChanged)
    Q_PROPERTY(bool isProxyHostImmutable READ isProxyHostImmutable CONSTANT)
    Q_PROPERTY(QString defaultProxyHostValue READ defaultProxyHostValue CONSTANT)
    /**
      Get IP or hostname of the proxy
    */
    static
    QString proxyHost()
    {
      return self()->mProxyHost;
    }

    /**
      Is IP or hostname of the proxy Immutable
    */
    static
    bool isProxyHostImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProxyHost" ) );
    }

    /**
      Get IP or hostname of the proxy default value
    */
    static
    QString defaultProxyHostValue()
    {
        return defaultProxyHostValue_helper();
    }

    /**
      Set The port number of the proxy
    */
    static
    void setProxyPort( int v )
    {
      if (v != self()->mProxyPort && !self()->isProxyPortImmutable()) {
        self()->mProxyPort = v;
        Q_EMIT self()->ProxyPortChanged();
      }
    }

    Q_PROPERTY(int proxyPort READ proxyPort WRITE setProxyPort NOTIFY ProxyPortChanged)
    Q_PROPERTY(bool isProxyPortImmutable READ isProxyPortImmutable CONSTANT)
    Q_PROPERTY(int defaultProxyPortValue READ defaultProxyPortValue CONSTANT)
    /**
      Get The port number of the proxy
    */
    static
    int proxyPort()
    {
      return self()->mProxyPort;
    }

    /**
      Is The port number of the proxy Immutable
    */
    static
    bool isProxyPortImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProxyPort" ) );
    }

    /**
      Get The port number of the proxy default value
    */
    static
    int defaultProxyPortValue()
    {
        return defaultProxyPortValue_helper();
    }

    /**
      Set The user of the proxy
    */
    static
    void setProxyUser( const QString & v )
    {
      if (v != self()->mProxyUser && !self()->isProxyUserImmutable()) {
        self()->mProxyUser = v;
        Q_EMIT self()->ProxyUserChanged();
      }
    }

    Q_PROPERTY(QString proxyUser READ proxyUser WRITE setProxyUser NOTIFY ProxyUserChanged)
    Q_PROPERTY(bool isProxyUserImmutable READ isProxyUserImmutable CONSTANT)
    /**
      Get The user of the proxy
    */
    static
    QString proxyUser()
    {
      return self()->mProxyUser;
    }

    /**
      Is The user of the proxy Immutable
    */
    static
    bool isProxyUserImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProxyUser" ) );
    }

    /**
      Set The password of the proxy
    */
    static
    void setProxyPassword( const QString & v )
    {
      if (v != self()->mProxyPassword && !self()->isProxyPasswordImmutable()) {
        self()->mProxyPassword = v;
        Q_EMIT self()->ProxyPasswordChanged();
      }
    }

    Q_PROPERTY(QString proxyPassword READ proxyPassword WRITE setProxyPassword NOTIFY ProxyPasswordChanged)
    Q_PROPERTY(bool isProxyPasswordImmutable READ isProxyPasswordImmutable CONSTANT)
    /**
      Get The password of the proxy
    */
    static
    QString proxyPassword()
    {
      return self()->mProxyPassword;
    }

    /**
      Is The password of the proxy Immutable
    */
    static
    bool isProxyPasswordImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ProxyPassword" ) );
    }

    /**
      Set The default timeout for requests
    */
    static
    void setTimeout( int v )
    {
      if (v != self()->mTimeout && !self()->isTimeoutImmutable()) {
        self()->mTimeout = v;
        Q_EMIT self()->TimeoutChanged();
      }
    }

    Q_PROPERTY(int timeout READ timeout WRITE setTimeout NOTIFY TimeoutChanged)
    Q_PROPERTY(bool isTimeoutImmutable READ isTimeoutImmutable CONSTANT)
    Q_PROPERTY(int defaultTimeoutValue READ defaultTimeoutValue CONSTANT)
    /**
      Get The default timeout for requests
    */
    static
    int timeout()
    {
      return self()->mTimeout;
    }

    /**
      Is The default timeout for requests Immutable
    */
    static
    bool isTimeoutImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Timeout" ) );
    }

    /**
      Get The default timeout for requests default value
    */
    static
    int defaultTimeoutValue()
    {
        return defaultTimeoutValue_helper();
    }


    enum {
      signalShowPostStatsChanged = 1,
      signalShowLinkPreviewChanged = 2,
      signalPopOutByDefaultChanged = 3,
      signalContinueReadingChanged = 4,
      signalAutoUpdateChanged = 5,
      signalCropMediaChanged = 6,
      signalAutoPlayGifChanged = 7,
      signalLastUsedAccountChanged = 8,
      signalColorSchemeChanged = 9,
      signalDefaultFontChanged = 10,
      signalPromptedNotificationPermissionChanged = 11,
      signalAskBeforeBoostingChanged = 12,
      signalProxyTypeChanged = 13,
      signalProxyHostChanged = 14,
      signalProxyPortChanged = 15,
      signalProxyUserChanged = 16,
      signalProxyPasswordChanged = 17,
      signalTimeoutChanged = 18
    };

  Q_SIGNALS:
    void ShowPostStatsChanged();

    void ShowLinkPreviewChanged();

    void PopOutByDefaultChanged();

    void ContinueReadingChanged();

    void AutoUpdateChanged();

    void CropMediaChanged();

    void AutoPlayGifChanged();

    void LastUsedAccountChanged();

    void ColorSchemeChanged();

    void defaultFontChanged();

    void PromptedNotificationPermissionChanged();

    void AskBeforeBoostingChanged();

    void ProxyTypeChanged();

    void ProxyHostChanged();

    void ProxyPortChanged();

    void ProxyUserChanged();

    void ProxyPasswordChanged();

    void TimeoutChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    Config(QObject *parent = nullptr);
    friend class ConfigHelper;


    // General
    bool mShowPostStats;
    static bool defaultShowPostStatsValue_helper();
    bool mShowLinkPreview;
    static bool defaultShowLinkPreviewValue_helper();
    bool mPopOutByDefault;
    static bool defaultPopOutByDefaultValue_helper();
    bool mContinueReading;
    static bool defaultContinueReadingValue_helper();
    bool mAutoUpdate;
    static bool defaultAutoUpdateValue_helper();
    bool mCropMedia;
    static bool defaultCropMediaValue_helper();
    bool mAutoPlayGif;
    static bool defaultAutoPlayGifValue_helper();
    QString mLastUsedAccount;
    static QString defaultLastUsedAccountValue_helper();
    QString mColorScheme;
    static QString defaultColorSchemeValue_helper();
    QFont mDefaultFont;
    static QFont defaultDefaultFontValue_helper();
    bool mPromptedNotificationPermission;
    static bool defaultPromptedNotificationPermissionValue_helper();
    bool mAskBeforeBoosting;
    static bool defaultAskBeforeBoostingValue_helper();

    // NetworkProxy
    int mProxyType;
    static int defaultProxyTypeValue_helper();
    QString mProxyHost;
    static QString defaultProxyHostValue_helper();
    int mProxyPort;
    static int defaultProxyPortValue_helper();
    QString mProxyUser;
    static QString defaultProxyUserValue_helper();
    QString mProxyPassword;
    static QString defaultProxyPasswordValue_helper();

    // Network
    int mTimeout;
    static int defaultTimeoutValue_helper();
};

#endif

