/* This file is part of the KDE project Copyright (C) 2007 Matthias Kretz 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 . */ #ifndef PHONON_MEDIACONTROLLER_H #define PHONON_MEDIACONTROLLER_H #include "phonon_export.h" #include "objectdescription.h" #include #include 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 */ 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 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 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