comparison plugins/notify.c @ 5676:dae79aefac8d

[gaim-migrate @ 6094] I've been meaning to do this for a LONG time. The conversation API now follows the naming convention of the rest of the new APIs. I'll get some g_return_*_if_fail() checks in there soon. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Mon, 02 Jun 2003 21:51:06 +0000
parents 2c4c975620f0
children 7d385de2f9cd
comparison
equal deleted inserted replaced
5675:17e345ffeddb 5676:dae79aefac8d
69 gboolean count_remove(GtkWidget *widget); 69 gboolean count_remove(GtkWidget *widget);
70 /* quote functions */ 70 /* quote functions */
71 void quote_add(GtkWidget *widget); 71 void quote_add(GtkWidget *widget);
72 gboolean quote_remove(GtkWidget *widget); 72 gboolean quote_remove(GtkWidget *widget);
73 /* urgent functions */ 73 /* urgent functions */
74 void urgent_add(struct gaim_conversation *c); 74 void urgent_add(GaimConversation *c);
75 gboolean urgent_remove(struct gaim_conversation *c); 75 gboolean urgent_remove(GaimConversation *c);
76 76
77 int notify(struct gaim_conversation *cnv) { 77 int notify(GaimConversation *cnv) {
78 struct gaim_gtk_window *gtkwin; 78 GaimGtkWindow *gtkwin;
79 Window focus_return; 79 Window focus_return;
80 int revert_to_return; 80 int revert_to_return;
81 81
82 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(cnv)); 82 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(cnv));
83 83
95 urgent_add(cnv); 95 urgent_add(cnv);
96 } 96 }
97 return 0; 97 return 0;
98 } 98 }
99 99
100 guint unnotify(struct gaim_conversation *c, gboolean clean) { 100 guint unnotify(GaimConversation *c, gboolean clean) {
101 struct gaim_gtk_window *gtkwin; 101 GaimGtkWindow *gtkwin;
102 guint option = 0; 102 guint option = 0;
103 103
104 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 104 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
105 105
106 /* The top level ifs check whether we are either cleaning all methods, 106 /* The top level ifs check whether we are either cleaning all methods,
128 128
129 return option; 129 return option;
130 } 130 }
131 131
132 void chat_recv_im(struct gaim_connection *gc, int id, char **who, char **text) { 132 void chat_recv_im(struct gaim_connection *gc, int id, char **who, char **text) {
133 struct gaim_conversation *c = gaim_find_chat(gc, id); 133 GaimConversation *c = gaim_find_chat(gc, id);
134 134
135 if (c && (type & TYPE_CHAT)) 135 if (c && (type & TYPE_CHAT))
136 notify(c); 136 notify(c);
137 return; 137 return;
138 } 138 }
139 139
140 void chat_sent_im(struct gaim_connection *gc, int id, char **text) { 140 void chat_sent_im(struct gaim_connection *gc, int id, char **text) {
141 struct gaim_conversation *c = gaim_find_chat(gc, id); 141 GaimConversation *c = gaim_find_chat(gc, id);
142 142
143 if (c && (type & TYPE_CHAT)) 143 if (c && (type & TYPE_CHAT))
144 unnotify(c, FALSE); 144 unnotify(c, FALSE);
145 return; 145 return;
146 } 146 }
147 147
148 int im_recv_im(struct gaim_connection *gc, char **who, char **what, void *m) { 148 int im_recv_im(struct gaim_connection *gc, char **who, char **what, void *m) {
149 struct gaim_conversation *c = gaim_find_conversation(*who); 149 GaimConversation *c = gaim_find_conversation(*who);
150 150
151 if (c && (type & TYPE_IM)) 151 if (c && (type & TYPE_IM))
152 notify(c); 152 notify(c);
153 return 0; 153 return 0;
154 } 154 }
155 155
156 int im_sent_im(struct gaim_connection *gc, char *who, char **what, void *m) { 156 int im_sent_im(struct gaim_connection *gc, char *who, char **what, void *m) {
157 struct gaim_conversation *c = gaim_find_conversation(who); 157 GaimConversation *c = gaim_find_conversation(who);
158 158
159 if (c && (type & TYPE_IM)) 159 if (c && (type & TYPE_IM))
160 unnotify(c, FALSE); 160 unnotify(c, FALSE);
161 return 0; 161 return 0;
162 } 162 }
163 163
164 int attach_signals(struct gaim_conversation *c) { 164 int attach_signals(GaimConversation *c) {
165 struct gaim_gtk_conversation *gtkconv; 165 GaimGtkConversation *gtkconv;
166 struct gaim_gtk_window *gtkwin; 166 GaimGtkWindow *gtkwin;
167 167
168 gtkconv = GAIM_GTK_CONVERSATION(c); 168 gtkconv = GAIM_GTK_CONVERSATION(c);
169 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 169 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
170 170
171 if (choice & NOTIFY_FOCUS) { 171 if (choice & NOTIFY_FOCUS) {
187 g_object_set_data(G_OBJECT(gtkwin->window), "user_data", c); 187 g_object_set_data(G_OBJECT(gtkwin->window), "user_data", c);
188 g_object_set_data(G_OBJECT(gtkwin->window), "notify_data", GUINT_TO_POINTER(choice)); 188 g_object_set_data(G_OBJECT(gtkwin->window), "notify_data", GUINT_TO_POINTER(choice));
189 return 0; 189 return 0;
190 } 190 }
191 191
192 void detach_signals(struct gaim_conversation *c) { 192 void detach_signals(GaimConversation *c) {
193 struct gaim_gtk_conversation *gtkconv; 193 GaimGtkConversation *gtkconv;
194 struct gaim_gtk_window *gtkwin; 194 GaimGtkWindow *gtkwin;
195 guint options; 195 guint options;
196 196
197 gtkconv = GAIM_GTK_CONVERSATION(c); 197 gtkconv = GAIM_GTK_CONVERSATION(c);
198 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 198 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
199 199
212 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->entry), un_star, gtkwin->window); 212 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->entry), un_star, gtkwin->window);
213 } 213 }
214 } 214 }
215 215
216 void new_conv(char *who) { 216 void new_conv(char *who) {
217 struct gaim_conversation *c = gaim_find_conversation(who); 217 GaimConversation *c = gaim_find_conversation(who);
218 218
219 if (c && (type & TYPE_IM)) 219 if (c && (type & TYPE_IM))
220 attach_signals(c); 220 attach_signals(c);
221 } 221 }
222 222
223 void chat_join(struct gaim_connection *gc, int id, char *room) { 223 void chat_join(struct gaim_connection *gc, int id, char *room) {
224 struct gaim_conversation *c = gaim_find_chat(gc, id); 224 GaimConversation *c = gaim_find_chat(gc, id);
225 225
226 if (c && (type & TYPE_CHAT)) 226 if (c && (type & TYPE_CHAT))
227 attach_signals(c); 227 attach_signals(c);
228 } 228 }
229 229
230 int un_star(GtkWidget *widget, gpointer data) { 230 int un_star(GtkWidget *widget, gpointer data) {
231 struct gaim_conversation *c = g_object_get_data(G_OBJECT(widget), "user_data"); 231 GaimConversation *c = g_object_get_data(G_OBJECT(widget), "user_data");
232 232
233 if (method & METHOD_QUOTE) 233 if (method & METHOD_QUOTE)
234 quote_remove(widget); 234 quote_remove(widget);
235 if (method & METHOD_COUNT) 235 if (method & METHOD_COUNT)
236 count_remove(widget); 236 count_remove(widget);
352 return TRUE; 352 return TRUE;
353 } 353 }
354 return FALSE; 354 return FALSE;
355 } 355 }
356 356
357 void urgent_add(struct gaim_conversation *c) { 357 void urgent_add(GaimConversation *c) {
358 struct gaim_gtk_window *gtkwin; 358 GaimGtkWindow *gtkwin;
359 XWMHints *hints; 359 XWMHints *hints;
360 360
361 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 361 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
362 362
363 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); 363 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window));
364 hints->flags |= XUrgencyHint; 364 hints->flags |= XUrgencyHint;
365 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); 365 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints);
366 XFree(hints); 366 XFree(hints);
367 } 367 }
368 368
369 gboolean urgent_remove(struct gaim_conversation *c) { 369 gboolean urgent_remove(GaimConversation *c) {
370 struct gaim_gtk_conversation *gtkconv; 370 GaimGtkConversation *gtkconv;
371 371
372 gtkconv = GAIM_GTK_CONVERSATION(c); 372 gtkconv = GAIM_GTK_CONVERSATION(c);
373 373
374 if ((gaim_conversation_get_type(c) == GAIM_CONV_CHAT && 374 if ((gaim_conversation_get_type(c) == GAIM_CONV_CHAT &&
375 (chat_options & OPT_CHAT_ONE_WINDOW)) || 375 (chat_options & OPT_CHAT_ONE_WINDOW)) ||
376 (gaim_conversation_get_type(c) != GAIM_CONV_CHAT && 376 (gaim_conversation_get_type(c) != GAIM_CONV_CHAT &&
377 (im_options & OPT_IM_ONE_WINDOW))) { 377 (im_options & OPT_IM_ONE_WINDOW))) {
378 if (gaim_conversation_get_type(c) == GAIM_CONV_CHAT) { 378 if (gaim_conversation_get_type(c) == GAIM_CONV_CHAT) {
379 struct gaim_conversation *c = (struct gaim_conversation *)gaim_get_chats()->data; 379 GaimConversation *c = (GaimConversation *)gaim_get_chats()->data;
380 struct gaim_gtk_window *gtkwin; 380 GaimGtkWindow *gtkwin;
381 GdkWindow *win; 381 GdkWindow *win;
382 XWMHints *hints; 382 XWMHints *hints;
383 383
384 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 384 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
385 385
393 return TRUE; 393 return TRUE;
394 } 394 }
395 XFree(hints); 395 XFree(hints);
396 return FALSE; 396 return FALSE;
397 } else { 397 } else {
398 struct gaim_conversation *c; 398 GaimConversation *c;
399 struct gaim_gtk_window *gtkwin; 399 GaimGtkWindow *gtkwin;
400 GdkWindow *win; 400 GdkWindow *win;
401 XWMHints *hints; 401 XWMHints *hints;
402 402
403 c = (struct gaim_conversation *)gaim_get_ims()->data; 403 c = (GaimConversation *)gaim_get_ims()->data;
404 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 404 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
405 win = gtkwin->window->window; 405 win = gtkwin->window->window;
406 406
407 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); 407 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win));
408 if (hints->flags & XUrgencyHint) { 408 if (hints->flags & XUrgencyHint) {
413 } 413 }
414 XFree(hints); 414 XFree(hints);
415 return FALSE; 415 return FALSE;
416 } 416 }
417 } else { 417 } else {
418 struct gaim_gtk_window *gtkwin; 418 GaimGtkWindow *gtkwin;
419 XWMHints *hints; 419 XWMHints *hints;
420 420
421 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 421 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
422 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); 422 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window));
423 423
525 void apply_options(GtkWidget *widget, gpointer data) { 525 void apply_options(GtkWidget *widget, gpointer data) {
526 GList *cnv = gaim_get_conversations(); 526 GList *cnv = gaim_get_conversations();
527 527
528 while (cnv) { 528 while (cnv) {
529 guint notification; 529 guint notification;
530 struct gaim_conversation *c = (struct gaim_conversation *) cnv->data; 530 GaimConversation *c = (GaimConversation *) cnv->data;
531 struct gaim_gtk_conversation *gtkconv; 531 GaimGtkConversation *gtkconv;
532 struct gaim_gtk_window *gtkwin; 532 GaimGtkWindow *gtkwin;
533 guint options = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(c->window), "notify_data")); 533 guint options = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(c->window), "notify_data"));
534 534
535 gtkconv = GAIM_GTK_CONVERSATION(c); 535 gtkconv = GAIM_GTK_CONVERSATION(c);
536 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); 536 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
537 537
662 plugin_unload(GaimPlugin *plugin) 662 plugin_unload(GaimPlugin *plugin)
663 { 663 {
664 GList *c = gaim_get_conversations(); 664 GList *c = gaim_get_conversations();
665 665
666 while (c) { 666 while (c) {
667 struct gaim_conversation *cnv = (struct gaim_conversation *)c->data; 667 GaimConversation *cnv = (GaimConversation *)c->data;
668 struct gaim_gtk_window *gtkwin; 668 GaimGtkWindow *gtkwin;
669 669
670 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(cnv)); 670 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(cnv));
671 671
672 detach_signals(cnv); 672 detach_signals(cnv);
673 un_star(gtkwin->window, NULL); 673 un_star(gtkwin->window, NULL);