pidgin/gtkaccount.c

changeset 26378
e85d894af8a5
parent 25911
f22097dc8413
child 26475
89cd5eae40e9
equal deleted inserted replaced
26377:9124a345ed3a 26378:e85d894af8a5
49 49
50 enum 50 enum
51 { 51 {
52 COLUMN_ICON, 52 COLUMN_ICON,
53 COLUMN_BUDDYICON, 53 COLUMN_BUDDYICON,
54 COLUMN_SCREENNAME, 54 COLUMN_USERNAME,
55 COLUMN_ENABLED, 55 COLUMN_ENABLED,
56 COLUMN_PROTOCOL, 56 COLUMN_PROTOCOL,
57 COLUMN_DATA, 57 COLUMN_DATA,
58 NUM_COLUMNS 58 NUM_COLUMNS
59 }; 59 };
76 GtkWidget *notebook; 76 GtkWidget *notebook;
77 77
78 GtkListStore *model; 78 GtkListStore *model;
79 GtkTreeIter drag_iter; 79 GtkTreeIter drag_iter;
80 80
81 GtkTreeViewColumn *screenname_col; 81 GtkTreeViewColumn *username_col;
82 82
83 } AccountsWindow; 83 } AccountsWindow;
84 84
85 typedef struct 85 typedef struct
86 { 86 {
113 113
114 /* Login Options */ 114 /* Login Options */
115 GtkWidget *login_frame; 115 GtkWidget *login_frame;
116 GtkWidget *protocol_menu; 116 GtkWidget *protocol_menu;
117 GtkWidget *password_box; 117 GtkWidget *password_box;
118 GtkWidget *screenname_entry; 118 GtkWidget *username_entry;
119 GtkWidget *password_entry; 119 GtkWidget *password_entry;
120 GtkWidget *alias_entry; 120 GtkWidget *alias_entry;
121 GtkWidget *remember_pass_check; 121 GtkWidget *remember_pass_check;
122 122
123 /* User Options */ 123 /* User Options */
254 gtk_widget_show(dialog->register_button); 254 gtk_widget_show(dialog->register_button);
255 } 255 }
256 } 256 }
257 257
258 static gboolean 258 static gboolean
259 screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) 259 username_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
260 { 260 {
261 GHashTable *table; 261 GHashTable *table;
262 const char *label; 262 const char *label;
263 263
264 table = dialog->prpl_info->get_account_text_table(NULL); 264 table = dialog->prpl_info->get_account_text_table(NULL);
273 273
274 return FALSE; 274 return FALSE;
275 } 275 }
276 276
277 static void 277 static void
278 screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) 278 username_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
279 { 279 {
280 if (dialog->ok_button) 280 if (dialog->ok_button)
281 gtk_widget_set_sensitive(dialog->ok_button, 281 gtk_widget_set_sensitive(dialog->ok_button,
282 *gtk_entry_get_text(entry) != '\0'); 282 *gtk_entry_get_text(entry) != '\0');
283 if (dialog->register_button) { 283 if (dialog->register_button) {
288 *gtk_entry_get_text(entry) != '\0'); 288 *gtk_entry_get_text(entry) != '\0');
289 } 289 }
290 } 290 }
291 291
292 static gboolean 292 static gboolean
293 screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) 293 username_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
294 { 294 {
295 GdkColor color = {0, 34952, 35466, 34181}; 295 GdkColor color = {0, 34952, 35466, 34181};
296 GHashTable *table = NULL; 296 GHashTable *table = NULL;
297 const char *label = NULL; 297 const char *label = NULL;
298 298
299 if(PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) { 299 if(PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) {
300 table = dialog->prpl_info->get_account_text_table(NULL); 300 table = dialog->prpl_info->get_account_text_table(NULL);
301 label = g_hash_table_lookup(table, "login_label"); 301 label = g_hash_table_lookup(table, "login_label");
302 302
303 if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { 303 if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') {
304 /* We have to avoid hitting the screenname_changed_cb function 304 /* We have to avoid hitting the username_changed_cb function
305 * because it enables buttons we don't want enabled yet ;) 305 * because it enables buttons we don't want enabled yet ;)
306 */ 306 */
307 g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); 307 g_signal_handlers_block_by_func(widget, G_CALLBACK(username_changed_cb), dialog);
308 gtk_entry_set_text(GTK_ENTRY(widget), label); 308 gtk_entry_set_text(GTK_ENTRY(widget), label);
309 /* Make sure we can hit it again */ 309 /* Make sure we can hit it again */
310 g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); 310 g_signal_handlers_unblock_by_func(widget, G_CALLBACK(username_changed_cb), dialog);
311 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); 311 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color);
312 } 312 }
313 313
314 g_hash_table_destroy(table); 314 g_hash_table_destroy(table);
315 } 315 }
391 if (gc != NULL && dialog->account != purple_connection_get_account(gc)) 391 if (gc != NULL && dialog->account != purple_connection_get_account(gc))
392 return; 392 return;
393 393
394 set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account)); 394 set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account));
395 gtk_widget_set_sensitive(dialog->protocol_menu, set); 395 gtk_widget_set_sensitive(dialog->protocol_menu, set);
396 gtk_widget_set_sensitive(dialog->screenname_entry, set); 396 gtk_widget_set_sensitive(dialog->username_entry, set);
397 397
398 for (l = dialog->user_split_entries ; l != NULL ; l = l->next) 398 for (l = dialog->user_split_entries ; l != NULL ; l = l->next)
399 gtk_widget_set_sensitive((GtkWidget *)l->data, set); 399 gtk_widget_set_sensitive((GtkWidget *)l->data, set);
400 } 400 }
401 401
447 hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu); 447 hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu);
448 g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox); 448 g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox);
449 449
450 gtk_widget_unref(dialog->protocol_menu); 450 gtk_widget_unref(dialog->protocol_menu);
451 451
452 /* Screen name */ 452 /* Username */
453 dialog->screenname_entry = gtk_entry_new(); 453 dialog->username_entry = gtk_entry_new();
454 #if GTK_CHECK_VERSION(2,10,0) 454 #if GTK_CHECK_VERSION(2,10,0)
455 g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL); 455 g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL);
456 #endif 456 #endif
457 457
458 add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry); 458 add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry);
459 459
460 if (dialog->account != NULL) 460 if (dialog->account != NULL)
461 username = g_strdup(purple_account_get_username(dialog->account)); 461 username = g_strdup(purple_account_get_username(dialog->account));
462 462
463 if (!username && dialog->prpl_info 463 if (!username && dialog->prpl_info
466 GHashTable *table; 466 GHashTable *table;
467 const char *label; 467 const char *label;
468 table = dialog->prpl_info->get_account_text_table(NULL); 468 table = dialog->prpl_info->get_account_text_table(NULL);
469 label = g_hash_table_lookup(table, "login_label"); 469 label = g_hash_table_lookup(table, "login_label");
470 470
471 gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), label); 471 gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), label);
472 g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event", 472 g_signal_connect(G_OBJECT(dialog->username_entry), "focus-in-event",
473 G_CALLBACK(screenname_focus_cb), dialog); 473 G_CALLBACK(username_focus_cb), dialog);
474 g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event", 474 g_signal_connect(G_OBJECT(dialog->username_entry), "focus-out-event",
475 G_CALLBACK(screenname_nofocus_cb), dialog); 475 G_CALLBACK(username_nofocus_cb), dialog);
476 gtk_widget_modify_text(dialog->screenname_entry, GTK_STATE_NORMAL, &color); 476 gtk_widget_modify_text(dialog->username_entry, GTK_STATE_NORMAL, &color);
477 g_hash_table_destroy(table); 477 g_hash_table_destroy(table);
478 } 478 }
479 479
480 g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed", 480 g_signal_connect(G_OBJECT(dialog->username_entry), "changed",
481 G_CALLBACK(screenname_changed_cb), dialog); 481 G_CALLBACK(username_changed_cb), dialog);
482 482
483 /* Do the user split thang */ 483 /* Do the user split thang */
484 if (dialog->prpl_info == NULL) 484 if (dialog->prpl_info == NULL)
485 user_splits = NULL; 485 user_splits = NULL;
486 else 486 else
545 if (value != NULL) 545 if (value != NULL)
546 gtk_entry_set_text(GTK_ENTRY(entry), value); 546 gtk_entry_set_text(GTK_ENTRY(entry), value);
547 } 547 }
548 548
549 if (username != NULL) 549 if (username != NULL)
550 gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), username); 550 gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), username);
551 551
552 g_free(username); 552 g_free(username);
553 553
554 554
555 /* Password */ 555 /* Password */
588 588
589 gtk_widget_hide(dialog->password_box); 589 gtk_widget_hide(dialog->password_box);
590 gtk_widget_hide(dialog->remember_pass_check); 590 gtk_widget_hide(dialog->remember_pass_check);
591 } 591 }
592 592
593 /* Do not let the user change the protocol/screenname while connected. */ 593 /* Do not let the user change the protocol/username while connected. */
594 update_editable(NULL, dialog); 594 update_editable(NULL, dialog);
595 purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog, 595 purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog,
596 G_CALLBACK(update_editable), dialog); 596 G_CALLBACK(update_editable), dialog);
597 purple_signal_connect(purple_connections_get_handle(), "signed-off", dialog, 597 purple_signal_connect(purple_connections_get_handle(), "signed-off", dialog,
598 G_CALLBACK(update_editable), dialog); 598 G_CALLBACK(update_editable), dialog);
1191 char *tmp; 1191 char *tmp;
1192 gboolean new_acct = FALSE, icon_change = FALSE; 1192 gboolean new_acct = FALSE, icon_change = FALSE;
1193 PurpleAccount *account; 1193 PurpleAccount *account;
1194 1194
1195 /* Build the username string. */ 1195 /* Build the username string. */
1196 username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->screenname_entry))); 1196 username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->username_entry)));
1197 1197
1198 if (dialog->prpl_info != NULL) 1198 if (dialog->prpl_info != NULL)
1199 { 1199 {
1200 for (l = dialog->prpl_info->user_splits, 1200 for (l = dialog->prpl_info->user_splits,
1201 l2 = dialog->user_split_entries; 1201 l2 = dialog->user_split_entries;
1931 renderer, "active", COLUMN_ENABLED, NULL); 1931 renderer, "active", COLUMN_ENABLED, NULL);
1932 1932
1933 gtk_tree_view_column_set_resizable(column, FALSE); 1933 gtk_tree_view_column_set_resizable(column, FALSE);
1934 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); 1934 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
1935 1935
1936 /* Screen Name column */ 1936 /* Username column */
1937 column = gtk_tree_view_column_new(); 1937 column = gtk_tree_view_column_new();
1938 gtk_tree_view_column_set_title(column, _("Username")); 1938 gtk_tree_view_column_set_title(column, _("Username"));
1939 gtk_tree_view_column_set_resizable(column, TRUE); 1939 gtk_tree_view_column_set_resizable(column, TRUE);
1940 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); 1940 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
1941 1941
1943 renderer = gtk_cell_renderer_pixbuf_new(); 1943 renderer = gtk_cell_renderer_pixbuf_new();
1944 gtk_tree_view_column_pack_start(column, renderer, FALSE); 1944 gtk_tree_view_column_pack_start(column, renderer, FALSE);
1945 gtk_tree_view_column_add_attribute(column, renderer, 1945 gtk_tree_view_column_add_attribute(column, renderer,
1946 "pixbuf", COLUMN_BUDDYICON); 1946 "pixbuf", COLUMN_BUDDYICON);
1947 1947
1948 /* Screen Name */ 1948 /* Username */
1949 renderer = gtk_cell_renderer_text_new(); 1949 renderer = gtk_cell_renderer_text_new();
1950 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1950 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1951 gtk_tree_view_column_add_attribute(column, renderer, 1951 gtk_tree_view_column_add_attribute(column, renderer,
1952 "text", COLUMN_SCREENNAME); 1952 "text", COLUMN_USERNAME);
1953 dialog->screenname_col = column; 1953 dialog->username_col = column;
1954 1954
1955 1955
1956 /* Protocol name */ 1956 /* Protocol name */
1957 column = gtk_tree_view_column_new(); 1957 column = gtk_tree_view_column_new();
1958 gtk_tree_view_column_set_title(column, _("Protocol")); 1958 gtk_tree_view_column_set_title(column, _("Protocol"));
2014 } 2014 }
2015 2015
2016 gtk_list_store_set(store, iter, 2016 gtk_list_store_set(store, iter,
2017 COLUMN_ICON, pixbuf, 2017 COLUMN_ICON, pixbuf,
2018 COLUMN_BUDDYICON, buddyicon, 2018 COLUMN_BUDDYICON, buddyicon,
2019 COLUMN_SCREENNAME, purple_account_get_username(account), 2019 COLUMN_USERNAME, purple_account_get_username(account),
2020 COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI), 2020 COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI),
2021 COLUMN_PROTOCOL, purple_account_get_protocol_name(account), 2021 COLUMN_PROTOCOL, purple_account_get_protocol_name(account),
2022 COLUMN_DATA, account, 2022 COLUMN_DATA, account,
2023 -1); 2023 -1);
2024 2024
2188 2188
2189 /* Create the list model. */ 2189 /* Create the list model. */
2190 dialog->model = gtk_list_store_new(NUM_COLUMNS, 2190 dialog->model = gtk_list_store_new(NUM_COLUMNS,
2191 GDK_TYPE_PIXBUF, /* COLUMN_ICON */ 2191 GDK_TYPE_PIXBUF, /* COLUMN_ICON */
2192 GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */ 2192 GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */
2193 G_TYPE_STRING, /* COLUMN_SCREENNAME */ 2193 G_TYPE_STRING, /* COLUMN_USERNAME */
2194 G_TYPE_BOOLEAN, /* COLUMN_ENABLED */ 2194 G_TYPE_BOOLEAN, /* COLUMN_ENABLED */
2195 G_TYPE_STRING, /* COLUMN_PROTOCOL */ 2195 G_TYPE_STRING, /* COLUMN_PROTOCOL */
2196 G_TYPE_POINTER /* COLUMN_DATA */ 2196 G_TYPE_POINTER /* COLUMN_DATA */
2197 ); 2197 );
2198 2198

mercurial