Added QtCamCapability (base class for capabilities) and implemented flash, zoom and...
[harmattan/cameraplus] / lib / qtcamcapability.cpp
1 #include "qtcamcapability.h"
2 #include "qtcamdevice.h"
3 #include "qtcamdevice_p.h"
4 #include "qtcamcapability_p.h"
5
6 #ifndef GST_USE_UNSTABLE_API
7 #define GST_USE_UNSTABLE_API
8 #endif
9 #include <gst/interfaces/photography.h>
10
11 QtCamCapability::Capabilities QtCamCapability::capabilities(QtCamDevice *dev) {
12   if (!dev || !dev->d_ptr || !dev->d_ptr->videoSource) {
13     return QtCamCapability::Capabilities(0);
14   }
15
16   if (!GST_IS_PHOTOGRAPHY(dev->d_ptr->videoSource)) {
17     return QtCamCapability::Capabilities(0);
18   }
19
20   GstPhotography *photo = GST_PHOTOGRAPHY(dev->d_ptr->videoSource);
21   return QtCamCapability::Capabilities(gst_photography_get_capabilities(photo));
22 }
23
24 QtCamCapability::QtCamCapability(QtCamCapabilityPrivate *d, QObject *parent) :
25   QObject(parent), d_ptr(d) {
26   d_ptr->bin = d_ptr->dev->d_ptr->cameraBin;
27   d_ptr->src = d_ptr->dev->d_ptr->videoSource;
28   d_ptr->q_ptr = this;
29
30   if (!d_ptr->prop.isEmpty()) {
31     d_ptr->startMonitoring();
32   }
33 }
34
35 QtCamCapability::~QtCamCapability() {
36   if (!d_ptr->prop.isEmpty()) {
37     d_ptr->stopMonitoring();
38   }
39
40   delete d_ptr; d_ptr = 0;
41 }
42
43 bool QtCamCapability::isSupported() {
44   return QtCamCapability::capabilities(d_ptr->dev).testFlag(d_ptr->cap);
45 }