1 /*  This file is part of the KDE project
2     Copyright (C) 2006-2007 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 #include "phononnamespace.h"
24 #include "phononnamespace_p.h"
25 #include "phonondefs_p.h"
26 
27 #include "experimental/videoframe2.h"
28 
29 #include "factory_p.h"
30 
31 #include <QtCore/QCoreApplication>
32 #include <QtCore/QList>
33 
34 namespace Phonon
35 {
36     /*!
37         Returns the version number of Phonon at run-time as a string (for
38         example, "4.0.0"). This may be a different version than the
39         version the application was compiled against.
40 
41         \sa PHONON_VERSION_STR
42     */
phononVersion()43     const char *phononVersion()
44     {
45         return PHONON_VERSION_STR;
46     }
47 
categoryToString(Category c)48     QString categoryToString(Category c)
49     {
50         switch(c)
51         {
52         case Phonon::NoCategory:
53             break;
54         case Phonon::NotificationCategory:
55             return QCoreApplication::translate("Phonon::", "Notifications");
56         case Phonon::MusicCategory:
57             return QCoreApplication::translate("Phonon::", "Music");
58         case Phonon::VideoCategory:
59             return QCoreApplication::translate("Phonon::", "Video");
60         case Phonon::CommunicationCategory:
61             return QCoreApplication::translate("Phonon::", "Communication");
62         case Phonon::GameCategory:
63             return QCoreApplication::translate("Phonon::", "Games");
64         case Phonon::AccessibilityCategory:
65             return QCoreApplication::translate("Phonon::", "Accessibility");
66         }
67         return QString();
68     }
69 
categoryToString(CaptureCategory c)70     QString categoryToString(CaptureCategory c)
71     {
72         switch(c)
73         {
74         case Phonon::NoCaptureCategory:
75             break;
76         case Phonon::CommunicationCaptureCategory:
77             return QCoreApplication::translate("Phonon::", "Communication");
78         case Phonon::RecordingCaptureCategory:
79             return QCoreApplication::translate("Phonon::", "Recording");
80         case Phonon::ControlCaptureCategory:
81             return QCoreApplication::translate("Phonon::", "Control");
82         }
83         return QString();
84     }
85 
operator <<(QDebug dbg,const Phonon::DiscType & type)86     QDebug operator <<(QDebug dbg, const Phonon::DiscType &type)
87     {
88         switch (type) {
89         case Phonon::NoDisc:
90             dbg.space() << "Phonon::NoDisc";
91             break;
92         case Phonon::Cd:
93             dbg.space() << "Phonon::Cd";
94             break;
95         case Phonon::Dvd:
96             dbg.space() << "Phonon::Dvd";
97             break;
98         case Phonon::Vcd:
99             dbg.space() << "Phonon::Vcd";
100             break;
101         case Phonon::BluRay:
102             dbg.space() << "Phonon::BluRay";
103             break;
104         }
105         return dbg.maybeSpace();
106     }
107 
operator <<(QDebug dbg,const Phonon::MetaData & metaData)108     QDebug operator <<(QDebug dbg, const Phonon::MetaData &metaData)
109     {
110         switch (metaData) {
111         case Phonon::ArtistMetaData:
112             dbg.space() << "Phonon::ArtistMetaData";
113             break;
114         case Phonon::AlbumMetaData:
115             dbg.space() << "Phonon::AlbumMetaData";
116             break;
117         case Phonon::TitleMetaData:
118             dbg.space() << "Phonon::TitleMetaData";
119             break;
120         case Phonon::DateMetaData:
121             dbg.space() << "Phonon::DateMetaData";
122             break;
123         case Phonon::GenreMetaData:
124             dbg.space() << "Phonon::GenreMetaData";
125             break;
126         case Phonon::TracknumberMetaData:
127             dbg.space() << "Phonon::TracknumberMetaData";
128             break;
129         case Phonon::DescriptionMetaData:
130             dbg.space() << "Phonon::DescriptionMetaData";
131             break;
132         case Phonon::MusicBrainzDiscIdMetaData:
133             dbg.space() << "Phonon::MusicBrainzDiscIdMetaData";
134             break;
135         }
136         return dbg.maybeSpace();
137     }
138 
operator <<(QDebug dbg,const Phonon::State & state)139     QDebug operator <<(QDebug dbg, const Phonon::State &state)
140     {
141         switch (state) {
142         case Phonon::LoadingState:
143             dbg.space() << "Phonon::LoadingState";
144             break;
145         case Phonon::StoppedState:
146             dbg.space() << "Phonon::StoppedState";
147             break;
148         case Phonon::PlayingState:
149             dbg.space() << "Phonon::PlayingState";
150             break;
151         case Phonon::BufferingState:
152             dbg.space() << "Phonon::BufferingState";
153             break;
154         case Phonon::PausedState:
155             dbg.space() << "Phonon::PausedState";
156             break;
157         case Phonon::ErrorState:
158             dbg.space() << "Phonon::ErrorState";
159             break;
160         }
161         return dbg.maybeSpace();
162     }
163 
operator <<(QDebug dbg,const Phonon::Category & category)164     QDebug operator <<(QDebug dbg, const Phonon::Category &category)
165     {
166         dbg.space() << categoryToString(category);
167         return dbg.maybeSpace();
168     }
169 
operator <<(QDebug dbg,const Phonon::CaptureCategory & category)170     QDebug operator <<(QDebug dbg, const Phonon::CaptureCategory &category)
171     {
172         dbg.space() << categoryToString(category);
173         return dbg.maybeSpace();
174     }
175 
operator <<(QDebug dbg,const Phonon::Capture::DeviceType & type)176     QDebug operator <<(QDebug dbg, const Phonon::Capture::DeviceType &type)
177     {
178         switch (type) {
179         case Phonon::Capture::AudioType:
180             dbg.space() << "Phonon::Capture::AudioType";
181             break;
182         case Phonon::Capture::VideoType:
183             dbg.space() << "Phonon::Capture::VideoType";
184             break;
185         }
186         return dbg.maybeSpace();
187     }
188 
operator <<(QDebug dbg,const Phonon::ErrorType & errorType)189     QDebug operator <<(QDebug dbg, const Phonon::ErrorType &errorType)
190     {
191         switch (errorType) {
192         case Phonon::NoError:
193             dbg.space() << "Phonon::NoError";
194             break;
195         case Phonon::NormalError:
196             dbg.space() << "Phonon::NormalError";
197             break;
198         case Phonon::FatalError:
199             dbg.space() << "Phonon::FatalError";
200             break;
201         }
202         return dbg.maybeSpace();
203     }
204 }
205 
registerPhononMetaTypes()206 static int registerPhononMetaTypes()
207 {
208     qRegisterMetaType<Phonon::State>();
209     qRegisterMetaType<Phonon::ErrorType>();
210     qRegisterMetaType<Phonon::Category>();
211     qRegisterMetaType<Phonon::CaptureCategory>();
212 
213     // need those for QSettings
214     qRegisterMetaType<QList<int> >();
215     qRegisterMetaTypeStreamOperators<QList<int> >("QList<int>");
216     qRegisterMetaType<Phonon::Experimental::VideoFrame2>();
217 
218     qRegisterMetaType<Phonon::DeviceAccess>();
219     qRegisterMetaTypeStreamOperators<Phonon::DeviceAccess>("Phonon::DeviceAccess");
220     qRegisterMetaType<Phonon::DeviceAccessList>();
221     qRegisterMetaTypeStreamOperators<Phonon::DeviceAccessList>("Phonon::DeviceAccessList");
222 
223     return 0; // something
224 }
225 
226 #ifdef Q_CONSTRUCTOR_FUNCTION
227 Q_CONSTRUCTOR_FUNCTION(registerPhononMetaTypes)
228 #else
229 static const int _Phonon_registerMetaTypes = registerPhononMetaTypes();
230 #endif
231 
232 // vim: sw=4 ts=4
233