Added a TODO file and moved the big features there
[harmattan/cameraplus] / qml / ImageSettingsPage.qml
index 7b192ab..0a97118 100644 (file)
@@ -1,4 +1,25 @@
 // -*- qml -*-
+
+/*!
+ * This file is part of CameraPlus.
+ *
+ * Copyright (C) 2012 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
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
 import QtQuick 1.1
 import com.nokia.meego 1.1
 import QtCamera 1.0
@@ -10,7 +31,8 @@ CameraPage {
         id: page
         controlsVisible: false
         policyMode: CameraResources.Image
-        needsPipeline: false
+        enableViewfinder: false
+        standbyVisible: !Qt.application.active
 
         Rectangle {
                 color: "black"
@@ -18,6 +40,7 @@ CameraPage {
         }
 
         Flickable {
+                id: flickable
                 anchors.top: parent.top
                 anchors.left: parent.left
                 anchors.right: parent.right
@@ -32,86 +55,76 @@ CameraPage {
                         spacing: 10
 
                         Label {
-                                // TODO:
+                                font.pixelSize: 36
                                 text: qsTr("Image settings");
                         }
 
                         SectionHeader {
-                                text: qsTr("Capture mode");
+                                text: qsTr("Aspect ratio");
                         }
 
                         ButtonRow {
                                 anchors.horizontalCenter: parent.horizontalCenter
-                                Button { text: qsTr("Normal"); }
-                                Button { text: qsTr("Self timer"); }
-                                Button { text: qsTr("Fast capture"); }
-                        }
-
-                        Row {
-                                width: parent.width
-
-                                ListItem {
-                                        id: wb
-                                        width: parent.width / 2
-                                        title: qsTr("White balance");
-                                        subtitle: Data.wbName(settings.imageWhiteBalance);
-                                        iconId: Data.wbSelectedIcon(settings.imageWhiteBalance);
-                                        onClicked: openFile("ImageWhiteBalancePage.qml");
+                                exclusive: false
+                                onCheckedButtonChanged: {
+                                        // This is needed to initially setup the
+                                        // resolutions buttons
+                                        imageSettings.resolutions.aspectRatio = checkedButton.aspect;
+                                        settings.imageAspectRatio = imageSettings.resolutions.aspectRatio;
                                 }
 
-                                ListItem {
-                                        id: cf
-                                        width: parent.width / 2
-                                        title: qsTr("Color filter");
-                                        subtitle: Data.cfName(settings.imageColorFilter);
-                                        iconId: Data.cfSelectedIcon(settings.imageColorFilter);
-                                        onClicked: openFile("ImageColorFilterPage.qml");
+                                Repeater {
+                                        model: imageSettings.aspectRatios
+                                        delegate: Button {
+                                                property string aspect: modelData;
+                                                text: qsTr(modelData);
+                                                checked: settings.imageAspectRatio == modelData;
+                                                onClicked: {
+                                                        if (!cam.idle) {
+                                                                showError(qsTr("Camera is busy saving."));
+                                                                return;
+                                                        }
+
+                                                        settings.imageAspectRatio = modelData;
+                                                        imageSettings.resolutions.aspectRatio = modelData;
+                                                }
+                                        }
                                 }
                         }
 
-                        SectionHeader {
-                                text: qsTr("Self timer");
-                        }
-
-                        ButtonRow {
-                                anchors.horizontalCenter: parent.horizontalCenter
-                                Button { text: qsTr("2 seconds"); }
-                                Button { text: qsTr("10 seconds"); }
-                        }
-
-                        SectionHeader {
-                                text: qsTr("Light sensitivity");
-                        }
-
-                        ButtonRow {
-                                anchors.horizontalCenter: parent.horizontalCenter
-                                Button { text: qsTr("Automatic"); }
-                                Button { text: qsTr("ISO 100"); }
-                                Button { text: qsTr("ISO 200"); }
-                                Button { text: qsTr("ISO 400"); }
-                                Button { text: qsTr("ISO 800"); }
-                        }
-
-                        SectionHeader {
-                                text: qsTr("Aspect ratio");
-                        }
-
-                        ButtonRow {
-                                anchors.horizontalCenter: parent.horizontalCenter
-                                Button { text: qsTr("16:9"); }
-                                Button { text: qsTr("4:3"); }
-                                Button { text: qsTr("3:2"); }
-                        }
-
                         SectionHeader {
                                 text: qsTr("Resolution");
                         }
 
                         ButtonRow {
+                                id: resolutionsRow
                                 anchors.horizontalCenter: parent.horizontalCenter
-                                Button {}
-                                Button {}
-                                Button {}
+                                exclusive: false
+
+                                Repeater {
+                                        id: resolutions
+                                        model: imageSettings.resolutions
+
+                                        // http://stackoverflow.com/questions/1026069/capitalize-the-first-letter-of-string-in-javascript
+                                        function name(name, mp) {
+                                                return name.charAt(0).toUpperCase() + name.slice(1) + " " + mp + " Mpx";
+                                        }
+
+                                        delegate: Button {
+                                                property string resolution: resolutionName
+                                                property string aspectRatio: resolutionAspectRatio
+                                                text: resolutions.name(resolutionName, megaPixels);
+                                                checked: settings.imageResolution == resolutionName
+                                                onClicked: {
+                                                        if (!cam.idle) {
+                                                                showError(qsTr("Camera is busy saving."));
+                                                                return;
+                                                        }
+
+                                                        settings.imageResolution = resolutionName;
+                                                }
+                                        }
+                                }
                         }
 
                         CameraSettings {
@@ -125,7 +138,7 @@ CameraPage {
                 anchors.bottom: parent.bottom
                 tools: ToolBarLayout {
                         id: layout
-                        ToolIcon { iconId: "icon-m-toolbar-back"; onClicked: pageStack.pop(); }
+                        ToolIcon { iconId: "icon-m-toolbar-back-white"; onClicked: pageStack.pop(); }
                 }
         }
 }