Initial ui reimplementation. Still in its early phase.
[harmattan/cameraplus] / qml / CameraPage.qml
index e643b2f..7ba3aa8 100644 (file)
@@ -3,7 +3,7 @@
 /*!
  * This file is part of CameraPlus.
  *
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -24,115 +24,44 @@ import QtQuick 1.1
 import com.nokia.meego 1.1
 import QtCamera 1.0
 import CameraPlus 1.0
-import QtMobility.systeminfo 1.2
 
 Page {
         id: page
 
-        property alias standbyWidget: standby
-
-        property bool needsPipeline: true
         property int policyMode: CameraResources.None
 
-        signal batteryLow
-
-        Component.onCompleted: {
-                if (Qt.application.active && needsPipeline) {
-                        resourcePolicy.acquire(page.policyMode);
-                }
-        }
+        property Camera cam: null
+        property Item dimmer: null
+        property ControlsActivationData activationData: ControlsActivationData {}
+        property bool controlsVisible: cam.running && !standby.visible
+        property bool focusReticleVisible: true
+        property bool enableViewfinder: true
 
-        onStatusChanged: {
-                if (Qt.application.active && status == PageStatus.Activating) {
-                        resourcePolicy.acquire(page.policyMode);
-                }
-        }
-/*
-        onStatusChanged: {
-                if (status == PageStatus.Active && !page.needsPipeline) {
-                        cam.stop();
-                }
-        }
-*/
+        property alias previewAnimationRunning: preview.animationRunning
 
-        onPolicyModeChanged: {
-                if (Qt.application.active) {
-                        resourcePolicy.acquire(page.policyMode);
-                }
-        }
+        signal batteryLow
 
-        function handlePipeline() {
-                if (!Qt.application.active) {
-                        // TODO: force if we lost resources ?
-                        cam.stop();
-                }
-                else if (resourcePolicy.acquired && page.needsPipeline && !cam.running) {
-                        // TODO: error
-                        cam.start();
-                }
-                else if (!resourcePolicy.acquired) {
-                        // TODO: force
-                        cam.stop();
-                }
+        function cameraError() {
+                // Nothing
         }
 
-        Connections {
-                target: resourcePolicy
-                onAcquiredChanged: handlePipeline();
+        function policyLost() {
+                // Nothing
         }
 
-        Connections {
-                target: Qt.application
-                onActiveChanged: {
-                        if (!Qt.application.active) {
-                                // This is a noop if camera is not
-                                // idle so calling it will not hurt
-                                if (cam.stop()) {
-                                        resourcePolicy.acquire(CameraResources.None);
-                                }
-                        }
-                        else if (page.needsPipeline) {
-                                resourcePolicy.acquire(page.policyMode);
-                        }
+        onStatusChanged: {
+                if (status == PageStatus.Activating && enableViewfinder) {
+                        cam.renderingEnabled = true;
                 }
-        }
+                else if (status == PageStatus.Active) {
+                        focusReticle.resetReticle();
 
-        Connections {
-                target: cam
-                onIdleChanged: {
-                        if (cam.idle && !Qt.application.active) {
-                                cam.stop();
-                                resourcePolicy.acquire(CameraResources.None);
-                        }
-/*
-                        else if (cam.idle && !page.needsPipeline) {
-                                cam.stop();
+                        if (!enableViewfinder) {
+                                cam.renderingEnabled = false;
                         }
-*/
-                }
-        }
-
-        Rectangle {
-                // TODO: color
-                // TODO: fade out transition
-                // TODO: there is a toolbar visible on the first startup
-                id: standby
-                color: "black"
-                anchors.fill: parent
-                visible: !Qt.application.active || !cam.running || !resourcePolicy.acquired
-                Image {
-                        source: "image://theme/icon-l-camera-standby"
-                        anchors.centerIn: parent
                 }
         }
 
-        property Camera cam: null
-        property bool controlsVisible: cam.running && !standby.visible
-
-        anchors.fill: parent
-
-        property alias previewAnimationRunning: preview.animationRunning
-
         function setPreview(image) {
                 preview.setPreview(image);
         }
@@ -142,7 +71,7 @@ Page {
                 anchors.right: parent.right
                 anchors.rightMargin: 20
                 anchors.bottomMargin: 20
-                visible: controlsVisible
+                visible: controlsVisible && activationData.modeSelectorVisible
         }
 
         PreviewImage {
@@ -155,38 +84,10 @@ Page {
                 anchors.top: parent.top
                 anchors.topMargin: 0
                 anchors.horizontalCenter: parent.horizontalCenter
-                visible: controlsVisible
+                visible: controlsVisible && activationData.zoomBarVisible
         }
 
-        function checkBattery() {
-                // We are fine if we are connected to the charger:
-                if (batteryMonitor.chargingState == BatteryInfo.Charging) {
-                        return true;
-                }
-
-                // If we have enough battery then we are fine:
-                if (batteryMonitor.batteryStatus > BatteryInfo.BatteryCritical) {
-                        return true;
-                }
-
-                return false;
-        }
-
-        BatteryInfo {
-                id: batteryMonitor
-                monitorChargingStateChanges: cam.running
-                monitorBatteryStatusChanges: cam.running
-
-                onChargingStateChanged: {
-                        if (!checkBattery()) {
-                                parent.batteryLow();
-                        }
-                }
-
-                onBatteryStatusChanged:  {
-                        if (!checkBattery()) {
-                                parent.batteryLow();
-                        }
-                }
+        function checkDiskSpace() {
+                return fileSystem.hasFreeSpace(fileNaming.path);
         }
 }