diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-02-18 19:50:48 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-02-18 19:50:48 +0000 |
commit | f827028d29f6e463c8aeaa329603047d3ac80da1 (patch) | |
tree | 9d3c9a1400ee63837187f6a7a19c05d5ababcfaf | |
parent | b9880aea1124ad16595d3ada84b8636ebc41c8af (diff) |
port testing testing 1-2-3
-rw-r--r-- | src/trg-remote-prefs-dialog.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/trg-remote-prefs-dialog.c b/src/trg-remote-prefs-dialog.c index 4157ecc..526a28f 100644 --- a/src/trg-remote-prefs-dialog.c +++ b/src/trg-remote-prefs-dialog.c @@ -23,6 +23,7 @@ #include "trg-main-window.h" #include "trg-remote-prefs-dialog.h" #include "hig.h" +#include "util.h" #include "dispatch.h" #include "requests.h" #include "json.h" @@ -70,6 +71,8 @@ struct _TrgRemotePrefsDialogPrivate { GtkWidget *speed_limit_down_spin; GtkWidget *speed_limit_up_check; GtkWidget *speed_limit_up_spin; + GtkWidget *port_test_label; + GtkWidget *port_test_button; }; static GObject *instance = NULL; @@ -283,6 +286,40 @@ static GtkWidget *trg_rprefs_limitsPage(TrgRemotePrefsDialog * win, return t; } +static void on_port_tested(JsonObject * response, int status, + gpointer data) +{ + if (TRG_IS_REMOTE_PREFS_DIALOG(data)) { + TrgRemotePrefsDialogPrivate *priv = TRG_REMOTE_PREFS_DIALOG_GET_PRIVATE(data); + + gtk_button_set_label(GTK_BUTTON(priv->port_test_button), "Retest"); + gtk_widget_set_sensitive(priv->port_test_button, TRUE); + + if (status == CURLE_OK) + { + gboolean isOpen = json_object_get_boolean_member(get_arguments(response), "port-is-open"); + if (isOpen) + gtk_label_set_markup(GTK_LABEL(priv->port_test_label), "Port is <span fgcolor=\"green\">open</span>"); + else + gtk_label_set_markup(GTK_LABEL(priv->port_test_label), "Port is <span fgcolor=\"red\">closed</span>"); + } + } + + response_unref(response); +} + +static void port_test_cb(GtkButton *b, gpointer data) +{ + TrgRemotePrefsDialogPrivate *priv = TRG_REMOTE_PREFS_DIALOG_GET_PRIVATE(data); + JsonNode *req = port_test(); + + gtk_label_set_text(GTK_LABEL(priv->port_test_label), "Port test"); + gtk_button_set_label(b, "Testing..."); + gtk_widget_set_sensitive(GTK_WIDGET(b), FALSE); + + dispatch_async(priv->client, req, on_port_tested, data); +} + static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, JsonObject * s) { @@ -341,6 +378,11 @@ static GtkWidget *trg_rprefs_connPage(TrgRemotePrefsDialog * win, session_get_lpd_enabled(s)); widget_set_json_key(w, SGET_LPD_ENABLED); + priv->port_test_label = gtk_label_new("Port test"); + w = priv->port_test_button = gtk_button_new_with_label("Test"); + g_signal_connect(w, "clicked", G_CALLBACK(port_test_cb), win); + hig_workarea_add_row_w(t, &row, priv->port_test_label, w, NULL); + return t; } |