3 #include "qtcamdevice.h"
5 #include "qtcamimagemode.h"
6 #include "qtcamvideomode.h"
7 #include "qtcamgraphicsviewfinder.h"
8 #include "qtcamconfig.h"
10 // TODO: a viewfinder class that inherits QDeclarativeItem
12 Camera::Camera(QDeclarativeItem *parent) :
13 QDeclarativeItem(parent),
14 m_cam(new QtCamera(this)),
16 m_vf(new QtCamGraphicsViewfinder(m_cam->config(), this)),
17 m_mode(Camera::ImageMode) {
26 void Camera::componentComplete() {
27 QDeclarativeItem::componentComplete();
30 QVariant oldId = m_id;
35 emit deviceCountChanged();
38 int Camera::deviceCount() const {
39 return m_cam ? m_cam->devices().size() : 0;
42 QString Camera::deviceName(int index) const {
43 return m_cam->devices().at(index).first;
46 QVariant Camera::deviceId(int index) const {
47 return m_cam->devices().at(index).second;
50 void Camera::setDeviceId(const QVariant& id) {
55 if (!isComponentComplete()) {
57 emit deviceIdChanged();
61 if (m_dev && m_dev->stop()) {
65 qWarning() << "Failed to stop device";
69 m_dev = m_cam->device(id, this);
73 m_vf->setDevice(m_dev);
75 QObject::connect(m_dev, SIGNAL(runningStateChanged(bool)),
76 this, SIGNAL(runningStateChanged()));
77 QObject::connect(m_dev, SIGNAL(idleStateChanged(bool)), this, SIGNAL(idleStateChanged()));
78 QObject::connect(m_dev, SIGNAL(error(const QString&, int, const QString&)),
79 this, SIGNAL(error(const QString&, int, const QString&)));
81 emit deviceIdChanged();
85 QVariant Camera::deviceId() const {
89 void Camera::geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry) {
90 QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
92 m_vf->setGeometry(newGeometry);
95 QtCamDevice *Camera::device() const {
99 void Camera::setMode(const Camera::CameraMode& mode) {
100 if (m_mode == mode) {
110 if (m_dev->isRunning()) {
117 Camera::CameraMode Camera::mode() {
121 bool Camera::start() {
128 return m_dev->start();
131 bool Camera::stop() {
133 return m_dev->stop();
139 bool Camera::isIdle() {
140 return m_dev ? m_dev->isIdle() : true;
143 bool Camera::isRunning() {
144 return m_dev ? m_dev->isRunning() : false;
147 void Camera::applyMode() {
148 if (m_mode == Camera::VideoMode && m_dev->activeMode() != m_dev->videoMode()) {
149 m_dev->videoMode()->activate();
151 else if (m_mode == Camera::ImageMode && m_dev->activeMode() != m_dev->imageMode()) {
152 m_dev->imageMode()->activate();
156 QString Camera::imageSuffix() const {
157 return m_cam->config()->imageSuffix();
160 QString Camera::videoSuffix() const {
161 return m_cam->config()->videoSuffix();