From 61bc0db02dca72b8f293e02dcb3e05d201d408bd Mon Sep 17 00:00:00 2001 From: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com> Date: Thu, 29 Jan 2015 15:24:30 -0500 Subject: [PATCH] gnome: add enable upnp option Refs #64943 Change-Id: I2779c3d35647d91d422a7886a681b402b2011270 --- gnome/src/account_schema.h | 1 + gnome/src/accountlist.c | 5 +++++ gnome/src/accountlist.h | 1 + gnome/src/config/accountconfigdialog.c | 25 +++++++++++++++++++++++++ 4 files changed, 32 insertions(+) diff --git a/gnome/src/account_schema.h b/gnome/src/account_schema.h index 5021bafc54..e85dc7c160 100644 --- a/gnome/src/account_schema.h +++ b/gnome/src/account_schema.h @@ -75,6 +75,7 @@ static const char *const CONFIG_PUBLISHED_SAMEAS_LOCAL = "Account.publi static const char *const CONFIG_LOCAL_PORT = "Account.localPort"; static const char *const CONFIG_PUBLISHED_PORT = "Account.publishedPort"; static const char *const CONFIG_PUBLISHED_ADDRESS = "Account.publishedAddress"; +static const char *const CONFIG_UPNP_ENABLED = "Account.upnpEnabled"; // SIP specific parameters static const char *const CONFIG_STUN_SERVER = "STUN.server"; diff --git a/gnome/src/accountlist.c b/gnome/src/accountlist.c index 772e2b7257..3ce790fee5 100644 --- a/gnome/src/accountlist.c +++ b/gnome/src/accountlist.c @@ -342,6 +342,11 @@ gboolean account_has_autoanswer_on(const account_t *account) return g_strcmp0(account_lookup(account, CONFIG_ACCOUNT_AUTOANSWER), "true") == 0; } +gboolean account_has_upnp_on(const account_t *account) +{ + return g_strcmp0(account_lookup(account, CONFIG_UPNP_ENABLED), "true") == 0; +} + gboolean account_is_IP2IP(const account_t *account) { g_assert(account); diff --git a/gnome/src/accountlist.h b/gnome/src/accountlist.h index 24611f2caf..6741302b25 100644 --- a/gnome/src/accountlist.h +++ b/gnome/src/accountlist.h @@ -194,6 +194,7 @@ gboolean current_account_has_new_message(void); gboolean account_has_custom_user_agent(const account_t *account); gboolean account_has_autoanswer_on(const account_t *account); +gboolean account_has_upnp_on(const account_t *account); gboolean account_is_IP2IP(const account_t *account); gboolean account_is_SIP(const account_t *account); gboolean account_is_IAX(const account_t *account); diff --git a/gnome/src/config/accountconfigdialog.c b/gnome/src/config/accountconfigdialog.c index 4f53f0d497..df2dee9a6b 100644 --- a/gnome/src/config/accountconfigdialog.c +++ b/gnome/src/config/accountconfigdialog.c @@ -110,6 +110,7 @@ static GtkWidget *video_port_max_spin_box; #endif static GtkWidget *presence_check_box; static gboolean is_account_new; +static GtkWidget *upnp_enabled_check_box; typedef struct OptionsData { account_t *account; @@ -149,6 +150,14 @@ auto_answer_cb(GtkToggleButton *widget, account_t *account) gtk_toggle_button_get_active(widget) ? "true" : "false"); } +static void +upnp_cb(GtkToggleButton *widget, account_t *account) +{ + account_replace(account, CONFIG_UPNP_ENABLED, + gtk_toggle_button_get_active(widget) ? "true" : "false"); +} + + static void user_agent_checkbox_cb(GtkToggleButton *widget, account_t *account) { @@ -301,6 +310,15 @@ create_auto_answer_checkbox(const account_t *account) return checkbox; } +static GtkWidget* +create_upnp_check_box(const account_t *account) +{ + GtkWidget *checkbox = gtk_check_button_new_with_mnemonic(_("_UPnP enabled")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), account_has_upnp_on(account)); + g_signal_connect(checkbox, "toggled", G_CALLBACK(upnp_cb), (gpointer) account); + return checkbox; +} + static GtkWidget* create_user_agent_checkbox(const account_t *account) { @@ -551,6 +569,10 @@ create_parameters_frame(account_t *account, GtkWidget* account_combo) auto_answer_checkbox = create_auto_answer_checkbox(account); gtk_grid_attach(GTK_GRID(grid), auto_answer_checkbox, 0, row, 1, 1); + row++; + upnp_enabled_check_box = create_upnp_check_box(account); + gtk_grid_attach(GTK_GRID(grid), upnp_enabled_check_box, 0, row, 1, 1); + gtk_widget_show_all(grid); return frame; } @@ -1500,6 +1522,9 @@ static GtkWidget* create_direct_ip_calls_tab(account_t *account) auto_answer_checkbox = create_auto_answer_checkbox(account); gtk_box_pack_start(GTK_BOX(vbox), auto_answer_checkbox, FALSE, FALSE, 0); + upnp_enabled_check_box = create_upnp_check_box(account); + gtk_box_pack_start(GTK_BOX(vbox), upnp_enabled_check_box, FALSE, FALSE, 0); + gtk_widget_show_all(vbox); return vbox; } -- GitLab