Blame SOURCES/0042-cheese-preferences-Add-camera_changed-method.patch

ecdf9b
From f1bb1e32b7f08396a22076bace60002b2282d700 Mon Sep 17 00:00:00 2001
ecdf9b
From: Hans de Goede <hdegoede@redhat.com>
ecdf9b
Date: Tue, 18 Jun 2013 11:14:16 +0200
ecdf9b
Subject: [PATCH 42/50] cheese-preferences: Add camera_changed () method
ecdf9b
ecdf9b
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
ecdf9b
---
ecdf9b
 src/cheese-preferences.vala | 34 +++++++++++++++++++++++++---------
ecdf9b
 1 file changed, 25 insertions(+), 9 deletions(-)
ecdf9b
ecdf9b
diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
ecdf9b
index e078cbb..be104a6 100644
ecdf9b
--- a/src/cheese-preferences.vala
ecdf9b
+++ b/src/cheese-preferences.vala
ecdf9b
@@ -128,6 +128,28 @@ public class Cheese.PreferencesDialog : GLib.Object
ecdf9b
   }
ecdf9b
 
ecdf9b
   /**
ecdf9b
+   * Update resolution list and save the current camera to settings.
ecdf9b
+   */
ecdf9b
+  private void camera_changed ()
ecdf9b
+  {
ecdf9b
+    Cheese.CameraDevice device, iter_device;
ecdf9b
+    TreeIter iter;
ecdf9b
+
ecdf9b
+    device = camera.get_selected_device ();
ecdf9b
+    if (device == null)
ecdf9b
+      return;
ecdf9b
+    settings.set_string ("camera", device.get_device_node ());
ecdf9b
+    setup_resolutions_for_device (device);
ecdf9b
+
ecdf9b
+    for (bool next = camera_model.get_iter_first (out iter); next;
ecdf9b
+         next = camera_model.iter_next (ref iter)) {
ecdf9b
+      camera_model.get (iter, 1, out iter_device, -1);
ecdf9b
+      if (iter_device == device)
ecdf9b
+        source_combo.set_active_iter (iter);
ecdf9b
+    }
ecdf9b
+  }
ecdf9b
+
ecdf9b
+  /**
ecdf9b
    * Initialize and populate the camera device combo box model.
ecdf9b
    */
ecdf9b
   private void initialize_camera_devices ()
ecdf9b
@@ -140,8 +162,7 @@ public class Cheese.PreferencesDialog : GLib.Object
ecdf9b
 
ecdf9b
     devices.foreach(add_camera_device);
ecdf9b
 
ecdf9b
-    settings.set_string ("camera", camera.get_selected_device ().get_device_node ());
ecdf9b
-    setup_resolutions_for_device (camera.get_selected_device ());
ecdf9b
+    camera_changed ();
ecdf9b
   }
ecdf9b
 
ecdf9b
   /**
ecdf9b
@@ -227,8 +248,7 @@ public class Cheese.PreferencesDialog : GLib.Object
ecdf9b
     combo.model.get (iter, 1, out dev);
ecdf9b
     camera.set_device_by_device_node (dev.get_device_node ());
ecdf9b
     camera.switch_camera_device ();
ecdf9b
-    setup_resolutions_for_device (camera.get_selected_device ());
ecdf9b
-    settings.set_string ("camera", dev.get_device_node ());
ecdf9b
+    camera_changed ();
ecdf9b
   }
ecdf9b
 
ecdf9b
   /**
ecdf9b
@@ -474,8 +494,7 @@ public class Cheese.PreferencesDialog : GLib.Object
ecdf9b
       }
ecdf9b
     }
ecdf9b
 
ecdf9b
-    settings.set_string ("camera", camera.get_selected_device ().get_device_node ());
ecdf9b
-    setup_resolutions_for_device (camera.get_selected_device ());
ecdf9b
+    camera_changed ();
ecdf9b
   }
ecdf9b
 
ecdf9b
   /**
ecdf9b
@@ -496,9 +515,6 @@ public class Cheese.PreferencesDialog : GLib.Object
ecdf9b
                       0, dev.get_name () + " (" + dev.get_device_node () + ")",
ecdf9b
                       1, dev);
ecdf9b
 
ecdf9b
-    if (camera.get_selected_device ().get_device_node () == dev.get_device_node ())
ecdf9b
-        source_combo.set_active_iter (iter);
ecdf9b
-
ecdf9b
     if (camera_model.iter_n_children (null) > 1)
ecdf9b
       source_combo.sensitive = true;
ecdf9b
   }
ecdf9b
-- 
ecdf9b
1.8.2.1
ecdf9b