1 /*****************************************************************************
2 * VLC backend for the Phonon library *
3 * Copyright (C) 2007-2008 Tanguy Krotoff <tkrotoff@gmail.com> *
4 * Copyright (C) 2008 Lukas Durfina <lukas.durfina@gmail.com> *
5 * Copyright (C) 2009 Fathi Boudra <fabo@kde.org> *
7 * This program is free software; you can redistribute it and/or *
8 * modify it under the terms of the GNU Lesser General Public *
9 * License as published by the Free Software Foundation; either *
10 * version 3 of the License, or (at your option) any later version. *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
15 * Lesser General Public License for more details. *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License along with this package; if not, write to the Free Software *
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
20 *****************************************************************************/
22 #include "mediacontroller.h"
28 MediaController::MediaController()
30 clearMediaController();
33 MediaController::~MediaController()
37 void MediaController::clearMediaController()
39 current_audio_channel = Phonon::AudioChannelDescription();
40 available_audio_channels.clear();
42 current_subtitle = Phonon::SubtitleDescription();
43 available_subtitles.clear();
45 // current_chapter = Phonon::ChapterDescription();
46 // available_chapters.clear();
48 available_chapters = 0;
50 // current_title = Phonon::TitleDescription();
51 // available_titles.clear();
56 i_available_angles = 0;
58 b_autoplay_titles = false;
61 bool MediaController::hasInterface(Interface iface) const
64 case AddonInterface::NavigationInterface:
67 case AddonInterface::ChapterInterface:
70 case AddonInterface::AngleInterface:
73 case AddonInterface::TitleInterface:
76 case AddonInterface::SubtitleInterface:
79 case AddonInterface::AudioChannelInterface:
83 qCritical() << __FUNCTION__
84 << "Error: unsupported AddonInterface::Interface"
91 QVariant MediaController::interfaceCall(Interface iface, int i_command, const QList<QVariant> & arguments)
94 case AddonInterface::ChapterInterface:
95 switch (static_cast<AddonInterface::ChapterCommand>(i_command)) {
96 // case AddonInterface::availableChapters:
97 // return QVariant::fromValue(availableChapters());
98 case AddonInterface::availableChapters:
99 return availableChapters();
100 // case AddonInterface::currentChapter:
101 // return QVariant::fromValue(currentChapter());
102 case AddonInterface::chapter:
103 return currentChapter();
104 // case AddonInterface::setCurrentChapter:
105 // if( arguments.isEmpty() || !arguments.first().canConvert<ChapterDescription>()) {
106 // qCritical() << __FUNCTION__ << "Error: arguments invalid";
109 // setCurrentChapter(arguments.first().value<ChapterDescription>());
111 case AddonInterface::setChapter:
112 if (arguments.isEmpty() || !arguments.first().canConvert(QVariant::Int)) {
113 qCritical() << __FUNCTION__ << "Error: arguments invalid";
116 setCurrentChapter(arguments.first().toInt());
119 qCritical() << __FUNCTION__
120 << "Error: unsupported AddonInterface::ChapterInterface command:"
124 case AddonInterface::TitleInterface:
125 switch (static_cast<AddonInterface::TitleCommand>(i_command)) {
126 // case AddonInterface::availableTitles:
127 // return QVariant::fromValue(availableTitles());
128 case AddonInterface::availableTitles:
129 return availableTitles();
130 // case AddonInterface::currentTitle:
131 // return QVariant::fromValue(currentTitle());
132 case AddonInterface::title:
133 return currentTitle();
134 // case AddonInterface::setCurrentTitle:
135 // if( arguments.isEmpty() || !arguments.first().canConvert<TitleDescription>()) {
136 // qCritical() << __FUNCTION__ << "Error: arguments invalid";
139 // setCurrentTitle(arguments.first().value<TitleDescription>());
141 case AddonInterface::setTitle:
142 if (arguments.isEmpty() || !arguments.first().canConvert(QVariant::Int)) {
143 qCritical() << __FUNCTION__ << "Error: arguments invalid";
146 setCurrentTitle(arguments.first().toInt());
148 case AddonInterface::autoplayTitles:
149 return autoplayTitles();
150 case AddonInterface::setAutoplayTitles:
151 if (arguments.isEmpty() || !arguments.first().canConvert(QVariant::Bool)) {
152 qCritical() << __FUNCTION__ << "Error: arguments invalid";
155 setAutoplayTitles(arguments.first().toBool());
158 qCritical() << __FUNCTION__
159 << "Error: unsupported AddonInterface::TitleInterface command:"
163 case AddonInterface::AngleInterface:
164 switch (static_cast<AddonInterface::AngleCommand>(i_command)) {
165 case AddonInterface::availableAngles:
166 case AddonInterface::angle:
167 case AddonInterface::setAngle:
170 qCritical() << __FUNCTION__
171 << "Error: unsupported AddonInterface::AngleInterface command:"
175 case AddonInterface::SubtitleInterface:
176 switch (static_cast<AddonInterface::SubtitleCommand>(i_command)) {
177 case AddonInterface::availableSubtitles:
178 return QVariant::fromValue(availableSubtitles());
179 case AddonInterface::currentSubtitle:
180 return QVariant::fromValue(currentSubtitle());
181 case AddonInterface::setCurrentSubtitle:
182 if (arguments.isEmpty() || !arguments.first().canConvert<SubtitleDescription>()) {
183 qCritical() << __FUNCTION__ << "Error: arguments invalid";
186 setCurrentSubtitle(arguments.first().value<SubtitleDescription>());
189 qCritical() << __FUNCTION__
190 << "Error: unsupported AddonInterface::SubtitleInterface command:"
194 case AddonInterface::AudioChannelInterface:
195 switch (static_cast<AddonInterface::AudioChannelCommand>(i_command)) {
196 case AddonInterface::availableAudioChannels:
197 return QVariant::fromValue(availableAudioChannels());
198 case AddonInterface::currentAudioChannel:
199 return QVariant::fromValue(currentAudioChannel());
200 case AddonInterface::setCurrentAudioChannel:
201 if (arguments.isEmpty() || !arguments.first().canConvert<AudioChannelDescription>()) {
202 qCritical() << __FUNCTION__ << "Error: arguments invalid";
205 setCurrentAudioChannel(arguments.first().value<AudioChannelDescription>());
208 qCritical() << __FUNCTION__
209 << "Error: unsupported AddonInterface::AudioChannelInterface command:"
214 qCritical() << __FUNCTION__
215 << "Error: unsupported AddonInterface::Interface:"
223 } // Namespace Phonon::VLC