X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=blobdiff_plain;f=src%2Fcameraresources.h;h=ba1e448ff2d2f62ebf7e3e5aae749e13b9d8b67d;hp=e5bc048d1a4caa6959fb094f8eedacd6ff356a5e;hb=f8861ec5a342457760b9e767ac90e6524917ad87;hpb=8fda608e8809c2b5c1b0db2a10e6099b73759ce8 diff --git a/src/cameraresources.h b/src/cameraresources.h index e5bc048..ba1e448 100644 --- a/src/cameraresources.h +++ b/src/cameraresources.h @@ -24,14 +24,20 @@ #define CAMERA_RESOURCES_H #include +#include #include +class CameraResourcesWorker; + class CameraResources : public QObject { Q_OBJECT Q_PROPERTY(bool acquired READ acquired NOTIFY acquiredChanged); + Q_PROPERTY(bool hijacked READ hijacked NOTIFY hijackedChanged); + Q_PROPERTY(bool scaleAcquired READ isScaleAcquired NOTIFY scaleAcquisitionChanged); Q_ENUMS(Mode); + Q_ENUMS(ResourceType); public: typedef enum { @@ -45,30 +51,69 @@ public: CameraResources(QObject *parent = 0); ~CameraResources(); + Q_INVOKABLE bool acquire(const Mode& mode); + bool acquired() const; + bool hijacked() const; + bool isScaleAcquired() const; + +signals: + void acquiredChanged(); + void hijackedChanged(); + void updated(); + void scaleAcquisitionChanged(); + +private: + bool isResourceGranted(const ResourcePolicy::ResourceType& resource) const; + + CameraResourcesWorker *m_worker; + QThread m_thread; +}; + +class CameraResourcesWorker : public QObject { + Q_OBJECT + +public: + CameraResourcesWorker(QObject *parent = 0); + ~CameraResourcesWorker(); public slots: - void acquire(const Mode& mode); + void acquire(bool *ok, const CameraResources::Mode& mode); + void acquired(bool *ok); + void hijacked(bool *ok); + void isResourceGranted(bool *ok, int resource); signals: void acquiredChanged(); + void hijackedChanged(); + void updated(); private slots: + void init(); + void resourcesReleased(); void lostResources(); void resourcesGranted(const QList& optional); - void updateOK(); + void resourcesDenied(); private: - void updateSet(const QList& required, + bool release(); + + bool updateSet(const QList& required, const QList& optional = QList()); QList listSet(); + void setAcquired(bool acquired); + void setHijacked(bool hijacked); + ResourcePolicy::ResourceSet *m_set; - Mode m_mode; + + CameraResources::Mode m_mode; bool m_acquired; + bool m_acquiring; + bool m_hijacked; }; #endif /* CAMERA_RESOURCES_H */