summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/phonon/videoplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/phonon/phonon/videoplayer.cpp')
-rw-r--r--src/3rdparty/phonon/phonon/videoplayer.cpp184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/phonon/videoplayer.cpp b/src/3rdparty/phonon/phonon/videoplayer.cpp
new file mode 100644
index 0000000..8851b05
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/videoplayer.cpp
@@ -0,0 +1,184 @@
+/* This file is part of the KDE project
+ Copyright (C) 2004-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.), Nokia Corporation
+ (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 "videoplayer.h"
+#include "mediaobject.h"
+#include "audiooutput.h"
+#include "videowidget.h"
+#include "path.h"
+#include <QtGui/QBoxLayout>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_PHONON_VIDEOPLAYER
+
+namespace Phonon
+{
+
+class VideoPlayerPrivate
+{
+ public:
+ VideoPlayerPrivate()
+ : player(0)
+ , aoutput(0)
+ , voutput(0) {}
+
+ void init(VideoPlayer *q, Phonon::Category category);
+
+ MediaObject *player;
+ AudioOutput *aoutput;
+ VideoWidget *voutput;
+
+ MediaSource src;
+};
+
+void VideoPlayerPrivate::init(VideoPlayer *q, Phonon::Category category)
+{
+ QVBoxLayout *layout = new QVBoxLayout(q);
+ layout->setMargin(0);
+
+ aoutput = new AudioOutput(category, q);
+
+ voutput = new VideoWidget(q);
+ layout->addWidget(voutput);
+
+ player = new MediaObject(q);
+ Phonon::createPath(player, aoutput);
+ Phonon::createPath(player, voutput);
+
+ q->connect(player, SIGNAL(finished()), SIGNAL(finished()));
+}
+
+VideoPlayer::VideoPlayer(Phonon::Category category, QWidget *parent)
+ : QWidget(parent)
+ , d(new VideoPlayerPrivate)
+{
+ d->init(this, category);
+}
+
+VideoPlayer::VideoPlayer(QWidget *parent)
+ : QWidget(parent)
+ , d(new VideoPlayerPrivate)
+{
+ d->init(this, Phonon::VideoCategory);
+}
+
+VideoPlayer::~VideoPlayer()
+{
+ delete d;
+}
+
+MediaObject *VideoPlayer::mediaObject() const
+{
+ return d->player;
+}
+
+AudioOutput *VideoPlayer::audioOutput() const
+{
+ return d->aoutput;
+}
+
+VideoWidget *VideoPlayer::videoWidget() const
+{
+ return d->voutput;
+}
+
+void VideoPlayer::load(const MediaSource &source)
+{
+ d->player->setCurrentSource(source);
+}
+
+void VideoPlayer::play(const MediaSource &source)
+{
+ if (source == d->player->currentSource()) {
+ if (!isPlaying())
+ d->player->play();
+ return;
+ }
+ // new URL
+ d->player->setCurrentSource(source);
+
+ if (ErrorState == d->player->state())
+ return;
+
+ d->player->play();
+}
+
+void VideoPlayer::play()
+{
+ d->player->play();
+}
+
+void VideoPlayer::pause()
+{
+ d->player->pause();
+}
+
+void VideoPlayer::stop()
+{
+ d->player->stop();
+}
+
+qint64 VideoPlayer::totalTime() const
+{
+ return d->player->totalTime();
+}
+
+qint64 VideoPlayer::currentTime() const
+{
+ return d->player->currentTime();
+}
+
+void VideoPlayer::seek(qint64 ms)
+{
+ d->player->seek(ms);
+}
+
+float VideoPlayer::volume() const
+{
+ return d->aoutput->volume();
+}
+
+void VideoPlayer::setVolume(float v)
+{
+ d->aoutput->setVolume(v);
+}
+
+bool VideoPlayer::isPlaying() const
+{
+ return (d->player->state() == PlayingState);
+}
+
+bool VideoPlayer::isPaused() const
+{
+ return (d->player->state() == PausedState);
+}
+
+} // namespaces
+
+#endif //QT_NO_PHONON_VIDEOPLAYER
+
+QT_END_NAMESPACE
+
+#include "moc_videoplayer.cpp"
+
+// vim: sw=4 ts=4