Added resource policy support (Still needs more testing) and refactored the pipeline...
[harmattan/cameraplus] / src / cameraresources.h
1 // -*- c++ -*-
2
3 #ifndef CAMERA_RESOURCES_H
4 #define CAMERA_RESOURCES_H
5
6 #include <QObject>
7 #include <policy/resource-set.h>
8
9 class CameraResources : public QObject {
10   Q_OBJECT
11
12   Q_PROPERTY(bool acquired READ acquired NOTIFY acquiredChanged);
13
14   Q_ENUMS(Mode);
15
16 public:
17   typedef enum {
18     None,
19     Image,
20     Video,
21     Recording,
22     PostCapture,
23   } Mode;
24
25   CameraResources(QObject *parent = 0);
26   ~CameraResources();
27
28   bool acquired() const;
29
30 public slots:
31   void acquire(const Mode& mode);
32
33 signals:
34   void acquiredChanged();
35
36 private slots:
37   void resourcesReleased();
38   void lostResources();
39   void resourcesGranted(const QList<ResourcePolicy::ResourceType>& optional);
40   void updateOK();
41
42 private:
43   void updateSet(const QList<ResourcePolicy::ResourceType>& required,
44                  const QList<ResourcePolicy::ResourceType>& optional =
45                  QList<ResourcePolicy::ResourceType>());
46
47   QList<ResourcePolicy::ResourceType> listSet();
48
49   ResourcePolicy::ResourceSet *m_set;
50   Mode m_mode;
51   bool m_acquired;
52 };
53
54 #endif /* CAMERA_RESOURCES_H */