X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=src%2Fsettings.cpp;h=9c82c97e8ac1adad446e9a00bfae47a4a321948a;hb=6a4df9c3f8fa72386278d7925fda74ae4549b2ac;hp=1d099a04bde8608ffd5df77f6e16eb05536d62ff;hpb=9daf6507e6f4ebabeca32d8c35f84a57a4d18534;p=harmattan%2Fcameraplus diff --git a/src/settings.cpp b/src/settings.cpp index 1d099a0..9c82c97 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -21,38 +21,34 @@ #include "settings.h" #include #include +#include "devicesettings.h" #define PATH QString("%1%2.config%2/cameraplus.conf").arg(QDir::homePath()).arg(QDir::separator()) #define DEFAULT_MODE 1 -#define DEFAULT_SCENE_MODE 6 // Auto #define DEFAULT_USE_GPS true #define DEFAULT_USE_GEOTAGS true -#define DEFAULT_COLOR_FILTER 0 -#define DEFAULT_WHITE_BALANCE 0 -#define DEFAULT_EV_COMP 0.0 -#define DEFAULT_FLASH_MODE 0 -#define DEFAULT_IMAGE_ISO 0 -#define DEFAULT_IMAGE_RESOLUTION "high" -#define DEFAULT_IMAGE_ASPECT_RATIO "16:9" -#define DEFAULT_VIDEO_RESOLUTION "high" #define DEFAULT_SOUND_ENABLED true -#define DEFAULT_VIDEO_TORCH_ON false #define DEFAULT_SHOW_TOOL_BAR false #define DEFAULT_VIDEO_MUTE false #define DEFAULT_GRID_ENABLED false #define DEFAULT_FACE_DETECTION_ENABLED true #define DEFAULT_ZOOM_AS_SHUTTER false +#define DEFAULT_PROXIMITY_AS_SHUTTER false #define DEFAULT_DEVICE 0 +#define DEFAULT_ENABLE_PREVIEW true +#define DEFAULT_FILE_NAMING_UTC true Settings::Settings(QObject *parent) : QObject(parent), - m_settings(new QSettings(PATH, QSettings::IniFormat, this)) { + m_settings(new QSettings(PATH, QSettings::IniFormat, this)), + m_device(0) { } Settings::~Settings() { delete m_settings; m_settings = 0; + delete m_device; m_device = 0; } int Settings::mode() const { @@ -103,257 +99,363 @@ void Settings::setUseGeotags(bool enable) { } } -int Settings::imageSceneMode() const { - return m_settings->value("image/sceneMode", DEFAULT_SCENE_MODE).toInt(); +bool Settings::isSoundEnabled() const { + return m_settings->value("camera/soundEnabled", DEFAULT_SOUND_ENABLED).toBool(); +} + +void Settings::setSoundEnabled(bool enabled) { + if (isSoundEnabled() != enabled) { + m_settings->setValue("camera/soundEnabled", enabled); + emit soundEnabledChanged(); + } +} + +bool Settings::isToolBarShown() const { + return m_settings->value("camera/showToolBar", DEFAULT_SHOW_TOOL_BAR).toBool(); +} + +void Settings::setToolBarShown(bool shown) { + if (isToolBarShown() != shown) { + m_settings->setValue("camera/showToolBar", shown); + + emit toolBarShownChanged(); + } +} + +bool Settings::isVideoMuted() const { + return m_settings->value("video/mute", DEFAULT_VIDEO_MUTE).toBool(); +} + +void Settings::setVideoMuted(bool muted) { + if (isVideoMuted() != muted) { + m_settings->setValue("video/mute", muted); + emit videoMutedChanged(); + } +} + +bool Settings::isGridEnabled() const { + return m_settings->value("camera/gridEnabled", DEFAULT_GRID_ENABLED).toBool(); +} + +void Settings::setGridEnabled(bool enabled) { + if (enabled != isGridEnabled()) { + m_settings->setValue("camera/gridEnabled", enabled); + emit gridEnabledChanged(); + } +} + +bool Settings::isFaceDetectionEnabled() const { + return m_settings->value("image/faceDetectionEnabled", DEFAULT_FACE_DETECTION_ENABLED).toBool(); +} + +void Settings::setFaceDetectionEnabled(bool enabled) { + if (isFaceDetectionEnabled() != enabled) { + m_settings->setValue("image/faceDetectionEnabled", enabled); + emit faceDetectionEnabledChanged(); + } +} + +bool Settings::isZoomAsShutterEnabled() const { + return m_settings->value("camera/zoomAsShutter", DEFAULT_ZOOM_AS_SHUTTER).toBool(); +} + +void Settings::setZoomAsShutterEnabled(bool enabled) { + if (isZoomAsShutterEnabled() != enabled) { + m_settings->setValue("camera/zoomAsShutter", enabled); + + emit zoomAsShutterChanged(); + } +} + +bool Settings::isProximityAsShutterEnabled() const { + return m_settings->value("camera/proximityAsShutter", DEFAULT_PROXIMITY_AS_SHUTTER).toBool(); +} + +void Settings::setProximityAsShutterEnabled(bool enabled) { + if (isProximityAsShutterEnabled() != enabled) { + m_settings->setValue("camera/proximityAsShutter", enabled); + + emit proximityAsShutterChanged(); + } +} + +int Settings::device() const { + return m_settings->value("camera/device", DEFAULT_DEVICE).toInt(); +} + +void Settings::setDevice(int device) { + if (device != Settings::device()) { + emit deviceAboutToChange(); + + m_settings->setValue("camera/device", device); + + delete m_device; m_device = 0; + + if (mode() == DEFAULT_MODE) { + // image + emit imageSceneModeChanged(); + emit imageColorFilterChanged(); + emit imageWhiteBalanceChanged(); + emit imageEvCompChanged(); + emit imageFlashModeChanged(); + emit imageIsoChanged(); + emit imageAspectRatioChanged(); + emit imageResolutionChanged(); + } + else { + // video + emit videoSceneModeChanged(); + emit videoColorFilterChanged(); + emit videoWhiteBalanceChanged(); + emit videoEvCompChanged(); + emit videoAspectRatioChanged(); + emit videoResolutionChanged(); + emit videoTorchOnChanged(); + } + + emit deviceChanged(); + } +} + +DeviceSettings *Settings::deviceSettings() { + if (m_device) { + return m_device; + } + + int device = Settings::device(); + + if (device == 0) { + m_device = new PrimaryDeviceSettings; + } + else { + m_device = new SecondaryDeviceSettings; + } + + return m_device; +} + +QVariant Settings::deviceValue(const char *key, const QVariant& defaultValue) { + QString k = QString("%1/%2").arg(deviceSettings()->id()).arg(key); + + return m_settings->value(k, defaultValue); +} + +void Settings::setDeviceValue(const char *key, const QVariant& value) { + QString k = QString("%1/%2").arg(deviceSettings()->id()).arg(key); + + m_settings->setValue(k, value); +} + +// Device dependant settings + +int Settings::imageSceneMode() { + return deviceValue("image/sceneMode", deviceSettings()->defaultImageSceneMode()).toInt(); } void Settings::setImageSceneMode(int mode) { if (mode != imageSceneMode()) { - m_settings->setValue("image/sceneMode", mode); + setDeviceValue("image/sceneMode", mode); } + // We always emit the signal to reset scene and all scene associated values emit imageSceneModeChanged(); } -int Settings::imageColorFilter() const { - return m_settings->value("image/colorFilter", DEFAULT_COLOR_FILTER).toInt(); +int Settings::imageColorFilter() { + return deviceValue("image/colorFilter", deviceSettings()->defaultImageColorFilter()).toInt(); } void Settings::setImageColorFilter(int filter) { if (filter != imageColorFilter()) { - m_settings->setValue("image/colorFilter", filter); + setDeviceValue("image/colorFilter", filter); emit imageColorFilterChanged(); } } -int Settings::imageWhiteBalance() const { - return m_settings->value("image/whiteBalance", DEFAULT_WHITE_BALANCE).toInt(); +int Settings::imageWhiteBalance() { + return deviceValue("image/whiteBalance", deviceSettings()->defaultImageWhiteBalance()).toInt(); } void Settings::setImageWhiteBalance(int wb) { if (wb != imageWhiteBalance()) { - m_settings->setValue("image/whiteBalance", wb); + setDeviceValue("image/whiteBalance", wb); emit imageWhiteBalanceChanged(); } } -qreal Settings::imageEvComp() const { - return m_settings->value("image/evComp", DEFAULT_EV_COMP).toReal(); +qreal Settings::imageEvComp() { + return deviceValue("image/evComp", deviceSettings()->defaultImageEvComp()).toReal(); } void Settings::setImageEvComp(qreal ev) { if (!qFuzzyCompare(ev, imageEvComp())) { - m_settings->setValue("image/evComp", ev); + setDeviceValue("image/evComp", ev); emit imageEvCompChanged(); } } -int Settings::videoSceneMode() const { - return m_settings->value("video/sceneMode", DEFAULT_SCENE_MODE).toInt(); +int Settings::videoSceneMode() { + return deviceValue("video/sceneMode", deviceSettings()->defaultVideoSceneMode()).toInt(); } void Settings::setVideoSceneMode(int mode) { if (mode != videoSceneMode()) { - m_settings->setValue("video/sceneMode", mode); + setDeviceValue("video/sceneMode", mode); } emit videoSceneModeChanged(); } -int Settings::videoColorFilter() const { - return m_settings->value("video/colorFilter", DEFAULT_COLOR_FILTER).toInt(); +int Settings::videoColorFilter() { + return deviceValue("video/colorFilter", deviceSettings()->defaultVideoColorFilter()).toInt(); } void Settings::setVideoColorFilter(int filter) { if (filter != videoColorFilter()) { - m_settings->setValue("video/colorFilter", filter); + setDeviceValue("video/colorFilter", filter); emit videoColorFilterChanged(); } } -int Settings::videoWhiteBalance() const { - return m_settings->value("video/whiteBalance", DEFAULT_WHITE_BALANCE).toInt(); +int Settings::videoWhiteBalance() { + return deviceValue("video/whiteBalance", deviceSettings()->defaultVideoWhiteBalance()).toInt(); } void Settings::setVideoWhiteBalance(int wb) { if (wb != videoWhiteBalance()) { - m_settings->setValue("video/whiteBalance", wb); + setDeviceValue("video/whiteBalance", wb); emit videoWhiteBalanceChanged(); } } -qreal Settings::videoEvComp() const { - return m_settings->value("video/evComp", DEFAULT_EV_COMP).toReal(); +qreal Settings::videoEvComp() { + return deviceValue("video/evComp", deviceSettings()->defaultVideoEvComp()).toReal(); } void Settings::setVideoEvComp(qreal ev) { if (!qFuzzyCompare(ev, videoEvComp())) { - m_settings->setValue("video/evComp", ev); + setDeviceValue("video/evComp", ev); emit videoEvCompChanged(); } } -int Settings::imageFlashMode() const { - return m_settings->value("image/flashMode", DEFAULT_FLASH_MODE).toInt(); +int Settings::imageFlashMode() { + return deviceValue("image/flashMode", deviceSettings()->defaultImageFlashMode()).toInt(); } void Settings::setImageFlashMode(int mode) { if (mode != imageFlashMode()) { - m_settings->setValue("image/flashMode", mode); + setDeviceValue("image/flashMode", mode); emit imageFlashModeChanged(); } } -int Settings::imageIso() const { - return m_settings->value("image/iso", DEFAULT_IMAGE_ISO).toInt(); +int Settings::imageIso() { + return deviceValue("image/iso", deviceSettings()->defaultImageIso()).toInt(); } void Settings::setImageIso(int iso) { if (imageIso() != iso) { - m_settings->setValue("image/iso", iso); + setDeviceValue("image/iso", iso); emit imageIsoChanged(); } } -QString Settings::imageAspectRatio() const { - return m_settings->value("image/aspectRatio", DEFAULT_IMAGE_ASPECT_RATIO).toString(); +QString Settings::imageAspectRatio() { + return deviceValue("image/aspectRatio", deviceSettings()->defaultImageAspectRatio()).toString(); } void Settings::setImageAspectRatio(const QString& aspectRatio) { if (aspectRatio != imageAspectRatio()) { - m_settings->setValue("image/aspectRatio", aspectRatio); + setDeviceValue("image/aspectRatio", aspectRatio); emit imageAspectRatioChanged(); } } -QString Settings::imageResolution() const { - return m_settings->value("image/resolution", DEFAULT_IMAGE_RESOLUTION).toString(); +QString Settings::imageResolution() { + return deviceValue("image/resolution", deviceSettings()->defaultImageResolution()).toString(); } void Settings::setImageResolution(const QString& resolution) { if (resolution != imageResolution()) { - m_settings->setValue("image/resolution", resolution); + setDeviceValue("image/resolution", resolution); emit imageResolutionChanged(); } } -QString Settings::videoAspectRatio() const { - // This is not used for anything so we will return an empty string for now - // which will make the backend return all resolutions. - - return QString(); +QString Settings::videoAspectRatio() { + return deviceValue("video/aspectRatio", deviceSettings()->defaultVideoAspectRatio()).toString(); } -void Settings::setVideoAspectRatio(const QString& aspectRatio) { - Q_UNUSED(aspectRatio); - // This is not used for anything so we will just ignore it. +void Settings::setVideoAspectRatio(const QString& aspectRatio) { + if (Settings::videoAspectRatio() != aspectRatio) { + setDeviceValue("video/aspectRatio", aspectRatio); + emit videoAspectRatioChanged(); + } } -QString Settings::videoResolution() const { - return m_settings->value("video/resolution", DEFAULT_VIDEO_RESOLUTION).toString(); +QString Settings::videoResolution() { + return deviceValue("video/resolution", deviceSettings()->defaultVideoResolution()).toString(); } void Settings::setVideoResolution(const QString& resolution) { if (resolution != videoResolution()) { - m_settings->setValue("video/resolution", resolution); + setDeviceValue("video/resolution", resolution); emit videoResolutionChanged(); } } -bool Settings::isSoundEnabled() const { - return m_settings->value("camera/soundEnabled", DEFAULT_SOUND_ENABLED).toBool(); -} - -void Settings::setSoundEnabled(bool enabled) { - if (isSoundEnabled() != enabled) { - m_settings->setValue("camera/soundEnabled", enabled); - emit soundEnabledChanged(); - } -} - -bool Settings::isVideoTorchOn() const { - return m_settings->value("video/torchOn", DEFAULT_VIDEO_TORCH_ON).toBool(); +bool Settings::isVideoTorchOn() { + return deviceValue("video/torchOn", deviceSettings()->defaultVideoTorchOn()).toBool(); } void Settings::setVideoTorchOn(bool on) { if (isVideoTorchOn() != on) { - m_settings->setValue("video/torchOn", on); + setDeviceValue("video/torchOn", on); emit videoTorchOnChanged(); } } -bool Settings::isToolBarShown() const { - return m_settings->value("camera/showToolBar", DEFAULT_SHOW_TOOL_BAR).toBool(); -} - -void Settings::setToolBarShown(bool shown) { - if (isToolBarShown() != shown) { - m_settings->setValue("camera/showToolBar", shown); - - emit toolBarShownChanged(); - } -} - -bool Settings::isVideoMuted() const { - return m_settings->value("video/mute", DEFAULT_VIDEO_MUTE).toBool(); +QString Settings::fileNamingStamp(const QString& id) const { + QString key = QString("fileNaming/%1").arg(id); + return m_settings->value(key).toString(); } -void Settings::setVideoMuted(bool muted) { - if (isVideoMuted() != muted) { - m_settings->setValue("video/mute", muted); - emit videoMutedChanged(); - } -} - -bool Settings::isGridEnabled() const { - return m_settings->value("camera/gridEnabled", DEFAULT_GRID_ENABLED).toBool(); -} - -void Settings::setGridEnabled(bool enabled) { - if (enabled != isGridEnabled()) { - m_settings->setValue("camera/gridEnabled", enabled); - emit gridEnabledChanged(); - } +void Settings::setFileNamingStamp(const QString& id, const QString& stamp) { + QString key = QString("fileNaming/%1").arg(id); + m_settings->setValue(key, stamp); } -bool Settings::isFaceDetectionEnabled() const { - return m_settings->value("image/faceDetectionEnabled", DEFAULT_FACE_DETECTION_ENABLED).toBool(); +int Settings::fileNamingCounter(const QString& id) const { + QString key = QString("fileNaming/%1").arg(id); + return m_settings->value(key).toInt(); } -void Settings::setFaceDetectionEnabled(bool enabled) { - if (isFaceDetectionEnabled() != enabled) { - m_settings->setValue("image/faceDetectionEnabled", enabled); - emit faceDetectionEnabledChanged(); - } +void Settings::setFileNamingCounter(const QString& id, int counter) { + QString key = QString("fileNaming/%1").arg(id); + m_settings->setValue(key, counter); } -bool Settings::isZoomAsShutterEnabled() { - return m_settings->value("camera/zoomAsShutter", DEFAULT_ZOOM_AS_SHUTTER).toBool(); +bool Settings::isPreviewEnabled() const { + return m_settings->value("camera/enablePreview", DEFAULT_ENABLE_PREVIEW).toBool(); } -void Settings::setZoomAsShutterEnabled(bool enabled) { - if (isZoomAsShutterEnabled() != enabled) { - m_settings->setValue("camera/zoomAsShutter", enabled); +void Settings::setPreviewEnabled(bool enabled) { + if (enabled != isPreviewEnabled()) { + m_settings->setValue("camera/enablePreview", enabled); - emit zoomAsShutterChanged(); + emit previewEnabledChanged(); } } -int Settings::device() const { - return m_settings->value("camera/device", DEFAULT_DEVICE).toInt(); -} - -void Settings::setDevice(int device) { - if (device != Settings::device()) { - m_settings->setValue("camera/device", device); - emit deviceChanged(); - } +bool Settings::isUtcForFileNamingUsed() const { + return m_settings->value("fileNaming/useUtc", DEFAULT_FILE_NAMING_UTC).toBool(); }