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 QtCamScanner *scanner;
34 QtCamera::QtCamera(QObject *parent) :
35 QObject(parent), d_ptr(new QtCameraPrivate) {
38 qt_cam_copy_register();
40 d_ptr->conf = new QtCamConfig(this);
41 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
46 QtCamera::QtCamera(const QString& configPath, QObject *parent) :
47 QObject(parent), d_ptr(new QtCameraPrivate) {
50 qt_cam_copy_register();
52 d_ptr->conf = new QtCamConfig(configPath, this);
53 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
58 QtCamera::QtCamera(QtCamConfig *config, QObject *parent) :
59 QObject(parent), d_ptr(new QtCameraPrivate) {
62 qt_cam_copy_register();
65 d_ptr->scanner = new QtCamScanner(d_ptr->conf, this);
70 QtCamera::~QtCamera() {
71 delete d_ptr; d_ptr = 0;
76 void QtCamera::refreshDevices() {
77 d_ptr->scanner->refresh();
80 QList<QPair<QString, QVariant> > QtCamera::devices() const {
81 return d_ptr->scanner->devices();
84 QtCamDevice *QtCamera::device(const QVariant& id, QObject *parent) {
85 QList<QPair<QString, QVariant> > devs = devices();
87 // G++ barfs with foreach and class templates.
88 typedef QPair<QString, QVariant> Dev;
89 foreach (const Dev& dev, devs) {
90 if (dev.second == id) {
91 return new QtCamDevice(d_ptr->conf, dev.first, dev.second, parent ? parent : this);
98 QtCamConfig *QtCamera::config() const {