2 * This file is part of CameraPlus.
4 * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 #include "qtcamscanner.h"
23 #include "qtcamconfig.h"
24 #include "qtcamdevice.h"
25 #include "gst/gstcopy.h"
28 class QtCameraPrivate {
31 qt_cam_copy_register();
35 QtCamScanner *scanner;
38 QtCamera::QtCamera(QObject *parent) :
39 QObject(parent), d_ptr(new QtCameraPrivate) {
43 d_ptr->conf = new QtCamConfig(this);
44 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
49 QtCamera::QtCamera(const QString& configPath, QObject *parent) :
50 QObject(parent), d_ptr(new QtCameraPrivate) {
54 d_ptr->conf = new QtCamConfig(configPath, this);
55 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
60 QtCamera::QtCamera(QtCamConfig *config, QObject *parent) :
61 QObject(parent), d_ptr(new QtCameraPrivate) {
66 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
71 QtCamera::~QtCamera() {
72 delete d_ptr; d_ptr = 0;
77 void QtCamera::refreshDevices() {
78 d_ptr->scanner->refresh();
81 QList<QPair<QString, QVariant> > QtCamera::devices() const {
82 return d_ptr->scanner->devices();
85 QtCamDevice *QtCamera::device(const QVariant& id, QObject *parent) {
86 QList<QPair<QString, QVariant> > devs = devices();
88 // G++ barfs with foreach and class templates.
89 typedef QPair<QString, QVariant> Dev;
90 foreach (const Dev& dev, devs) {
91 if (dev.second == id) {
92 return new QtCamDevice(d_ptr->conf, dev.first, dev.second, parent ? parent : this);
99 QtCamConfig *QtCamera::config() const {