summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/phonon/mediasource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/phonon/phonon/mediasource.cpp')
-rw-r--r--src/3rdparty/phonon/phonon/mediasource.cpp232
1 files changed, 232 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/phonon/mediasource.cpp b/src/3rdparty/phonon/phonon/mediasource.cpp
new file mode 100644
index 0000000000..0a21c87664
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/mediasource.cpp
@@ -0,0 +1,232 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
+
+ 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 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Trolltech ASA
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 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 "mediasource.h"
+#include "mediasource_p.h"
+#include "iodevicestream_p.h"
+#include "abstractmediastream_p.h"
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QFile>
+#include <QtCore/QFSFileEngine>
+
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+
+MediaSource::MediaSource(MediaSourcePrivate &dd)
+ : d(&dd)
+{
+}
+
+MediaSource::MediaSource()
+ : d(new MediaSourcePrivate(Empty))
+{
+}
+
+MediaSource::MediaSource(const QString &filename)
+ : d(new MediaSourcePrivate(LocalFile))
+{
+ const QFileInfo fileInfo(filename);
+ if (fileInfo.exists()) {
+ bool localFs = QAbstractFileEngine::LocalDiskFlag & QFSFileEngine(filename).fileFlags(QAbstractFileEngine::LocalDiskFlag);
+ if (localFs) {
+ d->url = QUrl::fromLocalFile(fileInfo.absoluteFilePath());
+ } else {
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ // it's a Qt resource -> use QFile
+ d->type = Stream;
+ d->ioDevice = new QFile(filename);
+ d->setStream(new IODeviceStream(d->ioDevice, d->ioDevice));
+#else
+ d->type = Invalid;
+#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ }
+ } else {
+ d->url = filename;
+ if (d->url.isValid()) {
+ d->type = Url;
+ } else {
+ d->type = Invalid;
+ }
+ }
+}
+
+MediaSource::MediaSource(const QUrl &url)
+ : d(new MediaSourcePrivate(Url))
+{
+ if (url.isValid()) {
+ d->url = url;
+ } else {
+ d->type = Invalid;
+ }
+}
+
+MediaSource::MediaSource(Phonon::DiscType dt, const QString &deviceName)
+ : d(new MediaSourcePrivate(Disc))
+{
+ if (dt == NoDisc) {
+ d->type = Invalid;
+ return;
+ }
+ d->discType = dt;
+ d->deviceName = deviceName;
+}
+
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+MediaSource::MediaSource(AbstractMediaStream *stream)
+ : d(new MediaSourcePrivate(Stream))
+{
+ if (stream) {
+ d->setStream(stream);
+ } else {
+ d->type = Invalid;
+ }
+}
+
+MediaSource::MediaSource(QIODevice *ioDevice)
+ : d(new MediaSourcePrivate(Stream))
+{
+ if (ioDevice) {
+ d->setStream(new IODeviceStream(ioDevice, ioDevice));
+ d->ioDevice = ioDevice;
+ } else {
+ d->type = Invalid;
+ }
+}
+#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
+
+/* post 4.0
+MediaSource::MediaSource(const QList<MediaSource> &mediaList)
+ : d(new MediaSourcePrivate(Link))
+{
+ d->linkedSources = mediaList;
+ foreach (MediaSource ms, mediaList) {
+ Q_ASSERT(ms.type() != Link);
+ }
+}
+
+QList<MediaSource> MediaSource::substreams() const
+{
+ return d->linkedSources;
+}
+*/
+
+MediaSource::~MediaSource()
+{
+}
+
+MediaSourcePrivate::~MediaSourcePrivate()
+{
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ if (autoDelete) {
+ delete stream;
+ delete ioDevice;
+ }
+#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
+}
+
+MediaSource::MediaSource(const MediaSource &rhs)
+ : d(rhs.d)
+{
+}
+
+MediaSource &MediaSource::operator=(const MediaSource &rhs)
+{
+ d = rhs.d;
+ return *this;
+}
+
+bool MediaSource::operator==(const MediaSource &rhs) const
+{
+ return d == rhs.d;
+}
+
+void MediaSource::setAutoDelete(bool autoDelete)
+{
+ d->autoDelete = autoDelete;
+}
+
+bool MediaSource::autoDelete() const
+{
+ return d->autoDelete;
+}
+
+MediaSource::Type MediaSource::type() const
+{
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ if (d->type == Stream && d->stream == 0) {
+ return Invalid;
+ }
+#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ return d->type;
+}
+
+QString MediaSource::fileName() const
+{
+ return d->url.toLocalFile();
+}
+
+QUrl MediaSource::url() const
+{
+ return d->url;
+}
+
+Phonon::DiscType MediaSource::discType() const
+{
+ return d->discType;
+}
+
+QString MediaSource::deviceName() const
+{
+ return d->deviceName;
+}
+
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+AbstractMediaStream *MediaSource::stream() const
+{
+ return d->stream;
+}
+
+void MediaSourcePrivate::setStream(AbstractMediaStream *s)
+{
+ stream = s;
+}
+#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
+
+
+//X AudioCaptureDevice MediaSource::audioCaptureDevice() const
+//X {
+//X return d->audioCaptureDevice;
+//X }
+//X
+//X VideoCaptureDevice MediaSource::videoCaptureDevice() const
+//X {
+//X return d->videoCaptureDevice;
+//X }
+
+} // namespace Phonon
+
+QT_END_NAMESPACE
+
+// vim: sw=4 sts=4 et tw=100