Implemented QtCamEvComp and QtCamVideoTorch
[harmattan/cameraplus] / lib / qtcamdevice.h
1 // -*- c++ -*-
2
3 #ifndef QT_CAM_DEVICE_H
4 #define QT_CAM_DEVICE_H
5
6 #include <QObject>
7 #include <QVariant>
8
9 class QtCamDevicePrivate;
10 class QtCamConfig;
11 class QtCamViewfinder;
12 class QtCamVideoMode;
13 class QtCamImageMode;
14 class QtCamMode;
15 class QtCamGStreamerMessageListener;
16 class QtCamMetaData;
17 class QtCamCapability;
18
19 class QtCamDevice : public QObject {
20   Q_OBJECT
21
22 public:
23   QtCamDevice(QtCamConfig *config, const QString& name, const QVariant& id, QObject *parent = 0);
24   ~QtCamDevice();
25
26   bool setViewfinder(QtCamViewfinder *viewfinder);
27   bool start();
28   bool stop();
29   bool isRunning();
30   bool isIdle();
31
32   QtCamImageMode *imageMode() const;
33   QtCamVideoMode *videoMode() const;
34
35   QtCamMode *activeMode() const;
36
37   QString name() const;
38   QVariant id() const;
39
40   QtCamConfig *config() const;
41   QtCamGStreamerMessageListener *listener() const;
42
43 signals:
44   void error(const QString& message, int code, const QString& debug);
45   void started();
46   void stopping();
47   void stopped();
48   void idleStateChanged(bool isIdle);
49   void modeChanged();
50   void runningStateChanged(bool running);
51
52 private:
53   Q_PRIVATE_SLOT(d_ptr, void _d_error(const QString&, int, const QString&))
54   Q_PRIVATE_SLOT(d_ptr, void _d_started())
55   Q_PRIVATE_SLOT(d_ptr, void _d_stopped())
56   Q_PRIVATE_SLOT(d_ptr, void _d_stopping())
57
58   friend class QtCamMetaData;
59   friend class QtCamCapability;
60   friend class QtCamVideoTorch;
61
62   QtCamDevicePrivate *d_ptr;
63 };
64
65 #endif /* QT_CAM_DEVICE_H */