2 * Copyright (C) 2007-2008 Guillaume Desmottes
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 * Authors: Guillaume Desmottes <gdesmott@gnome.org>
27 #include <glib/gi18n-lib.h>
30 #include <libempathy/empathy-utils.h>
32 #include "empathy-irc-network-dialog.h"
33 #include "empathy-irc-network-chooser.h"
34 #include "empathy-account-widget.h"
35 #include "empathy-account-widget-private.h"
36 #include "empathy-account-widget-irc.h"
37 #include "empathy-ui-utils.h"
39 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT | EMPATHY_DEBUG_IRC
40 #include <libempathy/empathy-debug.h>
43 EmpathyAccountWidget
*self
;
45 GtkWidget
*vbox_settings
;
47 GtkWidget
*network_chooser
;
48 } EmpathyAccountWidgetIrc
;
51 account_widget_irc_destroy_cb (GtkWidget
*widget
,
52 EmpathyAccountWidgetIrc
*settings
)
54 g_slice_free (EmpathyAccountWidgetIrc
, settings
);
58 account_widget_irc_setup (EmpathyAccountWidgetIrc
*settings
)
60 const gchar
*nick
= NULL
;
61 const gchar
*fullname
= NULL
;
65 EmpathyAccountSettings
*ac_settings
;
67 g_object_get (settings
->self
, "settings", &ac_settings
, NULL
);
69 nick
= empathy_account_settings_get_string (ac_settings
, "account");
70 fullname
= empathy_account_settings_get_string (ac_settings
,
72 charset
= empathy_account_settings_get_string (ac_settings
, "charset");
73 port
= empathy_account_settings_get_uint32 (ac_settings
, "port");
74 ssl
= empathy_account_settings_get_boolean (ac_settings
, "use-ssl");
78 nick
= g_strdup (g_get_user_name ());
79 empathy_account_settings_set_string (ac_settings
,
85 fullname
= g_strdup (g_get_real_name ());
88 fullname
= g_strdup (nick
);
90 empathy_account_settings_set_string (ac_settings
,
91 "fullname", fullname
);
96 network_changed_cb (EmpathyIrcNetworkChooser
*chooser
,
97 EmpathyAccountWidgetIrc
*settings
)
99 empathy_account_widget_changed (settings
->self
);
103 empathy_account_widget_irc_build (EmpathyAccountWidget
*self
,
104 const char *filename
,
105 GtkWidget
**table_common_settings
)
107 EmpathyAccountWidgetIrc
*settings
;
108 EmpathyAccountSettings
*ac_settings
;
110 settings
= g_slice_new0 (EmpathyAccountWidgetIrc
);
111 settings
->self
= self
;
113 self
->ui_details
->gui
= empathy_builder_get_file (filename
,
114 "table_irc_settings", table_common_settings
,
115 "vbox_irc", &self
->ui_details
->widget
,
116 "table_irc_settings", &settings
->vbox_settings
,
119 /* Add network chooser button */
120 g_object_get (settings
->self
, "settings", &ac_settings
, NULL
);
122 settings
->network_chooser
= empathy_irc_network_chooser_new (ac_settings
);
124 g_signal_connect (settings
->network_chooser
, "changed",
125 G_CALLBACK (network_changed_cb
), settings
);
127 gtk_table_attach (GTK_TABLE (*table_common_settings
),
128 settings
->network_chooser
, 1, 2, 0, 1, GTK_EXPAND
| GTK_FILL
, 0, 0, 0);
130 gtk_widget_show (settings
->network_chooser
);
132 account_widget_irc_setup (settings
);
134 empathy_account_widget_handle_params (self
,
135 "entry_nick", "account",
136 "entry_fullname", "fullname",
137 "entry_password", "password",
138 "entry_quit_message", "quit-message",
141 empathy_builder_connect (self
->ui_details
->gui
, settings
,
142 "table_irc_settings", "destroy", account_widget_irc_destroy_cb
,
145 self
->ui_details
->default_focus
= g_strdup ("entry_nick");
147 g_object_unref (ac_settings
);
151 empathy_account_widget_irc_build_simple (EmpathyAccountWidget
*self
,
152 const char *filename
)
154 EmpathyAccountWidgetIrc
*settings
;
155 EmpathyAccountSettings
*ac_settings
;
156 GtkAlignment
*alignment
;
158 settings
= g_slice_new0 (EmpathyAccountWidgetIrc
);
159 settings
->self
= self
;
161 self
->ui_details
->gui
= empathy_builder_get_file (filename
,
162 "vbox_irc_simple", &self
->ui_details
->widget
,
163 "alignment_network_simple", &alignment
,
166 /* Add network chooser button */
167 g_object_get (settings
->self
, "settings", &ac_settings
, NULL
);
169 settings
->network_chooser
= empathy_irc_network_chooser_new (ac_settings
);
171 g_signal_connect (settings
->network_chooser
, "changed",
172 G_CALLBACK (network_changed_cb
), settings
);
174 gtk_container_add (GTK_CONTAINER (alignment
), settings
->network_chooser
);
176 gtk_widget_show (settings
->network_chooser
);
178 empathy_account_widget_handle_params (self
,
179 "entry_nick_simple", "account",
182 empathy_builder_connect (self
->ui_details
->gui
, settings
,
183 "vbox_irc_simple", "destroy", account_widget_irc_destroy_cb
,
186 self
->ui_details
->default_focus
= g_strdup ("entry_nick_simple");
188 g_object_unref (ac_settings
);