dcf145c5b1ffe9acab47ea31371fa3bb7b8cffa3
[harmattan/cameraplus] / qml / main.qml
1 // -*- qml -*-
2 import QtQuick 1.1
3 import com.nokia.meego 1.1
4 import QtCamera 1.0
5 import CameraPlus 1.0
6
7 PageStackWindow {
8         id: root
9
10         property alias dimmer: camDimmer
11
12         showStatusBar: false
13
14         Component.onCompleted: {
15                 theme.inverted = true;
16                 if (settings.mode == 0) {
17                         openFile("ImagePage.qml");
18                 }
19                 else {
20                         openFile("VideoPage.qml");
21                 }
22         }
23
24         Settings {
25                 id: settings
26         }
27
28         // Stolen from https://qt.gitorious.org/qt-components/qt-components/blobs/master/examples/meego/QmlComponentGallery/qml/ListPage.qml
29         function replacePage(file) {
30                 var component = Qt.createComponent(file)
31
32                 if (component.status == Component.Ready) {
33                         pageStack.replace(component, {cam: cam}, true);
34                 }
35                 else {
36                         console.log("Error loading component:", component.errorString());
37                 }
38         }
39
40         function openFile(file) {
41                 var component = Qt.createComponent(file)
42
43                 if (component.status == Component.Ready) {
44                         pageStack.push(component, {cam: cam});
45                 }
46                 else {
47                         console.log("Error loading component:", component.errorString());
48                 }
49         }
50
51         platformStyle: PageStackWindowStyle {
52                 // TODO: Hack
53                 background: " "
54         }
55
56         Camera {
57                 onDeviceIdChanged: cam.start();
58
59                 id: cam
60                 anchors.fill: parent
61
62                 // TODO: hardcoding
63                 Component.onCompleted: { cam.deviceId = 0; mode = settings.mode; }
64
65                 // TODO: Hack
66                 z: -1
67
68                 Rectangle {
69                         id: camDimmer
70                         z: 1
71                         anchors.fill: parent
72                         opacity: 0
73                         color: "black"
74                 }
75         }
76
77         Scene {
78                 id: sceneController
79                 camera: cam
80                 value: camera.mode == Camera.VideoMode ? settings.videoSceneMode : settings.imageSceneMode
81         }
82
83         ColorTone {
84                 id: colorToneController
85                 camera: cam
86                 // TODO: not applied upon startup
87                 value: camera.mode == Camera.VideoMode ? settings.videoColorFilter : settings.imageColorFilter
88         }
89
90         WhiteBalance {
91                 id: whiteBalanceController
92                 camera: cam
93                 // TODO: not applied upon startup
94                 value: camera.mode == Camera.VideoMode ? settings.videoWhiteBalance : settings.imageWhiteBalance
95         }
96
97         ModeController {
98                 id: cameraMode
99                 cam: cam
100                 dimmer: root.dimmer
101         }
102
103         Connections {
104                 target: cam
105                 onModeChanged: {
106                         if (cam.mode == Camera.VideoMode) {
107                                 replacePage("VideoPage.qml");
108                         }
109                         else {
110                                 replacePage("ImagePage.qml");
111                         }
112                 }
113         }
114 }