Initial commit.
[qtgstreamer:qtgstreamer.git] / src / qgstobject.h
1 /*
2     Copyright (C) 2009  George Kiagiadakis <kiagiadakis.george@gmail.com>
3
4     This library is free software; you can redistribute it and/or modify
5     it under the terms of the GNU Lesser General Public License as published
6     by the Free Software Foundation; either version 2.1 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU Lesser General Public License
15     along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef _QTGSTREAMER_QGSTOBJECT_H
18 #define _QTGSTREAMER_QGSTOBJECT_H
19
20 #include <QtCore/QObject>
21 #include <QtCore/QVariant>
22 typedef struct _GstObject GstObject;
23
24 namespace QtGstreamer {
25
26 class QGstBin;
27
28 class QGstObject : public QObject
29 {
30     Q_OBJECT
31     Q_DISABLE_COPY(QGstObject)
32 public:
33     explicit QGstObject(GstObject *gstObject, QObject *parent = 0);
34     virtual ~QGstObject();
35
36     QVariant property(const char *name) const;
37     template <class T> T property(const char *name) const;
38     void setProperty(const char *name, const QVariant & value);
39     template <class T> void setProperty(const char *name, const T & value);
40
41 protected:
42     GstObject *m_object;
43     friend class QGstBin;
44 };
45
46 template <class T>
47 T QGstObject::property(const char *name) const
48 {
49     return property(name).value<T>();
50 }
51
52 template <class T>
53 void QGstObject::setProperty(const char *name, const T & value)
54 {
55     setProperty(name, QVariant::fromValue<T>(value));
56 }
57
58 }
59
60 #endif