Fix Makefile.am
[led-pattern-ed] / src / led-pattern-dialog.vala
index b11594b..9276c97 100644 (file)
  */
 
 class LedPatternDialog : Gtk.Dialog {
-       unowned List<LedPatternRX51> list;
+       public enum Response {
+               HELP = 1,
+               RESTORE = 2
+       }
+
+       private unowned Osso.Context osso_context;
+       private unowned List<LedPattern> list;
+       private bool close = false;
 
-       public LedPatternDialog (List<LedPatternRX51> _list) {
+       public LedPatternDialog (List<LedPattern> _list, Osso.Context osso) {
                list = _list;
-               set_title ("LED Patterns");
+               osso_context = osso;
+               set_title (_("LED Patterns"));
 
                var content = (Gtk.VBox) get_content_area ();
                content.set_size_request (-1, 5*70);
@@ -29,24 +37,11 @@ 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 hbox = new Gtk.HBox (false, Hildon.MARGIN_DOUBLE);
-
-                       var lpv = new LedPatternView (pattern);
-                       lpv.set_size_request (200, -1);
                        button.set_data ("pattern", pattern);
                        button.clicked.connect (on_pattern_clicked);
-                       hbox.pack_start (lpv, false, false, 0);
-
-                       var label = new Gtk.Label (pattern.name.has_prefix ("Pattern") ?
-                                                  pattern.name.offset (7) : pattern.name);
-                       label.set_alignment (0.0f, 0.5f);
-                       hbox.pack_start (label, true, true, 0);
-
-                       button.add (hbox);
                        vbox.pack_start (button, true, true, 0);
                }
 
@@ -54,17 +49,63 @@ class LedPatternDialog : Gtk.Dialog {
                content.pack_start (pannable, true, true, 0);
                content.show_all ();
 
-               add_button ("Save", Gtk.ResponseType.OK);
-       }
+               var button_help = new Gtk.Button.with_label ("Help");
+               Hildon.gtk_widget_set_theme_size (button_help, Hildon.SizeType.FINGER_HEIGHT);
+
+               var label = new Gtk.Label (_("Restore original\npatterns"));
+               label.justify = Gtk.Justification.CENTER;
+               var button_restore = new Gtk.Button ();
+               button_restore.add (label);
+               Hildon.helper_set_logical_font (button_restore, "SmallSystemFont");
+               Hildon.gtk_widget_set_theme_size (button_restore, Hildon.SizeType.FINGER_HEIGHT);
+
+               add_action_widget (button_help, Response.HELP);
+               add_action_widget (button_restore, Response.RESTORE);
+
+               var action_area = (Gtk.ButtonBox) get_action_area ();
+               action_area.set_child_secondary (button_help, true);
+               action_area.show_all ();
 
-       void on_pattern_clicked (Gtk.Button button) {
-               var pattern = (LedPatternRX51) button.get_data ("pattern");
-               var dialog = new LedProgramDialog (pattern);
-               dialog.set_transient_for (this);
+               add_button (_("Save"), Gtk.ResponseType.OK);
 
+               response.connect (on_response);
+       }
+
+       public int run () {
                int response = 0;
-               while (response >= 0)
-                       response = dialog.run ();
-               dialog.destroy ();
+               while (response >= 0) {
+                       response = base.run ();
+                       if (close)
+                               return response;
+               }
+               return response;
+       }
+
+       private 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 ();
+               }
+       }
+
+       private void on_response (int response_id) {
+               if (response_id == Response.HELP) {
+                       var url = "http://wiki.maemo.org/LED_Pattern_Editor";
+                       var status = osso_context.rpc_run_with_defaults ("osso_browser", "open_new_window", null, 's', url, 'b', false);
+                       if (status != Osso.Status.OK)
+                               Hildon.Banner.show_information (this, null, _("Failed to open browser."));
+               } else if (response_id == Response.RESTORE) {
+                       var note = new Hildon.Note.confirmation (this, _("Restore original patterns? All user-created patterns will be lost."));
+                       response_id = note.run ();
+                       note.destroy ();
+                       if (response_id == Gtk.ResponseType.OK)
+                               close = true;
+               }
        }
 }