// mediaobject.sip generated by MetaSIP
//
// This file is part of the phonon Python extension module.
//
// Copyright (c) 2015 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt4.
// 
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file.  Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


%If (Qt_4_4_0 -)

namespace Phonon
{
%TypeHeaderCode
#include <mediaobject.h>
%End

    class MediaObject : QObject, Phonon::MediaNode
    {
%TypeHeaderCode
#include <mediaobject.h>
%End

%ConvertToSubClassCode
        static struct class_graph {
            const char *name;
            sipTypeDef **type;
            int yes, no;
        } graph[] = {
            {sipName_Phonon__Effect, &sipType_Phonon_Effect, -1, 1},
            {sipName_Phonon__EffectWidget, &sipType_Phonon_EffectWidget, -1, 2},
            {sipName_Phonon__MediaObject, &sipType_Phonon_MediaObject, -1, 3},
            {sipName_Phonon__VideoPlayer, &sipType_Phonon_VideoPlayer, -1, 4},
            {sipName_Phonon__VideoWidget, &sipType_Phonon_VideoWidget, -1, 5},
            {sipName_Phonon__SeekSlider, &sipType_Phonon_SeekSlider, -1, 6},
            {sipName_Phonon__EffectDescriptionModel, &sipType_Phonon_EffectDescriptionModel, -1, 7},
            {sipName_Phonon__AbstractAudioOutput, &sipType_Phonon_AbstractAudioOutput, 12, 8},
            {sipName_Phonon__AudioOutputDeviceModel, &sipType_Phonon_AudioOutputDeviceModel, -1, 9},
            {sipName_Phonon__BackendCapabilities__Notifier, &sipType_Phonon_BackendCapabilities_Notifier, -1, 10},
            {sipName_Phonon__MediaController, &sipType_Phonon_MediaController, -1, 11},
            {sipName_Phonon__VolumeSlider, &sipType_Phonon_VolumeSlider, -1, -1},
            {sipName_Phonon__AudioOutput, &sipType_Phonon_AudioOutput, -1, -1},
        };
        
        int i = 0;
        
        sipType = 0;
        
        do
        {
            struct class_graph *cg = &graph[i];
        
            if (cg->name != NULL && sipCpp->inherits(cg->name))
            {
                sipType = *cg->type;
                i = cg->yes;
            }
            else
                i = cg->no;
        }
        while (i >= 0);
%End

    public:
        MediaObject(QObject *parent /TransferThis/ = 0);
        virtual ~MediaObject();
        Phonon::State state() const;
        bool hasVideo() const;
        bool isSeekable() const;
        qint32 tickInterval() const;
        QStringList metaData(const QString &key) const;
        QStringList metaData(Phonon::MetaData key) const;
        QMultiMap<QString, QString> metaData() const;
        QString errorString() const;
        Phonon::ErrorType errorType() const;
        Phonon::MediaSource currentSource() const;
        void setCurrentSource(const Phonon::MediaSource &source);
        QList<Phonon::MediaSource> queue() const;
        void setQueue(const QList<Phonon::MediaSource> &sources);
        void setQueue(const QList<QUrl> &urls);
        void enqueue(const Phonon::MediaSource &source);
        void enqueue(const QList<Phonon::MediaSource> &sources);
        void enqueue(const QList<QUrl> &urls);
        void clearQueue();
        qint64 currentTime() const;
        qint64 totalTime() const;
        qint64 remainingTime() const;
        qint32 prefinishMark() const;
        void setPrefinishMark(qint32 msecToEnd);
        qint32 transitionTime() const;
        void setTransitionTime(qint32 msec);

    public slots:
        void setTickInterval(qint32 newTickInterval);
        void play();
        void pause();
        void stop();
        void seek(qint64 time);
%If (Qt_4_5_0 -)
        void clear();
%End

    signals:
        void stateChanged(Phonon::State newstate, Phonon::State oldstate);
        void tick(qint64 time);
        void metaDataChanged();
        void seekableChanged(bool isSeekable);
        void hasVideoChanged(bool hasVideo);
        void bufferStatus(int percentFilled);
        void finished();
        void currentSourceChanged(const Phonon::MediaSource &newSource);
        void aboutToFinish();
        void prefinishMarkReached(qint32 msecToEnd);
        void totalTimeChanged(qint64 newTotalTime);
    };

    Phonon::MediaObject *createPlayer(Phonon::Category category, const Phonon::MediaSource &source = Phonon::MediaSource()) /Factory/;
};

%End
