aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-account-widget-irc.c12
-rw-r--r--libempathy-gtk/empathy-irc-network-dialog.c26
2 files changed, 34 insertions, 4 deletions
diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c
index d07faeb5b..7294a43ce 100644
--- a/libempathy-gtk/empathy-account-widget-irc.c
+++ b/libempathy-gtk/empathy-account-widget-irc.c
@@ -140,6 +140,7 @@ update_server_params (EmpathyAccountWidgetIrc *settings)
GtkTreeModel *model;
EmpathyIrcNetwork *network;
GSList *servers;
+ gchar *charset;
if (!gtk_combo_box_get_active_iter (
GTK_COMBO_BOX (settings->combobox_network), &iter))
@@ -153,6 +154,11 @@ update_server_params (EmpathyAccountWidgetIrc *settings)
g_assert (network != NULL);
+ g_object_get (network, "charset", &charset, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Setting charset to %s", charset);
+ mc_account_set_param_string (settings->account, "charset", charset);
+ g_free (charset);
+
servers = empathy_irc_network_get_servers (network);
if (g_slist_length (servers) > 0)
{
@@ -175,7 +181,6 @@ update_server_params (EmpathyAccountWidgetIrc *settings)
empathy_debug (DEBUG_DOMAIN, "Setting use-ssl to %s",
ssl ? "TRUE": "FALSE" );
mc_account_set_param_boolean (settings->account, "use-ssl", ssl);
- /* TODO: charset */
g_free (address);
}
@@ -361,6 +366,8 @@ fill_networks_model (EmpathyAccountWidgetIrc *settings,
{
gtk_combo_box_set_active_iter (
GTK_COMBO_BOX (settings->combobox_network), &iter);
+
+ update_server_params (settings);
}
}
@@ -422,6 +429,8 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings)
network = empathy_irc_network_manager_find_network_by_address (
settings->network_manager, server);
+ g_object_set (network, "charset", charset, NULL);
+
store = GTK_LIST_STORE (gtk_combo_box_get_model (
GTK_COMBO_BOX (settings->combobox_network)));
@@ -458,6 +467,7 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings)
}
}
+
fill_networks_model (settings, network);
g_free (nick);
diff --git a/libempathy-gtk/empathy-irc-network-dialog.c b/libempathy-gtk/empathy-irc-network-dialog.c
index 3d3276fc9..cbef024e8 100644
--- a/libempathy-gtk/empathy-irc-network-dialog.c
+++ b/libempathy-gtk/empathy-irc-network-dialog.c
@@ -36,6 +36,7 @@
#include <libempathy/empathy-irc-network-manager.h>
#include "empathy-ui-utils.h"
+#include "totem-subtitle-encoding.h"
#include "empathy-irc-network-dialog.h"
@@ -105,11 +106,14 @@ add_server_to_store (GtkListStore *store,
static void
irc_network_dialog_setup (EmpathyIrcNetworkDialog *dialog)
{
- gchar *name;
+ gchar *name, *charset;
GSList *servers, *l;
GtkListStore *store;
- g_object_get (dialog->network, "name", &name, NULL);
+ g_object_get (dialog->network,
+ "name", &name,
+ "charset", &charset,
+ NULL);
gtk_entry_set_text (GTK_ENTRY (dialog->entry_network), name);
store = GTK_LIST_STORE (gtk_tree_view_get_model (
@@ -124,11 +128,13 @@ irc_network_dialog_setup (EmpathyIrcNetworkDialog *dialog)
add_server_to_store (store, server, &iter);
}
- /* TODO charset */
+ totem_subtitle_encoding_set (GTK_COMBO_BOX (dialog->combobox_charset),
+ charset);
g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
g_slist_free (servers);
g_free (name);
+ g_free (charset);
}
static void
@@ -401,6 +407,16 @@ irc_network_dialog_selection_changed_cb (GtkTreeSelection *treeselection,
}
static void
+irc_network_dialog_combobox_charset_changed_cb (GtkWidget *combobox,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ const gchar *charset;
+
+ charset = totem_subtitle_encoding_get_selected (GTK_COMBO_BOX (combobox));
+ g_object_set (dialog->network, "charset", charset, NULL);
+}
+
+static void
change_network (EmpathyIrcNetworkDialog *dialog,
EmpathyIrcNetwork *network)
{
@@ -514,6 +530,9 @@ irc_network_dialog_show (EmpathyIrcNetwork *network,
GTK_TREE_VIEW (dialog->treeview_servers));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ /* charset */
+ totem_subtitle_encoding_init (GTK_COMBO_BOX (dialog->combobox_charset));
+
irc_network_dialog_setup (dialog);
empathy_glade_connect (glade, dialog,
@@ -524,6 +543,7 @@ irc_network_dialog_show (EmpathyIrcNetwork *network,
"button_remove", "clicked", irc_network_dialog_button_remove_clicked_cb,
"button_up", "clicked", irc_network_dialog_button_up_clicked_cb,
"button_down", "clicked", irc_network_dialog_button_down_clicked_cb,
+ "combobox_charset", "changed", irc_network_dialog_combobox_charset_changed_cb,
NULL);
g_object_unref (glade);