diff options
Diffstat (limited to 'src/3rdparty/phonon/phonon/mediacontroller.h')
-rw-r--r-- | src/3rdparty/phonon/phonon/mediacontroller.h | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/phonon/mediacontroller.h b/src/3rdparty/phonon/phonon/mediacontroller.h new file mode 100644 index 0000000000..19aaf1316f --- /dev/null +++ b/src/3rdparty/phonon/phonon/mediacontroller.h @@ -0,0 +1,188 @@ +/* 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/>. + +*/ + +#ifndef PHONON_MEDIACONTROLLER_H +#define PHONON_MEDIACONTROLLER_H + +#include "phonon_export.h" +#include "objectdescription.h" + +#include <QtCore/QObject> +#include <QtCore/QtGlobal> + +QT_BEGIN_HEADER +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_PHONON_MEDIACONTROLLER + +namespace Phonon +{ +class MediaControllerPrivate; +class MediaObject; + +/** \class MediaController mediacontroller.h Phonon/MediaController + * \brief Controls optional features of a media file/device like title, chapter, angle. + * + * \ingroup Playback + * \author Matthias Kretz <kretz@kde.org> + */ +class PHONON_EXPORT MediaController : public QObject +{ + Q_OBJECT + Q_FLAGS(Features) + public: + enum Feature { + Angles = 1, + Chapters = 2, + Titles = 4 + }; + Q_DECLARE_FLAGS(Features, Feature) + + MediaController(MediaObject *parent); + ~MediaController(); + + Features supportedFeatures() const; + + int availableAngles() const; + int currentAngle() const; + + int availableChapters() const; + int currentChapter() const; + + int availableTitles() const; + int currentTitle() const; + + bool autoplayTitles() const; + + /** + * Returns the selected audio stream. + * + * \see availableAudioChannels + * \see setCurrentAudioChannel + */ + AudioChannelDescription currentAudioChannel() const; + + /** + * Returns the selected subtitle stream. + * + * \see availableSubtitles + * \see setCurrentSubtitle + */ + SubtitleDescription currentSubtitle() const; + + /** + * Returns the audio streams that can be selected by the user. The + * strings can directly be used in the user interface. + * + * \see selectedAudioChannel + * \see setCurrentAudioChannel + */ + QList<AudioChannelDescription> availableAudioChannels() const; + + /** + * Returns the subtitle streams that can be selected by the user. The + * strings can directly be used in the user interface. + * + * \see selectedSubtitle + * \see setCurrentSubtitle + */ + QList<SubtitleDescription> availableSubtitles() const; + + /** + * Selects an audio stream from the media. + * + * Some media formats allow multiple audio streams to be stored in + * the same file. Normally only one should be played back. + * + * \param stream Description of an audio stream + * + * \see availableAudioChannels() + * \see currentAudioChannel() + */ + void setCurrentAudioChannel(const Phonon::AudioChannelDescription &stream); + + /** + * Selects a subtitle stream from the media. + * + * Some media formats allow multiple subtitle streams to be stored in + * the same file. Normally only one should be displayed. + * + * \param stream description of a subtitle stream + * + * \see availableSubtitles() + * \see currentSubtitle() + */ + void setCurrentSubtitle(const Phonon::SubtitleDescription &stream); + + public Q_SLOTS: + void setCurrentAngle(int angleNumber); + void setCurrentChapter(int chapterNumber); + + /** + * Skips to the given title \p titleNumber. + * + * If it was playing before the title change it will start playback on the new title if + * autoplayTitles is enabled. + */ + void setCurrentTitle(int titleNumber); + void setAutoplayTitles(bool); + + /** + * Skips to the next title. + * + * If it was playing before the title change it will start playback on the next title if + * autoplayTitles is enabled. + */ + void nextTitle(); + + /** + * Skips to the previous title. + * + * If it was playing before the title change it will start playback on the previous title if + * autoplayTitles is enabled. + */ + void previousTitle(); + + Q_SIGNALS: + void availableSubtitlesChanged(); + void availableAudioChannelsChanged(); + void availableAnglesChanged(int availableAngles); + void angleChanged(int angleNumber); + void availableChaptersChanged(int availableChapters); + void chapterChanged(int chapterNumber); + void availableTitlesChanged(int availableTitles); + void titleChanged(int titleNumber); + + protected: + MediaControllerPrivate *const d; +}; + +} // namespace Phonon + +Q_DECLARE_OPERATORS_FOR_FLAGS(Phonon::MediaController::Features) + +#endif //QT_NO_PHONON_MEDIACONTROLLER + +QT_END_NAMESPACE +QT_END_HEADER + +#endif // PHONON_MEDIACONTROLLER_H |