3 import com.nokia.meego 1.1
4 import com.nokia.extras 1.1
7 import QtMobility.systeminfo 1.2
9 // TODO: metadata creator name, gps, geotags
10 // TODO: resolutions and aspect ratios
12 // TODO: battery low state
14 // TODO: flash not ready
15 // TODO: focus, caf, ...
17 // TODO: portrait/landscape
18 // TODO: record video in a hidden directory and then copy the video to avoid tracker indexing it.
19 // TODO: stop viewfinder in settings pages ?
20 // TODO: prevent going to mass storage while recording and capturing
22 // TODO: grid lines, face tracking, ambr
23 // TODO: complete settings pages
24 // TODO: stop camera properly when we get closed.
25 // TODO: select primary/secondary camera.
26 // TODO: disable debug builds.
27 // TODO: a way to get buffers to the application
28 // TODO: fcam like functionality (precise control over capture parameters).
33 property alias dimmer: camDimmer
37 Component.onCompleted: {
38 theme.inverted = true;
39 if (settings.mode == 0) {
40 openFile("ImagePage.qml");
43 openFile("VideoPage.qml");
47 function showError(msg) {
55 if (resourcePolicy.acquired) {
59 // TODO: We need a way to force a stop.
82 imageSuffix: cam.imageSuffix
83 videoSuffix: cam.videoSuffix
86 // Stolen from https://qt.gitorious.org/qt-components/qt-components/blobs/master/examples/meego/QmlComponentGallery/qml/ListPage.qml
87 function replacePage(file) {
88 var component = Qt.createComponent(file)
90 if (component.status == Component.Ready) {
91 pageStack.replace(component, {cam: cam}, true);
94 console.log("Error loading component:", component.errorString());
98 function openFile(file) {
99 var component = Qt.createComponent(file)
101 if (component.status == Component.Ready) {
102 pageStack.push(component, {cam: cam});
105 console.log("Error loading component:", component.errorString());
109 platformStyle: PageStackWindowStyle {
117 // TODO: is this needed ?
118 if (platformWindow.active) {
127 console.log("Camera error (" + code + "): " + message + " " + debug);
128 showError(qsTr("Camera error. Please restart the application."));
132 // TODO: hardcoding device id
133 Component.onCompleted: { cam.deviceId = 0; mode = settings.mode; }
150 value: ready ? camera.mode == Camera.VideoMode ? settings.videoSceneMode : settings.imageSceneMode : 0
154 id: colorToneController
156 value: ready ? camera.mode == Camera.VideoMode ? settings.videoColorFilter : settings.imageColorFilter : 0
160 id: whiteBalanceController
162 value: ready ? camera.mode == Camera.VideoMode ? settings.videoWhiteBalance : settings.imageWhiteBalance : 0
174 if (cam.mode == Camera.VideoMode) {
175 replacePage("VideoPage.qml");
178 replacePage("ImagePage.qml");