summaryrefslogtreecommitdiff
path: root/src/trg-remote-prefs-dialog.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-02-18 19:50:48 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-02-18 19:50:48 +0000
commitf827028d29f6e463c8aeaa329603047d3ac80da1 (patch)
tree9d3c9a1400ee63837187f6a7a19c05d5ababcfaf /src/trg-remote-prefs-dialog.c
parentb9880aea1124ad16595d3ada84b8636ebc41c8af (diff)
port testing testing 1-2-3
Diffstat (limited to 'src/trg-remote-prefs-dialog.c')
-rw-r--r--src/trg-remote-prefs-dialog.c42
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;
}