// Copyright 2010 Simon Edwards <simon@simonzone.com>

//                 Generated by twine2

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details

// You should have received a copy of the GNU Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

namespace Phonon
{
class PulseSupport : QObject
{
%TypeHeaderCode
#include <phonon/pulsesupport.h>
#include <phonon/phononnamespace.h>
%End

public:
    static Phonon::PulseSupport*  getInstance ();
    static void             shutdown ();
    bool                    isActive ();
    void                    enable (bool enabled = 1);
    QList<int>              objectDescriptionIndexes (Phonon::ObjectDescriptionType type) const;
    QHash<QByteArray,QVariant>  objectDescriptionProperties (Phonon::ObjectDescriptionType type, int index) const;
    void                    emitObjectDescriptionChanged (Phonon::ObjectDescriptionType);
    bool                    setOutputName (QString streamUuid, QString name);
    bool                    setOutputDevice (QString streamUuid, int device);
    bool                    setOutputVolume (QString streamUuid, qreal volume);
    bool                    setOutputMute (QString streamUuid, bool mute);
    bool                    setCaptureDevice (QString streamUuid, int device);
    void                    clearStreamCache (QString streamUuid);
    static void             debug ();
    void                    connectToDaemon ();
signals:
    void                    objectDescriptionChanged (Phonon::ObjectDescriptionType);
private:
                            PulseSupport ();
    ~PulseSupport ();
public:
    QList<int>              objectIndexesByCategory (Phonon::ObjectDescriptionType type, Phonon::Category category) const;
    QList<int>              objectIndexesByCategory (Phonon::ObjectDescriptionType type, Phonon::CaptureCategory category) const;
    void                    setOutputDevicePriorityForCategory (Phonon::Category category, QList<int> order);
    void                    setCaptureDevicePriorityForCategory (Phonon::CaptureCategory category, QList<int> order);
    void                    setCaptureDevicePriorityForCategory (Phonon::Category category, QList<int> order);

// PulseStream is private.
//ig    PulseStream*            registerOutputStream (QString streamUuid, Phonon::Category category);
//ig    PulseStream*            registerCaptureStream (QString streamUuid, Phonon::CaptureCategory category);
//ig    PulseStream*            registerCaptureStream (QString streamUuid, Phonon::Category category);
};
};
