1 #include "cameraresources.h"
4 using namespace ResourcePolicy;
6 CameraResources::CameraResources(QObject *parent) :
8 m_set(new ResourceSet("camera", this, true, true)),
9 m_mode(None), m_acquired(false) {
11 QObject::connect(m_set, SIGNAL(resourcesReleased()), this, SLOT(resourcesReleased()));
12 QObject::connect(m_set, SIGNAL(lostResources()), this, SLOT(lostResources()));
13 QObject::connect(m_set, SIGNAL(resourcesGranted(const QList<ResourcePolicy::ResourceType>&)),
14 this, SLOT(resourcesGranted(const QList<ResourcePolicy::ResourceType>&)));
15 QObject::connect(m_set, SIGNAL(updateOK()), this, SLOT(updateOK()));
17 if (!m_set->initAndConnect()) {
18 qCritical() << "Failed to connect to resource policy engine";
22 CameraResources::~CameraResources() {
26 void CameraResources::acquire(const CameraResources::Mode& mode) {
28 // We need to emit this because the UI migh be waiting
29 emit acquiredChanged();
41 updateSet(QList<ResourcePolicy::ResourceType>()
42 << ResourcePolicy::VideoPlaybackType
43 << ResourcePolicy::VideoRecorderType
44 << ResourcePolicy::ScaleButtonType
45 << ResourcePolicy::SnapButtonType);
49 updateSet(QList<ResourcePolicy::ResourceType>()
50 << ResourcePolicy::VideoPlaybackType
51 << ResourcePolicy::VideoRecorderType
52 << ResourcePolicy::ScaleButtonType
53 << ResourcePolicy::SnapButtonType);
57 updateSet(QList<ResourcePolicy::ResourceType>()
58 << ResourcePolicy::VideoPlaybackType
59 << ResourcePolicy::VideoRecorderType
60 << ResourcePolicy::ScaleButtonType
61 << ResourcePolicy::SnapButtonType
62 << ResourcePolicy::AudioRecorderType,
63 QList<ResourcePolicy::ResourceType>()
64 << ResourcePolicy::AudioPlaybackType);
68 updateSet(QList<ResourcePolicy::ResourceType>()
69 << ResourcePolicy::VideoPlaybackType
70 << ResourcePolicy::ScaleButtonType,
71 QList<ResourcePolicy::ResourceType>()
72 << ResourcePolicy::AudioPlaybackType);
77 qWarning() << "Unknown mode" << mode;
83 bool CameraResources::acquired() const {
87 void CameraResources::resourcesReleased() {
90 emit acquiredChanged();
93 void CameraResources::lostResources() {
96 emit acquiredChanged();
99 void CameraResources::resourcesGranted(const QList<ResourcePolicy::ResourceType>& optional) {
103 emit acquiredChanged();
106 void CameraResources::updateOK() {
108 emit acquiredChanged();
111 QList<ResourcePolicy::ResourceType> CameraResources::listSet() {
112 QList<Resource *> resources = m_set->resources();
113 QList<ResourcePolicy::ResourceType> set;
115 foreach (Resource *r, resources) {
122 void CameraResources::updateSet(const QList<ResourcePolicy::ResourceType>& required,
123 const QList<ResourcePolicy::ResourceType>& optional) {
125 QList<ResourcePolicy::ResourceType> set = listSet();
127 foreach (ResourceType r, set) {
128 // Check for acquired resources that should be dropped.
129 if (required.indexOf(r) == -1) {
130 m_set->deleteResource(r);
134 foreach (ResourceType r, required) {
135 // TODO: AudioPlayback needs special handling
136 m_set->addResource(r);
139 // TODO: optional resources