Added settings to change camera device.
authorMohammed Sameer <msameer@foolab.org>
Fri, 2 Aug 2013 21:05:00 +0000 (00:05 +0300)
committerMohammed Sameer <msameer@foolab.org>
Fri, 2 Aug 2013 21:05:00 +0000 (00:05 +0300)
This is just the UI. Changing the device leads to a crash.

qml/CameraSettings.qml
qml/MainPage.qml
src/settings.cpp
src/settings.h

index 44c86ee..b447322 100644 (file)
@@ -33,6 +33,29 @@ Column {
         width: parent.width
     }
 
+    SectionHeader {
+        text: qsTr("Camera")
+        width: parent.width
+    }
+
+    CameraButtonRow {
+        anchors.horizontalCenter: parent.horizontalCenter
+
+        CameraButton {
+            text: qsTr("Back (Primary)");
+            checkable: true
+            checked: settings.device == 0
+            onClicked: settings.device = 0
+        }
+
+        CameraButton {
+            text: qsTr("Front (Secondary)");
+            checkable: true
+            checked: settings.device == 1
+            onClicked: settings.device = 1
+        }
+    }
+
     TextSwitch {
         text: qsTr("Show grid lines")
 
index 1b0f5d4..997ce6e 100644 (file)
@@ -71,8 +71,7 @@ CameraPage {
 
     Component.onCompleted: {
         platformSettings.init()        
-        // TODO: hardcoding device id
-        root.resetCamera(0, settings.mode)
+        root.resetCamera(settings.device, settings.mode)
     }
 
     PlatformSettings {
@@ -81,6 +80,7 @@ CameraPage {
 
     Settings {
         id: settings
+        onDeviceChanged: root.resetCamera(settings.device, settings.mode)
     }
 
     PipelineManager {
index 122b077..1d099a0 100644 (file)
@@ -43,6 +43,7 @@
 #define DEFAULT_GRID_ENABLED            false
 #define DEFAULT_FACE_DETECTION_ENABLED  true
 #define DEFAULT_ZOOM_AS_SHUTTER         false
+#define DEFAULT_DEVICE                  0
 
 Settings::Settings(QObject *parent) :
   QObject(parent),
@@ -345,3 +346,14 @@ void Settings::setZoomAsShutterEnabled(bool enabled) {
     emit zoomAsShutterChanged();
   }
 }
+
+int Settings::device() const {
+  return m_settings->value("camera/device", DEFAULT_DEVICE).toInt();
+}
+
+void Settings::setDevice(int device) {
+  if (device != Settings::device()) {
+    m_settings->setValue("camera/device", device);
+    emit deviceChanged();
+  }
+}
index f1da453..b27dea6 100644 (file)
@@ -63,6 +63,7 @@ class Settings : public QObject {
 
   Q_PROPERTY(bool faceDetectionEnabled READ isFaceDetectionEnabled WRITE setFaceDetectionEnabled NOTIFY faceDetectionEnabledChanged);
   Q_PROPERTY(bool zoomAsShutter READ isZoomAsShutterEnabled WRITE setZoomAsShutterEnabled NOTIFY zoomAsShutterChanged);
+  Q_PROPERTY(int device READ device WRITE setDevice NOTIFY deviceChanged);
 
 public:
   Settings(QObject *parent = 0);
@@ -143,6 +144,9 @@ public:
   bool isZoomAsShutterEnabled();
   void setZoomAsShutterEnabled(bool enabled);
 
+  int device() const;
+  void setDevice(int device);
+
 signals:
   void modeChanged();
   void creatorNameChanged();
@@ -169,6 +173,7 @@ signals:
   void gridEnabledChanged();
   void faceDetectionEnabledChanged();
   void zoomAsShutterChanged();
+  void deviceChanged();
 
 private:
   QSettings *m_settings;