resetCamera() will set needed resolution after resetting camera.
[harmattan/cameraplus] / qml / MainPage.qml
index 90ab26e..c4f5de4 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,9 +93,22 @@ CameraPage {
             pipelineManager.error = false
 
             if (root.resetCamera(settings.device, settings.mode)) {
+                root.deviceChangeInProgress = false
                 pipelineManager.startCamera()
             }
         }
+
+        onImageAspectRatioChanged: {
+            imageSettings.setImageResolution()
+        }
+
+        onImageResolutionChanged: {
+            imageSettings.setImageResolution()
+        }
+
+        onVideoResolutionChanged: {
+            videoSettings.setVideoResolution()
+        }
     }
 
     PipelineManager {
@@ -104,6 +123,13 @@ CameraPage {
             return false
         }
 
+        if (mode == Camera.ImageMode) {
+            imageSettings.setImageResolution()
+        }
+        else if (mode == Camera.VideoMode) {
+            videoSettings.setVideoResolution()
+        }
+
         return true
     }
 
@@ -201,12 +227,6 @@ CameraPage {
                 showError(qsTr("Failed to set required resolution"))
             }
         }
-
-        onReadyChanged: {
-            if (ready) {
-                imageSettings.setImageResolution()
-            }
-        }
     }
 
     VideoSettings {
@@ -218,28 +238,6 @@ CameraPage {
                 showError(qsTr("Failed to set required resolution"))
             }
         }
-
-        onReadyChanged: {
-            if (ready) {
-                videoSettings.setVideoResolution()
-            }
-        }
-    }
-
-    Connections {
-        target: settings
-
-        onImageAspectRatioChanged: {
-            imageSettings.setImageResolution()
-        }
-
-        onImageResolutionChanged: {
-            imageSettings.setImageResolution()
-        }
-
-        onVideoResolutionChanged: {
-            videoSettings.setVideoResolution()
-        }
     }
 
     ModeController {