// mediaobject.sip generated by MetaSIP on Fri Mar 14 14:19:05 2014
//
// This file is part of the phonon Python extension module.
//
// Copyright (c) 2014 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt.
// 
// This file may be used under the terms of the GNU General Public
// License versions 2.0 or 3.0 as published by the Free Software
// Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
// included in the packaging of this file.  Alternatively you may (at
// your option) use any later version of the GNU General Public
// License if such license has been publicly approved by Riverbank
// Computing Limited (or its successors, if any) and the KDE Free Qt
// Foundation. In addition, as a special exception, Riverbank gives you
// certain additional rights. These rights are described in the Riverbank
// GPL Exception version 1.1, which can be found in the file
// GPL_EXCEPTION.txt in this package.
// 
// If you are unsure which license is appropriate for your use, please
// contact the sales department at sales@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
