1 /*
2 ** TleenX2 (Tlen.pl Client)
3 ** Copyright (c) 2002-2003 Hubert Soko�owski <who_ami@tlen.pl>
4 ** Pawe� Bili�ski <rael@fr.pl>
5 **
6 ** This code is free software; you can redistribute it and/or
7 ** modify it under the terms of the GNU General Public License.
8 **
9 */
10
11
12 #ifdef HAVE_CONFIG_H
13 # include <config.h>
14 #endif
15
16 #include "main.h"
17 #include <gdk/gdkkeysyms.h>
18 #include <stdlib.h>
19
20 #include "callbacks.h"
21 #include "interface.h"
22 #include "support.h"
23 #include "windows.h"
24 #include "utils.h"
25 #include "conffile.h"
26 #include "chat.h"
27 #include "messages.h"
28 #include "archive.h"
29 #include "search.h"
30 #include "lista.h"
31 #include "menu.h"
32 #include "jabby.h"
33 #include "jabber.h"
34 #include "users.h"
35
36 gboolean
on_treeview_button_release_event(GtkWidget * widget,GdkEventButton * event,gpointer user_data)37 on_treeview_button_release_event (GtkWidget *widget,
38 GdkEventButton *event,
39 gpointer user_data)
40 {
41 GtkTreeView *treeview=(GTK_TREE_VIEW(widget));
42 GtkTreeSelection *selection;
43 GtkTreeModel *model;
44 GtkTreeIter iter;
45 guint status;
46 gchar *s;
47 GtkWidget *menu;
48 GtkWidget *menu_items;
49 struct user *user;
50 gchar *jid;
51 gchar *s2;
52
53 selection=gtk_tree_view_get_selection(treeview);
54 if (event->type==GDK_BUTTON_RELEASE &&
55 event->button==3)
56 {
57
58 menu = gtk_menu_new ();
59
60 if (gtk_tree_selection_get_selected (selection, &model, &iter))
61 {
62 gtk_tree_model_get (model, &iter,
63 0, &status,
64 -1);
65 if((status==0) || (status==1))
66 return TRUE;
67 gtk_tree_model_get (model, &iter,
68 2, &jid,
69 -1);
70 user=get_user(jid);
71 if(!user)
72 return TRUE;
73
74 menu_items = gtk_menu_item_new_with_label (jid);
75 gtk_menu_append (GTK_MENU (menu), menu_items);
76 gtk_widget_show (menu_items);
77 gtk_widget_set_sensitive (menu_items, FALSE);
78 s2 = user_description(user);
79 if(s2)
80 {
81 menu_items = gtk_menu_item_new_with_label (s2);
82 gtk_menu_append (GTK_MENU (menu), menu_items);
83 gtk_widget_show (menu_items);
84 gtk_widget_set_sensitive (menu_items, FALSE);
85 }
86
87 menu_items = gtk_menu_item_new ();
88 gtk_widget_show (menu_items);
89 gtk_container_add (GTK_CONTAINER (menu), menu_items);
90 gtk_widget_set_sensitive (menu_items, FALSE);
91
92 if(s2)
93 {
94 menu_items = gtk_menu_item_new_with_label ("Skopiuj opis do schowka");
95 gtk_menu_append (GTK_MENU (menu), menu_items);
96 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
97 G_CALLBACK (on_menu_user_clipboard),
98 (gpointer) user);
99 gtk_widget_show (menu_items);
100 g_free(s2);
101 }
102 if(user)
103 if(!strcmp(user->subscription,"both") ||
104 !strcmp(user->subscription,"to"))
105 {
106 menu_items = gtk_menu_item_new_with_label ("Rozmowa");
107 gtk_menu_append (GTK_MENU (menu), menu_items);
108 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
109 G_CALLBACK (on_menu_user_chat),
110 (gpointer) user);
111 gtk_widget_show (menu_items);
112 }
113
114 s=utf("Wiadomo��");
115 menu_items = gtk_menu_item_new_with_label (s);
116 g_free(s);
117 gtk_menu_append (GTK_MENU (menu), menu_items);
118 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
119 G_CALLBACK (on_menu_user_mesg),
120 (gpointer) user->jid);
121 gtk_widget_show (menu_items);
122
123 menu_items = gtk_menu_item_new_with_label ("Edycja danych osoby");
124 gtk_menu_append (GTK_MENU (menu), menu_items);
125 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
126 G_CALLBACK (on_menu_user_edit),
127 (gpointer) user);
128 gtk_widget_show (menu_items);
129
130 if(user->type == USER_TLEN)
131 {
132 s=utf("Katalog publiczny");
133 menu_items = gtk_menu_item_new_with_label (s);
134 g_free(s);
135 gtk_menu_append (GTK_MENU (menu), menu_items);
136 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
137 G_CALLBACK (on_menu_user_check),
138 (gpointer) user->jid);
139 gtk_widget_show (menu_items);
140 }
141
142 menu_items = gtk_menu_item_new ();
143 gtk_widget_show (menu_items);
144 gtk_container_add (GTK_CONTAINER (menu), menu_items);
145 gtk_widget_set_sensitive (menu_items, FALSE);
146
147 s=utf("Usu�");
148 menu_items = gtk_menu_item_new_with_label (s);
149 g_free(s);
150 gtk_menu_append (GTK_MENU (menu), menu_items);
151 g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
152 G_CALLBACK (on_menu_user_delete),
153 (gpointer) user);
154 gtk_widget_show (menu_items);
155
156 gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
157 1, event->time);
158 return TRUE;
159 }
160 }
161 else
162 if (event->type==GDK_BUTTON_RELEASE &&
163 event->button==1)
164 {
165 // GtkTreePath *treepath;
166
167 if (gtk_tree_selection_get_selected (selection, &model, &iter))
168 {
169 // gtk_tree_model_get (model, &iter,
170 // 0, &status,
171 // -1);
172 // if(status!=1)
173 // return TRUE;
174 // gtk_tree_model_get (model, &iter,
175 // 2, &s,
176 // -1);
177 // treepath=gtk_tree_path_new_from_string(s);
178 // if(gtk_tree_view_row_expanded(treeview,treepath))
179 // gtk_tree_view_collapse_row(treeview, treepath);
180 // else
181 // gtk_tree_view_expand_row(treeview,treepath,FALSE);
182 // gtk_tree_path_free(treepath);
183 return FALSE;
184 }
185 }
186
187 return FALSE;
188 }
189
190 void
on_treeview_select_row(GtkTreeSelection * selection,gpointer user_data)191 on_treeview_select_row(GtkTreeSelection *selection,
192 gpointer user_data)
193 {
194 GtkTreeModel *model;
195 GtkTreeIter iter;
196 gchar *jid;
197 gchar *desc;
198 guint status;
199 GtkWidget *widget;
200 struct user *user;
201
202 if(preferences & PREF_INFO_MENU)
203 return;
204 if (gtk_tree_selection_get_selected (selection, &model, &iter))
205 {
206 gtk_tree_model_get (model, &iter,
207 0, &status,
208 -1);
209 widget=lookup_widget(window1,"label_info");
210 if((status==0) || (status==1))
211 {
212 gtk_widget_hide(widget);
213 return;
214 }
215 gtk_widget_show(widget);
216 gtk_tree_model_get (model, &iter,
217 2, &jid,
218 -1);
219 user=get_user(jid);
220 if((strlen(user->description)>0) &&
221 (strcmp(user->description, opisy[user->status-2])))
222 desc=g_strdup_printf("%s\n%s",jid,user->description);
223 else
224 desc=g_strdup(jid);
225 jid=utf(desc);
226 gtk_label_set_text(GTK_LABEL(widget),jid);
227 g_free(desc);
228 g_free(jid);
229 }
230 }
231
232 void
on_treeview_row_activated(GtkTreeView * treeview,GtkTreePath * arg1,GtkTreeViewColumn * arg2,gpointer user_data)233 on_treeview_row_activated (GtkTreeView *treeview,
234 GtkTreePath *arg1,
235 GtkTreeViewColumn *arg2,
236 gpointer user_data)
237 {
238 GtkTreeSelection *selection;
239 GtkTreeModel *model;
240 GtkTreeIter iter;
241 gchar *jid;
242 guint status;
243 struct user *u;
244 struct talk *talk;
245
246 selection=gtk_tree_view_get_selection(treeview);
247 if (gtk_tree_selection_get_selected (selection, &model, &iter))
248 {
249 gtk_tree_model_get (model, &iter,
250 0, &status,
251 -1);
252 if((status==0) || (status==1))
253 return;
254 gtk_tree_model_get (model, &iter,
255 2, &jid,
256 -1);
257 talk=get_talk(jid);
258 if(talk)
259 {
260 gtk_window_deiconify(GTK_WINDOW(talk->window));
261 gtk_widget_show(GTK_WIDGET(talk->window));
262 return;
263 }
264 u=get_user(jid);
265 if(strcmp(u->subscription,"both") && strcmp(u->subscription,"to"))
266 return;
267 my_create_window_chat(jid);
268 talk=get_talk(jid);
269 chat_set_title(talk, 0);
270 }
271
272 }
273
274 gboolean
on_window1_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)275 on_window1_delete_event (GtkWidget *widget,
276 GdkEvent *event,
277 gpointer user_data)
278 {
279 // gdk_window_get_position(window1->window, &posx, &posy);
280 #ifndef DISABLE_DOCKLET
281 gtk_window_get_position(GTK_WINDOW(window1), &posx, &posy);
282 gtk_widget_hide(window1);
283 #else
284 wyjscie();
285 #endif
286
287 return TRUE;
288 }
289
290
291 void
on_button_tlenpl_clicked(GtkButton * button,gpointer user_data)292 on_button_tlenpl_clicked (GtkButton *button,
293 gpointer user_data)
294 {
295
296 }
297
298
299 void
on_button_status_clicked(GtkButton * button,gpointer user_data)300 on_button_status_clicked (GtkButton *button,
301 gpointer user_data)
302 {
303
304 }
305
306
307 void
on_button_add_clicked(GtkButton * button,gpointer user_data)308 on_button_add_clicked (GtkButton *button,
309 gpointer user_data)
310 {
311 contact_add(NULL, USER_TLEN);
312
313 }
314
315
316 void
on_button_search_clicked(GtkButton * button,gpointer user_data)317 on_button_search_clicked (GtkButton *button,
318 gpointer user_data)
319 {
320 if(!window_search)
321 my_create_window_search();
322
323 }
324
325
326 void
on_button_prefs_clicked(GtkButton * button,gpointer user_data)327 on_button_prefs_clicked (GtkButton *button,
328 gpointer user_data)
329 {
330 if(!window_prefs)
331 my_create_window_prefs();
332
333 }
334
335
336 void
on_button_arch_clicked(GtkButton * button,gpointer user_data)337 on_button_arch_clicked (GtkButton *button,
338 gpointer user_data)
339 {
340 if(!window_archive)
341 my_create_window_archive();
342
343 }
344
345
346 void
on_togglebutton_hide_toggled(GtkToggleButton * togglebutton,gpointer user_data)347 on_togglebutton_hide_toggled (GtkToggleButton *togglebutton,
348 gpointer user_data)
349 {
350 if(gtk_toggle_button_get_active(togglebutton))
351 preferences |= PREF_HIDE_OFFLINE;
352 else
353 preferences &= ~PREF_HIDE_OFFLINE;
354 refresh_gui();
355 }
356
357
358 void
on_button_profiles_clicked(GtkButton * button,gpointer user_data)359 on_button_profiles_clicked (GtkButton *button,
360 gpointer user_data)
361 {
362 gtk_widget_destroy(window_login);
363 my_create_window_profiles();
364 gtk_widget_show(window_profiles);
365
366 }
367
368
369 void
on_button_open_clicked(GtkButton * button,gpointer user_data)370 on_button_open_clicked (GtkButton *button,
371 gpointer user_data)
372 {
373 GtkWidget *entry;
374 const gchar *name;
375
376 entry = lookup_widget(window_login,"combo_entry");
377 name = gtk_entry_get_text(GTK_ENTRY(entry));
378 if(!strlen(name))
379 {
380 info("Kliknij przycisk Profile aby doda� jaki� profil.");
381 return;
382 }
383 pname = fromutf(name);
384 gtk_widget_destroy(window_login);
385 window1_open();
386 }
387
388
389 gboolean
on_window_profiles_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)390 on_window_profiles_delete_event (GtkWidget *widget,
391 GdkEvent *event,
392 gpointer user_data)
393 {
394 gtk_widget_destroy(window_profiles);
395 create_file();
396 my_create_window_login();
397
398 return FALSE;
399 }
400
401
402 void
on_button_profiles_new_clicked(GtkButton * button,gpointer user_data)403 on_button_profiles_new_clicked (GtkButton *button,
404 gpointer user_data)
405 {
406
407 gtk_widget_destroy(window_profiles);
408 my_create_window_profile(NULL);
409 gtk_widget_show(window_profile);
410 }
411
412
413 void
on_button_profiles_delete_clicked(GtkButton * button,gpointer user_data)414 on_button_profiles_delete_clicked (GtkButton *button,
415 gpointer user_data)
416 {
417 GtkWidget *treeview;
418 GtkTreeSelection *selection;
419 GtkTreeModel *model;
420 GtkTreeIter iter;
421 gchar *pname, *s;
422
423 treeview = lookup_widget(window_profiles,"treeview");
424 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
425 if (gtk_tree_selection_get_selected (selection, &model, &iter))
426 {
427 gtk_tree_model_get (model, &iter,
428 0, &pname,
429 -1);
430 s = fromutf(pname);
431 del_profile(s);
432 g_free(s);
433 model = window_profiles_create_model();
434 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), model);
435 g_object_unref (G_OBJECT (model));
436 }
437 }
438
439
440 void
on_button_profiles_edit_clicked(GtkButton * button,gpointer user_data)441 on_button_profiles_edit_clicked (GtkButton *button,
442 gpointer user_data)
443 {
444 GtkWidget *treeview;
445 GtkTreeSelection *selection;
446 GtkTreeModel *model;
447 GtkTreeIter iter;
448 gchar *pname, *s;
449
450 treeview = lookup_widget(window_profiles,"treeview");
451 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
452 if (gtk_tree_selection_get_selected (selection, &model, &iter))
453 {
454 gtk_tree_model_get (model, &iter,
455 0, &pname,
456 -1);
457 s = fromutf(pname);
458 my_create_window_profile(s);
459 g_free(s);
460 gtk_widget_destroy(window_profiles);
461 gtk_widget_show(window_profile);
462 }
463
464 }
465
466
467 void
on_button_profiles_close_clicked(GtkButton * button,gpointer user_data)468 on_button_profiles_close_clicked (GtkButton *button,
469 gpointer user_data)
470 {
471 gtk_widget_destroy(window_profiles);
472 create_file();
473 my_create_window_login();
474
475 }
476
477
478 gboolean
on_window_profile_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)479 on_window_profile_delete_event (GtkWidget *widget,
480 GdkEvent *event,
481 gpointer user_data)
482 {
483 gtk_widget_destroy(window_profile);
484 my_create_window_profiles();
485 gtk_widget_show(window_profiles);
486
487 return TRUE;
488 }
489
490
491 void
on_button_profile_ok_clicked(GtkButton * button,gpointer user_data)492 on_button_profile_ok_clicked (GtkButton *button,
493 gpointer user_data)
494 {
495 GtkWidget *entry;
496 const gchar *pname, *login, *password;
497 gchar *s;
498 const gchar *jserver, *jlogin, *jpassword, *jresource;
499 // struct profile *p;
500
501 entry = lookup_widget(window_profile,"entry_name");
502 pname = gtk_entry_get_text(GTK_ENTRY(entry));
503 if(!strlen(pname))
504 {
505 info("Musisz poda� nazw� profilu");
506 return;
507 }
508 entry = lookup_widget(window_profile,"entry_tlen_login");
509 login = gtk_entry_get_text(GTK_ENTRY(entry));
510 if(!strlen(login))
511 {
512 info("Musisz poda� login Tlenu");
513 return;
514 }
515 entry = lookup_widget(window_profile,"entry_tlen_password");
516 password = gtk_entry_get_text(GTK_ENTRY(entry));
517 if(!strlen(password))
518 {
519 info("Musisz poda� has�o Tlenu");
520 return;
521 }
522 s = fromutf(pname);
523 if(!s)
524 {
525 info("Wprowadzi�e� niepoprawne znaki w polu nazwy");
526 return;
527 }
528 add_profile(s, login, password);
529 entry = lookup_widget(window_profile,"entry_jabber_server");
530 jserver = gtk_entry_get_text(GTK_ENTRY(entry));
531 if(strlen(jserver))
532 {
533 entry = lookup_widget(window_profile,"entry_jabber_jid");
534 jlogin = gtk_entry_get_text(GTK_ENTRY(entry));
535 if(strlen(jlogin))
536 {
537 entry = lookup_widget(window_profile,"entry_jabber_password");
538 jpassword = gtk_entry_get_text(GTK_ENTRY(entry));
539 if(strlen(jpassword))
540 {
541 entry = lookup_widget(window_profile,"entry_jabber_resource");
542 jresource = gtk_entry_get_text(GTK_ENTRY(entry));
543 profile_jabber(s, jserver, jlogin, jpassword, jresource);
544 }
545 }
546 }
547 entry = lookup_widget(window_profile,"entry_gg_number");
548 login = gtk_entry_get_text(GTK_ENTRY(entry));
549 entry = lookup_widget(window_profile,"entry_gg_password");
550 password = gtk_entry_get_text(GTK_ENTRY(entry));
551 if(strlen(login) && strlen(password))
552 profile_gg(s, login, password);
553 entry = lookup_widget(window_profile,"entry_sms_id");
554 login = gtk_entry_get_text(GTK_ENTRY(entry));
555 entry = lookup_widget(window_profile,"entry_sms_password");
556 password = gtk_entry_get_text(GTK_ENTRY(entry));
557 if(strlen(login) && strlen(password))
558 profile_sms(s, login, password);
559 g_free(s);
560 gtk_widget_destroy(window_profile);
561 my_create_window_profiles();
562 gtk_widget_show(window_profiles);
563
564 }
565
566
567 void
on_combo_entry_type_changed(GtkEditable * editable,gpointer user_data)568 on_combo_entry_type_changed (GtkEditable *editable,
569 gpointer user_data)
570 {
571 window_contact_add_type_changed(GTK_WIDGET(editable));
572
573 }
574
575
576 void
on_button_contact_add_ok_clicked(GtkButton * button,gpointer user_data)577 on_button_contact_add_ok_clicked (GtkButton *button,
578 gpointer user_data)
579 {
580 GtkWidget *entry, *window;
581 gchar *name, *id, *group, *type;
582 struct user *u;
583 gint gtype=-1, status=-1;
584
585 window = GTK_WIDGET(button);
586 entry = lookup_widget (window, "entry_id");
587 id = (gchar*) gtk_entry_get_text(GTK_ENTRY(entry));
588 if(strlen(id) == 0)
589 {
590 info("Musisz poda� identyfikator");
591 return;
592 }
593 entry = lookup_widget (window, "entry_name");
594 name = (gchar *) gtk_entry_get_text(GTK_ENTRY(entry));
595 entry = lookup_widget (window, "entry_group");
596 group = (gchar *) gtk_entry_get_text(GTK_ENTRY(entry));
597
598 entry = lookup_widget (window, "combo_entry_type");
599 type = (gchar*) gtk_entry_get_text(GTK_ENTRY(entry));
600 if(!strcmp(type, "Jabber"))
601 {
602 if(!jabber_logged())
603 {
604 info("Brak po��czenia z serwerem jabbera.");
605 return;
606 }
607 gtype = USER_JABBER;
608 status = JABBY_PRESENCE_UNAVAILABLE+2;
609 if(!strchr(id,'@'))
610 {
611 info("Musisz poda� nazw� serwera w identyfikatorze.");
612 return;
613 }
614 id = g_strdup(id);
615 jabber_contact_add(name, id, group);
616 }
617 if(!strcmp(type, "GG"))
618 {
619 if(!jabber_logged())
620 {
621 info("Brak po��czenia z serwerem jabbera.");
622 return;
623 }
624 if(!jabber_registered_to_gg())
625 {
626 info("Nie masz zarejestrowanego numeru GG.");
627 return;
628 }
629 gtype = USER_GG;
630 status = JABBY_PRESENCE_UNAVAILABLE+2;
631 if(!atoi(id) || strchr(id, '@'))
632 {
633 info("Niepoprawny numer.");
634 return;
635 }
636 id = g_strdup_printf("%s@%s", id, profile->ggserver);
637 jabber_contact_add(name, id, group);
638 }
639 if(!strcmp(type, "WPKontakt"))
640 {
641 if(!jabber_logged())
642 {
643 info("Brak po��czenia z serwerem jabbera.");
644 return;
645 }
646 gtype = USER_WP;
647 status = JABBY_PRESENCE_UNAVAILABLE+2;
648 if(!strchr(id,'@'))
649 id = g_strdup_printf("%s@jabber.wp.pl", id);
650 else
651 id = g_strdup(id);
652 jabber_contact_add(name, id, group);
653 }
654 name = fromutf(name);
655 group = fromutf(group);
656 if(!strcmp(type, "Tlen"))
657 {
658 gtype = USER_TLEN;
659 status = TLEN_STATUS_UNAVAILABLE;
660 if(strchr(id, '@'))
661 id = g_strdup(id);
662 else
663 id = g_strdup_printf("%s@tlen.pl", id);
664 tlen_addcontact(session, name, id, group);
665 }
666 if((u = get_user(id)))
667 {
668 add_user(name, id, group, NULL, NULL, NULL,-1, -1);
669 if(strcmp(u->subscription,"both") && strcmp(u->subscription,"to")
670 && strcmp(u->ask,"subscribe"))
671 {
672 if(!strcmp(type, "Tlen"))
673 tlen_request_subscribe(session, id);
674 if(!strcmp(type, "Jabber") || !strcmp(type, "WPKontakt")
675 || !strcmp(type, "GG"))
676 jabber_subscribe_ask(id);
677 }
678 }
679 else
680 {
681 add_user(name, id, group, "none", "niedost�pny", "subscribe",
682 status, gtype);
683 if(!strcmp(type, "Tlen"))
684 tlen_request_subscribe(session, id);
685 if(!strcmp(type, "Jabber") || !strcmp(type, "WPKontakt")
686 || !strcmp(type, "GG"))
687 jabber_subscribe_ask(id);
688 }
689 gtk_widget_destroy(window);
690 g_free(name);
691 g_free(group);
692 g_free(id);
693 refresh_gui();
694 }
695
696
697 gboolean
on_window_message_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)698 on_window_message_delete_event (GtkWidget *widget,
699 GdkEvent *event,
700 gpointer user_data)
701 {
702 if(messages_unread())
703 info("Nieprzeczytane wiadomo�ci s� dost�pne w archiwum.");
704 messages_list_clear();
705 gtk_widget_destroy(window_message);
706 window_message = NULL;
707 return TRUE;
708 }
709
710
711 void
on_button_message_reply_clicked(GtkButton * button,gpointer user_data)712 on_button_message_reply_clicked (GtkButton *button,
713 gpointer user_data)
714 {
715 gchar *id, *message;
716 GtkWidget *widget;
717
718 widget = lookup_widget(window_message, "label_id");
719 id = (gchar *) gtk_label_get_text(GTK_LABEL(widget));
720 widget = lookup_widget(window_message, "textview");
721 message = fromutf(textview_get_text(widget));
722 message_send(id, message);
723 g_free(message);
724
725 }
726
727
728 void
on_button_message_prev_clicked(GtkButton * button,gpointer user_data)729 on_button_message_prev_clicked (GtkButton *button,
730 gpointer user_data)
731 {
732 GtkWidget *label;
733 gchar *s;
734 gint num;
735
736 label = lookup_widget(window_message, "label_counter");
737 s = (gchar *) gtk_label_get_text(GTK_LABEL(label));
738 num = atoi(s);
739 window_message_update(num-1);
740 }
741
742
743 void
on_button_message_next_clicked(GtkButton * button,gpointer user_data)744 on_button_message_next_clicked (GtkButton *button,
745 gpointer user_data)
746 {
747 GtkWidget *label;
748 gchar *s;
749 gint num;
750
751 label = lookup_widget(window_message, "label_counter");
752 s = (gchar *) gtk_label_get_text(GTK_LABEL(label));
753 num = atoi(s);
754 window_message_update(num+1);
755 }
756
757
758 gboolean
on_window_search_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)759 on_window_search_delete_event (GtkWidget *widget,
760 GdkEvent *event,
761 gpointer user_data)
762 {
763
764 window_search_close();
765 return TRUE;
766 }
767
768
769 void
on_button_search_search_clicked(GtkButton * button,gpointer user_data)770 on_button_search_search_clicked (GtkButton *button,
771 gpointer user_data)
772 {
773 struct tlen_pubdir *pubdir;
774 GtkWidget *widget;
775 gchar *s;
776
777
778 pubdir = tlen_new_pubdir();
779
780 widget = lookup_widget(window_search,"entry_name");
781 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
782 if(strlen(s)>0)
783 pubdir->firstname = s;
784
785 widget = lookup_widget(window_search,"entry_surname");
786 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
787 if(strlen(s)>0)
788 pubdir->lastname = s;
789
790 widget = lookup_widget(window_search,"entry_nick");
791 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
792 if(strlen(s)>0)
793 pubdir->nick = s;
794
795 widget = lookup_widget(window_search,"entry_gender");
796 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
797 if(!strcmp(s,"kobieta"))
798 pubdir->gender = TLEN_PUBDIR_GENDER_FEMALE;
799 else if(!strcmp(s,"m�czyzna"))
800 pubdir->gender = TLEN_PUBDIR_GENDER_MALE;
801 else
802 pubdir->gender=TLEN_PUBDIR_GENDER_NONE;
803 g_free(s);
804
805 widget = lookup_widget(window_search,"entry_city");
806 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
807 if(strlen(s)>0)
808 pubdir->city = s;
809
810 widget = lookup_widget(window_search,"entry_email");
811 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
812 if(strlen(s)>0)
813 pubdir->email = s;
814
815 widget = lookup_widget(window_search,"spinbutton_agefrom");
816 pubdir->age_min = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
817 widget = lookup_widget(window_search,"spinbutton_ageto");
818 pubdir->age_max = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
819 widget = lookup_widget(window_search,"entry_status");
820 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
821 if(!strcmp(s,"dost�pny"))
822 pubdir->status = TLEN_PUBDIR_STATUS_AVAILABLE;
823 else if(!strcmp(s,"porozmawiajmy"))
824 pubdir->status = TLEN_PUBDIR_STATUS_CHATTY;
825 g_free(s);
826
827 widget = lookup_widget(window_search,"entry_look");
828 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
829 if(!strcmp(s,""))
830 pubdir->look_for = TLEN_PUBDIR_LOOK_NONE;
831 else if(!strcmp(s,"rozmowa"))
832 pubdir->look_for = TLEN_PUBDIR_LOOK_TALK;
833 else if(!strcmp(s,"przyja��"))
834 pubdir->look_for = TLEN_PUBDIR_LOOK_FRIEND;
835 else if(!strcmp(s,"romans"))
836 pubdir->look_for = TLEN_PUBDIR_LOOK_FLIRT;
837 else if(!strcmp(s,"mi�o��"))
838 pubdir->look_for = TLEN_PUBDIR_LOOK_LOVE;
839 g_free(s);
840
841 widget = lookup_widget(window_search,"entry_school");
842 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
843 if(strlen(s)>0)
844 pubdir->school = s;
845
846 widget = lookup_widget(window_search,"entry_job");
847 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
848 if(!strcmp(s,""))
849 pubdir->job = TLEN_PUBDIR_JOB_NONE;
850 else if(!strcmp(s,"ucze�"))
851 pubdir->job = TLEN_PUBDIR_JOB_UCZEN;
852 else if(!strcmp(s,"student"))
853 pubdir->job = TLEN_PUBDIR_JOB_STUDENT;
854 else if(!strcmp(s,"rolnik"))
855 pubdir->job = TLEN_PUBDIR_JOB_ROLNIK;
856 else if(!strcmp(s,"mened�er"))
857 pubdir->job = TLEN_PUBDIR_JOB_MENEDZER;
858 else if(!strcmp(s,"specjalista"))
859 pubdir->job = TLEN_PUBDIR_JOB_SPEC_WOL;
860 else if(!strcmp(s,"urz�dnik"))
861 pubdir->job = TLEN_PUBDIR_JOB_UUA;
862 else if(!strcmp(s,"emeryt,rencista"))
863 pubdir->job = TLEN_PUBDIR_JOB_EMERYT;
864 else if(!strcmp(s,"gospodyni"))
865 pubdir->job = TLEN_PUBDIR_JOB_GOSPODYNI;
866 else if(!strcmp(s,"nauczyciel"))
867 pubdir->job = TLEN_PUBDIR_JOB_NAUCZYCIEL;
868 else if(!strcmp(s,"lekarz"))
869 pubdir->job = TLEN_PUBDIR_JOB_LEKARZ;
870 else if(!strcmp(s,"inny"))
871 pubdir->job = TLEN_PUBDIR_JOB_INNY;
872 else if(!strcmp(s,"bezrobotny"))
873 pubdir->job = TLEN_PUBDIR_JOB_BEZROBOTNY;
874 g_free(s);
875
876 widget = lookup_widget(window_search,"entry_voice");
877 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
878 if(!strcmp(s,"nie"))
879 pubdir->voice = TLEN_PUBDIR_VOICE_DISABLED;
880 else
881 pubdir->voice = TLEN_PUBDIR_VOICE_ENABLED;
882 g_free(s);
883
884 widget = lookup_widget(window_search,"entry_plans");
885 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
886 if(!strcmp(s,""))
887 pubdir->plans = TLEN_PUBDIR_WANT_NONE;
888 else if(!strcmp(s,"kino"))
889 pubdir->plans = TLEN_PUBDIR_WANT_CINEMA;
890 g_free(s);
891
892 widget = lookup_widget(window_search,"entry_id");
893 s = fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
894 if(strlen(s)>0)
895 pubdir->id = s;
896
897 tlen_search(session,pubdir);
898 tlen_free_pubdir(pubdir);
899 widget = lookup_widget(window_search,"thobber");
900 gtk_widget_show(widget);
901 }
902
903
904 void
on_button_search_add_clicked(GtkButton * button,gpointer user_data)905 on_button_search_add_clicked (GtkButton *button,
906 gpointer user_data)
907 {
908 GtkTreeSelection *selection;
909 GtkTreeView *treeview;
910 GtkTreeModel *model;
911 GtkTreeIter iter;
912 gchar *jid;
913
914 treeview = (GtkTreeView*)lookup_widget(window_search,"treeview");
915 selection = gtk_tree_view_get_selection(treeview);
916 if (! gtk_tree_selection_get_selected (selection, NULL, &iter))
917 return;
918 model = gtk_tree_view_get_model (treeview);
919 gtk_tree_model_get (model, &iter, SEARCH_TC_ID, &jid, -1);
920 if(get_user(jid))
921 return;
922 contact_add(jid, USER_TLEN);
923 }
924
925
926 void
on_button_search_clear_clicked(GtkButton * button,gpointer user_data)927 on_button_search_clear_clicked (GtkButton *button,
928 gpointer user_data)
929 {
930 pubdir_list_clear();
931 search_update();//FIXME OK ?
932
933 }
934
935
936 void
on_button_search_close_clicked(GtkButton * button,gpointer user_data)937 on_button_search_close_clicked (GtkButton *button,
938 gpointer user_data)
939 {
940 window_search_close();
941
942 }
943
944
945 gboolean
on_window_archive_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)946 on_window_archive_delete_event (GtkWidget *widget,
947 GdkEvent *event,
948 gpointer user_data)
949 {
950 window_archive_cancel();
951
952 return TRUE;
953 }
954
955
956 void
on_radiobutton_archive_date_toggled(GtkToggleButton * togglebutton,gpointer user_data)957 on_radiobutton_archive_date_toggled (GtkToggleButton *togglebutton,
958 gpointer user_data)
959 {
960 if(gtk_toggle_button_get_active(togglebutton))
961 treeview_sent_sort_by_name();
962
963 }
964
965
966 void
on_radiobutton_archive_receiver_toggled(GtkToggleButton * togglebutton,gpointer user_data)967 on_radiobutton_archive_receiver_toggled
968 (GtkToggleButton *togglebutton,
969 gpointer user_data)
970 {
971 if(gtk_toggle_button_get_active(togglebutton))
972 {
973 mesgsent_sort_by_date();
974 treeview_sent_sort_by_date();
975 }
976 }
977
978
979 void
on_button_archive_search_clicked(GtkButton * button,gpointer user_data)980 on_button_archive_search_clicked (GtkButton *button,
981 gpointer user_data)
982 {
983
984 }
985
986
987 void
on_radiobutton_archive_date2_toggled(GtkToggleButton * togglebutton,gpointer user_data)988 on_radiobutton_archive_date2_toggled (GtkToggleButton *togglebutton,
989 gpointer user_data)
990 {
991 if(gtk_toggle_button_get_active(togglebutton))
992 treeview_received_sort_by_name();
993
994 }
995
996
997 void
on_radiobutton_archive_sender_toggled(GtkToggleButton * togglebutton,gpointer user_data)998 on_radiobutton_archive_sender_toggled (GtkToggleButton *togglebutton,
999 gpointer user_data)
1000 {
1001 if(gtk_toggle_button_get_active(togglebutton))
1002 {
1003 mesgrecv_sort_by_date();
1004 treeview_received_sort_by_date();
1005 }
1006 }
1007
1008
1009 void
on_button_archive_search2_clicked(GtkButton * button,gpointer user_data)1010 on_button_archive_search2_clicked (GtkButton *button,
1011 gpointer user_data)
1012 {
1013
1014 }
1015
1016
1017 void
on_button_archive_open_clicked(GtkButton * button,gpointer user_data)1018 on_button_archive_open_clicked (GtkButton *button,
1019 gpointer user_data)
1020 {
1021 GtkTreeView *treeview;
1022 GtkTreeSelection *selection;
1023 GtkTreeModel *model;
1024 GtkTreeIter iter;
1025 gchar *filename;
1026
1027 treeview = (GtkTreeView *) lookup_widget(window_archive, "treeview_archives");
1028 selection = gtk_tree_view_get_selection(treeview);
1029 if (gtk_tree_selection_get_selected (selection, &model, &iter))
1030 {
1031 gtk_tree_model_get (model, &iter,
1032 2, &filename,
1033 -1);
1034 archive_read_chat(filename);
1035 treeview_chat_refresh();
1036 }
1037 }
1038
1039
1040 void
on_button_archive_close_clicked(GtkButton * button,gpointer user_data)1041 on_button_archive_close_clicked (GtkButton *button,
1042 gpointer user_data)
1043 {
1044 window_archive_save();
1045 window_archive_cancel();
1046 }
1047
1048
1049 gboolean
on_window_chat_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1050 on_window_chat_delete_event (GtkWidget *widget,
1051 GdkEvent *event,
1052 gpointer user_data)
1053 {
1054 // chat_remove(get_talk_by_window(widget));
1055 gtk_widget_hide(widget);
1056 chat_list_flush();
1057 return TRUE;
1058 }
1059
1060
1061 void
on_button_chat_send_clicked(GtkWidget * window)1062 on_button_chat_send_clicked (GtkWidget *window)
1063 {
1064 chat_send(get_talk_by_window(window));
1065 }
1066
1067
1068 void
on_button_chat_close_clicked(GtkWidget * window)1069 on_button_chat_close_clicked (GtkWidget *window)
1070 {
1071 // chat_remove(get_talk_by_window(window));
1072 gtk_widget_hide(window);
1073 chat_list_flush();
1074 }
1075
1076
1077 void
on_togglebutton_chat_toggled(GtkToggleButton * togglebutton,gpointer user_data)1078 on_togglebutton_chat_toggled (GtkToggleButton *togglebutton,
1079 gpointer user_data)
1080 {
1081
1082 }
1083
1084
1085 gboolean
on_window_prefs_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1086 on_window_prefs_delete_event (GtkWidget *widget,
1087 GdkEvent *event,
1088 gpointer user_data)
1089 {
1090 gtk_widget_destroy(window_prefs);
1091 window_prefs = NULL;
1092 if(fileselection)
1093 gtk_widget_destroy(fileselection);
1094 fileselection = NULL;
1095
1096 return TRUE;
1097 }
1098
1099
1100 void
on_button_prefs_colornick_clicked(GtkWidget * entry)1101 on_button_prefs_colornick_clicked (GtkWidget *entry)
1102 {
1103 colorselection_getcolor(entry);
1104
1105 }
1106
1107
1108 void
on_button_prefs_beeponm_clicked(GtkButton * button,gpointer user_data)1109 on_button_prefs_beeponm_clicked (GtkButton *button,
1110 gpointer user_data)
1111 {
1112 fileselection_getfile(GTK_WIDGET(button));
1113
1114 }
1115
1116
1117 void
on_button_prefs_cancel_clicked(GtkButton * button,gpointer user_data)1118 on_button_prefs_cancel_clicked (GtkButton *button,
1119 gpointer user_data)
1120 {
1121 gtk_widget_destroy(window_prefs);
1122 window_prefs = NULL;
1123 if(fileselection)
1124 gtk_widget_destroy(fileselection);
1125 fileselection = NULL;
1126
1127 }
1128
1129
1130 void
on_button_prefs_apply_clicked(GtkButton * button,gpointer user_data)1131 on_button_prefs_apply_clicked (GtkButton *button,
1132 gpointer user_data)
1133 {
1134 window_prefs_apply();
1135
1136 }
1137
1138
1139 void
on_button_prefs_ok_clicked(GtkButton * button,gpointer user_data)1140 on_button_prefs_ok_clicked (GtkButton *button,
1141 gpointer user_data)
1142 {
1143 window_prefs_apply();
1144 gtk_widget_destroy(window_prefs);
1145 window_prefs = NULL;
1146 if(fileselection)
1147 gtk_widget_destroy(fileselection);
1148 fileselection = NULL;
1149 }
1150
1151
1152 gboolean
on_window_card_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1153 on_window_card_delete_event (GtkWidget *widget,
1154 GdkEvent *event,
1155 gpointer user_data)
1156 {
1157 gtk_widget_destroy(window_card);
1158 window_card = NULL;
1159
1160 return TRUE;
1161 }
1162
1163
1164 void
on_button_card_import_clicked(GtkButton * button,gpointer user_data)1165 on_button_card_import_clicked (GtkButton *button,
1166 gpointer user_data)
1167 {
1168 window_card_import();
1169
1170 }
1171
1172
1173 void
on_button_card_export_clicked(GtkButton * button,gpointer user_data)1174 on_button_card_export_clicked (GtkButton *button,
1175 gpointer user_data)
1176 {
1177 window_card_export();
1178
1179 }
1180
1181
1182 gboolean
on_window_contacts_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1183 on_window_contacts_delete_event (GtkWidget *widget,
1184 GdkEvent *event,
1185 gpointer user_data)
1186 {
1187 gtk_widget_destroy(window_contacts);
1188 window_contacts = NULL;
1189 return TRUE;
1190 }
1191
1192
1193 void
on_button_contacts_save_clicked(GtkButton * button,gpointer user_data)1194 on_button_contacts_save_clicked (GtkButton *button,
1195 gpointer user_data)
1196 {
1197
1198 }
1199
1200
1201 void
on_button_fileselection_ok_clicked(GtkWidget * widget)1202 on_button_fileselection_ok_clicked (GtkWidget *widget)
1203 {
1204 gchar *s;
1205 gsize r, w;
1206 GError *error;
1207 GtkEntry *entry = GTK_ENTRY(widget);
1208
1209 s = (gchar *)
1210 gtk_file_selection_get_filename(GTK_FILE_SELECTION(fileselection));
1211 if(s[strlen(s)-1] == '/')
1212 return;
1213 s = g_filename_to_utf8(s, -1, &r, &w, &error);
1214 gtk_entry_set_text(GTK_ENTRY(entry), s);
1215 g_free(s);
1216 gtk_widget_hide(fileselection);
1217 }
1218
1219
1220 void
on_button_colorselection_ok_clicked(GtkEntry * entry)1221 on_button_colorselection_ok_clicked (GtkEntry *entry)
1222 {
1223 GtkColorSelection *csel;
1224 GdkColor gc;
1225 gchar *str;
1226
1227 csel=(GtkColorSelection*)lookup_widget(colorselection, "color_selection1");
1228 gtk_color_selection_get_current_color(csel, &gc);
1229 str = gtk_color_selection_palette_to_string(&gc, 1);
1230 gtk_entry_set_text(GTK_ENTRY(entry), str);
1231 g_free(str);
1232 gtk_widget_destroy(colorselection);
1233
1234 }
1235
1236
1237
1238 void
on_button_authorize_cancel_clicked(GtkWidget * window)1239 on_button_authorize_cancel_clicked (GtkWidget *window)
1240 {
1241 GtkWidget *label;
1242 gchar *jid;
1243
1244 label = lookup_widget (window,"label_jid");
1245 gtk_label_get(GTK_LABEL(label), &jid);
1246 on_window_authorize_delete_event(window,NULL, jid);
1247
1248
1249 }
1250
1251
1252 void
on_button_authorize_ok_clicked(GtkWidget * window3)1253 on_button_authorize_ok_clicked (GtkWidget *window3)
1254 {
1255 GtkWidget *label;
1256 gchar *jid;
1257 struct user *u;
1258 gint type;
1259
1260 cant_stop=FALSE;
1261 label = lookup_widget (window3,"label_jid");
1262 gtk_label_get(GTK_LABEL(label), &jid);
1263 u=get_user(jid);
1264 type = get_type(jid);
1265 if(strcmp(u->subscription,"none") &&
1266 strcmp(u->subscription,"from"))
1267 switch(type)
1268 {
1269 case USER_TLEN:
1270 tlen_accept_subscribe(session,jid);
1271 break;
1272 case USER_JABBER:
1273 case USER_WP:
1274 case USER_GG:
1275 case USER_AGENT:
1276 jabber_subscribe_accept(jid);
1277 break;
1278 }
1279 if (!strcmp(user_subscription(jid),"from"))
1280 contact_add(jid, type);
1281 else
1282 refresh_gui();
1283 gtk_widget_destroy(window3);
1284
1285 }
1286
1287
1288 void
on_button_profile_cancel_clicked(GtkButton * button,gpointer user_data)1289 on_button_profile_cancel_clicked (GtkButton *button,
1290 gpointer user_data)
1291 {
1292 gtk_widget_destroy(window_profile);
1293 my_create_window_profiles();
1294 gtk_widget_show(window_profiles);
1295
1296 }
1297
1298
1299 gboolean
on_window_chat_enter_notify_event(GtkWidget * widget,GdkEventCrossing * event,gpointer user_data)1300 on_window_chat_enter_notify_event (GtkWidget *widget,
1301 GdkEventCrossing *event,
1302 gpointer user_data)
1303 {
1304 chat_set_title(get_talk_by_window(widget), 0);
1305 return TRUE;
1306 }
1307
1308
1309 gboolean
on_textview_chat_bottom_key_press_event(GtkWidget * widget,GdkEventKey * event,gpointer user_data)1310 on_textview_chat_bottom_key_press_event(GtkWidget *widget,
1311 GdkEventKey *event,
1312 gpointer user_data)
1313 //gboolean
1314 //on_textview_chat_bottom_key_press_event(
1315 // GdkEventKey *event,
1316 // gpointer user_data)
1317 {
1318 GtkWidget *togglebutton;
1319
1320 if(event->keyval == GDK_Return)
1321 {
1322 togglebutton=lookup_widget(GTK_WIDGET(user_data),"togglebutton_chat");
1323 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(togglebutton)))
1324 {
1325 chat_send(get_talk_by_window(GTK_WIDGET(widget)));
1326 return TRUE;
1327 }
1328 return FALSE;
1329 }
1330 return FALSE;
1331 }
1332
1333
1334 void
on_button_message_send_ok_clicked(GtkButton * button,gpointer user_data)1335 on_button_message_send_ok_clicked (GtkButton *button,
1336 gpointer user_data)
1337 {
1338 GtkWidget *window = GTK_WIDGET(button), *entry, *textview, *combo;
1339 gchar *id, *message, *s;
1340 gint type;
1341
1342 entry = lookup_widget(window, "entry_id");
1343 id = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
1344 if(strlen(id)<=0)
1345 {
1346 info("Musisz poda� identyfikator odbiorcy");
1347 return;
1348 }
1349 textview = lookup_widget(window, "textview");
1350 message = (gchar*)textview_get_text(textview);
1351 if(strlen(message)<=0)
1352 {
1353 info("Pusta wiadomo��");
1354 return;
1355 }
1356 message = fromutf(message);
1357 if(!message)
1358 {
1359 info("Wprowadzi�e� niepoprawne znaki!");
1360 return;
1361 }
1362 combo = lookup_widget(window, "combo_entry");
1363 s = (gchar *)gtk_entry_get_text(GTK_ENTRY(combo));
1364 // if(!online)
1365 // {
1366 // message_queue(id, message, type);
1367 // g_free(message);
1368 // gtk_widget_destroy(window);
1369 // return;//FIXME
1370 // }
1371 switch(get_type(id))
1372 {
1373 case USER_TLEN:
1374 if(!strcmp(s, "Message"))
1375 type = TLEN_MESSAGE;
1376 else
1377 type = TLEN_CHAT;
1378 tlen_sendmsg(session, id, message, type);
1379 break;
1380 case USER_JABBER:
1381 case USER_WP:
1382 if(!strcmp(s, "Message"))
1383 type = JABBY_MESSAGE_NORMAL;
1384 else
1385 type = JABBY_MESSAGE_CHAT;
1386 jabber_message(id, message, type);
1387 break;
1388 case USER_AGENT:
1389 case USER_GG:
1390 jabber_gg_message(id, message);
1391 break;
1392 }
1393 save_message(id, message, MESSAGE_FROM);
1394 g_free(message);
1395 gtk_widget_destroy(window);
1396
1397 }
1398
1399
1400 void
on_button_contacts_cancel_clicked(GtkButton * button,gpointer user_data)1401 on_button_contacts_cancel_clicked (GtkButton *button,
1402 gpointer user_data)
1403 {
1404 gtk_widget_destroy(window_contacts);
1405 window_contacts = NULL;
1406
1407 }
1408
1409
1410 void
on_button_contacts_ok_clicked(GtkButton * button,gpointer user_data)1411 on_button_contacts_ok_clicked (GtkButton *button,
1412 gpointer user_data)
1413 {
1414 gtk_widget_destroy(window_contacts);
1415 window_contacts = NULL;
1416
1417 }
1418
1419
1420 gboolean
on_window_authorize_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1421 on_window_authorize_delete_event (GtkWidget *widget,
1422 GdkEvent *event,
1423 gpointer user_data)
1424 {
1425 gchar *jid = (gchar*) user_data;
1426 cant_stop=FALSE;
1427
1428 switch(get_type(jid))
1429 {
1430 case USER_TLEN:
1431 tlen_removecontact(session,jid);
1432 tlen_accept_unsubscribe(session,jid);
1433 break;
1434 case USER_JABBER:
1435 case USER_WP:
1436 case USER_AGENT:
1437 jabber_contact_delete(get_user(jid));
1438 jabber_subscribe_deny(jid);
1439 break;
1440 default:
1441 break;
1442 }
1443 if(get_user(jid))
1444 {
1445 del_user(jid);
1446 refresh_gui();
1447 }
1448 gtk_widget_destroy(widget);
1449
1450
1451 return TRUE;
1452 }
1453
1454
1455 gboolean
on_window_unauth_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1456 on_window_unauth_delete_event (GtkWidget *widget,
1457 GdkEvent *event,
1458 gpointer user_data)
1459 {
1460 window_unauth_delete(widget);
1461
1462 return TRUE;
1463 }
1464
1465
1466 void
on_button_unauth_ok_clicked(GtkButton * button,gpointer user_data)1467 on_button_unauth_ok_clicked (GtkButton *button,
1468 gpointer user_data)
1469 {
1470 window_unauth_delete((GtkWidget*) user_data);
1471
1472 }
1473
1474
1475 gboolean
on_window_desc_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1476 on_window_desc_delete_event (GtkWidget *widget,
1477 GdkEvent *event,
1478 gpointer user_data)
1479 {
1480
1481 gtk_widget_destroy(window_desc);
1482 window_desc = NULL;
1483 return TRUE;
1484 }
1485
1486
1487 void
on_button_desc_cancel_clicked(GtkButton * button,gpointer user_data)1488 on_button_desc_cancel_clicked (GtkButton *button,
1489 gpointer user_data)
1490 {
1491 gtk_widget_destroy(window_desc);
1492 window_desc = NULL;
1493
1494 }
1495
1496
1497 void
on_button_desc_ok_clicked(GtkButton * button1,gpointer user_data)1498 on_button_desc_ok_clicked (GtkButton *button1,
1499 gpointer user_data)
1500 {
1501 GtkWidget *entry, *button;
1502 gchar *s;
1503
1504 entry = lookup_widget(window_desc, "entry_desc");
1505 button = lookup_widget(window_desc, "radiobutton_online");
1506 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1507 status = TLEN_STATUS_AVAILABLE;
1508 else
1509 {
1510 button = lookup_widget(window_desc, "radiobutton_chatty");
1511 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1512 status = TLEN_STATUS_CHATTY;
1513 else
1514 {
1515 button = lookup_widget(window_desc, "radiobutton_dnd");
1516 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1517 status = TLEN_STATUS_DND;
1518 else
1519 {
1520 button = lookup_widget(window_desc, "radiobutton_away");
1521 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1522 status = TLEN_STATUS_AWAY;
1523 else
1524 {
1525 button = lookup_widget(window_desc, "radiobutton_ext_away");
1526 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1527 status = TLEN_STATUS_EXT_AWAY;
1528 else
1529 {
1530 button = lookup_widget(window_desc, "radiobutton_invisible");
1531 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1532 status = TLEN_STATUS_INVISIBLE;
1533 else
1534 {
1535 button = lookup_widget(window_desc, "radiobutton_offline");
1536 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1537 {
1538 if(cant_stop)
1539 return;
1540 work_offline();
1541 return;
1542 }
1543 }
1544 }
1545 }
1546 }
1547 }
1548 }
1549 s = fromutf(gtk_entry_get_text(GTK_ENTRY(entry)));
1550 if(!s)
1551 return;
1552 if(desc)
1553 g_free(desc);
1554 if(strcmp(s, ""))
1555 {
1556 desc = s;
1557 desc_list_add(s);
1558 }
1559 else
1560 {
1561 g_free(s);
1562 desc = NULL;
1563 }
1564 if(status == TLEN_STATUS_AVAILABLE)
1565 autoaway = TRUE;
1566 else
1567 autoaway = FALSE;
1568 set_status(status);
1569 gtk_widget_destroy(window_desc);
1570 window_desc = NULL;
1571 }
1572
1573
1574
1575
1576 void
on_button_gg_readconf_clicked(GtkButton * button,gpointer user_data)1577 on_button_gg_readconf_clicked (GtkButton *button,
1578 gpointer user_data)
1579 {
1580 window_profile_read_gg();
1581
1582 }
1583
1584
1585 gboolean
on_window_gg_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1586 on_window_gg_delete_event (GtkWidget *widget,
1587 GdkEvent *event,
1588 gpointer user_data)
1589 {
1590 gtk_widget_destroy(window_gg);
1591 window_gg = NULL;
1592
1593 return FALSE;
1594 }
1595
1596
1597
1598
1599 void
on_button_gg_unregister_clicked(GtkButton * button,gpointer user_data)1600 on_button_gg_unregister_clicked (GtkButton *button,
1601 gpointer user_data)
1602 {
1603 jabber_unregister_gg();
1604
1605 }
1606
1607
1608 void
on_button_gg_register_clicked(GtkButton * button,gpointer user_data)1609 on_button_gg_register_clicked (GtkButton *button,
1610 gpointer user_data)
1611 {
1612 window_gg_register();
1613
1614 }
1615
1616
1617 void
on_button_gg_apply_clicked(GtkButton * button,gpointer user_data)1618 on_button_gg_apply_clicked (GtkButton *button,
1619 gpointer user_data)
1620 {
1621 window_gg_apply();
1622
1623 }
1624
1625
1626 void
on_button_gg_talk_clicked(GtkButton * button,gpointer user_data)1627 on_button_gg_talk_clicked (GtkButton *button,
1628 gpointer user_data)
1629 {
1630 window_gg_talk();
1631
1632 }
1633
1634
1635 void
on_button_status_gg_clicked(GtkButton * button,gpointer user_data)1636 on_button_status_gg_clicked (GtkButton *button,
1637 gpointer user_data)
1638 {
1639
1640 }
1641
1642
1643 void
on_button_status_jabber_clicked(GtkButton * button,gpointer user_data)1644 on_button_status_jabber_clicked (GtkButton *button,
1645 gpointer user_data)
1646 {
1647
1648 }
1649
1650
1651
1652
1653 void
on_button_sms_register_clicked(GtkButton * button,gpointer user_data)1654 on_button_sms_register_clicked (GtkButton *button,
1655 gpointer user_data)
1656 {
1657 window_gg_register_sms();
1658
1659 }
1660
1661
1662 void
on_button_sms_contacts_clicked(GtkButton * button,gpointer user_data)1663 on_button_sms_contacts_clicked (GtkButton *button,
1664 gpointer user_data)
1665 {
1666
1667 }
1668
1669
1670 void
on_button_sms_cancel_clicked(GtkButton * button,gpointer user_data)1671 on_button_sms_cancel_clicked (GtkButton *button,
1672 gpointer user_data)
1673 {
1674 gtk_widget_destroy(window_sms);
1675 window_sms=NULL;
1676
1677 }
1678
1679
1680 void
on_button_sms_ok_clicked(GtkButton * button,gpointer user_data)1681 on_button_sms_ok_clicked (GtkButton *button,
1682 gpointer user_data)
1683 {
1684 window_sms_send();
1685
1686 }
1687
1688
1689 gboolean
on_window_sms_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1690 on_window_sms_delete_event (GtkWidget *widget,
1691 GdkEvent *event,
1692 gpointer user_data)
1693 {
1694 gtk_widget_destroy(window_sms);
1695 window_sms=NULL;
1696
1697 return FALSE;
1698 }
1699
1700
1701 gboolean
on_window1_destroy_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1702 on_window1_destroy_event (GtkWidget *widget,
1703 GdkEvent *event,
1704 gpointer user_data)
1705 {
1706 wyjscie();
1707
1708 return TRUE;
1709 }
1710
1711
1712 void
on_button_chat_pic_clicked(GtkButton * button,gpointer user_data)1713 on_button_chat_pic_clicked (GtkButton *button,
1714 gpointer user_data)
1715 {
1716 default_chat_window = GTK_WIDGET(user_data);
1717
1718 if(!window_pic)
1719 {
1720 window_pic = create_window_pic(GTK_WIDGET(user_data));
1721 gtk_widget_show(window_pic);
1722 }
1723 else
1724 gtk_widget_show(window_pic);
1725
1726 }
1727
1728
1729 void
on_button_archive_delete_clicked(GtkButton * button,gpointer user_data)1730 on_button_archive_delete_clicked (GtkButton *button,
1731 gpointer user_data)
1732 {
1733 return;//FIXME
1734 window_archive_delete();
1735
1736 }
1737
1738
1739 void
on_button_archive_cancel_clicked(GtkButton * button,gpointer user_data)1740 on_button_archive_cancel_clicked (GtkButton *button,
1741 gpointer user_data)
1742 {
1743 window_archive_cancel();
1744
1745 }
1746
1747
1748 void
on_button_chat_clear_clicked(GtkButton * button,gpointer window)1749 on_button_chat_clear_clicked (GtkButton *button,
1750 gpointer window)
1751 {
1752 GtkWidget *textview;
1753
1754 textview = lookup_widget(GTK_WIDGET(window), "textview_top");
1755 textview_clear(textview);
1756
1757 }
1758
1759
1760 void
on_emots_button1_clicked(GtkButton * button,gpointer user_data)1761 on_emots_button1_clicked (GtkButton *button,
1762 gpointer user_data)
1763 {
1764 GtkWidget *textview;
1765
1766 textview = lookup_widget(default_chat_window, "textview_bottom");
1767 textview_append(textview, (gchar*) user_data, 0, NULL, NULL);
1768 gtk_widget_hide(window_pic);
1769 }
1770
1771 gboolean
on_window_pic_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1772 on_window_pic_delete_event (GtkWidget *widget,
1773 GdkEvent *event,
1774 gpointer user_data)
1775 {
1776 gtk_widget_hide(window_pic);
1777 return TRUE;
1778 }
1779