X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fled-program-dialog.vala;h=601f43cbc617a78eab58ec13d60b85d258c92cbb;hb=190a26047c47f43ee33d7ba762a4167db5a5e3de;hp=91840f302a4183c5028d605a6b6f2d7f4668f5ca;hpb=ae482beded57744229cc993e6fe199d8bd71cbf5;p=led-pattern-ed diff --git a/src/led-program-dialog.vala b/src/led-program-dialog.vala index 91840f3..601f43c 100644 --- a/src/led-program-dialog.vala +++ b/src/led-program-dialog.vala @@ -17,6 +17,15 @@ */ class LedProgramDialog : Gtk.Dialog { + private const string MCE_SERVICE = "com.nokia.mce"; + private const string MCE_REQUEST_IF = "com.nokia.mce.request"; + private const string MCE_REQUEST_PATH = "/com/nokia/mce/request"; + + private enum ResponseType { + TEST = 1, + COPY = 2 + } + LedPatternView lpv; LedPatternRX51 pattern; @@ -24,6 +33,10 @@ class LedProgramDialog : Gtk.Dialog { LedColorButton led_color2; Gtk.Widget list1; Gtk.Widget list2; + Gtk.ToggleButton test_button; + + DBus.Connection bus; + dynamic DBus.Object mce; public LedProgramDialog (LedPatternRX51 _pattern) { pattern = _pattern; @@ -73,14 +86,21 @@ class LedProgramDialog : Gtk.Dialog { add_action_widget (hbox, 2); action_area.set_child_secondary (hbox, true); - action_area.show_all (); + test_button = (Gtk.ToggleButton) Hildon.gtk_toggle_button_new (Hildon.SizeType.FINGER_HEIGHT); + test_button.set_label (_("Test")); + add_action_widget (test_button, ResponseType.TEST); - add_button (_("Copy"), 2); - add_button (_("Test"), 1); + add_button (_("Copy"), ResponseType.COPY); add_button (_("Done"), Gtk.ResponseType.ACCEPT); + action_area.show_all (); + + test_button.toggled.connect (on_test_toggled); key_press_event.connect (on_key_pressed); response.connect (on_response); + + bus = DBus.Bus.get (DBus.BusType.SYSTEM); + mce = bus.get_object (MCE_SERVICE, MCE_REQUEST_PATH, MCE_REQUEST_IF); } private bool on_key_pressed (Gdk.EventKey event) { @@ -123,14 +143,16 @@ class LedProgramDialog : Gtk.Dialog { } void on_response (int response) { - if (response == 1) { - Timeout.add (200, delayed_spawn); - } else if (response == 2) { + if (response == ResponseType.COPY) { copy (); + return; } else if (response == Gtk.ResponseType.ACCEPT) { if (pattern.dump () != lpv.pattern.dump ()) { pattern.replace_with (lpv.pattern); } + test_button.set_active (false); + } else if (response == Gtk.ResponseType.CANCEL) { + test_button.set_active (false); } } @@ -158,6 +180,23 @@ class LedProgramDialog : Gtk.Dialog { } } + void on_test_toggled (Gtk.ToggleButton source) { + if (source.get_active ()) { + try { + mce.req_led_pattern_activate ("PatternError"); + } catch (DBus.Error e) { + Hildon.Banner.show_information (null, null, e.message); + } + Timeout.add (200, delayed_spawn); + } else { + try { + mce.req_led_pattern_deactivate ("PatternError"); + } catch (DBus.Error e) { + Hildon.Banner.show_information (null, null, e.message); + } + } + } + bool delayed_spawn () { try { int exit_status;