Prevent changing any camera properties while device change is in progress
authorMohammed Sameer <msameer@foolab.org>
Sat, 17 Aug 2013 15:59:22 +0000 (18:59 +0300)
committerMohammed Sameer <msameer@foolab.org>
Sat, 17 Aug 2013 15:59:22 +0000 (18:59 +0300)
qml/CameraView.qml
qml/MainPage.qml
src/settings.cpp
src/settings.h

index 404db9e..0cb80c1 100644 (file)
@@ -157,98 +157,98 @@ Viewfinder {
     Binding {
         target: cam.flash
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageFlashMode
     }
 
     Binding {
         target: settings
         property: "imageFlashMode"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: cam.flash.value
     }
 
     Binding {
         target: cam.scene
         property: "value"
-        when: cam.mode == Camera.VideoMode
+        when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress
         value: settings.videoSceneMode
     }
 
     Binding {
         target: cam.scene
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageSceneMode
     }
 
     Binding {
         target: cam.evComp
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageEvComp
     }
 
     Binding {
         target: cam.evComp
         property: "value"
-        when: cam.mode == Camera.VideoMode
+        when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress
         value: settings.videoEvComp
     }
 
     Binding {
         target: settings
         property: "imageEvComp"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: cam.evComp.value
     }
 
     Binding {
         target: settings
         property: "videoEvComp"
-        when: cam.mode == Camera.VideoMode
+        when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress
         value: cam.evComp.value
     }
 
     Binding {
         target: cam.whiteBalance
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageWhiteBalance
     }
 
     Binding {
         target: cam.whiteBalance
         property: "value"
-        when: cam.mode == Camera.VideoMode
+        when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress
         value: settings.videoWhiteBalance
     }
 
     Binding {
         target: cam.colorTone
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageColorFilter
     }
 
     Binding {
         target: cam.colorTone
         property: "value"
-        when: cam.mode == Camera.VideoMode
+        when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress
         value: settings.videoColorFilter
     }
 
     Binding {
         target: cam.iso
         property: "value"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: settings.imageIso
     }
 
     Binding {
         target: settings
         property: "imageIso"
-        when: cam.mode == Camera.ImageMode
+        when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress
         value: cam.iso.value
     }
 
index 90ab26e..bf98add 100644 (file)
@@ -30,6 +30,8 @@ import CameraPlus 1.0
 CameraPage {
     id: root
 
+    property bool deviceChangeInProgress: false
+
     CameraTheme {
         id: cameraTheme
     }
@@ -80,6 +82,10 @@ CameraPage {
 
     Settings {
         id: settings
+        onDeviceAboutToChange: {
+            root.deviceChangeInProgress = true
+        }
+
         onDeviceChanged: {
             viewfinder.cameraDeviceChanged()
 
@@ -87,6 +93,7 @@ CameraPage {
             pipelineManager.error = false
 
             if (root.resetCamera(settings.device, settings.mode)) {
+                root.deviceChangeInProgress = false
                 pipelineManager.startCamera()
             }
         }
index 7d7950c..7cafca0 100644 (file)
@@ -170,6 +170,8 @@ int Settings::device() const {
 
 void Settings::setDevice(int device) {
   if (device != Settings::device()) {
+    emit deviceAboutToChange();
+
     m_settings->setValue("camera/device", device);
 
     delete m_device; m_device = 0;
index 2ec2558..e5a8500 100644 (file)
@@ -174,6 +174,7 @@ signals:
   void gridEnabledChanged();
   void faceDetectionEnabledChanged();
   void zoomAsShutterChanged();
+  void deviceAboutToChange();
   void deviceChanged();
 
 private: