1
/*  This file is part of the KDE project
2
    Copyright (C) 2007-2008 Matthias Kretz <kretz@kde.org>
3
4
    This library is free software; you can redistribute it and/or
5
    modify it under the terms of the GNU Lesser General Public
6
    License as published by the Free Software Foundation; either
7
    version 2.1 of the License, or (at your option) version 3, or any
8
    later version accepted by the membership of KDE e.V. (or its
9
    successor approved by the membership of KDE e.V.), Nokia Corporation 
10
    (or its successors, if any) and the KDE Free Qt Foundation, which shall
11
    act as a proxy defined in Section 6 of version 3 of the license.
12
13
    This library is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
    Lesser General Public License for more details.
17
18
    You should have received a copy of the GNU Lesser General Public 
19
    License along with this library.  If not, see <http://www.gnu.org/licenses/>.
20
21
*/
22
23
#ifndef PHONON_ADDONINTERFACE_H
24
#define PHONON_ADDONINTERFACE_H
25
26
#include "phononnamespace.h"
27
28
#include <QtCore/QList>
29
#include <QtCore/QVariant>
30
31
QT_BEGIN_HEADER
32
QT_BEGIN_NAMESPACE
33
34
#ifndef QT_NO_PHONON_MEDIACONTROLLER
35
36
namespace Phonon
37
{
38
/** \class AddonInterface addoninterface.h Phonon/AddonInterface
39
 * \short Interface for Menu, Chapter, Angle and Title/Track control.
40
 *
41
 * \author Matthias Kretz <kretz@kde.org>
42
 */
43
class AddonInterface
44
{
45
    public:
46
        virtual ~AddonInterface() {}
47
48
        enum Interface {
49
            NavigationInterface   = 1,
50
            ChapterInterface      = 2,
51
            AngleInterface        = 3,
52
            TitleInterface        = 4,
53
            SubtitleInterface     = 5,
54
            AudioChannelInterface = 6
55
        };
56
57
        enum NavigationCommand {
58
            Menu1Button
59
        };
60
        enum ChapterCommand {
61
            availableChapters,
62
            chapter,
63
            setChapter
64
        };
65
        enum AngleCommand {
66
            availableAngles,
67
            angle,
68
            setAngle
69
        };
70
        enum TitleCommand {
71
            availableTitles,
72
            title,
73
            setTitle,
74
            autoplayTitles,
75
            setAutoplayTitles
76
        };
77
        enum SubtitleCommand {
78
            availableSubtitles,
79
            currentSubtitle,
80
            setCurrentSubtitle
81
        };
82
        enum AudioChannelCommand {
83
            availableAudioChannels,
84
            currentAudioChannel,
85
            setCurrentAudioChannel
86
        };
87
88
        virtual bool hasInterface(Interface iface) const = 0;
89
90
        virtual QVariant interfaceCall(Interface iface, int command,
91
                const QList<QVariant> &arguments = QList<QVariant>()) = 0;
92
};
93
94
} // namespace Phonon
95
96
Q_DECLARE_INTERFACE(Phonon::AddonInterface, "AddonInterface0.2.phonon.kde.org")
97
98
#endif //QT_NO_PHONON_MEDIACONTROLLER
99
100
QT_END_NAMESPACE
101
QT_END_HEADER
102
103
#endif // PHONON_ADDONINTERFACE_H