23 #ifndef PHONON_OBJECTDESCRIPTION_H
24 #define PHONON_OBJECTDESCRIPTION_H
26 #include "phonon_export.h"
28 #include <QtCore/QExplicitlySharedDataPointer>
29 #include <QtCore/QtDebug>
30 #include <QtCore/QList>
31 #include <QtCore/QSharedData>
32 #include <QtCore/QString>
33 #include <QtCore/QVariant>
38 class ObjectDescriptionPrivate;
46 enum ObjectDescriptionType
58 AudioOutputDeviceType,
77 AudioCaptureDeviceType,
82 VideoCaptureDeviceType
113 QString name()
const;
122 QString description()
const;
131 QVariant property(
const char *name)
const;
144 bool isValid()
const;
162 ObjectDescriptionPrivate *
const d;
181 template<ObjectDescriptionType T>
190 return ObjectDescription<T>(QExplicitlySharedDataPointer<ObjectDescriptionData>(ObjectDescriptionData::fromIndex(T, index)));
198 return *d == *otherDescription.d;
215 inline QString
name()
const {
return d->name(); }
233 inline QVariant
property(
const char *
name)
const {
return d->property(name); }
246 inline bool isValid()
const {
return d->isValid(); }
254 inline int index()
const {
return d->index(); }
257 ObjectDescription(
int index,
const QHash<QByteArray, QVariant> &properties) : d(new ObjectDescriptionData(index, properties)) {}
260 friend class ObjectDescriptionModel<T>;
261 ObjectDescription(
const QExplicitlySharedDataPointer<ObjectDescriptionData> &dd) : d(dd) {}
262 QExplicitlySharedDataPointer<ObjectDescriptionData> d;
265 template<ObjectDescriptionType T>
266 QDebug operator<<(QDebug dbg, const ObjectDescription<T> &d)
268 dbg.nospace() <<
"\n{\n";
269 dbg.nospace() <<
" index: " << d.index() <<
"\n";
270 Q_FOREACH (
const QByteArray &propertyName, d.propertyNames()) {
271 dbg.nospace() <<
" " << propertyName <<
": " <<
272 d.property(propertyName).toString() <<
"\n";
274 dbg.nospace() <<
"}\n";
282 typedef ObjectDescription<AudioOutputDeviceType> AudioOutputDevice;
286 #ifndef PHONON_NO_AUDIOCAPTURE
287 typedef ObjectDescription<AudioCaptureDeviceType> AudioCaptureDevice;
288 #endif //PHONON_NO_AUDIOCAPTURE
296 #ifndef PHONON_NO_VIDEOCAPTURE
297 typedef ObjectDescription<VideoCaptureDeviceType> VideoCaptureDevice;
302 #ifndef QT_NO_PHONON_EFFECT
303 typedef ObjectDescription<EffectType> EffectDescription;
304 #endif //QT_NO_PHONON_EFFECT
322 #ifndef QT_NO_PHONON_MEDIACONTROLLER
323 typedef ObjectDescription<AudioChannelType> AudioChannelDescription;
324 typedef ObjectDescription<SubtitleType> SubtitleDescription;
325 #endif //QT_NO_PHONON_MEDIACONTROLLER
337 typedef QPair<QByteArray, QString> DeviceAccess;
355 void PHONON_EXPORT_DEPRECATED registerMetaTypes();
360 Q_DECLARE_METATYPE(
QList<Phonon::AudioOutputDevice>)
362 #ifndef PHONON_NO_AUDIOCAPTURE
364 Q_DECLARE_METATYPE(
QList<Phonon::AudioCaptureDevice>)
365 #endif //PHONON_NO_AUDIOCAPTURE
367 #ifndef PHONON_NO_VIDEOCAPTURE
369 Q_DECLARE_METATYPE(
QList<Phonon::VideoCaptureDevice>)
370 #endif //PHONON_NO_VIDEOCAPTURE
372 #ifndef QT_NO_PHONON_EFFECT
374 Q_DECLARE_METATYPE(Phonon::EffectDescription)
375 #endif //QT_NO_PHONON_EFFECT
378 #ifndef QT_NO_PHONON_MEDIACONTROLLER
380 Q_DECLARE_METATYPE(Phonon::SubtitleDescription)
381 Q_DECLARE_METATYPE(
QList<Phonon::AudioChannelDescription>)
382 Q_DECLARE_METATYPE(
QList<Phonon::SubtitleDescription>)
383 #endif //QT_NO_PHONON_MEDIACONTROLLER
385 Q_DECLARE_METATYPE(Phonon::DeviceAccess)
386 Q_DECLARE_METATYPE(Phonon::DeviceAccessList)
390 #endif // PHONON_OBJECTDESCRIPTION_H