Use LedPattern instead of LedPatternRX51 in LED pattern button and dialog
[led-pattern-ed] / src / led-pattern-dialog.vala
index e6e5f18..1f05a39 100644 (file)
@@ -17,9 +17,9 @@
  */
 
 class LedPatternDialog : Gtk.Dialog {
-       unowned List<LedPatternRX51> list;
+       unowned List<LedPattern> list;
 
-       public LedPatternDialog (List<LedPatternRX51> _list) {
+       public LedPatternDialog (List<LedPattern> _list) {
                list = _list;
                set_title ("LED Patterns");
 
@@ -29,16 +29,12 @@ class LedPatternDialog : Gtk.Dialog {
                var pannable = new Hildon.PannableArea ();
                var vbox = new Gtk.VBox (false, 0);
 
-               foreach (LedPatternRX51 pattern in list) {
-                       var button = new Gtk.Button ();
+               foreach (LedPattern pattern in list) {
+                       var button = new LedPatternButton (pattern);
                        Hildon.gtk_widget_set_theme_size (button, Hildon.SizeType.FINGER_HEIGHT);
-
-                       var label = new Gtk.Label (pattern.name.has_prefix ("Pattern") ?
-                                                  pattern.name.offset (7) : pattern.name);
-                       label.set_alignment (0.0f, 0.5f);
-                       button.add (label);
-
-                       vbox.pack_start (button, false, false, 0);
+                       button.set_data ("pattern", pattern);
+                       button.clicked.connect (on_pattern_clicked);
+                       vbox.pack_start (button, true, true, 0);
                }
 
                pannable.add_with_viewport (vbox);
@@ -47,4 +43,17 @@ class LedPatternDialog : Gtk.Dialog {
 
                add_button ("Save", Gtk.ResponseType.OK);
        }
+
+       void on_pattern_clicked (Gtk.Button button) {
+               LedPattern pattern = button.get_data ("pattern");
+               if (pattern is LedPatternRX51) {
+                       var dialog = new LedProgramDialog ((LedPatternRX51) pattern);
+                       dialog.set_transient_for (this);
+
+                       int response = 0;
+                       while (response >= 0)
+                               response = dialog.run ();
+                       dialog.destroy ();
+               }
+       }
 }