Changes to Echo handling
[demorecorder] / src / EchoPopUp.vala
index 404163b..377db13 100644 (file)
@@ -23,7 +23,9 @@ public class EchoPopUp : Hildon.Dialog {
   Gtk.HScale feedback_slider;
   Gtk.HScale intensity_slider;
   
-  const uint64 MAX_DELAY = 1 * Time.Milliseconds.SECOND;
+  //const uint64 MAX_DELAY = Time.Milliseconds.SECOND / 2;
+  const uint64 MIN_DELAY = 0;
+  uint64 MAX_DELAY;
   
   public signal void delay_updated(uint64 val);
   public signal void feedback_updated(double val);
@@ -32,12 +34,14 @@ public class EchoPopUp : Hildon.Dialog {
   public EchoPopUp (string title, Gtk.Widget parent) {
     this.set_title(title);
     this.set_parent(parent);
+    MAX_DELAY = Time.Milliseconds.SECOND / 2;
     
     construct_interface(SettingsStructures.EchoSettings());
   }
   public EchoPopUp.with_settings (string title, Gtk.Widget parent, SettingsStructures.EchoSettings settings) {
     this.set_title(title);
     this.set_parent(parent);
+    MAX_DELAY = settings.max_delay;
     
     construct_interface(settings);
   }
@@ -54,25 +58,33 @@ public class EchoPopUp : Hildon.Dialog {
   public void set_settings_structure(SettingsStructures.EchoSettings settings) {
     // ignore active for now
     // ignore max_delay for now
+    MAX_DELAY = settings.max_delay;
     this.set_delay(settings.delay);
     this.set_feedback(settings.feedback);
     this.set_intensity(settings.intensity);
   }
-  
+  private void update_values() {
+    delay_updated(get_delay());
+    feedback_updated(get_feedback());
+    intensity_updated(get_intensity());
+  }
   private void construct_interface(SettingsStructures.EchoSettings settings) {
     
-    this.set_default_response(Gtk.ResponseType.ACCEPT);
-    this.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.ACCEPT);
+    //this.close.connect(update_values);
+    
+    this.set_default_response(Gtk.ResponseType.CANCEL);
+    Gtk.Button closeBtn = (Gtk.Button)this.add_button(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT);
+    closeBtn.clicked.connect(update_values);
     
     Gtk.VBox control_area = (Gtk.VBox)this.get_content_area();
     
     Gtk.HBox delay_bar = new Gtk.HBox(false, 4);
     
     Gtk.Label delay_label = new Gtk.Label("Delay (ms): ");
-    delay_slider = new Gtk.HScale.with_range(0, MAX_DELAY, Time.Milliseconds.MILLISECOND);
+    delay_slider = new Gtk.HScale.with_range((double)MIN_DELAY, (double)MAX_DELAY, (double)((MAX_DELAY - MIN_DELAY) / 100));
     delay_slider.set_value_pos(Gtk.PositionType.LEFT);
     delay_slider.set_value(settings.delay);
-    delay_slider.value_changed.connect((s) => {delay_updated((uint64)(s.get_value()) * Time.Nanoseconds.MILLISECOND);});
+    //delay_slider.value_changed.connect((s) => {delay_updated((uint64)(s.get_value()) * Time.Nanoseconds.MILLISECOND);});
     delay_bar.pack_start(delay_label, false, false, 2);
     delay_bar.pack_start(delay_slider, true, true, 2);
     
@@ -84,19 +96,19 @@ public class EchoPopUp : Hildon.Dialog {
     feedback_slider = new Gtk.HScale.with_range(0.0, 1.0, 0.05);
     feedback_slider.set_value_pos(Gtk.PositionType.LEFT);
     feedback_slider.set_value(settings.feedback);
-    feedback_slider.value_changed.connect((s) => {feedback_updated(s.get_value());});
+    //feedback_slider.value_changed.connect((s) => {feedback_updated(s.get_value());});
     feedback_bar.pack_start(feedback_label, false, false, 2);
     feedback_bar.pack_start(feedback_slider, true, true, 2);
     
     control_area.pack_start(feedback_bar, true, true, 2);
     
-    Gtk.HBox intensity_bar = new Gtk.HBox(false, 4);    
+    Gtk.HBox intensity_bar = new Gtk.HBox(false, 4);
     
     Gtk.Label intensity_label = new Gtk.Label("Intensity (ratio): ");
     intensity_slider = new Gtk.HScale.with_range(0.0, 1.0, 0.05);
     intensity_slider.set_value_pos(Gtk.PositionType.LEFT);
     intensity_slider.set_value(settings.intensity);
-    intensity_slider.value_changed.connect((s) => {intensity_updated(s.get_value());});
+    //intensity_slider.value_changed.connect((s) => {intensity_updated(s.get_value());});
     intensity_bar.pack_start(intensity_label, false, false, 2);
     intensity_bar.pack_start(intensity_slider, true, true, 2);