/*
 * This file was generated by qdbusxml2cpp-fix version 0.8
 * Command line was: qdbusxml2cpp-fix -c Sink -p generated/com_deepin_daemon_audio_sink /build/deepin-qt-dbus-factory/src/dde-qt-dbus-factory-0.2.1/xml/com.deepin.daemon.Audio.Sink.xml
 *
 * qdbusxml2cpp-fix is Copyright (C) 2016 Deepin Technology Co., Ltd.
 *
 * This is an auto-generated file.
 * Do not edit! All changes made to it will be lost.
 */

#ifndef COM_DEEPIN_DAEMON_AUDIO_SINK_H
#define COM_DEEPIN_DAEMON_AUDIO_SINK_H

#include <QtCore/QObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>

#include <DBusExtendedAbstractInterface>
#include <QtDBus/QtDBus>

#include "types/audioportlist.h"
#include "types/audioport.h"

/*
 * Proxy class for interface com.deepin.daemon.Audio.Sink
 */
class __Sink : public DBusExtendedAbstractInterface
{
    Q_OBJECT

public:
    static inline const char *staticInterfaceName()
    { return "com.deepin.daemon.Audio.Sink"; }

public:
    explicit __Sink(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0);

    ~__Sink();

    Q_PROPERTY(AudioPort ActivePort READ activePort NOTIFY ActivePortChanged)
    inline AudioPort activePort()
    { return qvariant_cast< AudioPort >(internalPropGet("ActivePort", &m_ActivePort)); }

    Q_PROPERTY(double Balance READ balance NOTIFY BalanceChanged)
    inline double balance()
    { return qvariant_cast< double >(internalPropGet("Balance", &m_Balance)); }

    Q_PROPERTY(double BaseVolume READ baseVolume NOTIFY BaseVolumeChanged)
    inline double baseVolume()
    { return qvariant_cast< double >(internalPropGet("BaseVolume", &m_BaseVolume)); }

    Q_PROPERTY(uint Card READ card NOTIFY CardChanged)
    inline uint card()
    { return qvariant_cast< uint >(internalPropGet("Card", &m_Card)); }

    Q_PROPERTY(QString Description READ description NOTIFY DescriptionChanged)
    inline QString description()
    { return qvariant_cast< QString >(internalPropGet("Description", &m_Description)); }

    Q_PROPERTY(double Fade READ fade NOTIFY FadeChanged)
    inline double fade()
    { return qvariant_cast< double >(internalPropGet("Fade", &m_Fade)); }

    Q_PROPERTY(bool Mute READ mute NOTIFY MuteChanged)
    inline bool mute()
    { return qvariant_cast< bool >(internalPropGet("Mute", &m_Mute)); }

    Q_PROPERTY(QString Name READ name NOTIFY NameChanged)
    inline QString name()
    { return qvariant_cast< QString >(internalPropGet("Name", &m_Name)); }

    Q_PROPERTY(AudioPortList Ports READ ports NOTIFY PortsChanged)
    inline AudioPortList ports()
    { return qvariant_cast< AudioPortList >(internalPropGet("Ports", &m_Ports)); }

    Q_PROPERTY(bool SupportBalance READ supportBalance NOTIFY SupportBalanceChanged)
    inline bool supportBalance()
    { return qvariant_cast< bool >(internalPropGet("SupportBalance", &m_SupportBalance)); }

    Q_PROPERTY(bool SupportFade READ supportFade NOTIFY SupportFadeChanged)
    inline bool supportFade()
    { return qvariant_cast< bool >(internalPropGet("SupportFade", &m_SupportFade)); }

    Q_PROPERTY(double Volume READ volume NOTIFY VolumeChanged)
    inline double volume()
    { return qvariant_cast< double >(internalPropGet("Volume", &m_Volume)); }

public Q_SLOTS: // METHODS
    inline QDBusPendingReply<QDBusObjectPath> GetMeter()
    {
        QList<QVariant> argumentList;
        return asyncCallWithArgumentList(QStringLiteral("GetMeter"), argumentList);
    }

    inline QDBusPendingReply<> SetBalance(double in0, bool in1)
    {
        QList<QVariant> argumentList;
        argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
        return asyncCallWithArgumentList(QStringLiteral("SetBalance"), argumentList);
    }

    inline QDBusPendingReply<> SetFade(double in0)
    {
        QList<QVariant> argumentList;
        argumentList << QVariant::fromValue(in0);
        return asyncCallWithArgumentList(QStringLiteral("SetFade"), argumentList);
    }

    inline QDBusPendingReply<> SetMute(bool in0)
    {
        QList<QVariant> argumentList;
        argumentList << QVariant::fromValue(in0);
        return asyncCallWithArgumentList(QStringLiteral("SetMute"), argumentList);
    }

    inline QDBusPendingReply<> SetPort(const QString &in0)
    {
        QList<QVariant> argumentList;
        argumentList << QVariant::fromValue(in0);
        return asyncCallWithArgumentList(QStringLiteral("SetPort"), argumentList);
    }

    inline QDBusPendingReply<> SetVolume(double in0, bool in1)
    {
        QList<QVariant> argumentList;
        argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
        return asyncCallWithArgumentList(QStringLiteral("SetVolume"), argumentList);
    }

Q_SIGNALS: // SIGNALS
// begin property changed signals
    void ActivePortChanged(AudioPort  value) const;
    void BalanceChanged(double  value) const;
    void BaseVolumeChanged(double  value) const;
    void CardChanged(uint  value) const;
    void DescriptionChanged(const QString & value) const;
    void FadeChanged(double  value) const;
    void MuteChanged(bool  value) const;
    void NameChanged(const QString & value) const;
    void PortsChanged(AudioPortList  value) const;
    void SupportBalanceChanged(bool  value) const;
    void SupportFadeChanged(bool  value) const;
    void VolumeChanged(double  value) const;

// begin private slots
private Q_SLOTS:
    void onPropertyChanged(const QString &propName, const QVariant &value);

// begin private member vaiables
private:
    AudioPort m_ActivePort;
    double m_Balance;
    double m_BaseVolume;
    uint m_Card;
    QString m_Description;
    double m_Fade;
    bool m_Mute;
    QString m_Name;
    AudioPortList m_Ports;
    bool m_SupportBalance;
    bool m_SupportFade;
    double m_Volume;
};

namespace com {
  namespace deepin {
    namespace daemon {
      namespace audio {
        typedef ::__Sink Sink;
      }
    }
  }
}
#endif
