00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef QGST_CHILDPROXY_H
00018 #define QGST_CHILDPROXY_H
00019
00020 #include "object.h"
00021
00022 namespace QGst {
00023
00027 class QTGSTREAMER_EXPORT ChildProxy : public QGlib::Interface
00028 {
00029 QGST_WRAPPER(ChildProxy)
00030 public:
00031 uint childrenCount() const;
00032 ObjectPtr childByName(const char *name) const;
00033 ObjectPtr childByIndex(uint index) const;
00034
00035 bool findChildProperty(const char *name, ObjectPtr *object, QGlib::ParamSpecPtr *paramSpec) const;
00036 QGlib::Value childProperty(const char *name) const;
00037 template <typename T> void setChildProperty(const char *name, const T & value);
00038 };
00039
00040 template <typename T>
00041 void ChildProxy::setChildProperty(const char *name, const T & value)
00042 {
00043 QGlib::ParamSpecPtr param;
00044 ObjectPtr object;
00045 if (findChildProperty(name, &object, ¶m)) {
00046 QGlib::Value v;
00047 v.init(param->valueType());
00048 v.set<T>(value);
00049 object->setProperty(param->name(), value);
00050 }
00051 }
00052
00053 }
00054
00055 QGST_REGISTER_TYPE(QGst::ChildProxy)
00056 QGLIB_REGISTER_INTERFACE(QGst::ChildProxy)
00057
00058 #endif // QGST_CHILDPROXY_H