src/3rdparty/phonon/waveout/backend.cpp
changeset 0 1918ee327afb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/phonon/waveout/backend.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,131 @@
+/*  This file is part of the KDE project.
+
+Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+This library is free software: you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation, either version 2.1 or 3 of the License.
+
+This library 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 Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "backend.h"
+
+
+#include "audiooutput.h"
+#include "mediaobject.h"
+
+
+
+#include <QtCore/QSettings>
+#include <QtCore/QSet>
+#include <QtCore/QVariant>
+#include <QtCore/QStringList>
+
+#include <QtCore/QtPlugin>
+
+
+QT_BEGIN_NAMESPACE
+
+// export as Qt/KDE factory as required
+
+Q_EXPORT_PLUGIN2(phonon_waveout, Phonon::WaveOut::Backend);
+
+namespace Phonon
+{
+    namespace WaveOut
+    {
+
+        Backend::Backend(QObject *parent, const QVariantList &)
+            : QObject(parent)
+        {
+        }
+
+        Backend::~Backend()
+        {
+        }
+
+        QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args)
+        {
+            Q_UNUSED(args);
+            switch (c)
+            {
+            case MediaObjectClass:
+                return new MediaObject(parent);
+            case AudioOutputClass:
+                return new AudioOutput(this, parent);
+            default:
+                return 0;
+            }
+        }
+
+        bool Backend::supportsVideo() const
+        {
+            return false;
+        }
+
+        QStringList Backend::availableMimeTypes() const
+        {
+            QStringList ret;
+            return ret;
+        }
+
+
+        QList<int> Backend::objectDescriptionIndexes(Phonon::ObjectDescriptionType type) const
+        {
+            QList<int> r;
+            if (type == Phonon::AudioOutputDeviceType)
+              r.append(0);
+            return r;
+        }
+
+        QHash<QByteArray, QVariant> Backend::objectDescriptionProperties(Phonon::ObjectDescriptionType type, int index) const
+        {
+            Q_UNUSED(index);
+            QHash<QByteArray, QVariant> r;
+            if (type == Phonon::AudioOutputDeviceType) 
+                r["name"] = QLatin1String("default audio device");
+            return r;
+        }
+
+
+         bool Backend::connectNodes(QObject *node1, QObject *node2)
+         {
+             MediaObject *mediaObject = qobject_cast<MediaObject*> (node1);
+             AudioOutput *audioOutput = qobject_cast<AudioOutput*> (node2);
+
+             if (mediaObject && audioOutput)
+                 mediaObject->setAudioOutput(audioOutput);
+             return true;
+         }
+
+         bool Backend::disconnectNodes(QObject *node1, QObject *node2)
+         {
+             Q_UNUSED(node1);
+             Q_UNUSED(node2);
+             return true;
+         }
+
+         //transaction management
+         bool Backend::startConnectionChange(QSet<QObject *>)
+         {
+             return true;
+         }
+
+         bool Backend::endConnectionChange(QSet<QObject *>)
+         {
+             return true;
+         }
+
+    }
+}
+
+QT_END_NAMESPACE
+
+#include "moc_backend.cpp"