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

#include "kconfig_base_ee.hpp"

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

class QQmlEngine;
class QJSEngine;

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

    static DbStreamOutputs *self();
    static DbStreamOutputs *create(QQmlEngine *, QJSEngine *);
    ~DbStreamOutputs() 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 setUseDefaultOutputDevice( bool v )
    {
      if (v != self()->mUseDefaultOutputDevice && !self()->isUseDefaultOutputDeviceImmutable()) {
        self()->mUseDefaultOutputDevice = v;
        Q_EMIT self()->useDefaultOutputDeviceChanged();
      }
    }

    Q_PROPERTY(bool useDefaultOutputDevice READ useDefaultOutputDevice WRITE setUseDefaultOutputDevice NOTIFY useDefaultOutputDeviceChanged)
    Q_PROPERTY(bool isUseDefaultOutputDeviceImmutable READ isUseDefaultOutputDeviceImmutable CONSTANT)
    Q_PROPERTY(bool defaultUseDefaultOutputDeviceValue READ defaultUseDefaultOutputDeviceValue CONSTANT)
    /**
      Get Use the System Default Output Device
    */
    static
    bool useDefaultOutputDevice()
    {
      return self()->mUseDefaultOutputDevice;
    }

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

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

    /**
      Set Output Device
    */
    static
    void setOutputDevice( const QString & v )
    {
      if (v != self()->mOutputDevice && !self()->isOutputDeviceImmutable()) {
        self()->mOutputDevice = v;
        Q_EMIT self()->outputDeviceChanged();
      }
    }

    Q_PROPERTY(QString outputDevice READ outputDevice WRITE setOutputDevice NOTIFY outputDeviceChanged)
    Q_PROPERTY(bool isOutputDeviceImmutable READ isOutputDeviceImmutable CONSTANT)
    Q_PROPERTY(QString defaultOutputDeviceValue READ defaultOutputDeviceValue CONSTANT)
    /**
      Get Output Device
    */
    static
    QString outputDevice()
    {
      return self()->mOutputDevice;
    }

    /**
      Is Output Device Immutable
    */
    static
    bool isOutputDeviceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "outputDevice" ) );
    }

    /**
      Get Output Device default value
    */
    static
    QString defaultOutputDeviceValue()
    {
        return defaultOutputDeviceValue_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 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();
    }

    /**
      Set This links the output of the output effects pipeline to the input of our virtual source. This allows users to share their desktop audio (that is processed by EasyEffects) to people listening to what comes from EasyEffects virtual source.
    */
    static
    void setLinkToVirtualSource( bool v )
    {
      if (v != self()->mLinkToVirtualSource && !self()->isLinkToVirtualSourceImmutable()) {
        self()->mLinkToVirtualSource = v;
        Q_EMIT self()->linkToVirtualSourceChanged();
      }
    }

    Q_PROPERTY(bool linkToVirtualSource READ linkToVirtualSource WRITE setLinkToVirtualSource NOTIFY linkToVirtualSourceChanged)
    Q_PROPERTY(bool isLinkToVirtualSourceImmutable READ isLinkToVirtualSourceImmutable CONSTANT)
    Q_PROPERTY(bool defaultLinkToVirtualSourceValue READ defaultLinkToVirtualSourceValue CONSTANT)
    /**
      Get This links the output of the output effects pipeline to the input of our virtual source. This allows users to share their desktop audio (that is processed by EasyEffects) to people listening to what comes from EasyEffects virtual source.
    */
    static
    bool linkToVirtualSource()
    {
      return self()->mLinkToVirtualSource;
    }

    /**
      Is This links the output of the output effects pipeline to the input of our virtual source. This allows users to share their desktop audio (that is processed by EasyEffects) to people listening to what comes from EasyEffects virtual source. Immutable
    */
    static
    bool isLinkToVirtualSourceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "linkToVirtualSource" ) );
    }

    /**
      Get This links the output of the output effects pipeline to the input of our virtual source. This allows users to share their desktop audio (that is processed by EasyEffects) to people listening to what comes from EasyEffects virtual source. default value
    */
    static
    bool defaultLinkToVirtualSourceValue()
    {
        return defaultLinkToVirtualSourceValue_helper();
    }


    enum {
      signalPluginsChanged = 1,
      signalUseDefaultOutputDeviceChanged = 2,
      signalOutputDeviceChanged = 3,
      signalBlocklistChanged = 4,
      signalShowBlocklistedAppsChanged = 5,
      signalBlocklistUsesMediaNameChanged = 6,
      signalShowPluginsListChanged = 7,
      signalVisiblePageChanged = 8,
      signalVisiblePluginChanged = 9,
      signalUsedPresetsChanged = 10,
      signalMostUsedPresetsChanged = 11,
      signalPluginsListWidthChanged = 12,
      signalLinkToVirtualSourceChanged = 13
    };

  Q_SIGNALS:
    void pluginsChanged();

    void useDefaultOutputDeviceChanged();

    void outputDeviceChanged();

    void blocklistChanged();

    void showBlocklistedAppsChanged();

    void blocklistUsesMediaNameChanged();

    void showPluginsListChanged();

    void visiblePageChanged();

    void visiblePluginChanged();

    void usedPresetsChanged();

    void mostUsedPresetsChanged();

    void pluginsListWidthChanged();

    void linkToVirtualSourceChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    DbStreamOutputs();
    friend class DbStreamOutputsHelper;


    // StreamOutputs
    QStringList mPlugins;
    static QStringList defaultPluginsValue_helper();
    bool mUseDefaultOutputDevice;
    static bool defaultUseDefaultOutputDeviceValue_helper();
    QString mOutputDevice;
    static QString defaultOutputDeviceValue_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();
    QStringList mUsedPresets;
    static QStringList defaultUsedPresetsValue_helper();
    QStringList mMostUsedPresets;
    static QStringList defaultMostUsedPresetsValue_helper();
    int mPluginsListWidth;
    static int defaultPluginsListWidthValue_helper();
    bool mLinkToVirtualSource;
    static bool defaultLinkToVirtualSourceValue_helper();
};

#endif

