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 
13 
14 #include "main.h"
15 #include "interface.h"
16 #include "conffile.h"
17 #include "support.h"
18 #include "utils.h"
19 #include "users.h"
20 #include "search.h"
21 #include "messages.h"
22 #include "menu.h"
23 #include "windows.h"
24 #include "archive.h"
25 #include "callbacks.h"
26 #include "lista.h"
27 #include "chat.h"
28 #include "gg.h"
29 #include "jabber.h"
30 #include "jabby.h"
31 #include "xmms-info.h"
32 #include <gdk/gdkkeysyms.h>
33 
34 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
35   g_object_set_data (G_OBJECT (component), name, widget)
36 
37 GtkTooltips *status_tooltips; //tooltips list for status icons
38 
39 static gchar *search_tc_columns[SEARCH_TC_COLUMNS] =
40 {
41   "Status", "ID", "Wiek", "P�e�", "Miasto", "Imi�", "Nazwisko", "Nick", "Email",
42   "Poszukuje", "Szko�a", "Zaw�d", "G�osowe", "Plany"
43 };//tytuly kolumn w treeview window_search
44 
45 
46 
window_gg_talk()47 void window_gg_talk()
48 {
49   if(!jabber_registered_to_gg())
50   {
51     info("Musisz najpierw zarejestrowa� sw�j numer.");
52     return;
53   }
54   if(!get_talk(profile->ggserver))
55   {
56     my_create_window_chat(profile->ggserver);
57   }
58 }
59 
window_gg_apply()60 void window_gg_apply()
61 {
62   GtkWidget *widget;
63 //  gboolean fo, iv;
64 
65   if(!jabber_registered_to_gg())
66   {
67     info("Musisz najpierw zarejestrowa� sw�j numer.");
68     return;
69   }
70   widget = lookup_widget(window_gg, "checkbutton_fo");
71   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
72     jabber_gg_agent("fo on");
73   else
74     jabber_gg_agent("fo off");
75   widget = lookup_widget(window_gg, "checkbutton_iv");
76   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
77     jabber_gg_agent("iv on");
78   else
79     jabber_gg_agent("iv off");
80 }
81 
window_gg_register_sms()82 void window_gg_register_sms()
83 {
84   GtkWidget *widget;
85   gchar *number, *password;
86 
87   widget = lookup_widget(window_gg, "entry_sms_id");
88   number = (gchar*)gtk_entry_get_text(GTK_ENTRY(widget));
89   if(!strlen(number))
90   {
91     info("Musisz poda� sw�j ID bramki w ustawieniach profilu.");
92     return;
93   }
94   widget = lookup_widget(window_gg, "entry_sms_password");
95   password = (gchar*)gtk_entry_get_text(GTK_ENTRY(widget));
96   if(!strlen(password))
97   {
98     info("Nie poda�e� has�a.");
99     return;
100   }
101 //  if(jabber_registered_to_sms())
102 //  {
103 //    info("Wyrejestruj najpierw stary numer.");
104 //    return;
105 //  }
106   if(!profile->sms)
107   {
108     info("Serwer jabbera nie posiada bramki SMS.");
109     return;
110   }
111   jabber_register_sms();
112 }
113 
window_gg_register()114 void window_gg_register()
115 {
116   GtkWidget *widget;
117   gchar *number, *password;
118 
119   widget = lookup_widget(window_gg, "entry_username");
120   number = (gchar*)gtk_entry_get_text(GTK_ENTRY(widget));
121   if(!strlen(number))
122   {
123     info("Musisz poda� sw�j numer w ustawieniach profilu.");
124     return;
125   }
126   widget = lookup_widget(window_gg, "entry_password");
127   password = (gchar*)gtk_entry_get_text(GTK_ENTRY(widget));
128   if(!strlen(password))
129   {
130     info("Nie poda�e� has�a.");
131     return;
132   }
133   if(!(profile->ggserver))
134   {
135     info("Serwer jabbera nie posiada bramki GG.");
136     return;
137   }
138   g_free(profile->ggnumber);
139   profile->ggnumber = g_strdup(number);
140   g_free(profile->ggpassword);
141   profile->ggpassword = g_strdup(password);
142   if(jabber_registered_to_gg())
143   {
144     info("Wyrejestruj najpierw stary numer.");
145     return;
146   }
147   jabber_register_gg();
148 }
149 
window_sms_send()150 void window_sms_send()
151 {
152   GtkWidget *widget;
153   gchar *number, *s, *body;
154 
155   widget = lookup_widget(window_sms, "entry_number");
156   s = (gchar*) gtk_entry_get_text(GTK_ENTRY(widget));
157   if(strlen(s)<=3)
158   {
159     info("Wprowad� poprawny numer telefonu.");
160     return;
161   }
162   if(!jabber_logged())
163   {
164     info("Brak po��czenia z jabberem.");
165     return;
166   }
167   if(!jabber_registered_to_sms())
168   {
169     info("Musisz si� najpierw zarejestrowa�, sprawd� ustawienia SMS.");
170     return;
171   }
172   widget = lookup_widget(window_sms, "textview_sms");
173   body = (gchar *)textview_get_text(widget);
174   if(!body)
175   {
176     info("Wiadomo�� jest pusta.");
177     return;
178   }
179   number = g_strdup_printf("%s@%s", s, profile->sms);
180   jabber_message(number, body, JABBY_MESSAGE_CHAT);
181   g_free(number);
182   gtk_widget_destroy(window_sms);
183   window_sms=NULL;
184 }
185 
create_window_pic(GtkWidget * window_chat)186 GtkWidget *create_window_pic(GtkWidget *window_chat)
187 {
188   GtkWidget *window;
189   GtkWidget *button1;
190   GtkWidget *emots_table;
191   gint max_x;
192   gint max_y;
193   gint i, x, y, stri;
194   GtkTooltips *tooltips;
195   gchar *s;
196 
197 
198   tooltips = gtk_tooltips_new ();
199   max_x = 5;
200   max_y = EMOTS_END/max_x;
201 
202 
203   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
204   gtk_window_set_title (GTK_WINDOW (window), "Wstaw obrazek");
205   g_signal_connect ((gpointer) window, "delete_event",
206                     G_CALLBACK (on_window_pic_delete_event),
207                     window);
208   gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
209 
210   emots_table = gtk_table_new(max_x, max_y, FALSE);
211   gtk_widget_show (emots_table);
212   gtk_container_add (GTK_CONTAINER (window), emots_table);
213   gtk_container_set_border_width (GTK_CONTAINER (emots_table), 4);
214   gtk_table_set_row_spacings (GTK_TABLE (emots_table), 2);
215   gtk_table_set_col_spacings (GTK_TABLE (emots_table), 4);
216 
217   x = y = 0;
218   stri = 0;
219   for(i=0; i < EMOTS_END; i++)
220   {
221     button1 = gtk_button_new ();
222     gtk_widget_show (button1);
223     gtk_table_attach (GTK_TABLE (emots_table), button1, x, x+1, y, y+1,
224                       (GtkAttachOptions) (GTK_FILL),
225                       (GtkAttachOptions) (0), 0, 0);
226     GTK_WIDGET_UNSET_FLAGS (button1, GTK_CAN_FOCUS);
227     s = utf(emots_str[stri]);
228     gtk_tooltips_set_tip (tooltips, button1, s, NULL);
229     g_free(s);
230     gtk_button_set_relief (GTK_BUTTON (button1), GTK_RELIEF_NONE);
231     gtk_container_add(GTK_CONTAINER (button1), emots_pics[i]);
232 
233 
234     g_signal_connect ((gpointer) button1, "clicked",
235                       G_CALLBACK (on_emots_button1_clicked),
236                       emots_str[stri]);
237     GLADE_HOOKUP_OBJECT (window, button1, "button1");
238     if(++x >= max_x)
239     {
240       x = 0;
241       y++;
242     }
243     stri++;
244     while(emots_num[stri] == emots_num[stri-1])
245     {
246       stri++;
247     }
248   }
249 
250   /* Store pointers to all widgets, for use by lookup_widget(). */
251 //  GLADE_HOOKUP_OBJECT_NO_REF (window2, window2, "window2");
252   GLADE_HOOKUP_OBJECT (window, emots_table, "emots_table");
253   GLADE_HOOKUP_OBJECT_NO_REF (window, tooltips, "tooltips");
254 
255   return window;
256 }
257 
my_create_window_sms()258 void my_create_window_sms()
259 {
260 //  GtkWidget *widget;
261 
262   window_sms = create_window_sms();
263   gtk_widget_show(window_sms);
264 }
265 
my_create_window_gg()266 void my_create_window_gg()
267 {
268   GtkWidget *widget;
269 
270   window_gg = create_window_gg();
271   if((profile->ggnumber) && (profile->ggpassword))
272   {
273     widget = lookup_widget(window_gg, "entry_username");
274     gtk_entry_set_text(GTK_ENTRY(widget), profile->ggnumber);
275     widget = lookup_widget(window_gg, "entry_password");
276     gtk_entry_set_text(GTK_ENTRY(widget), profile->ggpassword);
277   }
278   if((profile->smsid) && (profile->smspassword))
279   {
280     widget = lookup_widget(window_gg, "entry_sms_id");
281     gtk_entry_set_text(GTK_ENTRY(widget), profile->smsid);
282     widget = lookup_widget(window_gg, "entry_sms_password");
283     gtk_entry_set_text(GTK_ENTRY(widget), profile->smspassword);
284   }
285   gtk_widget_show(window_gg);
286 }
287 
288 
my_create_window_desc()289 void my_create_window_desc()
290 {
291   GtkWidget *combo;
292   GList *l = NULL, *l2;
293 
294   window_desc = create_window_desc();
295   combo = lookup_widget(window_desc, "combo_desc");
296   l2 = desc_list;
297   while(l2)
298   {
299     l = g_list_append(l, utf((gchar*) (l2->data)));
300     l2 = l2->next;
301   }
302   if(!desc)
303     l = g_list_prepend(l, NULL);
304   gtk_combo_set_popdown_strings (GTK_COMBO(combo), l);
305   g_list_foreach(l, frees, NULL);
306   g_list_free(l);
307   gtk_widget_show(window_desc);
308 }
309 
window1_open()310 void window1_open()
311 {
312   my_create_window1();
313   gtk_window_set_icon(GTK_WINDOW(window1),
314             gtk_image_get_pixbuf(GTK_IMAGE(icons[TLEN_STATUS_UNAVAILABLE])));
315   profile = get_profile(pname);
316   //FIXME czytaj jabberid itp
317 //  profiles_list_clear();
318   status=TLEN_STATUS_AVAILABLE;
319   read_preferences();
320   if(!datefg)
321     datefg = g_strdup("#808080");
322   if(!nickfg)
323     nickfg = g_strdup("#FF6600");
324   if(!textfg)
325     textfg = g_strdup("#000000");
326   if(!textbg)
327     textbg = g_strdup("#DCDAD5");
328   if(preferences & PREF_DEBUGON)
329     tlen_setdebug(1);
330   if(status != TLEN_STATUS_UNAVAILABLE)
331     work_online();
332   //    else
333   //      work_offline();
334   status_button_set(TLEN_STATUS_UNAVAILABLE);
335   status_gg_button_set(JABBY_PRESENCE_UNAVAILABLE);
336   status_jabber_button_set(JABBY_PRESENCE_UNAVAILABLE);
337   if((!width) && (!height))
338   {
339     width=150;
340     height=250;
341   }
342   gtk_window_set_default_size(GTK_WINDOW(window1),width,height);
343   if((posx>0) && (posy>0))
344     gtk_window_move(GTK_WINDOW(window1), posx, posy);
345 //    gtk_widget_set_uposition(window1,posx,posy);
346 
347   gtk_widget_show(window1);
348 }
349 
my_create_window1()350 void my_create_window1()
351 {
352   GtkWidget *image, *widget;
353   GtkWidget *menuitem, *button;
354   gchar *s;
355 //  GtkTreeView *treeview;
356 //  GtkTreeModel *model;
357   //menuglowne
358   GtkWidget *tlen1_menu;
359   //menu statusow
360   GtkWidget *menu_status;
361   GtkWidget *wyszukiwanie1;
362   GtkWidget *wyslij_wiadomosc;
363   GtkWidget *wyslij_sms;
364   GtkWidget *wizytowka;
365   GtkWidget *kontakty;
366   GtkWidget *image29;
367   GtkWidget *dodaj_kontakt1;
368   GtkWidget *image30;
369   GtkWidget *separator1;
370   GtkWidget *archiwum1;
371   GtkWidget *image31;
372   GtkWidget *ustawienia1;
373   GtkWidget *ustawienia_gg;
374   GtkWidget *image32;
375 #ifndef DISABLE_DOCKLET
376   GtkWidget *menu_show_docklet;
377 #endif
378   GtkWidget *separator2;
379   GtkWidget *o_programie1;
380   GtkWidget *image33;
381   GtkWidget *separator3;
382   GtkWidget *wyloguj_profil1;
383   GtkWidget *image34;
384   GtkWidget *wyj__cie1;
385   GtkWidget *image35;
386   //menuglowne
387   GtkAccelGroup *accel_group;
388 
389 
390   accel_group = gtk_accel_group_new ();
391   window1 = create_window1();
392 
393   menu_status=gtk_menu_new();
394   GLADE_HOOKUP_OBJECT(window1, menu_status, "menu_status");
395 
396   status_tooltips = gtk_tooltips_new(); //init. tooltips list for status icons
397 
398   //menu glowne
399   tlen1_menu = gtk_menu_new ();
400   GLADE_HOOKUP_OBJECT(window1, tlen1_menu, "menu_tlen");
401 
402   s = utf("Wy�_lij wiadomo��...");
403   wyslij_wiadomosc = gtk_image_menu_item_new_with_mnemonic (s);
404   g_free(s);
405   gtk_widget_show (wyslij_wiadomosc);
406   gtk_container_add (GTK_CONTAINER (tlen1_menu), wyslij_wiadomosc);
407   image = create_pixmap (window1, "sendmsg.png");
408   gtk_widget_show (image);
409   GLADE_HOOKUP_OBJECT (window1, image, "sendmsg.png");
410   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(wyslij_wiadomosc), image);
411 
412   s = utf("Wy�lij sms...");
413   wyslij_sms = gtk_image_menu_item_new_with_mnemonic (s);
414   g_free(s);
415   gtk_widget_show (wyslij_sms);
416   gtk_container_add (GTK_CONTAINER (tlen1_menu), wyslij_sms);
417   image = create_pixmap (window1, "sms.png");
418   gtk_widget_show (image);
419   GLADE_HOOKUP_OBJECT (window1, image, "sms.png");
420   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(wyslij_sms), image);
421 
422   s = utf("Mo_ja wizyt�wka...");
423   wizytowka = gtk_image_menu_item_new_with_mnemonic (s);
424   g_free(s);
425   gtk_widget_show (wizytowka);
426   gtk_container_add (GTK_CONTAINER (tlen1_menu), wizytowka);
427   image = create_pixmap (window1, "wizytowka.png");
428   gtk_widget_show (image);
429   GLADE_HOOKUP_OBJECT (window1, image, "wizytowka.png");
430   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(wizytowka), image);
431 
432   s = utf("Ko_ntakty...");
433   kontakty = gtk_image_menu_item_new_with_mnemonic (s);
434   g_free(s);
435   gtk_widget_show (kontakty);
436   gtk_container_add (GTK_CONTAINER (tlen1_menu), kontakty);
437   image = create_pixmap (window1, "book.png");
438   gtk_widget_show (image);
439   GLADE_HOOKUP_OBJECT (window1, image, "book.png");
440   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(kontakty), image);
441 
442   wyszukiwanie1 = gtk_image_menu_item_new_with_mnemonic ("Wy_szukiwanie...");
443   gtk_widget_show (wyszukiwanie1);
444   gtk_container_add (GTK_CONTAINER (tlen1_menu), wyszukiwanie1);
445   gtk_widget_add_accelerator (wyszukiwanie1, "activate", accel_group,
446                               GDK_S, GDK_CONTROL_MASK,
447                               GTK_ACCEL_VISIBLE);
448 
449   image29 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
450   gtk_widget_show (image29);
451   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (wyszukiwanie1), image29);
452 
453   dodaj_kontakt1 = gtk_image_menu_item_new_with_mnemonic ("_Dodaj kontakt...");
454   gtk_widget_show (dodaj_kontakt1);
455   gtk_container_add (GTK_CONTAINER (tlen1_menu), dodaj_kontakt1);
456   gtk_widget_add_accelerator (dodaj_kontakt1, "activate", accel_group,
457                               GDK_A, GDK_CONTROL_MASK,
458                               GTK_ACCEL_VISIBLE);
459 
460   image30 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
461   gtk_widget_show (image30);
462   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (dodaj_kontakt1), image30);
463 
464   separator1 = gtk_menu_item_new ();
465   gtk_widget_show (separator1);
466   gtk_container_add (GTK_CONTAINER (tlen1_menu), separator1);
467   gtk_widget_set_sensitive (separator1, FALSE);
468 
469   archiwum1 = gtk_image_menu_item_new_with_mnemonic ("_Archiwum...");
470   gtk_widget_show (archiwum1);
471   gtk_container_add (GTK_CONTAINER (tlen1_menu), archiwum1);
472   gtk_widget_add_accelerator (archiwum1, "activate", accel_group,
473                               GDK_R, GDK_CONTROL_MASK,
474                               GTK_ACCEL_VISIBLE);
475 
476   image31 = gtk_image_new_from_stock ("gtk-index", GTK_ICON_SIZE_MENU);
477   gtk_widget_show (image31);
478   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (archiwum1), image31);
479 
480   ustawienia1 = gtk_image_menu_item_new_with_mnemonic ("_Ustawienia...");
481   gtk_widget_show (ustawienia1);
482   gtk_container_add (GTK_CONTAINER (tlen1_menu), ustawienia1);
483   gtk_widget_add_accelerator (ustawienia1, "activate", accel_group,
484                               GDK_P, GDK_CONTROL_MASK,
485                               GTK_ACCEL_VISIBLE);
486 
487   ustawienia_gg = gtk_image_menu_item_new_with_mnemonic
488           ("Ustawienia Gadu-Gadu/SMS...");
489   gtk_widget_show (ustawienia_gg);
490   gtk_container_add (GTK_CONTAINER (tlen1_menu), ustawienia_gg);
491   image = create_pixmap (window1, "gg_offline.png");
492   gtk_widget_show (image);
493   GLADE_HOOKUP_OBJECT (window1, image, "gg_offline.png");
494   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(ustawienia_gg), image);
495 
496   image32 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
497   gtk_widget_show (image32);
498   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (ustawienia1), image32);
499 
500 /*
501 #ifndef DISABLE_DOCKLET
502   menu_show_docklet = gtk_image_menu_item_new_with_mnemonic("Pokaz/ukryj docklet.");
503   gtk_widget_show(menu_show_docklet);
504   gtk_container_add(GTK_CONTAINER(tlen1_menu), menu_show_docklet);
505   image = create_pixmap(window1, "online.png");
506   gtk_widget_show(image);
507   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_show_docklet), image);
508   g_signal_connect(G_OBJECT(menu_show_docklet), "activate",
509       G_CALLBACK(on_menu_show_docklet_activate), NULL);
510 #endif
511 */
512   separator2 = gtk_menu_item_new ();
513   gtk_widget_show (separator2);
514   gtk_container_add (GTK_CONTAINER (tlen1_menu), separator2);
515   gtk_widget_set_sensitive (separator2, FALSE);
516 
517   o_programie1 = gtk_image_menu_item_new_with_mnemonic ("_O programie...");
518   gtk_widget_show (o_programie1);
519   gtk_container_add (GTK_CONTAINER (tlen1_menu), o_programie1);
520 
521   image33 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_MENU);
522   gtk_widget_show (image33);
523   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (o_programie1), image33);
524 
525   separator3 = gtk_menu_item_new ();
526   gtk_widget_show (separator3);
527   gtk_container_add (GTK_CONTAINER (tlen1_menu), separator3);
528   gtk_widget_set_sensitive (separator3, FALSE);
529 
530   wyloguj_profil1 = gtk_image_menu_item_new_with_mnemonic ("_Wyloguj profil...");
531   gtk_widget_show (wyloguj_profil1);
532   gtk_container_add (GTK_CONTAINER (tlen1_menu), wyloguj_profil1);
533   gtk_widget_add_accelerator (wyloguj_profil1, "activate", accel_group,
534                               GDK_W, GDK_CONTROL_MASK,
535                               GTK_ACCEL_VISIBLE);
536 
537   image34 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
538   gtk_widget_show (image34);
539   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (wyloguj_profil1), image34);
540 
541   wyj__cie1 = gtk_image_menu_item_new_with_mnemonic ("W_yj�\233cie");
542   gtk_widget_show (wyj__cie1);
543   gtk_container_add (GTK_CONTAINER (tlen1_menu), wyj__cie1);
544   gtk_widget_add_accelerator (wyj__cie1, "activate", accel_group,
545                               GDK_Q, GDK_CONTROL_MASK,
546                               GTK_ACCEL_VISIBLE);
547 
548   image35 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
549   gtk_widget_show (image35);
550   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (wyj__cie1), image35);
551 
552   //ikonki statusow gg i jabbera
553   image = create_pixmap (window1, "gg_online.png");
554   gtk_widget_show (image);
555   GLADE_HOOKUP_OBJECT (window1, image, "gg_online");
556 
557   image = create_pixmap (window1, "gg_offline.png");
558   gtk_widget_show (image);
559   GLADE_HOOKUP_OBJECT (window1, image, "gg_offline");
560 
561   image = create_pixmap (window1, "gg_away.png");
562   gtk_widget_show (image);
563   GLADE_HOOKUP_OBJECT (window1, image, "gg_away");
564 
565   image = create_pixmap (window1, "gg_invisible.png");
566   gtk_widget_show (image);
567   GLADE_HOOKUP_OBJECT (window1, image, "gg_invisible");
568 
569   image = create_pixmap (window1, "j_invisible.png");
570   gtk_widget_show (image);
571   GLADE_HOOKUP_OBJECT (window1, image, "j_invisible");
572 
573   image = create_pixmap (window1, "j_away.png");
574   gtk_widget_show (image);
575   GLADE_HOOKUP_OBJECT (window1, image, "j_away");
576 
577   image = create_pixmap (window1, "j_dnd.png");
578   gtk_widget_show (image);
579   GLADE_HOOKUP_OBJECT (window1, image, "j_dnd");
580 
581   image = create_pixmap (window1, "j_na.png");
582   gtk_widget_show (image);
583   GLADE_HOOKUP_OBJECT (window1, image, "j_na");
584 
585   image = create_pixmap (window1, "j_online.png");
586   gtk_widget_show (image);
587   GLADE_HOOKUP_OBJECT (window1, image, "j_online");
588 
589   image = create_pixmap (window1, "j_offline.png");
590   gtk_widget_show (image);
591   GLADE_HOOKUP_OBJECT (window1, image, "j_offline");
592 
593   image = create_pixmap (window1, "j_chatty.png");
594   gtk_widget_show (image);
595   GLADE_HOOKUP_OBJECT (window1, image, "j_chatty");
596 
597   //menu statusu
598 
599 
600   image = create_pixmap (window1, "online.png");
601   s=utf("_Dost�pny");
602   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
603   g_free(s);
604   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
605   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
606                              G_CALLBACK (menu_status_response),
607                              "1");
608   gtk_widget_show (menuitem);
609   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
610   gtk_widget_show (image);
611   image = create_pixmap (window1, "online.png");
612   gtk_widget_show (image);
613   GLADE_HOOKUP_OBJECT (window1, image, "im_online");
614 
615   image = create_pixmap (window1, "chat.png");
616   s=utf("_Porozmawiajmy");
617   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
618   g_free(s);
619   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
620   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
621                              G_CALLBACK (menu_status_response),
622                              "2");
623   gtk_widget_show (menuitem);
624   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
625   gtk_widget_show (image);
626   image = create_pixmap (window1, "chat.png");
627   gtk_widget_show (image);
628   GLADE_HOOKUP_OBJECT (window1, image, "im_chat");
629 
630   image = create_pixmap (window1, "occupied.png");
631   s=utf("_Jestem zaj�ty");
632   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
633   g_free(s);
634   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
635   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
636                              G_CALLBACK (menu_status_response),
637                              "3");
638   gtk_widget_show (menuitem);
639   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
640   gtk_widget_show (image);
641   image = create_pixmap (window1, "occupied.png");
642   gtk_widget_show (image);
643   GLADE_HOOKUP_OBJECT (window1, image, "im_occupied");
644 
645   image = create_pixmap (window1, "away.png");
646   s=utf("_Zaraz wracam");
647   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
648   g_free(s);
649   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
650   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
651                              G_CALLBACK (menu_status_response),
652                              "4");
653   gtk_widget_show (menuitem);
654   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
655   gtk_widget_show (image);
656   image = create_pixmap (window1, "away.png");
657   gtk_widget_show (image);
658   GLADE_HOOKUP_OBJECT (window1, image, "im_away");
659 
660   image = create_pixmap (window1, "beback.png");
661   s=utf("_Wr�c� p�niej");
662   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
663   g_free(s);
664   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
665   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
666                              G_CALLBACK (menu_status_response),
667                              "5");
668   gtk_widget_show (menuitem);
669   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
670   gtk_widget_show (image);
671   image = create_pixmap (window1, "beback.png");
672   gtk_widget_show (image);
673   GLADE_HOOKUP_OBJECT (window1, image, "im_beback");
674 
675   image = create_pixmap (window1, "invisible.png");
676   s=utf("N_iewidoczny");
677   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
678   g_free(s);
679   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
680   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
681                              G_CALLBACK (menu_status_response),
682                              "6");
683   gtk_widget_show (menuitem);
684   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
685   gtk_widget_show (image);
686   image = create_pixmap (window1, "invisible.png");
687   gtk_widget_show (image);
688   GLADE_HOOKUP_OBJECT (window1, image, "im_invisible");
689 
690   image = create_pixmap (window1, "offline.png");
691   s=utf("_Niedost�pny");
692   menuitem=gtk_image_menu_item_new_with_mnemonic(s);
693   g_free(s);
694   gtk_menu_shell_append (GTK_MENU_SHELL (menu_status),menuitem);
695   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
696                              G_CALLBACK (menu_status_response),
697                              "7");
698   gtk_widget_show (menuitem);
699   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
700   gtk_widget_show (image);
701   image = create_pixmap (window1, "offline.png");
702   gtk_widget_show (image);
703   GLADE_HOOKUP_OBJECT (window1, image, "im_offline");
704 
705   menuitem = gtk_menu_item_new ();
706   gtk_widget_show (menuitem);
707   gtk_container_add (GTK_CONTAINER (menu_status), menuitem);
708   gtk_widget_set_sensitive (menuitem, FALSE);
709   s=utf("W�asny opis...");
710   menuitem = gtk_image_menu_item_new_with_label (s);
711   g_free(s);
712   gtk_widget_show (menuitem);
713   gtk_container_add (GTK_CONTAINER (menu_status), menuitem);
714   g_signal_connect_swapped (G_OBJECT (menuitem), "activate",
715                              G_CALLBACK (menu_status_response),
716                              "8");
717   image = create_pixmap (window1, "info.png");
718   gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),image);
719   gtk_widget_show (image);
720 
721   status_button_set(TLEN_STATUS_AVAILABLE);
722   button=lookup_widget(window1, "button_status");
723   g_signal_connect_swapped (G_OBJECT (button), "event",
724                             G_CALLBACK (menu_show),
725                             menu_status);
726   button=lookup_widget(window1, "button_tlenpl");
727   g_signal_connect_swapped (G_OBJECT (button), "event",
728                             G_CALLBACK (menu_show),
729                             tlen1_menu);
730 //  button=lookup_widget(window1, "button1");
731 //  g_signal_connect_swapped (G_OBJECT (button), "clicked",
732 //                            G_CALLBACK (my_create_dialog13),
733 //                            NULL);
734   g_signal_connect (G_OBJECT (wyszukiwanie1), "activate",
735                       G_CALLBACK (on_wyszukiwanie1_activate),
736                       NULL);
737   g_signal_connect (G_OBJECT (wyslij_wiadomosc), "activate",
738                       G_CALLBACK (on_wyslij_wiadomosc_activate),
739                       NULL);
740   g_signal_connect (G_OBJECT (wyslij_sms), "activate",
741                     G_CALLBACK (on_wyslij_sms_activate),
742                     NULL);
743   g_signal_connect (G_OBJECT (wizytowka), "activate",
744                       G_CALLBACK (on_wizytowka_activate),
745                       NULL);
746   g_signal_connect (G_OBJECT (kontakty), "activate",
747                       G_CALLBACK (on_kontakty_activate),
748                       NULL);
749   g_signal_connect (G_OBJECT (dodaj_kontakt1), "activate",
750                       G_CALLBACK (on_dodaj_kontakt1_activate),
751                       NULL);
752   g_signal_connect (G_OBJECT (archiwum1), "activate",
753                       G_CALLBACK (on_archiwum1_activate),
754                       NULL);
755   g_signal_connect (G_OBJECT (ustawienia1), "activate",
756                       G_CALLBACK (on_ustawienia1_activate),
757                       NULL);
758   g_signal_connect (G_OBJECT (ustawienia_gg), "activate",
759                       G_CALLBACK (on_ustawienia_gg_activate),
760                       NULL);
761   g_signal_connect (G_OBJECT (o_programie1), "activate",
762                       G_CALLBACK (on_o_programie1_activate),
763                       NULL);
764   g_signal_connect (G_OBJECT (wyloguj_profil1), "activate",
765                       G_CALLBACK (on_wyloguj_profil1_activate),
766                       NULL);
767   g_signal_connect (G_OBJECT (wyj__cie1), "activate",
768                       G_CALLBACK (on_wyj__cie1_activate),
769                       NULL);
770 
771   gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group);
772   widget=lookup_widget(window1,"label_info");
773   gtk_widget_hide(widget);
774 //  gtk_widget_show (window1);
775 }
776 
window_unauth_delete(GtkWidget * window)777 void window_unauth_delete(GtkWidget *window)
778 {
779   gtk_widget_destroy(window);
780   wyloguj();
781   my_create_window_login();
782 }
783 
my_create_window_unauth()784 void my_create_window_unauth()
785 {
786   GtkWidget *window;
787 
788   window = create_window_unauth();
789   gtk_widget_show(window);
790 }
791 
my_create_window_authorize(const gchar * jid)792 void my_create_window_authorize(const gchar *jid)
793 {
794   GtkWidget *window, *button;
795 
796   cant_stop=TRUE;
797   window=create_window_authorize();
798   g_signal_connect (G_OBJECT (window), "delete_event",
799                       G_CALLBACK (on_window_authorize_delete_event),
800                       (gpointer) jid);
801   button=lookup_widget(window,"label_jid");
802   gtk_label_set_text(GTK_LABEL(button),jid);
803   button=lookup_widget(window,"button_authorize_cancel");
804   g_signal_connect (G_OBJECT (button), "clicked",
805                       G_CALLBACK (on_button_authorize_cancel_clicked),
806                       (gpointer) window);
807   button=lookup_widget(window,"button_authorize_ok");
808   g_signal_connect (G_OBJECT (button), "clicked",
809                       G_CALLBACK (on_button_authorize_ok_clicked),
810                       (gpointer) window);
811   gtk_widget_show(window);
812 }
813 
814 
815 
newmail(const gchar * from,const gchar * subject)816 void newmail(const gchar *from, const gchar *subject)
817 {
818   GtkWidget *window, *widget;
819   gchar *s;
820 
821   window=create_window_newmail();
822   widget=lookup_widget(window,"label_from");
823   s=utf(from);
824   gtk_label_set_text(GTK_LABEL(widget),s);
825   g_free(s);
826   widget=lookup_widget(window,"label_subject");
827   if(subject)
828   {
829     s=utf(subject);
830     gtk_label_set_text(GTK_LABEL(widget),s);
831     g_free(s);
832   }
833   else
834     gtk_label_set_text(GTK_LABEL(widget),"<brak tematu>");
835   gtk_widget_show(window);
836 }
837 
my_create_window_webmsg(gchar * from,gchar * email,gchar * site,gchar * message)838 void my_create_window_webmsg(gchar *from, gchar *email, gchar *site, gchar
839                              *message)
840 {
841   GtkWidget *window, *widget;
842   gchar *s;
843 
844   window = create_window_webmsg();
845 
846   widget=lookup_widget(window,"label_from");
847   s=utf(from);
848   gtk_label_set_text(GTK_LABEL(widget),s);
849   g_free(s);
850   widget=lookup_widget(window,"label_email");
851   s=utf(email);
852   gtk_label_set_text(GTK_LABEL(widget),s);
853   g_free(s);
854   widget=lookup_widget(window,"label_site");
855   s=utf(site);
856   gtk_label_set_text(GTK_LABEL(widget),s);
857   g_free(s);
858   widget=lookup_widget(window,"textview");
859   s=utf(message);
860   textview_append(widget,s,0,NULL, NULL);
861   g_free(s);
862   gtk_widget_show(window);
863 }
864 
865 static void
window_contacts_cell_edited(GtkCellRendererText * cell,const gchar * path_string,const gchar * new_text,gpointer data)866 window_contacts_cell_edited (GtkCellRendererText *cell,
867                          const gchar         *path_string,
868                          const gchar         *new_text,
869                          gpointer             data)
870 {
871   GtkTreeView *treeview = (GtkTreeView *)data;
872   GtkTreeModel *model = gtk_tree_view_get_model(treeview);
873   GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
874   GtkTreeIter iter;
875 
876   gint *column;
877   gchar *jid;
878   gchar *old_text;
879   struct contact *contact;
880 
881 
882   column = g_object_get_data (G_OBJECT (cell), "column");
883 
884   gtk_tree_model_get_iter (model, &iter, path);
885   gtk_tree_model_get (model, &iter, CTS_TC_ID, &jid, -1);
886   contact=get_contact(jid);
887   gtk_tree_model_get (model, &iter, column, &old_text, -1);
888   g_free (old_text);
889   gtk_tree_store_set (GTK_TREE_STORE (model), &iter, column,
890                       new_text, -1);
891 
892   if(contact)
893   switch (GPOINTER_TO_INT (column))
894   {
895     case CTS_TC_FIRSTNAME:
896       {
897         g_free(contact->firstname);
898         contact->firstname=fromutf(new_text);
899         break;
900       }
901     case CTS_TC_SURNAME:
902       {
903         g_free(contact->surname);
904         contact->surname=fromutf(new_text);
905         break;
906       }
907     case CTS_TC_PHONE:
908       {
909         g_free(contact->phone);
910         contact->phone=fromutf(new_text);
911         break;
912       }
913     case CTS_TC_ADDRESS:
914       {
915         g_free(contact->address);
916         contact->address=fromutf(new_text);
917         break;
918       }
919     case CTS_TC_EMAIL:
920       {
921         g_free(contact->email);
922         contact->email=fromutf(new_text);
923         break;
924       }
925     case CTS_TC_BIRTHDAY:
926       {
927         g_free(contact->birthday);
928         contact->birthday=fromutf(new_text);
929         break;
930       }
931     case CTS_TC_ABOUT:
932       {
933         g_free(contact->about);
934         contact->about=fromutf(new_text);
935         break;
936       }
937 
938   }
939 
940   gtk_tree_path_free (path);
941 }
942 
my_create_window_contacts()943 void my_create_window_contacts()
944 {
945   GtkCellRenderer *renderer;
946   GtkTreeViewColumn *column;
947   gchar *s;
948   GtkTreeView *treeview;
949   GtkTreeStore *store;
950   GtkTreeIter iter;
951   GList *l;
952   struct user *user;
953   struct contact *contact;
954   gint i;
955 
956   read_contacts();
957   window_contacts = create_window_contacts();
958   treeview = GTK_TREE_VIEW(lookup_widget(window_contacts, "treeview"));
959   renderer = gtk_cell_renderer_pixbuf_new();
960   column = gtk_tree_view_column_new();
961   gtk_tree_view_column_set_title(column,"ID");
962   gtk_tree_view_column_pack_start(column, renderer, FALSE);
963   gtk_tree_view_column_set_cell_data_func (column, renderer,
964                                            func_pixbuf, NULL, NULL);
965 
966   renderer = gtk_cell_renderer_text_new ();
967   gtk_tree_view_column_pack_start(column, renderer, FALSE);
968   gtk_tree_view_column_set_cell_data_func (column, renderer,
969                                            func_text, NULL, NULL);
970   gtk_tree_view_append_column (treeview, column);
971 
972   renderer = gtk_cell_renderer_text_new ();
973   g_signal_connect (G_OBJECT (renderer), "edited",
974                     G_CALLBACK (window_contacts_cell_edited), treeview);
975   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_FIRSTNAME);
976   s=utf("Imi�     ");
977   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
978                                                -1, s, renderer,
979                                                "text", CTS_TC_FIRSTNAME,
980                                                "editable", CTS_TC_EDITABLE,
981                                                NULL);
982   g_free(s);
983   renderer = gtk_cell_renderer_text_new ();
984   g_signal_connect (G_OBJECT (renderer), "edited",
985                     G_CALLBACK (window_contacts_cell_edited), treeview);
986   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_SURNAME);
987   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
988                                                -1, "Nazwisko", renderer,
989                                                "text", CTS_TC_SURNAME,
990                                                "editable", CTS_TC_EDITABLE,
991                                                NULL);
992   renderer = gtk_cell_renderer_text_new ();
993   g_signal_connect (G_OBJECT (renderer), "edited",
994                     G_CALLBACK (window_contacts_cell_edited), treeview);
995   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_PHONE);
996   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
997                                                -1, "Telefon", renderer,
998                                                "text", CTS_TC_PHONE,
999                                                "editable", CTS_TC_EDITABLE,
1000                                                NULL);
1001   renderer = gtk_cell_renderer_text_new ();
1002   g_signal_connect (G_OBJECT (renderer), "edited",
1003                     G_CALLBACK (window_contacts_cell_edited), treeview);
1004   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_EMAIL);
1005   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
1006                                                -1, "Email        ", renderer,
1007                                                "text", CTS_TC_EMAIL,
1008                                                "editable", CTS_TC_EDITABLE,
1009                                                NULL);
1010   renderer = gtk_cell_renderer_text_new ();
1011   g_signal_connect (G_OBJECT (renderer), "edited",
1012                     G_CALLBACK (window_contacts_cell_edited), treeview);
1013   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_ADDRESS);
1014   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
1015                                                -1, "Adres               ", renderer,
1016                                                "text", CTS_TC_ADDRESS,
1017                                                "editable", CTS_TC_EDITABLE,
1018                                                NULL);
1019   renderer = gtk_cell_renderer_text_new ();
1020   g_signal_connect (G_OBJECT (renderer), "edited",
1021                     G_CALLBACK (window_contacts_cell_edited), treeview);
1022   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_BIRTHDAY);
1023   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
1024                                                -1, "Data urodzin   ", renderer,
1025                                                "text", CTS_TC_BIRTHDAY,
1026                                                "editable", CTS_TC_EDITABLE,
1027                                                NULL);
1028   renderer = gtk_cell_renderer_text_new ();
1029   g_signal_connect (G_OBJECT (renderer), "edited",
1030                     G_CALLBACK (window_contacts_cell_edited), treeview);
1031   g_object_set_data (G_OBJECT (renderer), "column", (gint *)CTS_TC_ABOUT);
1032   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
1033                                                -1, "Opis", renderer,
1034                                                "text", CTS_TC_ABOUT,
1035                                                "editable", CTS_TC_EDITABLE,
1036                                                NULL);
1037 
1038   //create model
1039 
1040   store = gtk_tree_store_new(CTS_TC_COLUMNS, G_TYPE_UINT, G_TYPE_STRING,
1041                              G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
1042                              G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
1043                              G_TYPE_STRING, G_TYPE_BOOLEAN);
1044   for(l=contacts_list;l;l=l->next)
1045   {
1046     contact=(struct contact*) l->data;
1047     user=get_user(contact->jid);
1048     if(user)
1049       i=user->status;
1050     else
1051       i=TLEN_STATUS_UNAVAILABLE;
1052     gtk_tree_store_append (store, &iter,NULL);
1053     s=utf(contact->jid);
1054     gtk_tree_store_set (store, &iter,
1055                         CTS_TC_EDITABLE, TRUE,
1056                         -1);
1057     gtk_tree_store_set (store, &iter,
1058                         CTS_TC_STATUS, i,
1059                         CTS_TC_ID, s,
1060                         -1);
1061     g_free(s);
1062     s=utf(contact->firstname);
1063     gtk_tree_store_set (store, &iter,
1064                         CTS_TC_FIRSTNAME, s,
1065                         -1);
1066     g_free(s);
1067     s=utf(contact->surname);
1068     gtk_tree_store_set (store, &iter,
1069                         CTS_TC_SURNAME, s,
1070                         -1);
1071     g_free(s);
1072     s=utf(contact->phone);
1073     gtk_tree_store_set (store, &iter,
1074                         CTS_TC_PHONE, s,
1075                         -1);
1076     g_free(s);
1077     s=utf(contact->address);
1078     gtk_tree_store_set (store, &iter,
1079                         CTS_TC_ADDRESS, s,
1080                         -1);
1081     g_free(s);
1082     s=utf(contact->email);
1083     gtk_tree_store_set (store, &iter,
1084                         CTS_TC_EMAIL, s,
1085                         -1);
1086     g_free(s);
1087     s=utf(contact->birthday);
1088     gtk_tree_store_set (store, &iter,
1089                         CTS_TC_BIRTHDAY, s,
1090                         -1);
1091     g_free(s);
1092     s=utf(contact->about);
1093     gtk_tree_store_set (store, &iter,
1094                         CTS_TC_ABOUT, s,
1095                         -1);
1096     g_free(s);
1097   }
1098 
1099   gtk_tree_view_set_model(treeview, GTK_TREE_MODEL (store));
1100   g_object_unref (G_OBJECT (store));
1101 
1102   gtk_widget_show(window_contacts);
1103 }
1104 
window_card_gotdata(struct tlen_event * event)1105 void window_card_gotdata(struct tlen_event *event)
1106 {
1107   GtkWidget *widget;
1108   gchar *s;
1109 
1110   widget = lookup_widget(window_card, "entry_name");
1111   s = event->pubdir->firstname;
1112   if(s)
1113   {
1114     s = utf(s);
1115     gtk_entry_set_text(GTK_ENTRY(widget), s);
1116     g_free(s);
1117   }
1118   widget = lookup_widget(window_card, "entry_surname");
1119   s = event->pubdir->lastname;
1120   if(s)
1121   {
1122     s = utf(s);
1123     gtk_entry_set_text(GTK_ENTRY(widget), s);
1124     g_free(s);
1125   }
1126   widget = lookup_widget(window_card, "entry_nick");
1127   s = event->pubdir->nick;
1128   if(s)
1129   {
1130     s = utf(s);
1131     gtk_entry_set_text(GTK_ENTRY(widget), s);
1132     g_free(s);
1133   }
1134   widget = lookup_widget(window_card, "entry_gender");
1135   switch(event->pubdir->gender)
1136   {
1137     case TLEN_PUBDIR_GENDER_NONE:
1138       s="";
1139       break;
1140     case TLEN_PUBDIR_GENDER_FEMALE:
1141       s="kobieta";
1142       break;
1143     case TLEN_PUBDIR_GENDER_MALE:
1144       s="m�czyzna";
1145       break;
1146   }
1147   if(s)
1148   {
1149     s=utf(s);
1150     gtk_entry_set_text(GTK_ENTRY(widget),s);
1151     g_free(s);
1152   }
1153   widget=lookup_widget(window_card, "entry_city");
1154   s=event->pubdir->city;
1155   if(s)
1156   {
1157     s=utf(s);
1158     gtk_entry_set_text(GTK_ENTRY(widget),s);
1159     g_free(s);
1160   }
1161   widget=lookup_widget(window_card, "entry_email");
1162   s=event->pubdir->email;
1163   if(s)
1164   {
1165     s=utf(s);
1166     gtk_entry_set_text(GTK_ENTRY(widget),s);
1167     g_free(s);
1168   }
1169   widget=lookup_widget(window_card, "spinbutton");
1170   if(event->pubdir->birthyear >= 1900)
1171     gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),
1172                               event->pubdir->birthyear);
1173   widget=lookup_widget(window_card, "entry_status");
1174   if(event->pubdir->visible == TLEN_PUBDIR_VISIBLE_NO)
1175     gtk_entry_set_text(GTK_ENTRY(widget),"nie");
1176   else
1177     gtk_entry_set_text(GTK_ENTRY(widget),"tak");
1178   widget=lookup_widget(window_card, "entry_look");
1179   switch(event->pubdir->look_for)
1180   {
1181     case TLEN_PUBDIR_LOOK_NONE:
1182       s="";
1183       break;
1184     case TLEN_PUBDIR_LOOK_TALK:
1185       s="rozmowa";
1186       break;
1187     case TLEN_PUBDIR_LOOK_FRIEND:
1188       s="przyja�n";
1189       break;
1190     case TLEN_PUBDIR_LOOK_FLIRT:
1191       s="romans";
1192       break;
1193     case TLEN_PUBDIR_LOOK_LOVE:
1194       s="mi�o��";
1195       break;
1196     default:
1197       s="";
1198   }
1199   s=utf(s);
1200   gtk_entry_set_text(GTK_ENTRY(widget),s);
1201   g_free(s);
1202   widget=lookup_widget(window_card, "entry_school");
1203   s=event->pubdir->school;
1204   if(s)
1205   {
1206     s=utf(s);
1207     gtk_entry_set_text(GTK_ENTRY(widget),s);
1208     g_free(s);
1209   }
1210   widget=lookup_widget(window_card, "entry_job");
1211   switch(event->pubdir->job)
1212   {
1213     case TLEN_PUBDIR_JOB_NONE:
1214       s="";
1215       break;
1216     case TLEN_PUBDIR_JOB_UCZEN:
1217       s="ucze�";
1218       break;
1219     case TLEN_PUBDIR_JOB_STUDENT:
1220       s="student";
1221       break;
1222     case TLEN_PUBDIR_JOB_ROLNIK:
1223       s="rolnik";
1224       break;
1225     case TLEN_PUBDIR_JOB_MENEDZER:
1226       s="mened�er";
1227       break;
1228     case TLEN_PUBDIR_JOB_SPEC_WOL:
1229       s="specjalista";
1230       break;
1231     case TLEN_PUBDIR_JOB_UUA:
1232       s="urz�dnik";
1233       break;
1234     case TLEN_PUBDIR_JOB_BEZROBOTNY:
1235       s="bezrobotny";
1236       break;
1237     case TLEN_PUBDIR_JOB_EMERYT:
1238       s="emeryt,rencista";
1239       break;
1240     case TLEN_PUBDIR_JOB_GOSPODYNI:
1241       s="gospodyni";
1242       break;
1243     case TLEN_PUBDIR_JOB_NAUCZYCIEL:
1244       s="nauczyciel";
1245       break;
1246     case TLEN_PUBDIR_JOB_LEKARZ:
1247       s="lekarz";
1248       break;
1249     case TLEN_PUBDIR_JOB_INNY:
1250       s="inny";
1251       break;
1252     default:
1253       s="";
1254   }
1255   if(s)
1256   {
1257     s=utf(s);
1258     gtk_entry_set_text(GTK_ENTRY(widget),s);
1259     g_free(s);
1260   }
1261   widget=lookup_widget(window_card, "entry_voice");
1262   if(event->pubdir->voice == TLEN_PUBDIR_VOICE_DISABLED)
1263     gtk_entry_set_text(GTK_ENTRY(widget),"nie");
1264   else
1265     gtk_entry_set_text(GTK_ENTRY(widget),"tak");
1266   widget=lookup_widget(window_card, "entry_plans");
1267   switch(event->pubdir->plans)
1268   {
1269     case TLEN_PUBDIR_WANT_NONE:
1270       s="";
1271       break;
1272     case TLEN_PUBDIR_WANT_CINEMA:
1273       s="kino";
1274       break;
1275     default:
1276       s="";
1277   }
1278   if(s)
1279   {
1280     s=utf(s);
1281     gtk_entry_set_text(GTK_ENTRY(widget),s);
1282     g_free(s);
1283   }
1284 
1285 }
1286 
window_card_hide_thobber()1287 void window_card_hide_thobber()
1288 {
1289   GtkWidget *image;
1290 
1291   image = lookup_widget(window_card, "thobber");
1292   gtk_widget_hide(image);
1293 }
1294 
window_card_show_thobber()1295 void window_card_show_thobber()
1296 {
1297   GtkWidget *image;
1298 
1299   image = lookup_widget(window_card, "thobber");
1300   gtk_widget_show(image);
1301 }
1302 
window_card_export()1303 void window_card_export()
1304 {
1305   struct tlen_pubdir *pubdir;
1306   GtkWidget *widget;
1307   gchar *s;
1308 
1309 
1310   pubdir = tlen_new_pubdir ();
1311   widget = lookup_widget(window_card, "entry_name");
1312   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1313   if(strlen(s)>0)
1314     pubdir->firstname = strdup(s);
1315   g_free(s);
1316   widget = lookup_widget(window_card,"entry_surname");
1317   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1318   if(strlen(s)>0)
1319     pubdir->lastname = strdup(s);
1320   g_free(s);
1321   widget = lookup_widget(window_card, "entry_nick");
1322   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1323   if(strlen(s)>0)
1324     pubdir->nick = strdup(s);
1325   g_free(s);
1326   widget = lookup_widget(window_card, "entry_gender");
1327   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1328   if(!strcmp(s,"kobieta"))
1329     pubdir->gender = TLEN_PUBDIR_GENDER_FEMALE;
1330   else if(!strcmp(s,"m�czyzna"))
1331     pubdir->gender = TLEN_PUBDIR_GENDER_MALE;
1332   else
1333     pubdir->gender = TLEN_PUBDIR_GENDER_NONE;
1334   g_free(s);
1335   widget = lookup_widget(window_card, "entry_city");
1336   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1337   if(strlen(s)>0)
1338     pubdir->city = strdup(s);
1339   widget = lookup_widget(window_card, "entry_email");
1340   g_free(s);
1341   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1342   if(strlen(s)>0)
1343     pubdir->email = strdup(s);
1344   widget = lookup_widget(window_card, "spinbutton");
1345   pubdir->birthyear = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
1346   widget = lookup_widget(window_card,"entry_status");
1347   g_free(s);
1348   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1349   if(!strcmp(s,"nie"))
1350     pubdir->visible = TLEN_PUBDIR_VISIBLE_NO;
1351   else
1352     pubdir->visible = TLEN_PUBDIR_VISIBLE_YES;
1353   widget = lookup_widget(window_card, "entry_look");
1354   g_free(s);
1355   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1356   if(!strcmp(s,""))
1357     pubdir->look_for = TLEN_PUBDIR_LOOK_NONE;
1358   else if(!strcmp(s,"rozmowa"))
1359     pubdir->look_for = TLEN_PUBDIR_LOOK_TALK;
1360   else if(!strcmp(s,"przyja��"))
1361     pubdir->look_for = TLEN_PUBDIR_LOOK_FRIEND;
1362   else if(!strcmp(s,"romans"))
1363     pubdir->look_for = TLEN_PUBDIR_LOOK_FLIRT;
1364   else if(!strcmp(s,"mi�o��"))
1365     pubdir->look_for = TLEN_PUBDIR_LOOK_LOVE;
1366   widget = lookup_widget(window_card, "entry_school");
1367   g_free(s);
1368   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1369   if(strlen(s)>0)
1370     pubdir->school = strdup(s);
1371   widget = lookup_widget(window_card, "entry_job");
1372   g_free(s);
1373   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1374   if(!strcmp(s,""))
1375     pubdir->job = TLEN_PUBDIR_JOB_NONE;
1376   else if(!strcmp(s,"ucze�"))
1377     pubdir->job = TLEN_PUBDIR_JOB_UCZEN;
1378   else if(!strcmp(s,"student"))
1379     pubdir->job = TLEN_PUBDIR_JOB_STUDENT;
1380   else if(!strcmp(s,"rolnik"))
1381     pubdir->job = TLEN_PUBDIR_JOB_ROLNIK;
1382   else if(!strcmp(s,"mened�er"))
1383     pubdir->job = TLEN_PUBDIR_JOB_MENEDZER;
1384   else if(!strcmp(s,"specjalista"))
1385     pubdir->job = TLEN_PUBDIR_JOB_SPEC_WOL;
1386   else if(!strcmp(s,"urz�dnik"))
1387     pubdir->job = TLEN_PUBDIR_JOB_UUA;
1388   else if(!strcmp(s,"emeryt,rencista"))
1389     pubdir->job = TLEN_PUBDIR_JOB_EMERYT;
1390   else if(!strcmp(s,"gospodyni"))
1391     pubdir->job = TLEN_PUBDIR_JOB_GOSPODYNI;
1392   else if(!strcmp(s,"nauczyciel"))
1393     pubdir->job = TLEN_PUBDIR_JOB_NAUCZYCIEL;
1394   else if(!strcmp(s,"lekarz"))
1395     pubdir->job = TLEN_PUBDIR_JOB_LEKARZ;
1396   else if(!strcmp(s,"inny"))
1397     pubdir->job = TLEN_PUBDIR_JOB_INNY;
1398   else if(!strcmp(s,"bezrobotny"))
1399     pubdir->job = TLEN_PUBDIR_JOB_BEZROBOTNY;
1400   widget = lookup_widget(window_card, "entry_voice");
1401   g_free(s);
1402   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1403   if(!strcmp(s,"nie"))
1404     pubdir->voice = TLEN_PUBDIR_VOICE_DISABLED;
1405   else
1406     pubdir->voice = TLEN_PUBDIR_VOICE_ENABLED;
1407   widget = lookup_widget(window_card, "entry_plans");
1408   g_free(s);
1409   s = (gchar*) fromutf(gtk_entry_get_text(GTK_ENTRY(widget)));
1410   if(!strcmp(s,""))
1411     pubdir->plans = TLEN_PUBDIR_WANT_NONE;
1412   else if(!strcmp(s,"kino"))
1413     pubdir->plans = TLEN_PUBDIR_WANT_CINEMA;
1414   g_free(s);
1415 
1416   tlen_change_pubdir(session, pubdir);
1417   tlen_free_pubdir(pubdir);
1418   window_card_show_thobber();
1419 }
1420 
window_card_import()1421 void window_card_import()
1422 {
1423   tlen_get_pubdir(session);
1424   window_card_show_thobber();
1425 }
1426 
my_create_window_card()1427 void my_create_window_card()
1428 {
1429   window_card = create_window_card();
1430   gtk_widget_show(window_card);
1431 }
1432 
colorselection_getcolor(GtkWidget * entry)1433 void colorselection_getcolor(GtkWidget *entry)
1434 {
1435   GtkWidget *button;
1436 
1437   colorselection = create_colorselection();
1438   button = lookup_widget(colorselection, "button_colorselection_ok");
1439   g_signal_connect_swapped (G_OBJECT (button), "clicked",
1440                             G_CALLBACK (on_button_colorselection_ok_clicked),
1441                             entry);
1442 
1443   gtk_widget_show(colorselection);
1444 }
1445 
fileselection_getfile(GtkWidget * entry)1446 void fileselection_getfile(GtkWidget *entry)
1447 {
1448   GtkWidget *button;
1449   static gulong handler_id = 0;
1450 
1451   if(!fileselection)
1452     fileselection = create_fileselection();
1453   button = lookup_widget(fileselection, "button_fileselection_ok");
1454   if(handler_id)
1455     g_signal_handler_disconnect(G_OBJECT(button), handler_id);
1456   handler_id = g_signal_connect_swapped(G_OBJECT(button), "clicked",
1457                            G_CALLBACK(on_button_fileselection_ok_clicked),
1458                            entry);
1459   gtk_widget_show(fileselection);
1460 }
1461 
window_prefs_apply()1462 void window_prefs_apply()
1463 {
1464   GtkWidget *entry, *button;
1465   gchar *s;
1466   struct talk *talk;
1467   GList *l=talks_list;
1468   GtkTextBuffer *buffer;
1469   GtkTextTag *tag;
1470   GtkTextTagTable *table;
1471 
1472 
1473   //ogolne
1474   preferences = 0;
1475   button = lookup_widget(window_prefs,"checkbutton_newmail");
1476   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1477     preferences |= PREF_NEWMAIL;
1478   button = lookup_widget(window_prefs,"checkbutton_savestat");
1479   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1480     preferences |= PREF_SAVESTAT;
1481   button = lookup_widget(window_prefs,"checkbutton_infomenu");
1482   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1483     preferences |= PREF_INFO_MENU;
1484   button = lookup_widget(window_prefs,"checkbutton_enteron");
1485   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1486     preferences |= PREF_ENTERON;
1487   button = lookup_widget(window_prefs,"checkbutton_debugon");
1488   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1489   {
1490     preferences |= PREF_DEBUGON;
1491     tlen_setdebug(1);
1492   }
1493   else
1494     tlen_setdebug(0);
1495   button = lookup_widget(window_prefs,"checkbutton_list_expanded");
1496   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1497     preferences |= PREF_LIST_EXPANDED;
1498   button = lookup_widget(window_prefs,"checkbutton_hide_invisible");
1499   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1500     preferences |= PREF_HIDE_INVISIBLE;
1501   button = lookup_widget(window_prefs,"checkbutton_lastlogin");
1502   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1503     preferences |= PREF_LASTLOGIN;
1504   button = lookup_widget(window_prefs,"checkbutton_status");
1505   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1506   {
1507     preferences |= PREF_AUTOAWAY;
1508     button = lookup_widget(window_prefs,"spinbutton_away_min");
1509     away_min = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(button));
1510     button = lookup_widget(window_prefs,"spinbutton_away_sec");
1511     away_sec = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(button));
1512     button = lookup_widget(window_prefs,"spinbutton_ext_away_min");
1513     ext_away_min = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(button));
1514     button = lookup_widget(window_prefs,"spinbutton_ext_away_sec");
1515     ext_away_sec = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(button));
1516   }
1517   button = lookup_widget(window_prefs,"checkbutton_xmms");
1518   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1519   {
1520     preferences |= PREF_XMMS_INFO;
1521     xmms_info_enable(TRUE, 0);
1522   }
1523   else
1524     xmms_info_enable(FALSE, 0);
1525   button = lookup_widget(window_prefs,"spinbutton_desc");
1526   desc_num = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(button));
1527   button = lookup_widget(window_prefs, "checkbutton_hide_offline");
1528   entry = lookup_widget(window1, "togglebutton_hide");
1529   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1530   {
1531     preferences |= PREF_HIDE_OFFLINE;
1532     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(entry),TRUE);
1533   }
1534   else
1535   {
1536     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(entry),FALSE);
1537   }
1538 
1539   button = lookup_widget(window_prefs,"radiobutton_none");
1540   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1541     preferences |= PREF_GROUPS_NONE;
1542   else
1543   {
1544     button=lookup_widget(window_prefs,"radiobutton_tabs_up");
1545     if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1546       preferences |= PREF_GROUPS_TABS_UP;
1547     else
1548     {
1549       button=lookup_widget(window_prefs,"radiobutton_tabs_left");
1550       if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1551         preferences |= PREF_GROUPS_TABS_LEFT;
1552       else
1553       {
1554         button=lookup_widget(window_prefs,"radiobutton_list");
1555         if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1556           preferences |= PREF_GROUPS_LIST;
1557       }
1558     }
1559   }
1560   refresh_gui();
1561 
1562   //dzwieki
1563   button = lookup_widget(window_prefs,"checkbutton_beeponm");
1564   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1565     preferences |= PREF_BEEPONM;
1566   button = lookup_widget(window_prefs,"checkbutton_beepont");
1567   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1568     preferences |= PREF_BEEPONT;
1569   button = lookup_widget(window_prefs,"checkbutton_beepons");
1570   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1571     preferences |= PREF_BEEPONS;
1572   button = lookup_widget(window_prefs,"checkbutton_beepona");
1573   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1574     preferences |= PREF_BEEPONA;
1575   button = lookup_widget(window_prefs,"checkbutton_beeponn");
1576   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1577     preferences |= PREF_BEEPONN;
1578   button = lookup_widget(window_prefs,"checkbutton_beeponw");
1579   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
1580     preferences |= PREF_BEEPONW;
1581   entry = lookup_widget(window_prefs,"entry_beeponm");
1582   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1583   g_free(sounds[SOUNDM]);
1584   sounds[SOUNDM] = NULL;
1585   if(strlen(s))
1586     sounds[SOUNDM] = filenamefromutf(s);
1587   entry = lookup_widget(window_prefs,"entry_beepont");
1588   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1589   g_free(sounds[SOUNDT]);
1590   sounds[SOUNDT] = NULL;
1591   if(strlen(s))
1592     sounds[SOUNDT] = filenamefromutf(s);
1593   entry = lookup_widget(window_prefs,"entry_beepons");
1594   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1595   g_free(sounds[SOUNDS]);
1596   sounds[SOUNDS] = NULL;
1597   if(strlen(s))
1598     sounds[SOUNDS] = filenamefromutf(s);
1599   entry = lookup_widget(window_prefs,"entry_beepona");
1600   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1601   g_free(sounds[SOUNDA]);
1602   sounds[SOUNDA] = NULL;
1603   if(strlen(s))
1604     sounds[SOUNDA] = filenamefromutf(s);
1605   entry = lookup_widget(window_prefs,"entry_beeponn");
1606   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1607   g_free(sounds[SOUNDN]);
1608   sounds[SOUNDN] = NULL;
1609   if(strlen(s))
1610     sounds[SOUNDN] = filenamefromutf(s);
1611   entry = lookup_widget(window_prefs,"entry_beeponw");
1612   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1613   g_free(sounds[SOUNDW]);
1614   sounds[SOUNDW] = NULL;
1615   if(strlen(s))
1616     sounds[SOUNDW] = filenamefromutf(s);
1617   entry = lookup_widget(window_prefs,"entry_playpath");
1618   s = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry));
1619   g_free(playpath);
1620   playpath = NULL;
1621   if(strlen(s))
1622     playpath = filenamefromutf(s);
1623 
1624   //kolory
1625   entry = lookup_widget(window_prefs,"entry_date");
1626   s = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
1627   g_free(datefg);
1628   datefg = NULL;
1629   if(strlen(s)>0)
1630     datefg = g_strdup(s);
1631   entry = lookup_widget(window_prefs,"entry_nick");
1632   s = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
1633   g_free(nickfg);
1634   nickfg = NULL;
1635   if(strlen(s)>0)
1636     nickfg = g_strdup(s);
1637   entry = lookup_widget(window_prefs,"entry_message");
1638   s = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
1639   g_free(textfg);
1640   textfg = NULL;
1641   if(strlen(s)>0)
1642     textfg = g_strdup(s);
1643 
1644   entry = lookup_widget(window_prefs,"entry_message_bg");
1645   s = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry));
1646   g_free(textbg);
1647   textbg = NULL;
1648   if(strlen(s)>0)
1649     textbg = g_strdup(s);
1650 
1651   while(l)
1652   {
1653     talk = (struct talk*)l->data;
1654     entry = lookup_widget(talk->window,"textview_top");
1655     buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
1656     table = gtk_text_buffer_get_tag_table(buffer);
1657     if(datefg)
1658     {
1659       tag = gtk_text_tag_table_lookup(table, "datefg");
1660       g_object_set(tag,"foreground", datefg, NULL);
1661     }
1662     if(nickfg)
1663     {
1664       tag = gtk_text_tag_table_lookup(table, "nickfg");
1665       g_object_set(tag,"foreground", nickfg, NULL);
1666     }
1667     if(textfg)
1668     {
1669       tag=gtk_text_tag_table_lookup(table, "textfg");
1670       g_object_set(tag,
1671                    "foreground", textfg,
1672                    NULL);
1673     }
1674     if(textbg)
1675     {
1676       tag=gtk_text_tag_table_lookup(table, "textbg");
1677       g_object_set(tag,
1678                    "background", textbg,
1679                    "foreground", textfg,
1680                    NULL);
1681     }
1682     l = l->next;
1683   }
1684   save_preferences();
1685 
1686 }
1687 
my_create_window_prefs()1688 void my_create_window_prefs()
1689 {
1690   GtkWidget *entry, *button;
1691   gchar *s;
1692 
1693   window_prefs = create_window_prefs();
1694   button = lookup_widget(window_prefs,"checkbutton_newmail");
1695   if(preferences & PREF_NEWMAIL)
1696     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1697   button = lookup_widget(window_prefs,"checkbutton_savestat");
1698   if(preferences & PREF_SAVESTAT)
1699     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1700   button = lookup_widget(window_prefs,"checkbutton_infomenu");
1701   if(preferences & PREF_INFO_MENU)
1702     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1703   button = lookup_widget(window_prefs,"checkbutton_enteron");
1704   if(preferences & PREF_ENTERON)
1705     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1706   button = lookup_widget(window_prefs,"checkbutton_debugon");
1707   if(preferences & PREF_DEBUGON)
1708     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1709   button = lookup_widget(window_prefs,"checkbutton_list_expanded");
1710   if(preferences & PREF_LIST_EXPANDED)
1711     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1712   button = lookup_widget(window_prefs,"checkbutton_hide_offline");
1713   if(preferences & PREF_HIDE_OFFLINE)
1714     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1715   button = lookup_widget(window_prefs,"checkbutton_hide_invisible");
1716   if(preferences & PREF_HIDE_INVISIBLE)
1717     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1718   button = lookup_widget(window_prefs,"checkbutton_lastlogin");
1719   if(preferences & PREF_LASTLOGIN)
1720     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1721   button = lookup_widget(window_prefs,"checkbutton_status");
1722   if(preferences & PREF_AUTOAWAY)
1723   {
1724     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1725     button = lookup_widget(window_prefs,"spinbutton_away_min");
1726     gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), away_min);
1727     button = lookup_widget(window_prefs,"spinbutton_away_sec");
1728     gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), away_sec);
1729     button = lookup_widget(window_prefs,"spinbutton_ext_away_min");
1730     gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), ext_away_min);
1731     button = lookup_widget(window_prefs,"spinbutton_ext_away_sec");
1732     gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), ext_away_sec);
1733   }
1734   button = lookup_widget(window_prefs,"checkbutton_xmms");
1735   if(preferences & PREF_XMMS_INFO)
1736   {
1737     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1738   }
1739   button = lookup_widget(window_prefs,"spinbutton_desc");
1740   gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), desc_num);
1741 
1742   button = lookup_widget(window_prefs,"checkbutton_beeponm");
1743   if(preferences & PREF_BEEPONM)
1744     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1745   button = lookup_widget(window_prefs,"checkbutton_beepont");
1746   if(preferences & PREF_BEEPONT)
1747     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1748   button = lookup_widget(window_prefs,"checkbutton_beepons");
1749   if(preferences & PREF_BEEPONS)
1750     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1751   button = lookup_widget(window_prefs,"checkbutton_beepona");
1752   if(preferences & PREF_BEEPONA)
1753     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1754   button = lookup_widget(window_prefs,"checkbutton_beeponn");
1755   if(preferences & PREF_BEEPONN)
1756     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1757   button = lookup_widget(window_prefs,"checkbutton_beeponw");
1758   if(preferences & PREF_BEEPONW)
1759     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1760 
1761   button = lookup_widget(window_prefs,"radiobutton_none");
1762   if(preferences & PREF_GROUPS_NONE)
1763     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1764   else
1765   {
1766     button = lookup_widget(window_prefs,"radiobutton_tabs_up");
1767     if(preferences & PREF_GROUPS_TABS_UP)
1768       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1769     else
1770     {
1771       button = lookup_widget(window_prefs,"radiobutton_tabs_left");
1772       if(preferences & PREF_GROUPS_TABS_LEFT)
1773         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1774       else
1775       {
1776         button = lookup_widget(window_prefs,"radiobutton_list");
1777         if(preferences & PREF_GROUPS_LIST)
1778           gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),TRUE);
1779       }
1780     }
1781   }
1782 
1783   entry = lookup_widget(window_prefs,"entry_date");
1784   if(datefg)
1785     gtk_entry_set_text(GTK_ENTRY(entry),datefg);
1786   entry = lookup_widget(window_prefs,"entry_nick");
1787   if(nickfg)
1788     gtk_entry_set_text(GTK_ENTRY(entry),nickfg);
1789   entry = lookup_widget(window_prefs,"entry_message");
1790   if(textfg)
1791     gtk_entry_set_text(GTK_ENTRY(entry),textfg);
1792 
1793   entry = lookup_widget(window_prefs,"entry_message_bg");
1794   if(textbg)
1795     gtk_entry_set_text(GTK_ENTRY(entry),textbg);
1796 
1797   entry = lookup_widget(window_prefs,"entry_beeponm");
1798   if(sounds[SOUNDM])
1799   {
1800     s = filenameutf(sounds[SOUNDM]);
1801     if(s)
1802     {
1803       gtk_entry_set_text(GTK_ENTRY(entry), s);
1804       g_free(s);
1805     }
1806   }
1807   entry = lookup_widget(window_prefs,"entry_beepons");
1808   if(sounds[SOUNDS])
1809   {
1810     s = filenameutf(sounds[SOUNDS]);
1811     if(s)
1812     {
1813       gtk_entry_set_text(GTK_ENTRY(entry), s);
1814       g_free(s);
1815     }
1816   }
1817   entry = lookup_widget(window_prefs,"entry_beepona");
1818   if(sounds[SOUNDA])
1819   {
1820     s = filenameutf(sounds[SOUNDA]);
1821     if(s)
1822     {
1823       gtk_entry_set_text(GTK_ENTRY(entry),s);
1824       g_free(s);
1825     }
1826   }
1827   entry = lookup_widget(window_prefs,"entry_beeponn");
1828   if(sounds[SOUNDN])
1829   {
1830     s = filenameutf(sounds[SOUNDN]);
1831     if(s)
1832     {
1833       gtk_entry_set_text(GTK_ENTRY(entry),s);
1834       g_free(s);
1835     }
1836   }
1837   entry = lookup_widget(window_prefs,"entry_beeponw");
1838   if(sounds[SOUNDW])
1839   {
1840     s = filenameutf(sounds[SOUNDW]);
1841     if(s)
1842     {
1843       gtk_entry_set_text(GTK_ENTRY(entry),s);
1844       g_free(s);
1845     }
1846   }
1847   entry = lookup_widget(window_prefs,"entry_beepont");
1848   if(sounds[SOUNDT])
1849   {
1850     s = filenameutf(sounds[SOUNDT]);
1851     if(s)
1852     {
1853       gtk_entry_set_text(GTK_ENTRY(entry),s);
1854       g_free(s);
1855     }
1856   }
1857   entry = lookup_widget(window_prefs,"entry_playpath");
1858   if(playpath)
1859   {
1860     s = filenameutf(playpath);
1861     gtk_entry_set_text(GTK_ENTRY(entry),s);
1862     g_free(s);
1863   }
1864 
1865   gtk_widget_show(window_prefs);
1866 }
1867 
window_archive_save()1868 void window_archive_save()
1869 {
1870 }
1871 
window_archive_delete()1872 void window_archive_delete()
1873 {
1874   GtkWidget *widget;
1875   gint page;
1876   GtkTreeSelection *selection;
1877   GtkTreeModel *model;
1878   GtkTreeIter iter;
1879   gchar *jid, *date;
1880 
1881   widget = lookup_widget(window_archive, "notebook");
1882   page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widget));
1883   switch(page)
1884   {
1885     case 0:
1886       widget = lookup_widget(window_archive, "treeview_sent");
1887       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
1888       if (gtk_tree_selection_get_selected (selection, &model, &iter))
1889       {
1890         gtk_tree_model_get (model, &iter,
1891                             1, &jid,
1892                             2, &date,
1893                             -1);
1894         g_print("deleting %s %s \n", jid, date);
1895         mesgsent_delete(jid, date);
1896         mesgsent_sort_by_date();
1897         widget = lookup_widget(window_archive, "radiobutton_archive_date");
1898           treeview_sent_sort_by_name();
1899           treeview_sent_sort_by_date();
1900         if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
1901           treeview_sent_sort_by_name();
1902         else
1903         {
1904           treeview_sent_sort_by_date();
1905         }
1906       }
1907       break;
1908     case 1:
1909       break;
1910     case 2:
1911       break;
1912     default:
1913       return;
1914   }
1915 }
1916 
window_archive_cancel()1917 void window_archive_cancel()
1918 {
1919   gtk_widget_destroy(window_archive);
1920   window_archive = NULL;
1921   clean_archive();
1922 }
1923 
my_create_window_archive()1924 void my_create_window_archive()
1925 {
1926   GtkCellRenderer *renderer;
1927   GtkTreeViewColumn *column;
1928   GtkWidget *treeview2;
1929   GtkTreeSelection *selection;
1930   GtkWidget *widget;
1931   GtkTextBuffer *buffer;
1932   gchar *s;
1933 
1934   window_archive = create_window_archive();
1935   widget = lookup_widget(window_archive, "textview_chat");
1936   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
1937   gtk_text_buffer_create_tag (buffer, "date","foreground",
1938                               "blue",
1939                               NULL);
1940   gtk_text_buffer_create_tag (buffer, "text","foreground",
1941                               "#808080",
1942                               NULL);
1943   treeview2 = lookup_widget(window_archive,"treeview_archives");
1944   renderer = gtk_cell_renderer_text_new ();
1945   column = gtk_tree_view_column_new_with_attributes ("Nazwa archiwum",
1946                                                      renderer,
1947                                                      "text",
1948                                                      0,
1949                                                      NULL);
1950   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1951   renderer = gtk_cell_renderer_text_new ();
1952   column = gtk_tree_view_column_new_with_attributes ("Data ostatniego wpisu",
1953                                                      renderer,
1954                                                      "text",
1955                                                      1,
1956                                                      NULL);
1957   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1958   treeview2 = lookup_widget(window_archive,"treeview_chat");
1959   renderer = gtk_cell_renderer_text_new ();
1960   column = gtk_tree_view_column_new_with_attributes (NULL,
1961                                                      renderer,
1962                                                      "text",
1963                                                      0,
1964                                                      NULL);
1965   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1966   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview2));
1967   g_signal_connect (selection, "changed",
1968                     G_CALLBACK (treeview_chat_selection_cb), NULL);
1969 
1970   treeview2 = lookup_widget(window_archive,"treeview_sent");
1971   renderer = gtk_cell_renderer_text_new ();
1972   s = utf("Data wys�ania");
1973   column = gtk_tree_view_column_new_with_attributes (s,
1974                                                      renderer,
1975                                                      "text",
1976                                                      2,
1977                                                      NULL);
1978   g_free(s);
1979   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1980   renderer = gtk_cell_renderer_text_new ();
1981   column = gtk_tree_view_column_new_with_attributes ("ID",
1982                                                      renderer,
1983                                                      "text",
1984                                                      1,
1985                                                      NULL);
1986   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1987 
1988   treeview2 = lookup_widget(window_archive,"treeview_received");
1989   renderer = gtk_cell_renderer_text_new ();
1990   s = utf("Data wys�ania");
1991   column = gtk_tree_view_column_new_with_attributes (s,
1992                                                      renderer,
1993                                                      "text",
1994                                                      2,
1995                                                      NULL);
1996   g_free(s);
1997   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
1998   renderer = gtk_cell_renderer_text_new ();
1999   column = gtk_tree_view_column_new_with_attributes ("ID",
2000                                                      renderer,
2001                                                      "text",
2002                                                      1,
2003                                                      NULL);
2004   gtk_tree_view_append_column (GTK_TREE_VIEW(treeview2), column);
2005 
2006   arch_list_load();
2007   archive_read_mesgsent();
2008   treeview_sent_sort_by_name();
2009   treeview_received_sort_by_name();
2010   treeview_archives_refresh();
2011 
2012   gtk_widget_show(window_archive);
2013 }
2014 
window_message_update_count()2015 void window_message_update_count()
2016 {
2017   gint num = messages_count();
2018   GtkWidget *widget;
2019   gchar *s;
2020 
2021   widget = lookup_widget(window_message, "label_all");
2022   s = g_strdup_printf("%d", num);
2023   gtk_label_set_text(GTK_LABEL(widget), s);
2024   g_free(s);
2025   widget = lookup_widget(window_message, "button_message_next");
2026   gtk_widget_set_sensitive(widget, TRUE);
2027 }
2028 
2029 //num - numer wiadomosci do wyswietlenia w oknie
window_message_update(gint num)2030 void window_message_update(gint num)
2031 {
2032   GtkWidget *label, *textview, *button;
2033   struct message *m;
2034   gchar *s, *name;
2035 
2036   m = message_next(num-1);
2037   label = lookup_widget(window_message, "label_id");
2038   gtk_label_set_text(GTK_LABEL(label), m->id);
2039   label = lookup_widget(window_message, "label_from");
2040   if(get_user(m->id))
2041   {
2042     name = get_user_name(m->id);
2043     if(strncmp(name, m->id, strlen(name)))
2044     {
2045       s = g_strdup_printf("(%s)", name);
2046       g_free(name);
2047       name = utf(s);
2048       g_free(s);
2049       gtk_label_set_text(GTK_LABEL(label), name);
2050     }
2051     else
2052       gtk_label_set_text(GTK_LABEL(label), "");
2053     g_free(name);
2054   }
2055   else
2056     gtk_label_set_text(GTK_LABEL(label), "");
2057   label = lookup_widget(window_message, "label_counter");
2058   s = g_strdup_printf("%d", num);
2059   gtk_label_set_text(GTK_LABEL(label), s);
2060   g_free(s);
2061   window_message_update_count();
2062   m->read = TRUE;
2063   label = lookup_widget(window_message, "label_ifhasstamp");
2064   gtk_label_set_text(GTK_LABEL(label), "");
2065   label = lookup_widget(window_message, "label_stamp");
2066   gtk_label_set_text(GTK_LABEL(label), "");
2067   if(m->stamp)
2068   {
2069     s = utf("Data wys�ania: ");
2070     label = lookup_widget(window_message, "label_ifhasstamp");
2071     gtk_label_set_text(GTK_LABEL(label), s);
2072     g_free(s);
2073     label = lookup_widget(window_message, "label_stamp");
2074     gtk_label_set_text(GTK_LABEL(label), m->stamp);
2075   }
2076   button = lookup_widget(window_message, "button_message_prev");
2077   if(message_prev(num))
2078     gtk_widget_set_sensitive(button, TRUE);
2079   else
2080     gtk_widget_set_sensitive(button, FALSE);
2081   button = lookup_widget(window_message, "button_message_next");
2082   if(message_next(num))
2083     gtk_widget_set_sensitive(button, TRUE);
2084   else
2085     gtk_widget_set_sensitive(button, FALSE);
2086   textview = lookup_widget(window_message, "textview");
2087   s = utf(m->message);
2088   textview_clear(textview);
2089   textview_append(textview, s, 0, NULL, NULL);
2090   g_free(s);
2091 }
2092 
my_create_window_message()2093 void my_create_window_message()
2094 {
2095   window_message = create_window_message();
2096   window_message_update(1);
2097   gtk_widget_show(window_message);
2098 }
2099 
message_send(gchar * id,gchar * message)2100 void message_send(gchar *id, gchar *message)
2101 {
2102   GtkWidget *window, *entry, *textview;
2103   GtkTextBuffer *buffer;
2104   GtkTextIter start;
2105   gchar *s;
2106 
2107   window = create_window_message_send();
2108   if(id)
2109   {
2110     entry = lookup_widget(window,"entry_id");
2111     gtk_entry_set_text(GTK_ENTRY(entry), id);
2112   }
2113   textview = lookup_widget(window, "textview");
2114   if(message)
2115   {
2116     s = utf("\n\n\n---- Twoja wiadomo�� ----\n");
2117     textview_append(textview, s, 0, NULL, NULL);
2118     g_free(s);
2119     s = utf(message);
2120     textview_append(textview, s, 0, NULL, NULL);
2121     g_free(s);
2122     buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
2123     gtk_text_buffer_get_start_iter(buffer, &start);
2124     gtk_text_buffer_place_cursor(buffer, &start);
2125   }
2126   gtk_widget_show(window);
2127 
2128 }
2129 
window_contact_add_type_changed(GtkWidget * window)2130 void  window_contact_add_type_changed(GtkWidget *window)
2131 {
2132 //  GtkWidget *widget;
2133 //  const gchar *s;
2134 
2135 //  widget = lookup_widget(window, "combo_entry_type");
2136 //  s = gtk_entry_get_text(GTK_ENTRY(widget));
2137 //  widget = lookup_widget(window, "label_star2");
2138 //  if(!strcmp(s, "Tlen"))
2139 //    gtk_label_set_text(GTK_LABEL(widget), "");
2140 //  if(!strcmp(s, "Jabber"))
2141 //    gtk_label_set_text(GTK_LABEL(widget), "*");
2142 
2143 }
2144 
contact_add(gchar * jid,gint type)2145 void contact_add(gchar *jid, gint type)
2146 {
2147   GtkWidget *entry, *window;
2148   struct user *u = NULL;
2149   gchar *s;
2150 
2151   window = create_window_contact_add();
2152   entry = lookup_widget(window, "entry_id");
2153   if(jid)
2154   {
2155     s = NULL;
2156     if(type == USER_GG)
2157     {
2158       if((s = strchr(jid, '@')))
2159       {
2160         *s = '\0';
2161       }
2162     }
2163     gtk_entry_set_text(GTK_ENTRY(entry), jid);
2164     if(s)
2165       *s = '@';
2166     u = get_user(jid);
2167   }
2168   entry = lookup_widget(window, "combo_entry_type");
2169   switch(type)
2170   {
2171     case USER_TLEN:
2172       break;
2173     case USER_JABBER:
2174       gtk_entry_set_text(GTK_ENTRY(entry), "Jabber");
2175       break;
2176     case USER_WP:
2177       gtk_entry_set_text(GTK_ENTRY(entry), "WPKontakt");
2178       break;
2179     case USER_GG:
2180       gtk_entry_set_text(GTK_ENTRY(entry), "GG");
2181       break;
2182   }
2183   if(u)
2184   {
2185     gtk_window_set_title(GTK_WINDOW(window),"Edycja danych");
2186     if(u->name)
2187     {
2188       entry = lookup_widget(window, "entry_name");
2189       s = utf(u->name);
2190       gtk_entry_set_text(GTK_ENTRY(entry), s);
2191       g_free(s);
2192     }
2193     if(u->group)
2194     {
2195       entry = lookup_widget(window, "entry_group");
2196       s = utf(u->group);
2197       gtk_entry_set_text(GTK_ENTRY(entry), s);
2198       g_free(s);
2199     }
2200   }
2201   gtk_widget_show(window);
2202 }
2203 
2204 static
search_window_pixbuf(GtkTreeViewColumn * tree_column,GtkCellRenderer * cell,GtkTreeModel * model,GtkTreeIter * iter,gpointer data)2205 void search_window_pixbuf(GtkTreeViewColumn *tree_column,
2206                           GtkCellRenderer   *cell,
2207                           GtkTreeModel      *model,
2208                           GtkTreeIter       *iter,
2209                           gpointer           data)
2210 {
2211   guint status;
2212 
2213   gtk_tree_model_get (model, iter,
2214                       0, &status,
2215                       -1);
2216   g_object_set (GTK_CELL_RENDERER (cell),
2217                 "pixbuf", gtk_image_get_pixbuf(GTK_IMAGE(icons[status])),
2218                 NULL);
2219 }
2220 
2221 static
search_window_text(GtkTreeViewColumn * tree_column,GtkCellRenderer * cell,GtkTreeModel * model,GtkTreeIter * iter,gpointer data)2222 void search_window_text (GtkTreeViewColumn *tree_column,
2223                          GtkCellRenderer   *cell,
2224                          GtkTreeModel      *model,
2225                          GtkTreeIter       *iter,
2226                          gpointer           data)
2227 {
2228   gchar *jid;
2229 
2230   gtk_tree_model_get (model, iter,
2231                       1, &jid,
2232                       -1);
2233   if(get_user(jid))
2234     g_object_set (GTK_CELL_RENDERER (cell),
2235                   "font", "bold",
2236                   NULL);
2237   else
2238     g_object_set (GTK_CELL_RENDERER (cell),
2239                   "font", "normal",
2240                   NULL);
2241   g_object_set (GTK_CELL_RENDERER (cell),
2242                 "text", jid,
2243                 NULL);
2244 }
2245 
window_search_close()2246 void window_search_close()
2247 {
2248   pubdir_list_clear();
2249   gtk_widget_destroy(window_search);
2250   window_search = NULL;
2251 }
window_search_check(gchar * id)2252 void window_search_check(gchar *id)
2253 {
2254   GtkWidget *widget;
2255   struct tlen_pubdir *pubdir;
2256   gchar *s = NULL;
2257 
2258   if((s = strchr(id, '@')))
2259     *s = '\0';
2260   widget = lookup_widget(window_search,"entry_name");
2261   gtk_entry_set_text(GTK_ENTRY(widget), "");
2262 
2263   widget = lookup_widget(window_search,"entry_surname");
2264   gtk_entry_set_text(GTK_ENTRY(widget), "");
2265 
2266   widget = lookup_widget(window_search,"entry_nick");
2267   gtk_entry_set_text(GTK_ENTRY(widget), "");
2268 
2269   widget = lookup_widget(window_search,"entry_gender");
2270   gtk_entry_set_text(GTK_ENTRY(widget), "");
2271 
2272   widget = lookup_widget(window_search,"entry_city");
2273   gtk_entry_set_text(GTK_ENTRY(widget), "");
2274 
2275   widget = lookup_widget(window_search,"entry_email");
2276   gtk_entry_set_text(GTK_ENTRY(widget), "");
2277 
2278   widget = lookup_widget(window_search,"spinbutton_agefrom");
2279   gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), 0);
2280   widget = lookup_widget(window_search,"spinbutton_ageto");
2281   gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), 0);
2282 
2283   widget = lookup_widget(window_search,"entry_status");
2284   gtk_entry_set_text(GTK_ENTRY(widget), "");
2285 
2286   widget = lookup_widget(window_search,"entry_look");
2287   gtk_entry_set_text(GTK_ENTRY(widget), "");
2288 
2289   widget = lookup_widget(window_search,"entry_school");
2290   gtk_entry_set_text(GTK_ENTRY(widget), "");
2291 
2292   widget = lookup_widget(window_search,"entry_job");
2293   gtk_entry_set_text(GTK_ENTRY(widget), "");
2294 
2295   widget = lookup_widget(window_search,"entry_voice");
2296   gtk_entry_set_text(GTK_ENTRY(widget), "nie");
2297 
2298   widget = lookup_widget(window_search,"entry_plans");
2299   gtk_entry_set_text(GTK_ENTRY(widget), "");
2300 
2301   widget = lookup_widget(window_search,"entry_id");
2302   gtk_entry_set_text(GTK_ENTRY(widget), id);
2303   pubdir = tlen_new_pubdir();
2304   pubdir->id = g_strdup(id);
2305 
2306   tlen_search(session,pubdir);
2307   tlen_free_pubdir(pubdir);
2308   if(s)
2309     *s = '@';
2310   widget = lookup_widget(window_search,"thobber");
2311   gtk_widget_show(widget);
2312 }
2313 
my_create_window_search()2314 void my_create_window_search()
2315 {
2316   GtkTreeView *treeview;
2317   GtkCellRenderer *renderer;
2318   GtkTreeViewColumn *column;
2319   gchar *s;
2320   gint i;
2321   GtkWidget *image;
2322 
2323   window_search = create_window_search();
2324   treeview = (GtkTreeView*) lookup_widget(window_search, "treeview");
2325 
2326   renderer = gtk_cell_renderer_pixbuf_new();
2327   column = gtk_tree_view_column_new();
2328   gtk_tree_view_column_set_title(column,"ID");
2329   gtk_tree_view_column_pack_start(column, renderer, FALSE);
2330   gtk_tree_view_column_set_cell_data_func (column, renderer,
2331                                            search_window_pixbuf, NULL, NULL);
2332 
2333   renderer = gtk_cell_renderer_text_new ();
2334   gtk_tree_view_column_pack_start(column, renderer, FALSE);
2335   gtk_tree_view_column_set_cell_data_func (column, renderer,
2336                                            search_window_text, NULL, NULL);
2337   gtk_tree_view_append_column (treeview, column);
2338 
2339   for(i = SEARCH_TC_AGE; i < SEARCH_TC_COLUMNS; i++)
2340   {
2341     renderer = gtk_cell_renderer_text_new ();
2342     s = utf(search_tc_columns[i]);
2343     g_object_set_data (G_OBJECT (renderer), "column", (gint *)i);
2344     gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
2345                                                  -1, s, renderer,
2346                                                  "text", i,
2347                                                  NULL);
2348     g_free(s);
2349   }
2350 
2351   image = lookup_widget(window_search,"thobber");
2352   gtk_widget_hide(image);
2353   search_update();
2354   gtk_widget_show(window_search);
2355 }
2356 
my_create_window_chat(const gchar * jid)2357 void my_create_window_chat(const gchar *jid)
2358 {
2359   GtkWidget *window, *widget;
2360   struct talk *talk;
2361   struct user *user;
2362   gchar *status=NULL, *name, *s;
2363   GtkTextBuffer *buffer;
2364 
2365   name = get_user_name(jid);
2366   window = create_window_chat();
2367   talk = (struct talk*) g_malloc(sizeof(struct talk));
2368   talk->jid = g_strdup(jid);
2369   talk->window = window;
2370   talks_list = g_list_append(talks_list,(gpointer)talk);
2371   widget=lookup_widget(window,"textview_bottom");
2372 //  gtk_signal_connect (GTK_OBJECT (widget), "key_press_event",
2373 //                      GTK_SIGNAL_FUNC (on_textview_chat_bottom_key_press_event),
2374 //                      (gpointer)window);
2375   user = get_user(jid);
2376   if(user)
2377   {
2378     switch(user->type)
2379     {
2380       case USER_TLEN:
2381         status = statusy[user->status - 2];
2382         break;
2383       case USER_JABBER:
2384       case USER_WP:
2385       case USER_AGENT:
2386       case USER_GG:
2387         status = j_statusy[get_status(user)];
2388         break;
2389     }
2390     window_set_icon(window, user);
2391   }
2392   else
2393   {
2394     status = statusy[TLEN_STATUS_UNAVAILABLE - 2];
2395     window_set_icon(window, NULL);
2396   }
2397   widget = lookup_widget(window,"label_name");
2398   s = utf(name);
2399   gtk_label_set_text(GTK_LABEL(widget), s);
2400   g_free(s);
2401   widget = lookup_widget(window,"label_status");
2402   s = utf(status);
2403   gtk_label_set_text(GTK_LABEL(widget), s);
2404   g_free(s);
2405   g_free(name);
2406   widget=lookup_widget(window,"textview_top");
2407   buffer= gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
2408   gtk_text_buffer_create_tag (buffer, "fontbold","font",
2409                               "bold", NULL);
2410   gtk_text_buffer_create_tag (buffer, "datefg","foreground",
2411                               datefg, NULL);
2412   gtk_text_buffer_create_tag (buffer, "nickfg","foreground",
2413                               nickfg, NULL);
2414   gtk_text_buffer_create_tag (buffer, "textfg",
2415                               "foreground", textfg,
2416                               NULL);
2417   gtk_text_buffer_create_tag (buffer, "textbg",
2418                               "background", textbg,
2419                               "foreground", textfg,
2420 //                              "background-full-height", TRUE,
2421 //                              "background-full-height-set", TRUE,
2422 //                              "font", "bold",
2423                               NULL);
2424   widget=lookup_widget(window,"togglebutton_chat");
2425   if(preferences & PREF_ENTERON)
2426     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),TRUE);
2427   gtk_widget_show(window);
2428 }
2429 
my_create_window_login()2430 void my_create_window_login()
2431 {
2432   window_login = create_window_login();
2433   load_profiles();
2434   load_combo();
2435   gtk_widget_show(window_login);
2436 }
2437 
2438 static
add_columns(GtkTreeView * treeview)2439 void add_columns(GtkTreeView *treeview)
2440 {
2441   GtkCellRenderer *text;
2442   GtkTreeViewColumn *column;
2443 
2444   text = gtk_cell_renderer_text_new();
2445   column = gtk_tree_view_column_new_with_attributes (NULL, text,
2446                                                      "text",0,
2447                                                      NULL);
2448   gtk_tree_view_append_column(treeview, column);
2449 }
2450 
window_profiles_create_model()2451 GtkTreeModel *window_profiles_create_model()
2452 {
2453   GtkTreeStore *model;
2454   GtkTreeIter iter;
2455   GList *l = profiles_list;
2456   struct profile *p;
2457   gchar *s;
2458 
2459   model = gtk_tree_store_new(1, G_TYPE_STRING);
2460   for(;l;l=l->next)
2461   {
2462     p = (struct profile*) l->data;
2463     gtk_tree_store_append(model, &iter, NULL);
2464     s = utf(p->pname);
2465     gtk_tree_store_set(model, &iter,
2466                        0, s,
2467                        -1);
2468     g_free(s);
2469   }
2470   return GTK_TREE_MODEL(model);
2471 }
2472 
my_create_window_profiles()2473 void my_create_window_profiles()
2474 {
2475   GtkWidget *treeview;
2476   GtkTreeModel *model;
2477 
2478   window_profiles = create_window_profiles();
2479   treeview = lookup_widget(window_profiles,"treeview");
2480   add_columns(GTK_TREE_VIEW(treeview));
2481   model = window_profiles_create_model();
2482   gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), model);
2483   g_object_unref (G_OBJECT (model));
2484 }
2485 
window_profile_read_gg()2486 void window_profile_read_gg()
2487 {
2488   gchar *s;
2489   GtkWidget *entry;
2490 
2491   entry = lookup_widget(window_profile, "entry_gg_number");
2492   s = gg_read_conf(GG_CONF_NUMBER);
2493   if(s)
2494   {
2495     gtk_entry_set_text(GTK_ENTRY(entry), s);
2496     g_free(s);
2497   }
2498   entry = lookup_widget(window_profile, "entry_gg_password");
2499   s = gg_read_conf(GG_CONF_PASSWORD);
2500   if(s)
2501   {
2502     gtk_entry_set_text(GTK_ENTRY(entry), s);
2503     g_free(s);
2504   }
2505 }
2506 
my_create_window_profile(gchar * pname)2507 void my_create_window_profile(gchar *pname)
2508 {
2509   GtkWidget *entry;
2510   gchar *s;
2511   struct profile *p;
2512 
2513   window_profile = create_window_profile();
2514   if(pname)
2515   {
2516     entry = lookup_widget(window_profile,"entry_name");
2517     s = utf(pname);
2518     gtk_entry_set_text(GTK_ENTRY(entry),s);
2519     g_free(s);
2520     p = get_profile(pname);
2521     if(p)
2522     {
2523       entry = lookup_widget(window_profile,"entry_tlen_login");
2524       gtk_entry_set_text(GTK_ENTRY(entry),p->login);
2525       entry = lookup_widget(window_profile,"entry_tlen_password");
2526       gtk_entry_set_text(GTK_ENTRY(entry),p->password);
2527       if(p->smsid)
2528       {
2529         entry = lookup_widget(window_profile,"entry_sms_id");
2530         gtk_entry_set_text(GTK_ENTRY(entry),p->smsid);
2531       }
2532       if(p->smspassword)
2533       {
2534         entry = lookup_widget(window_profile,"entry_sms_password");
2535         gtk_entry_set_text(GTK_ENTRY(entry),p->smspassword);
2536       }
2537       if(p->ggnumber)
2538       {
2539         entry = lookup_widget(window_profile,"entry_gg_number");
2540         gtk_entry_set_text(GTK_ENTRY(entry),p->ggnumber);
2541       }
2542       if(p->ggpassword)
2543       {
2544         entry = lookup_widget(window_profile,"entry_gg_password");
2545         gtk_entry_set_text(GTK_ENTRY(entry),p->ggpassword);
2546       }
2547       if(p->jserver)
2548       {
2549         entry = lookup_widget(window_profile,"entry_jabber_server");
2550         gtk_entry_set_text(GTK_ENTRY(entry),p->jserver);
2551       }
2552       if(p->jlogin)
2553       {
2554         entry = lookup_widget(window_profile,"entry_jabber_jid");
2555         gtk_entry_set_text(GTK_ENTRY(entry),p->jlogin);
2556       }
2557       if(p->jpassword)
2558       {
2559         entry = lookup_widget(window_profile,"entry_jabber_password");
2560         gtk_entry_set_text(GTK_ENTRY(entry),p->jpassword);
2561       }
2562       if(p->jresource)
2563       {
2564         entry = lookup_widget(window_profile,"entry_jabber_resource");
2565         gtk_entry_set_text(GTK_ENTRY(entry),p->jresource);
2566       }
2567     }
2568   }
2569 }
2570 
my_create_window_about()2571 void my_create_window_about()
2572 {
2573   GtkWidget *window, *label;
2574 
2575   window = create_window_about();
2576   label = lookup_widget(window, "label");
2577   gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);
2578   gtk_widget_show(window);
2579 }
2580