X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=blobdiff_plain;f=lib%2Fqtcamconfig.cpp;h=7200f643a58b9b0b6239b182e996ac0bea1c8401;hp=1cb9624f322be855cc1daae5176f7337f3ffb9bc;hb=c4646c0b1d0435d710af3feea6b550bd604b2aad;hpb=ddd8b7037bf34c35800f2a8cec0af45fcbd72a68 diff --git a/lib/qtcamconfig.cpp b/lib/qtcamconfig.cpp index 1cb9624..7200f64 100644 --- a/lib/qtcamconfig.cpp +++ b/lib/qtcamconfig.cpp @@ -1,9 +1,29 @@ +/*! + * This file is part of CameraPlus. + * + * Copyright (C) 2012-2013 Mohammed Sameer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + #include "qtcamconfig.h" #include #include #include -#define CONFIGURATION_FILE "/etc/qtcamera.ini" +#define CONFIGURATION_FILE DATA_DIR"/qtcamera.ini" class QtCamConfigPrivate { public: @@ -16,9 +36,13 @@ public: return QSize(parts[0].toInt(), parts[1].toInt()); } - QPair readFrameRate() { - QList parts = conf->value("fps").toString().trimmed().split("/"); - return qMakePair(parts[0].toInt(), parts[1].toInt()); + QVariant readWithFallback(const QString& generic, const QString& specific, const QString& key) { + QString genericKey = QString("%1/%2").arg(generic).arg(key); + QString specificKey = QString("%1/%2").arg(specific).arg(key); + + QVariant var = conf->value(genericKey); + + return conf->value(specificKey, var); } QSettings *conf; @@ -37,8 +61,6 @@ QtCamConfig::QtCamConfig(const QString& configPath, QObject *parent) : QObject(parent), d_ptr(new QtCamConfigPrivate) { d_ptr->conf = new QSettings(configPath, QSettings::IniFormat, this); - - defaultImageSettings(); } QtCamConfig::~QtCamConfig() { @@ -65,6 +87,10 @@ QString QtCamConfig::viewfinderRenderer() const { return d_ptr->conf->value("viewfinder-sink/renderer").toString(); } +bool QtCamConfig::viewfinderUseFence() const { + return d_ptr->conf->value("viewfinder-sink/use-fence").toBool(); +} + QString QtCamConfig::audioSource() const { return d_ptr->element("audio-source"); } @@ -77,72 +103,69 @@ QString QtCamConfig::wrapperVideoSourceProperty() const { return d_ptr->conf->value("wrapper-video-source/property").toString(); } -QtCamImageSettings QtCamConfig::defaultImageSettings() { +QtCamImageSettings *QtCamConfig::imageSettings(const QVariant& id) { + QString generic = "image"; + QString specific = QString("%1-%2").arg(generic).arg(id.toString()); - QList settings = imageSettings(); + QString profileName = d_ptr->readWithFallback(generic, specific, "profile-name").toString(); + QString profilePath = d_ptr->readWithFallback(generic, specific, "profile-path").toString(); + QString suffix = d_ptr->readWithFallback(generic, specific, "extension").toString(); + QStringList presets = d_ptr->readWithFallback(generic, specific, "presets").toStringList(); - QString def = d_ptr->conf->value("image/default").toString(); - foreach (const QtCamImageSettings& s, settings) { - if (s.id() == def) { - return s; - } - } + QList resolutions; + + foreach (const QString& preset, presets) { + d_ptr->conf->beginGroup(preset); - // This will crash if no presets have been shipped but you deserve paying - // the price of shipping a broken configuration file. - return settings[0]; -} - -QList QtCamConfig::imageSettings() { - if (d_ptr->imageSettings.isEmpty()) { - QStringList presets = d_ptr->conf->value("image/presets").toStringList(); - foreach (const QString& preset, presets) { - d_ptr->conf->beginGroup(preset); - QPair fps = d_ptr->readFrameRate(); - d_ptr->imageSettings << - QtCamImageSettings(preset, d_ptr->conf->value("name").toString(), - d_ptr->readResolution("capture"), - d_ptr->readResolution("preview"), - d_ptr->readResolution("viewfinder"), - fps.first, fps.second); - d_ptr->conf->endGroup(); - } + QString id = preset; + QString name = d_ptr->conf->value("name").toString(); + QSize capture = d_ptr->readResolution("capture"); + QSize preview = d_ptr->readResolution("preview"); + QSize viewfinder = d_ptr->readResolution("viewfinder"); + int fps = d_ptr->conf->value("fps").toInt(); + int nightFps = d_ptr->conf->value("night").toInt(); + int megaPixels = d_ptr->conf->value("megapixels").toInt(); + QString aspectRatio = d_ptr->conf->value("aspectratio").toString(); + + d_ptr->conf->endGroup(); + + resolutions << QtCamImageResolution(id, name, capture, preview, viewfinder, + fps, nightFps, megaPixels, aspectRatio); } - return d_ptr->imageSettings; + return new QtCamImageSettings(id.toString(), suffix, profileName, profilePath, resolutions); } -QtCamVideoSettings QtCamConfig::defaultVideoSettings() { - QList settings = videoSettings(); +QtCamVideoSettings *QtCamConfig::videoSettings(const QVariant& id) { + QString generic = "video"; + QString specific = QString("%1-%2").arg(generic).arg(id.toString()); - QString def = d_ptr->conf->value("video/default").toString(); - foreach (const QtCamVideoSettings& s, settings) { - if (s.id() == def) { - return s; - } - } + QString profileName = d_ptr->readWithFallback(generic, specific, "profile-name").toString(); + QString profilePath = d_ptr->readWithFallback(generic, specific, "profile-path").toString(); + QString suffix = d_ptr->readWithFallback(generic, specific, "extension").toString(); + QStringList presets = d_ptr->readWithFallback(generic, specific, "presets").toStringList(); + + QList resolutions; + + foreach (const QString& preset, presets) { + d_ptr->conf->beginGroup(preset); + + QString id = preset; + QString name = d_ptr->conf->value("name").toString(); + QSize capture = d_ptr->readResolution("capture"); + QSize preview = d_ptr->readResolution("preview"); + int fps = d_ptr->conf->value("fps").toInt(); + int nightFps = d_ptr->conf->value("night").toInt(); + QString aspectRatio = d_ptr->conf->value("aspectratio").toString(); + QString resolution = d_ptr->conf->value("resolution").toString(); + + d_ptr->conf->endGroup(); - // This will crash if no presets have been shipped but you deserve paying - // the price of shipping a broken configuration file. - return settings[0]; -} - -QList QtCamConfig::videoSettings() { - if (d_ptr->videoSettings.isEmpty()) { - QStringList presets = d_ptr->conf->value("video/presets").toStringList(); - foreach (const QString& preset, presets) { - d_ptr->conf->beginGroup(preset); - QPair fps = d_ptr->readFrameRate(); - d_ptr->videoSettings << - QtCamVideoSettings(preset, d_ptr->conf->value("name").toString(), - d_ptr->readResolution("capture"), - d_ptr->readResolution("preview"), - fps.first, fps.second); - d_ptr->conf->endGroup(); - } + resolutions << QtCamVideoResolution(id, name, capture, preview, + fps, nightFps, aspectRatio, resolution); } - return d_ptr->videoSettings; + return new QtCamVideoSettings(id.toString(), suffix, profileName, profilePath, resolutions); } QString QtCamConfig::imageEncodingProfileName() const { @@ -164,3 +187,31 @@ QString QtCamConfig::videoEncodingProfilePath() const { QString QtCamConfig::audioCaptureCaps() const { return d_ptr->conf->value("audio-capture-caps/caps").toString(); } + +QString QtCamConfig::imageSuffix() const { + return d_ptr->conf->value("image/extension").toString(); +} + +QString QtCamConfig::videoSuffix() const { + return d_ptr->conf->value("video/extension").toString(); +} + +QStringList QtCamConfig::viewfinderFilters() const { + return d_ptr->conf->value("viewfinder-filters/elements").toStringList(); +} + +QString QtCamConfig::roiElement() const { + return d_ptr->conf->value("roi/element").toString(); +} + +QString QtCamConfig::roiMessageName() const { + return d_ptr->conf->value("roi/message").toString(); +} + +QString QtCamConfig::roiEnableProperty() const { + return d_ptr->conf->value("roi/enable").toString(); +} + +QString QtCamConfig::roiMessage() const { + return d_ptr->conf->value("roi/message").toString(); +}