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