3 import com.nokia.meego 1.1
4 import com.nokia.extras 1.1
8 // TODO: metadata creator name, gps, geotags
9 // TODO: resolutions and aspect ratios
11 // TODO: battery low state
13 // TODO: flash not ready
14 // TODO: focus, caf, ...
16 // TODO: portrait/landscape
17 // TODO: record video in a hidden directory and then copy the video to avoid tracker indexing it.
18 // TODO: stop viewfinder in postcapture and settings pages ?
20 // TODO: resource policy
21 // TODO: prevent going to mass storage while recording and capturing
22 // TODO: prevent screen dimming while recording
24 // TODO: grid lines, face tracking
25 // TODO: complete settings pages
26 // TODO: stop camera properly when we get closed.
27 // TODO: select primary/secondary camera.
28 // TODO: disable debug builds.
29 // TODO: seems start gets called when we are shutting down
30 // TODO: seems start gets called twice when we are starting up if screen is locked or dimmed ?!
35 property alias dimmer: camDimmer
39 Component.onCompleted: {
40 theme.inverted = true;
41 if (settings.mode == 0) {
42 openFile("ImagePage.qml");
45 openFile("VideoPage.qml");
49 function showError(msg) {
64 imageSuffix: cam.imageSuffix
65 videoSuffix: cam.videoSuffix
68 // Stolen from https://qt.gitorious.org/qt-components/qt-components/blobs/master/examples/meego/QmlComponentGallery/qml/ListPage.qml
69 function replacePage(file) {
70 var component = Qt.createComponent(file)
72 if (component.status == Component.Ready) {
73 pageStack.replace(component, {cam: cam}, true);
76 console.log("Error loading component:", component.errorString());
80 function openFile(file) {
81 var component = Qt.createComponent(file)
83 if (component.status == Component.Ready) {
84 pageStack.push(component, {cam: cam});
87 console.log("Error loading component:", component.errorString());
91 platformStyle: PageStackWindowStyle {
97 target: platformWindow
99 if (platformWindow.active) {
101 showError("Camera failed to start. Please restart the camera.");
105 // This is a noop if camera is not idle so calling it will not hurt
113 if (idle && !platformWindow.active) {
119 // TODO: is this needed ?
120 if (platformWindow.active) {
128 // TODO: hardcoding device id
129 Component.onCompleted: { cam.deviceId = 0; mode = settings.mode; }
146 value: ready ? camera.mode == Camera.VideoMode ? settings.videoSceneMode : settings.imageSceneMode : 0
150 id: colorToneController
152 value: ready ? camera.mode == Camera.VideoMode ? settings.videoColorFilter : settings.imageColorFilter : 0
156 id: whiteBalanceController
158 value: ready ? camera.mode == Camera.VideoMode ? settings.videoWhiteBalance : settings.imageWhiteBalance : 0
170 if (cam.mode == Camera.VideoMode) {
171 replacePage("VideoPage.qml");
174 replacePage("ImagePage.qml");