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

#include "kconfig_base_ee.hpp"

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

class QQmlEngine;
class QJSEngine;

class DbStreamInputs : public KConfigBaseEE
{
  Q_OBJECT
  QML_ELEMENT
  QML_SINGLETON
  public:
    class EnumVisiblePage
    {
      public:
      enum type { streamsPage, pluginsPage, COUNT };
    };

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

    /**
      Set List of Plugins in the Effects Pipeline
    */
    static
    void setPlugins( const QStringList & v )
    {
      if (v != self()->mPlugins && !self()->isPluginsImmutable()) {
        self()->mPlugins = v;
        Q_EMIT self()->pluginsChanged();
      }
    }

    Q_PROPERTY(QStringList plugins READ plugins WRITE setPlugins NOTIFY pluginsChanged)
    Q_PROPERTY(bool isPluginsImmutable READ isPluginsImmutable CONSTANT)
    /**
      Get List of Plugins in the Effects Pipeline
    */
    static
    QStringList plugins()
    {
      return self()->mPlugins;
    }

    /**
      Is List of Plugins in the Effects Pipeline Immutable
    */
    static
    bool isPluginsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "plugins" ) );
    }

    /**
      Set Use the System Default Output Device
    */
    static
    void setUseDefaultInputDevice( bool v )
    {
      if (v != self()->mUseDefaultInputDevice && !self()->isUseDefaultInputDeviceImmutable()) {
        self()->mUseDefaultInputDevice = v;
        Q_EMIT self()->useDefaultInputDeviceChanged();
      }
    }

    Q_PROPERTY(bool useDefaultInputDevice READ useDefaultInputDevice WRITE setUseDefaultInputDevice NOTIFY useDefaultInputDeviceChanged)
    Q_PROPERTY(bool isUseDefaultInputDeviceImmutable READ isUseDefaultInputDeviceImmutable CONSTANT)
    Q_PROPERTY(bool defaultUseDefaultInputDeviceValue READ defaultUseDefaultInputDeviceValue CONSTANT)
    /**
      Get Use the System Default Output Device
    */
    static
    bool useDefaultInputDevice()
    {
      return self()->mUseDefaultInputDevice;
    }

    /**
      Is Use the System Default Output Device Immutable
    */
    static
    bool isUseDefaultInputDeviceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "useDefaultInputDevice" ) );
    }

    /**
      Get Use the System Default Output Device default value
    */
    static
    bool defaultUseDefaultInputDeviceValue()
    {
        return defaultUseDefaultInputDeviceValue_helper();
    }

    /**
      Set Input Device
    */
    static
    void setInputDevice( const QString & v )
    {
      if (v != self()->mInputDevice && !self()->isInputDeviceImmutable()) {
        self()->mInputDevice = v;
        Q_EMIT self()->inputDeviceChanged();
      }
    }

    Q_PROPERTY(QString inputDevice READ inputDevice WRITE setInputDevice NOTIFY inputDeviceChanged)
    Q_PROPERTY(bool isInputDeviceImmutable READ isInputDeviceImmutable CONSTANT)
    Q_PROPERTY(QString defaultInputDeviceValue READ defaultInputDeviceValue CONSTANT)
    /**
      Get Input Device
    */
    static
    QString inputDevice()
    {
      return self()->mInputDevice;
    }

    /**
      Is Input Device Immutable
    */
    static
    bool isInputDeviceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "inputDevice" ) );
    }

    /**
      Get Input Device default value
    */
    static
    QString defaultInputDeviceValue()
    {
        return defaultInputDeviceValue_helper();
    }

    /**
      Set List of Blocked Streams
    */
    static
    void setBlocklist( const QStringList & v )
    {
      if (v != self()->mBlocklist && !self()->isBlocklistImmutable()) {
        self()->mBlocklist = v;
        Q_EMIT self()->blocklistChanged();
      }
    }

    Q_PROPERTY(QStringList blocklist READ blocklist WRITE setBlocklist NOTIFY blocklistChanged)
    Q_PROPERTY(bool isBlocklistImmutable READ isBlocklistImmutable CONSTANT)
    /**
      Get List of Blocked Streams
    */
    static
    QStringList blocklist()
    {
      return self()->mBlocklist;
    }

    /**
      Is List of Blocked Streams Immutable
    */
    static
    bool isBlocklistImmutable()
    {
      return self()->isImmutable( QStringLiteral( "blocklist" ) );
    }

    /**
      Set Show Blocked Streams in the Streams Tab
    */
    static
    void setShowBlocklistedApps( bool v )
    {
      if (v != self()->mShowBlocklistedApps && !self()->isShowBlocklistedAppsImmutable()) {
        self()->mShowBlocklistedApps = v;
        Q_EMIT self()->showBlocklistedAppsChanged();
      }
    }

    Q_PROPERTY(bool showBlocklistedApps READ showBlocklistedApps WRITE setShowBlocklistedApps NOTIFY showBlocklistedAppsChanged)
    Q_PROPERTY(bool isShowBlocklistedAppsImmutable READ isShowBlocklistedAppsImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowBlocklistedAppsValue READ defaultShowBlocklistedAppsValue CONSTANT)
    /**
      Get Show Blocked Streams in the Streams Tab
    */
    static
    bool showBlocklistedApps()
    {
      return self()->mShowBlocklistedApps;
    }

    /**
      Is Show Blocked Streams in the Streams Tab Immutable
    */
    static
    bool isShowBlocklistedAppsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showBlocklistedApps" ) );
    }

    /**
      Get Show Blocked Streams in the Streams Tab default value
    */
    static
    bool defaultShowBlocklistedAppsValue()
    {
        return defaultShowBlocklistedAppsValue_helper();
    }

    /**
      Set When enabled the blocklist will also consider the combination of node name and media name when blocking.
    */
    static
    void setBlocklistUsesMediaName( bool v )
    {
      if (v != self()->mBlocklistUsesMediaName && !self()->isBlocklistUsesMediaNameImmutable()) {
        self()->mBlocklistUsesMediaName = v;
        Q_EMIT self()->blocklistUsesMediaNameChanged();
      }
    }

    Q_PROPERTY(bool blocklistUsesMediaName READ blocklistUsesMediaName WRITE setBlocklistUsesMediaName NOTIFY blocklistUsesMediaNameChanged)
    Q_PROPERTY(bool isBlocklistUsesMediaNameImmutable READ isBlocklistUsesMediaNameImmutable CONSTANT)
    Q_PROPERTY(bool defaultBlocklistUsesMediaNameValue READ defaultBlocklistUsesMediaNameValue CONSTANT)
    /**
      Get When enabled the blocklist will also consider the combination of node name and media name when blocking.
    */
    static
    bool blocklistUsesMediaName()
    {
      return self()->mBlocklistUsesMediaName;
    }

    /**
      Is When enabled the blocklist will also consider the combination of node name and media name when blocking. Immutable
    */
    static
    bool isBlocklistUsesMediaNameImmutable()
    {
      return self()->isImmutable( QStringLiteral( "blocklistUsesMediaName" ) );
    }

    /**
      Get When enabled the blocklist will also consider the combination of node name and media name when blocking. default value
    */
    static
    bool defaultBlocklistUsesMediaNameValue()
    {
        return defaultBlocklistUsesMediaNameValue_helper();
    }

    /**
      Set Show the List of Plugins
    */
    static
    void setShowPluginsList( bool v )
    {
      if (v != self()->mShowPluginsList && !self()->isShowPluginsListImmutable()) {
        self()->mShowPluginsList = v;
        Q_EMIT self()->showPluginsListChanged();
      }
    }

    Q_PROPERTY(bool showPluginsList READ showPluginsList WRITE setShowPluginsList NOTIFY showPluginsListChanged)
    Q_PROPERTY(bool isShowPluginsListImmutable READ isShowPluginsListImmutable CONSTANT)
    Q_PROPERTY(bool defaultShowPluginsListValue READ defaultShowPluginsListValue CONSTANT)
    /**
      Get Show the List of Plugins
    */
    static
    bool showPluginsList()
    {
      return self()->mShowPluginsList;
    }

    /**
      Is Show the List of Plugins Immutable
    */
    static
    bool isShowPluginsListImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showPluginsList" ) );
    }

    /**
      Get Show the List of Plugins default value
    */
    static
    bool defaultShowPluginsListValue()
    {
        return defaultShowPluginsListValue_helper();
    }

    /**
      Set Saves the last viewed page.
    */
    static
    void setVisiblePage( int v )
    {
      if (v != self()->mVisiblePage && !self()->isVisiblePageImmutable()) {
        self()->mVisiblePage = v;
        Q_EMIT self()->visiblePageChanged();
      }
    }

    Q_PROPERTY(int visiblePage READ visiblePage WRITE setVisiblePage NOTIFY visiblePageChanged)
    Q_PROPERTY(bool isVisiblePageImmutable READ isVisiblePageImmutable CONSTANT)
    Q_PROPERTY(int defaultVisiblePageValue READ defaultVisiblePageValue CONSTANT)
    /**
      Get Saves the last viewed page.
    */
    static
    int visiblePage()
    {
      return self()->mVisiblePage;
    }

    /**
      Is Saves the last viewed page. Immutable
    */
    static
    bool isVisiblePageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "visiblePage" ) );
    }

    /**
      Get Saves the last viewed page. default value
    */
    static
    int defaultVisiblePageValue()
    {
        return defaultVisiblePageValue_helper();
    }

    /**
      Set Visible Plugin
    */
    static
    void setVisiblePlugin( const QString & v )
    {
      if (v != self()->mVisiblePlugin && !self()->isVisiblePluginImmutable()) {
        self()->mVisiblePlugin = v;
        Q_EMIT self()->visiblePluginChanged();
      }
    }

    Q_PROPERTY(QString visiblePlugin READ visiblePlugin WRITE setVisiblePlugin NOTIFY visiblePluginChanged)
    Q_PROPERTY(bool isVisiblePluginImmutable READ isVisiblePluginImmutable CONSTANT)
    Q_PROPERTY(QString defaultVisiblePluginValue READ defaultVisiblePluginValue CONSTANT)
    /**
      Get Visible Plugin
    */
    static
    QString visiblePlugin()
    {
      return self()->mVisiblePlugin;
    }

    /**
      Is Visible Plugin Immutable
    */
    static
    bool isVisiblePluginImmutable()
    {
      return self()->isImmutable( QStringLiteral( "visiblePlugin" ) );
    }

    /**
      Get Visible Plugin default value
    */
    static
    QString defaultVisiblePluginValue()
    {
        return defaultVisiblePluginValue_helper();
    }

    /**
      Set Link our virtual source signal to the soundcard for testing purposes
    */
    static
    void setListenToMic( bool v )
    {
      if (v != self()->mListenToMic && !self()->isListenToMicImmutable()) {
        self()->mListenToMic = v;
        Q_EMIT self()->listenToMicChanged();
      }
    }

    Q_PROPERTY(bool listenToMic READ listenToMic WRITE setListenToMic NOTIFY listenToMicChanged)
    Q_PROPERTY(bool isListenToMicImmutable READ isListenToMicImmutable CONSTANT)
    Q_PROPERTY(bool defaultListenToMicValue READ defaultListenToMicValue CONSTANT)
    /**
      Get Link our virtual source signal to the soundcard for testing purposes
    */
    static
    bool listenToMic()
    {
      return self()->mListenToMic;
    }

    /**
      Is Link our virtual source signal to the soundcard for testing purposes Immutable
    */
    static
    bool isListenToMicImmutable()
    {
      return self()->isImmutable( QStringLiteral( "listenToMic" ) );
    }

    /**
      Get Link our virtual source signal to the soundcard for testing purposes default value
    */
    static
    bool defaultListenToMicValue()
    {
        return defaultListenToMicValue_helper();
    }

    /**
      Set Link our virtual source signal to our virtual sink so mic monitoring includes output effects
    */
    static
    void setListenToMicIncludesOutputEffects( bool v )
    {
      if (v != self()->mListenToMicIncludesOutputEffects && !self()->isListenToMicIncludesOutputEffectsImmutable()) {
        self()->mListenToMicIncludesOutputEffects = v;
        Q_EMIT self()->listenToMicIncludesOutputEffectsChanged();
      }
    }

    Q_PROPERTY(bool listenToMicIncludesOutputEffects READ listenToMicIncludesOutputEffects WRITE setListenToMicIncludesOutputEffects NOTIFY listenToMicIncludesOutputEffectsChanged)
    Q_PROPERTY(bool isListenToMicIncludesOutputEffectsImmutable READ isListenToMicIncludesOutputEffectsImmutable CONSTANT)
    Q_PROPERTY(bool defaultListenToMicIncludesOutputEffectsValue READ defaultListenToMicIncludesOutputEffectsValue CONSTANT)
    /**
      Get Link our virtual source signal to our virtual sink so mic monitoring includes output effects
    */
    static
    bool listenToMicIncludesOutputEffects()
    {
      return self()->mListenToMicIncludesOutputEffects;
    }

    /**
      Is Link our virtual source signal to our virtual sink so mic monitoring includes output effects Immutable
    */
    static
    bool isListenToMicIncludesOutputEffectsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "listenToMicIncludesOutputEffects" ) );
    }

    /**
      Get Link our virtual source signal to our virtual sink so mic monitoring includes output effects default value
    */
    static
    bool defaultListenToMicIncludesOutputEffectsValue()
    {
        return defaultListenToMicIncludesOutputEffectsValue_helper();
    }

    /**
      Set List of presets that have been used and their usage count
    */
    static
    void setUsedPresets( const QStringList & v )
    {
      if (v != self()->mUsedPresets && !self()->isUsedPresetsImmutable()) {
        self()->mUsedPresets = v;
        Q_EMIT self()->usedPresetsChanged();
      }
    }

    Q_PROPERTY(QStringList usedPresets READ usedPresets WRITE setUsedPresets NOTIFY usedPresetsChanged)
    Q_PROPERTY(bool isUsedPresetsImmutable READ isUsedPresetsImmutable CONSTANT)
    /**
      Get List of presets that have been used and their usage count
    */
    static
    QStringList usedPresets()
    {
      return self()->mUsedPresets;
    }

    /**
      Is List of presets that have been used and their usage count Immutable
    */
    static
    bool isUsedPresetsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "usedPresets" ) );
    }

    /**
      Set Ordered list of most used Presets.
    */
    static
    void setMostUsedPresets( const QStringList & v )
    {
      if (v != self()->mMostUsedPresets && !self()->isMostUsedPresetsImmutable()) {
        self()->mMostUsedPresets = v;
        Q_EMIT self()->mostUsedPresetsChanged();
      }
    }

    Q_PROPERTY(QStringList mostUsedPresets READ mostUsedPresets WRITE setMostUsedPresets NOTIFY mostUsedPresetsChanged)
    Q_PROPERTY(bool isMostUsedPresetsImmutable READ isMostUsedPresetsImmutable CONSTANT)
    /**
      Get Ordered list of most used Presets.
    */
    static
    QStringList mostUsedPresets()
    {
      return self()->mMostUsedPresets;
    }

    /**
      Is Ordered list of most used Presets. Immutable
    */
    static
    bool isMostUsedPresetsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "mostUsedPresets" ) );
    }

    /**
      Set Width of the plugins list column.
    */
    static
    void setPluginsListWidth( int v )
    {
      if (v != self()->mPluginsListWidth && !self()->isPluginsListWidthImmutable()) {
        self()->mPluginsListWidth = v;
        Q_EMIT self()->pluginsListWidthChanged();
      }
    }

    Q_PROPERTY(int pluginsListWidth READ pluginsListWidth WRITE setPluginsListWidth NOTIFY pluginsListWidthChanged)
    Q_PROPERTY(bool isPluginsListWidthImmutable READ isPluginsListWidthImmutable CONSTANT)
    Q_PROPERTY(int defaultPluginsListWidthValue READ defaultPluginsListWidthValue CONSTANT)
    /**
      Get Width of the plugins list column.
    */
    static
    int pluginsListWidth()
    {
      return self()->mPluginsListWidth;
    }

    /**
      Is Width of the plugins list column. Immutable
    */
    static
    bool isPluginsListWidthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "pluginsListWidth" ) );
    }

    /**
      Get Width of the plugins list column. default value
    */
    static
    int defaultPluginsListWidthValue()
    {
        return defaultPluginsListWidthValue_helper();
    }


    enum {
      signalPluginsChanged = 1,
      signalUseDefaultInputDeviceChanged = 2,
      signalInputDeviceChanged = 3,
      signalBlocklistChanged = 4,
      signalShowBlocklistedAppsChanged = 5,
      signalBlocklistUsesMediaNameChanged = 6,
      signalShowPluginsListChanged = 7,
      signalVisiblePageChanged = 8,
      signalVisiblePluginChanged = 9,
      signalListenToMicChanged = 10,
      signalListenToMicIncludesOutputEffectsChanged = 11,
      signalUsedPresetsChanged = 12,
      signalMostUsedPresetsChanged = 13,
      signalPluginsListWidthChanged = 14
    };

  Q_SIGNALS:
    void pluginsChanged();

    void useDefaultInputDeviceChanged();

    void inputDeviceChanged();

    void blocklistChanged();

    void showBlocklistedAppsChanged();

    void blocklistUsesMediaNameChanged();

    void showPluginsListChanged();

    void visiblePageChanged();

    void visiblePluginChanged();

    void listenToMicChanged();

    void listenToMicIncludesOutputEffectsChanged();

    void usedPresetsChanged();

    void mostUsedPresetsChanged();

    void pluginsListWidthChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    DbStreamInputs();
    friend class DbStreamInputsHelper;


    // StreamInputs
    QStringList mPlugins;
    static QStringList defaultPluginsValue_helper();
    bool mUseDefaultInputDevice;
    static bool defaultUseDefaultInputDeviceValue_helper();
    QString mInputDevice;
    static QString defaultInputDeviceValue_helper();
    QStringList mBlocklist;
    static QStringList defaultBlocklistValue_helper();
    bool mShowBlocklistedApps;
    static bool defaultShowBlocklistedAppsValue_helper();
    bool mBlocklistUsesMediaName;
    static bool defaultBlocklistUsesMediaNameValue_helper();
    bool mShowPluginsList;
    static bool defaultShowPluginsListValue_helper();
    int mVisiblePage;
    static int defaultVisiblePageValue_helper();
    QString mVisiblePlugin;
    static QString defaultVisiblePluginValue_helper();
    bool mListenToMic;
    static bool defaultListenToMicValue_helper();
    bool mListenToMicIncludesOutputEffects;
    static bool defaultListenToMicIncludesOutputEffectsValue_helper();
    QStringList mUsedPresets;
    static QStringList defaultUsedPresetsValue_helper();
    QStringList mMostUsedPresets;
    static QStringList defaultMostUsedPresetsValue_helper();
    int mPluginsListWidth;
    static int defaultPluginsListWidthValue_helper();
};

#endif

