| /* 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.), 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/>. |
| |
| */ |
| |
| #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 |