Changeset 3309 for trunk/jons-gtk2-gui
- Timestamp:
- 02/26/03 10:18:19 (6 years ago)
- Files:
-
- 1 modified
-
trunk/jons-gtk2-gui/src/search_user_window.cpp (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jons-gtk2-gui/src/search_user_window.cpp
r3296 r3309 20 20 21 21 #include "licq_gtk.h" 22 #include "utilities.h" 22 23 23 24 #include "licq_icqd.h" … … 55 56 GtkWidget *list; 56 57 GtkWidget *clear; 57 struct e_tag_data *etag; 58 GtkWidget *statusbar; 59 unsigned long e_tag; 58 60 }; 59 61 60 struct search_user *su ;61 static gint num_found_users ;62 struct search_user *su = NULL; 63 static gint num_found_users = 0; 62 64 63 65 GtkWidget * … … 71 73 const char *genders[] = {"Unspecified", "Female", "Male"}; 72 74 static const int NUM_GENDERS = 3; 75 const char *ages[] = {"Unspecified", "18 - 22", "23 - 29", "30 - 39", "40 - 49", 76 "50 - 59", "60+"}; 77 static const int NUM_AGES = 7; 73 78 74 79 GtkWidget * … … 88 93 { 89 94 /* Only one search window */ 90 if (su != 0) {95 if (su != NULL) { 91 96 gdk_window_raise(su->window->window); 92 97 return; … … 94 99 95 100 su = g_new0(struct search_user, 1); 96 su->etag = g_new0(struct e_tag_data, 1);97 101 98 102 num_found_users = 0; … … 101 105 su->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 102 106 gtk_window_set_title(GTK_WINDOW(su->window), "Licq - User Search"); 103 104 // gtk_window_set_default_size(GTK_WINDOW(su->window), 550, 350);105 107 106 108 /* destroy event for window */ … … 133 135 GtkWidget *age_menu = gtk_menu_new(); 134 136 gtk_option_menu_set_menu(GTK_OPTION_MENU(su->age), age_menu); 135 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 136 gtk_menu_item_new_with_label("Unspecified")); 137 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 138 gtk_menu_item_new_with_label("18 - 22")); 139 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 140 gtk_menu_item_new_with_label("23 - 29")); 141 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 142 gtk_menu_item_new_with_label("30 - 39")); 143 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 144 gtk_menu_item_new_with_label("40 - 49")); 145 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 146 gtk_menu_item_new_with_label("50 - 59")); 147 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 148 gtk_menu_item_new_with_label("60+")); 137 for (int i = 0; i < NUM_AGES; ++i) 138 gtk_menu_shell_append(GTK_MENU_SHELL(age_menu), 139 gtk_menu_item_new_with_label(ages[i])); 149 140 gtk_option_menu_set_history(GTK_OPTION_MENU(su->age), 0); 150 141 gtk_table_attach(GTK_TABLE(whitepages), su->age, … … 302 293 303 294 /* The statusbar */ 304 GtkWidget *statusbar = gtk_statusbar_new();305 gtk_box_pack_start(GTK_BOX(main_vbox), s tatusbar, TRUE, TRUE, 5);306 307 guint id = gtk_statusbar_get_context_id(GTK_STATUSBAR(s tatusbar),295 su->statusbar = gtk_statusbar_new(); 296 gtk_box_pack_start(GTK_BOX(main_vbox), su->statusbar, TRUE, TRUE, 5); 297 298 guint id = gtk_statusbar_get_context_id(GTK_STATUSBAR(su->statusbar), 308 299 "sta"); 309 gtk_statusbar_pop(GTK_STATUSBAR(s tatusbar), id);310 gtk_statusbar_push(GTK_STATUSBAR(s tatusbar), id,300 gtk_statusbar_pop(GTK_STATUSBAR(su->statusbar), id); 301 gtk_statusbar_push(GTK_STATUSBAR(su->statusbar), id, 311 302 "Enter Search Parameters"); 312 313 /* The etag has to know about the statusbar */314 su->etag->statusbar = statusbar;315 303 316 304 //gtk_widget_set_size_request(GTK_WIDGET(su->window), 435, 465); … … 335 323 gtk_list_store_clear(store); 336 324 gtk_widget_set_sensitive(su->clear, FALSE); 325 change_status(su->statusbar, "sta", ""); 337 326 } 338 327 … … 349 338 } 350 339 351 void search_callback(GtkWidget *widget, gpointer data)352 { 353 change_status(su->etag->statusbar, "sta", 354 "Searching, this may take awhile.");340 void 341 search_callback(GtkWidget *widget, gpointer data) 342 { 343 change_status(su->statusbar, "sta", "Searching, this may take awhile."); 355 344 356 345 unsigned short mins[7] = {0, 18, 23, 30, 40, 50, 60}; 357 346 unsigned short maxs[7] = {0, 22, 29, 39, 49, 59, 120}; 358 347 359 gulong uin = (gulong)(atol(get_text(su->uin)));348 gulong uin = strtoul(get_text(su->uin), 0, 10); 360 349 361 350 if(uin >= 10000) 362 su->e tag->e_tag = icq_daemon->icqSearchByUin(uin);351 su->e_tag = icq_daemon->icqSearchByUin(uin); 363 352 else 364 su->e tag->e_tag = icq_daemon->icqSearchWhitePages(353 su->e_tag = icq_daemon->icqSearchWhitePages( 365 354 get_text(su->first_name), 366 355 get_text(su->last_name), … … 381 370 } 382 371 383 void search_list_double_click(GtkWidget *widget,384 GdkEventButton *eb, 385 gpointer data) 386 { 387 gulong uin; 388 ICQUser *user;372 void 373 search_list_double_click(GtkWidget *widget, GdkEventButton *eb, gpointer data) 374 { 375 // we'll consider left button double click only 376 if (eb->type != GDK_2BUTTON_PRESS || eb->button != 1) 377 return; 389 378 390 379 /* Get which cell was clicked in */ 391 380 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(su->list)); 381 392 382 GtkTreeIter iter; 393 383 GtkTreeModel *model; 394 395 384 if (!gtk_tree_selection_get_selected(sel, &model, &iter)) 396 385 return; 397 if(!(eb->type == GDK_2BUTTON_PRESS && eb->button == 1))398 return;399 386 400 387 gchar *c_uin; 401 388 gtk_tree_model_get(model, &iter, 1, &c_uin, -1); 402 uin = atol(c_uin);389 gulong uin = strtoul(c_uin, 0, 10); 403 390 g_free(c_uin); 404 391 405 if((uin == 0) || (user = gUserManager.FetchUser(uin, LOCK_N))) 392 // either invalid uin or we have this user already 393 if (uin == 0 || gUserManager.FetchUser(uin, LOCK_N) != NULL) 406 394 return; 407 395 … … 409 397 410 398 char *for_statusbar = g_strdup_printf("User (%ld) added", uin); 411 change_status(su-> etag->statusbar, "sta", for_statusbar);399 change_status(su->statusbar, "sta", for_statusbar); 412 400 g_free(for_statusbar); 413 401 } … … 416 404 { 417 405 /* Make sure it's the right event */ 418 if (!event->Equals(su->etag->e_tag))406 if (su == NULL || !event->Equals(su->e_tag)) 419 407 return; 420 408 … … 429 417 } 430 418 431 void search_done(bool more) 419 void 420 search_done(bool more) 432 421 { 433 422 if (more) 434 change_status(su-> etag->statusbar, "sta",423 change_status(su->statusbar, "sta", 435 424 "More users found, narrow your search and try again."); 436 425 else 437 change_status(su-> etag->statusbar, "sta",426 change_status(su->statusbar, "sta", 438 427 "Search complete, double click user to add her/him."); 439 428 } 440 429 441 std::string 442 s_convert_to_utf8(const gchar *input_text, const gchar *input_enc) 443 { 444 if (input_text == 0 || input_text[0] == '\0') 445 return string(""); 446 char *p = convert_to_utf8(input_text, input_enc); 447 string ret(""); 448 if (p != 0) { 449 ret = p; 450 g_free(p); 451 } 452 return ret; 453 } 454 455 void search_found(CSearchAck *s) 456 { 457 cerr << "s_f 1\n"; 458 string name( 459 s_convert_to_utf8(s->FirstName(), 0) + ' ' + 460 s_convert_to_utf8(s->LastName(), 0)); 430 void 431 search_found(CSearchAck *s) 432 { 433 string name(s_convert_to_utf8(s->FirstName()) + ' ' + 434 s_convert_to_utf8(s->LastName())); 461 435 462 436 char *uin = g_strdup_printf("%ld", s->Uin()); 463 string alias(s_convert_to_utf8(s->Alias(), 0)); 464 string email(s_convert_to_utf8(s->Email(), 0)); 465 466 cerr << "s_f 2\n"; 467 437 string alias(s_convert_to_utf8(s->Alias())); 438 string email(s_convert_to_utf8(s->Email())); 439 468 440 GtkListStore *store = 469 441 GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(su->list))); … … 492 464 else if (s->Gender() == 2) 493 465 gender = "M"; 494 char *sex_age = 0;466 char *sex_age; 495 467 if (s->Age()) 496 468 sex_age = g_strdup_printf("%s/%d", gender, s->Age()); … … 498 470 sex_age = g_strdup_printf("%s/?", gender); 499 471 gtk_list_store_set(store, &iter, 5, sex_age, -1); 472 g_free(sex_age); 500 473 501 474 if (s->Auth()) … … 504 477 gtk_list_store_set(store, &iter, 6, "Yes", -1); 505 478 506 cerr << "s_f 3\n";507 508 479 num_found_users++; 509 480 gtk_widget_set_sensitive(su->clear, TRUE); … … 512 483 void search_failed() 513 484 { 514 change_status(su->etag->statusbar, "sta", "Search failed."); 515 } 516 517 void search_close(GtkWidget *widget, gpointer data) 485 change_status(su->statusbar, "sta", "Search failed."); 486 } 487 488 void 489 search_close(GtkWidget *widget, gpointer data) 518 490 { 519 491 gtk_widget_destroy(su->window); 520 su = 0; 521 } 492 g_free(su); 493 su = NULL; 494 }
