Added QtCamFlash::ready to indicate readiness of flash
[harmattan/cameraplus] / qml / main.qml
index 0766c9f..e9ff6a1 100644 (file)
@@ -29,18 +29,15 @@ import QtMobility.systeminfo 1.2
 import QtMobility.location 1.2
 
 // TODO: postcapture
-// TODO: flash not ready
-// TODO: focus, caf, ...
+// TODO: flash not ready (battery low or flash not ready message)
 // TODO: portrait/landscape
 // TODO: stop viewfinder in settings pages ?
 // TODO: grid lines, face tracking, ambr
-// TODO: complete settings pages
 // TODO: select primary/secondary camera.
 // TODO: disable debug builds.
 // TODO: a way to get buffers to the application
 // TODO: fcam like functionality (precise control over capture parameters).
-// TODO: changing scene mode doesn't affect the existing properties ?
-// TODO: upon startup all properties don't load correct values.
+// TODO: mute video sound
 
 PageStackWindow {
         id: root
@@ -116,8 +113,9 @@ PageStackWindow {
                 active: cam.running && settings.useGps && settings.useGeotags
         }
 
-        CameraResources {
-                id: resourcePolicy
+        PipelineManager {
+                id: pipelineManager
+                camera: cam
         }
 
         DeviceInfo {
@@ -155,7 +153,12 @@ PageStackWindow {
                 pageStack.push(Qt.resolvedUrl(file), {cam: cam});
         }
 
+        function openFileNow(file) {
+                pageStack.push(Qt.resolvedUrl(file), {cam: cam}, true);
+        }
+
         platformStyle: PageStackWindowStyle {
+                cornersVisible: false
                 // TODO: Hack
                 background: " "
         }
@@ -210,6 +213,17 @@ PageStackWindow {
         }
 
         Camera {
+                id: cam
+                anchors.fill: parent
+
+                FocusReticle {
+                        id: focusReticle
+                        cam: cam
+                        visible: pageStack.currentPage && pageStack.currentPage.controlsVisible && pageStack.currentPage.focusReticleVisible && cam && cam.autoFocus.canFocus(cam.scene.value);
+                        cafStatus: cam ? cam.autoFocus.cafStatus : -1
+                        status: cam ? cam.autoFocus.status : -1
+        }
+
 /*
                 onDeviceIdChanged: {
                         // TODO: is this needed ?
@@ -218,14 +232,10 @@ PageStackWindow {
                         }
                 }
 */
-                id: cam
-                anchors.fill: parent
-
                 onError: {
                         console.log("Camera error (" + code + "): " + message + " " + debug);
                         showError(qsTr("Camera error. Please restart the application."));
                         cam.stop();
-                        resourcePolicy.acquire(CameraResources.None);
                         mountProtector.unlock();
                 }
 
@@ -252,25 +262,112 @@ PageStackWindow {
                         id: sounds
                         mute: !settings.soundEnabled
                 }
+
         }
 
-        Scene {
-                id: sceneController
-                camera: cam
-                value: ready ? camera.mode == Camera.VideoMode ? settings.videoSceneMode : settings.imageSceneMode : 0
-                onValueChanged: console.log("New scene value " + value);
+        Binding {
+                target: cam.flash
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageFlashMode
         }
 
-        ColorTone {
-                id: colorToneController
-                camera: cam
-                value: ready ? camera.mode == Camera.VideoMode ? settings.videoColorFilter : settings.imageColorFilter : 0
+        Binding {
+                target: settings
+                property: "imageFlashMode"
+                when: cam.mode == Camera.ImageMode
+                value: cam.flash.value
         }
 
-        WhiteBalance {
-                id: whiteBalanceController
-                camera: cam
-                value: ready ? camera.mode == Camera.VideoMode ? settings.videoWhiteBalance : settings.imageWhiteBalance : 0
+        Binding {
+                target: cam.scene
+                property: "value"
+                when: cam.mode == Camera.VideoMode
+                value: settings.videoSceneMode
+        }
+
+        Binding {
+                target: cam.scene
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageSceneMode
+        }
+
+        Binding {
+                target: cam.evComp
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageEvComp
+        }
+
+        Binding {
+                target: cam.evComp
+                property: "value"
+                when: cam.mode == Camera.VideoMode
+                value: settings.videoEvComp
+        }
+
+        Binding {
+                target: settings
+                property: "imageEvComp"
+                when: cam.mode == Camera.ImageMode
+                value: cam.evComp.value
+        }
+
+        Binding {
+                target: settings
+                property: "videoEvComp"
+                when: cam.mode == Camera.VideoMode
+                value: cam.evComp.value
+        }
+
+        Binding {
+                target: cam.whiteBalance
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageWhiteBalance
+        }
+
+        Binding {
+                target: cam.whiteBalance
+                property: "value"
+                when: cam.mode == Camera.VideoMode
+                value: settings.videoWhiteBalance
+        }
+
+        Binding {
+                target: cam.colorTone
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageColorFilter
+        }
+
+        Binding {
+                target: cam.colorTone
+                property: "value"
+                when: cam.mode == Camera.VideoMode
+                value: settings.videoColorFilter
+        }
+
+        Binding {
+                target: cam.iso
+                property: "value"
+                when: cam.mode == Camera.ImageMode
+                value: settings.imageIso
+        }
+
+        Binding {
+                target: settings
+                property: "imageIso"
+                when: cam.mode == Camera.ImageMode
+                value: cam.iso.value
+        }
+
+        TrackerStore {
+                id: trackerStore
+                active: cam.running
+                manufacturer: deviceInfo.manufacturer
+                model: deviceInfo.model
         }
 
         ModeController {
@@ -279,12 +376,6 @@ PageStackWindow {
                 dimmer: root.dimmer
         }
 
-        Iso {
-                id: iso
-                camera: cam
-                value: ready ? settings.imageIso : 0
-        }
-
         Connections {
                 target: cam
                 onModeChanged: {