Sun, 31 Mar 2019 23:26:07 -0400
Use G_DECLARE_FINAL_TYPE for GtkTicker.
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
1 | /* |
| 15884 | 2 | * Purple Ticker Plugin |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
26895
diff
changeset
|
3 | * The line below doesn't apply at all, does it? It should be Syd, Sean, and |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
4 | * maybe Nathan, I believe. |
| 3391 | 5 | * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald |
| 6 | * | |
| 7 | * This library is free software; you can redistribute it and/or | |
| 8 | * modify it under the terms of the GNU Library General Public | |
| 9 | * License as published by the Free Software Foundation; either | |
| 10 | * version 2 of the License, or (at your option) any later version. | |
| 11 | * | |
| 12 | * This library is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 15 | * Library General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU Library General Public | |
| 18 | * License along with this library; if not, write to the | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
17241
diff
changeset
|
19 | * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
|
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
17241
diff
changeset
|
20 | * Boston, MA 02111-1301, USA. |
| 3391 | 21 | */ |
| 22 | ||
| 23 | /* | |
| 24 | * ticker.c -- Syd Logan, Summer 2000 | |
| 25 | * pluginized- Sean Egan, Summer 2002 | |
| 26 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
27 | #include "internal.h" |
| 15577 | 28 | #include "pidgin.h" |
| 3391 | 29 | |
|
34706
02cb08146888
Renamed blist.[ch] to buddylist.[ch]
Ankit Vani <a@nevitus.org>
parents:
34699
diff
changeset
|
30 | #include "buddylist.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
31 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
32 | #include "debug.h" |
|
36543
a8c3fecee2d3
Renamed prpl.[ch] to protocol.[ch]
Ankit Vani <a@nevitus.org>
parents:
34864
diff
changeset
|
33 | #include "protocol.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
34 | #include "signals.h" |
| 9943 | 35 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 | |
|
35526
ed1be305c985
Fix gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34864
diff
changeset
|
37 | #include "gtk3compat.h" |
|
34708
dd67596485ca
Undo renames of UI blist headers back to gntblist.h and gtkblist.h
Ankit Vani <a@nevitus.org>
parents:
34706
diff
changeset
|
38 | #include "gtkblist.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
39 | #include "gtkplugin.h" |
| 17241 | 40 | #include "gtkutils.h" |
|
26895
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
41 | #include "pidginstock.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
42 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
43 | #include "gtkticker.h" |
| 3391 | 44 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
45 | #define TICKER_PLUGIN_ID "gtk-ticker" |
| 3867 | 46 | |
| 3391 | 47 | static GtkWidget *tickerwindow = NULL; |
| 48 | static GtkWidget *ticker; | |
| 49 | ||
| 50 | typedef struct { | |
| 15884 | 51 | PurpleContact *contact; |
| 3391 | 52 | GtkWidget *ebox; |
| 53 | GtkWidget *label; | |
| 5170 | 54 | GtkWidget *icon; |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
55 | guint timeout; |
| 3391 | 56 | } TickerData; |
| 57 | ||
|
26893
351f48f83366
Bring the conversation to front from a click on the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24956
diff
changeset
|
58 | static GList *tickerbuds = NULL; |
| 3391 | 59 | |
| 15884 | 60 | static void buddy_ticker_update_contact(PurpleContact *contact); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
61 | |
| 5172 | 62 | static gboolean buddy_ticker_destroy_window(GtkWidget *window, |
| 63 | GdkEventAny *event, gpointer data) { | |
| 64 | if(window) | |
| 65 | gtk_widget_hide(window); | |
| 66 | ||
| 67 | return TRUE; /* don't actually destroy the window */ | |
| 3391 | 68 | } |
| 69 | ||
|
22104
56970903b8e9
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents:
20288
diff
changeset
|
70 | static void buddy_ticker_create_window(void) { |
| 5170 | 71 | if(tickerwindow) { |
| 72 | gtk_widget_show(tickerwindow); | |
| 73 | return; | |
| 74 | } | |
| 3391 | 75 | |
| 17213 | 76 | tickerwindow = pidgin_create_window(_("Buddy Ticker"), 0, "ticker", TRUE); |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
77 | gtk_window_set_default_size(GTK_WINDOW(tickerwindow), 500, -1); |
| 5172 | 78 | g_signal_connect(G_OBJECT(tickerwindow), "delete_event", |
| 5170 | 79 | G_CALLBACK (buddy_ticker_destroy_window), NULL); |
| 3391 | 80 | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
81 | ticker = gtk_ticker_new(); |
| 5170 | 82 | gtk_ticker_set_spacing(GTK_TICKER(ticker), 20); |
| 83 | gtk_container_add(GTK_CONTAINER(tickerwindow), ticker); | |
| 84 | gtk_ticker_set_interval(GTK_TICKER(ticker), 500); | |
| 85 | gtk_ticker_set_scootch(GTK_TICKER(ticker), 10); | |
| 86 | gtk_ticker_start_scroll(GTK_TICKER(ticker)); | |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
87 | gtk_widget_set_size_request(ticker, 1, -1); |
| 3391 | 88 | |
| 5170 | 89 | gtk_widget_show_all(tickerwindow); |
| 3391 | 90 | } |
| 91 | ||
| 5170 | 92 | static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
| 15884 | 93 | PurpleContact *contact = user_data; |
| 94 | PurpleBuddy *b = purple_contact_get_priority_buddy(contact); | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
95 | |
|
34660
68c776e3436e
Refactored pidgin plugins to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents:
31294
diff
changeset
|
96 | PurpleIMConversation *im = purple_im_conversation_new(purple_buddy_get_account(b), |
|
68c776e3436e
Refactored pidgin plugins to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents:
31294
diff
changeset
|
97 | purple_buddy_get_name(b)); |
|
68c776e3436e
Refactored pidgin plugins to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents:
31294
diff
changeset
|
98 | purple_conversation_present(PURPLE_CONVERSATION(im)); |
| 3391 | 99 | return TRUE; |
| 100 | } | |
| 101 | ||
| 15884 | 102 | static TickerData *buddy_ticker_find_contact(PurpleContact *c) { |
| 5170 | 103 | GList *tb; |
| 104 | for(tb = tickerbuds; tb; tb = tb->next) { | |
| 105 | TickerData *td = tb->data; | |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
106 | if(td->contact == c) |
| 5170 | 107 | return td; |
| 108 | } | |
| 109 | return NULL; | |
| 110 | } | |
| 111 | ||
|
26895
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
112 | static void buddy_ticker_set_pixmap(PurpleContact *c) |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
113 | { |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
114 | TickerData *td = buddy_ticker_find_contact(c); |
|
26895
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
115 | PurpleBuddy *buddy; |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
116 | PurplePresence *presence; |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
117 | const char *stock; |
| 3391 | 118 | |
| 5170 | 119 | if(!td) |
| 3391 | 120 | return; |
| 5170 | 121 | |
|
26895
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
122 | buddy = purple_contact_get_priority_buddy(c); |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
123 | presence = purple_buddy_get_presence(buddy); |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
124 | stock = pidgin_stock_id_from_presence(presence); |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
125 | if(!td->icon) { |
| 5170 | 126 | td->icon = gtk_image_new(); |
|
26895
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
127 | g_object_set(G_OBJECT(td->icon), "stock", stock, |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
128 | "icon-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC), |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
129 | NULL); |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
130 | } else { |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
131 | g_object_set(G_OBJECT(td->icon), "stock", stock, NULL); |
|
287b2c32dd29
Use stock id in the ticker.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26893
diff
changeset
|
132 | } |
| 5170 | 133 | } |
| 134 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
135 | static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
136 | TickerData *td = data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
137 | |
|
20206
a121040d571b
applied changes from 0573c84391460ff90a7de830442aad5ffb6a0c5f
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
138 | if (g_list_find(tickerbuds, td) != NULL) { |
|
a121040d571b
applied changes from 0573c84391460ff90a7de830442aad5ffb6a0c5f
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
139 | buddy_ticker_update_contact(td->contact); |
|
a121040d571b
applied changes from 0573c84391460ff90a7de830442aad5ffb6a0c5f
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
140 | td->timeout = 0; |
|
a121040d571b
applied changes from 0573c84391460ff90a7de830442aad5ffb6a0c5f
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
141 | } |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
142 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
143 | return FALSE; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
144 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
145 | |
| 15884 | 146 | static void buddy_ticker_add_buddy(PurpleBuddy *b) { |
| 5170 | 147 | GtkWidget *hbox; |
| 148 | TickerData *td; | |
| 15884 | 149 | PurpleContact *contact; |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
150 | |
| 15884 | 151 | contact = purple_buddy_get_contact(b); |
| 5170 | 152 | |
| 153 | buddy_ticker_create_window(); | |
| 5172 | 154 | |
| 3391 | 155 | if (!ticker) |
| 156 | return; | |
| 157 | ||
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
158 | if (buddy_ticker_find_contact(contact)) |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
159 | { |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
160 | buddy_ticker_update_contact(contact); |
| 3391 | 161 | return; |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
162 | } |
| 3391 | 163 | |
| 5170 | 164 | td = g_new0(TickerData, 1); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
165 | td->contact = contact; |
| 5170 | 166 | tickerbuds = g_list_append(tickerbuds, td); |
| 3391 | 167 | |
| 5170 | 168 | td->ebox = gtk_event_box_new(); |
| 169 | gtk_ticker_add(GTK_TICKER(ticker), td->ebox); | |
|
35526
ed1be305c985
Fix gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34864
diff
changeset
|
170 | hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); |
| 5170 | 171 | gtk_container_add(GTK_CONTAINER(td->ebox), hbox); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
172 | buddy_ticker_set_pixmap(contact); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
173 | gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 0); |
| 3391 | 174 | |
| 5170 | 175 | g_signal_connect(G_OBJECT(td->ebox), "button-press-event", |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
176 | G_CALLBACK(buddy_click_cb), contact); |
| 3391 | 177 | |
| 15884 | 178 | td->label = gtk_label_new(purple_contact_get_alias(contact)); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
179 | gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 2); |
| 5170 | 180 | |
| 181 | gtk_widget_show_all(td->ebox); | |
| 182 | gtk_widget_show(tickerwindow); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
183 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
184 | /* |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
185 | * Update the icon in a few seconds (after the open door icon has |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
186 | * changed). This is somewhat ugly. |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
187 | */ |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
188 | td->timeout = g_timeout_add(11000, buddy_ticker_set_pixmap_cb, td); |
| 3391 | 189 | } |
| 190 | ||
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
191 | static void buddy_ticker_remove(TickerData *td) { |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
192 | gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
193 | tickerbuds = g_list_remove(tickerbuds, td); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
194 | if (td->timeout != 0) |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
195 | g_source_remove(td->timeout); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
196 | g_free(td); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
197 | } |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
198 | |
| 15884 | 199 | static void buddy_ticker_update_contact(PurpleContact *contact) { |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
200 | TickerData *td = buddy_ticker_find_contact(contact); |
| 3391 | 201 | |
| 5170 | 202 | if (!td) |
| 203 | return; | |
| 3391 | 204 | |
| 5172 | 205 | /* pop up the ticker window again */ |
| 206 | buddy_ticker_create_window(); | |
| 15884 | 207 | if (purple_contact_get_priority_buddy(contact) == NULL) |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
208 | buddy_ticker_remove(td); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
209 | else { |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
210 | buddy_ticker_set_pixmap(contact); |
| 15884 | 211 | gtk_label_set_text(GTK_LABEL(td->label), purple_contact_get_alias(contact)); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
212 | } |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
213 | } |
| 5172 | 214 | |
| 15884 | 215 | static void buddy_ticker_remove_buddy(PurpleBuddy *b) { |
| 216 | PurpleContact *c = purple_buddy_get_contact(b); | |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
217 | TickerData *td = buddy_ticker_find_contact(c); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
218 | |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
219 | if (!td) |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
220 | return; |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
221 | |
| 15884 | 222 | purple_contact_invalidate_priority_buddy(c); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
223 | |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
224 | /* pop up the ticker window again */ |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
225 | buddy_ticker_create_window(); |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
226 | buddy_ticker_update_contact(c); |
| 3391 | 227 | } |
| 228 | ||
|
22104
56970903b8e9
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents:
20288
diff
changeset
|
229 | static void buddy_ticker_show(void) |
| 3391 | 230 | { |
|
34864
0e292d8887de
Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents:
34760
diff
changeset
|
231 | PurpleBlistNode *gnode, *cnode, *bnode; |
| 15884 | 232 | PurpleBuddy *b; |
| 3391 | 233 | |
|
24956
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
234 | for(gnode = purple_blist_get_root(); |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
235 | gnode; |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
236 | gnode = purple_blist_node_get_sibling_next(gnode)) |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
237 | { |
|
34696
6e0d13978666
Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents:
34660
diff
changeset
|
238 | if(!PURPLE_IS_GROUP(gnode)) |
| 5170 | 239 | continue; |
|
24956
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
240 | for(cnode = purple_blist_node_get_first_child(gnode); |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
241 | cnode; |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
242 | cnode = purple_blist_node_get_sibling_next(cnode)) |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
243 | { |
|
34696
6e0d13978666
Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents:
34660
diff
changeset
|
244 | if(!PURPLE_IS_CONTACT(cnode)) |
| 5170 | 245 | continue; |
|
24956
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
246 | for(bnode = purple_blist_node_get_first_child(cnode); |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
247 | bnode; |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
248 | bnode = purple_blist_node_get_sibling_next(bnode)) |
|
05aa5ba1eab4
updated the pidgin plugins for the blist struct hiding
Gary Kramlich <grim@reaperworld.com>
parents:
22104
diff
changeset
|
249 | { |
|
34696
6e0d13978666
Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents:
34660
diff
changeset
|
250 | if(!PURPLE_IS_BUDDY(bnode)) |
| 6695 | 251 | continue; |
|
34740
9401f9b1ca68
Used GObject-style casts in plugins.
Ankit Vani <a@nevitus.org>
parents:
34708
diff
changeset
|
252 | b = PURPLE_BUDDY(bnode); |
|
34760
062535fbe1e9
Renamed PURPLE_IS_BUDDY_ONLINE back to PURPLE_BUDDY_IS_ONLINE
Ankit Vani <a@nevitus.org>
parents:
34740
diff
changeset
|
253 | if(PURPLE_BUDDY_IS_ONLINE(b)) |
| 6695 | 254 | buddy_ticker_add_buddy(b); |
| 255 | } | |
| 3391 | 256 | } |
| 257 | } | |
| 258 | } | |
| 259 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
260 | static void |
| 15884 | 261 | buddy_signon_cb(PurpleBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
262 | { |
| 15884 | 263 | PurpleContact *c = purple_buddy_get_contact(b); |
| 264 | purple_contact_invalidate_priority_buddy(c); | |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
265 | if(buddy_ticker_find_contact(c)) |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
266 | buddy_ticker_update_contact(c); |
| 5170 | 267 | else |
| 268 | buddy_ticker_add_buddy(b); | |
| 3391 | 269 | } |
| 270 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
271 | static void |
| 15884 | 272 | buddy_signoff_cb(PurpleBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
273 | { |
| 5170 | 274 | buddy_ticker_remove_buddy(b); |
| 5185 | 275 | if(!tickerbuds) |
| 276 | gtk_widget_hide(tickerwindow); | |
| 3391 | 277 | } |
| 278 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 | static void |
| 15884 | 280 | status_changed_cb(PurpleBuddy *b, PurpleStatus *os, PurpleStatus *s) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 | { |
| 15884 | 282 | PurpleContact *c = purple_buddy_get_contact(b); |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
283 | if(buddy_ticker_find_contact(c)) |
|
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
284 | buddy_ticker_set_pixmap(c); |
| 5170 | 285 | else |
| 286 | buddy_ticker_add_buddy(b); | |
| 3391 | 287 | } |
| 288 | ||
| 8213 | 289 | static void |
| 15884 | 290 | signoff_cb(PurpleConnection *gc) |
| 8213 | 291 | { |
| 292 | TickerData *td; | |
| 15884 | 293 | if (!purple_connections_get_all()) { |
| 8213 | 294 | while (tickerbuds) { |
| 295 | td = tickerbuds->data; | |
| 296 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); | |
| 297 | if (td->timeout != 0) | |
| 298 | g_source_remove(td->timeout); | |
| 299 | g_free(td); | |
| 300 | } | |
| 301 | gtk_widget_destroy(tickerwindow); | |
| 302 | tickerwindow = NULL; | |
| 303 | ticker = NULL; | |
| 304 | } else { | |
| 305 | GList *t = tickerbuds; | |
| 306 | while (t) { | |
| 307 | td = t->data; | |
| 308 | t = t->next; | |
|
13151
e6f06eacea11
[gaim-migrate @ 15513]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11935
diff
changeset
|
309 | buddy_ticker_update_contact(td->contact); |
| 8213 | 310 | } |
| 311 | } | |
| 312 | } | |
| 313 | ||
| 314 | ||
| 3630 | 315 | /* |
| 316 | * EXPORTED FUNCTIONS | |
| 317 | */ | |
| 318 | ||
|
36754
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
319 | static PidginPluginInfo * |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
320 | plugin_query(GError **error) |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
321 | { |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
322 | const gchar * const authors[] = { |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
323 | "Syd Logan", |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
324 | NULL |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
325 | }; |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
326 | |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
327 | return pidgin_plugin_info_new( |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
328 | "id", TICKER_PLUGIN_ID, |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
329 | "name", N_("Buddy Ticker"), |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
330 | "version", DISPLAY_VERSION, |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
331 | "category", N_("User interface"), |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
332 | "summary", N_("A horizontal scrolling version of the buddy list."), |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
333 | "description", N_("A horizontal scrolling version of the buddy list."), |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
334 | "authors", authors, |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
335 | "website", PURPLE_WEBSITE, |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
336 | "abi-version", PURPLE_ABI_VERSION, |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
337 | NULL |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
338 | ); |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
339 | } |
|
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
340 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
341 | static gboolean |
|
36754
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
342 | plugin_load(PurplePlugin *plugin, GError **error) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
343 | { |
| 15884 | 344 | void *blist_handle = purple_blist_get_handle(); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
345 | |
|
36890
fa13e99f8248
Register GtkTicker type dynamically
Ankit Vani <a@nevitus.org>
parents:
36754
diff
changeset
|
346 | gtk_ticker_register_type(plugin); |
|
fa13e99f8248
Register GtkTicker type dynamically
Ankit Vani <a@nevitus.org>
parents:
36754
diff
changeset
|
347 | |
| 15884 | 348 | purple_signal_connect(purple_connections_get_handle(), "signed-off", |
| 349 | plugin, PURPLE_CALLBACK(signoff_cb), NULL); | |
| 350 | purple_signal_connect(blist_handle, "buddy-signed-on", | |
| 351 | plugin, PURPLE_CALLBACK(buddy_signon_cb), NULL); | |
| 352 | purple_signal_connect(blist_handle, "buddy-signed-off", | |
| 353 | plugin, PURPLE_CALLBACK(buddy_signoff_cb), NULL); | |
| 354 | purple_signal_connect(blist_handle, "buddy-status-changed", | |
| 355 | plugin, PURPLE_CALLBACK(status_changed_cb), NULL); | |
| 3391 | 356 | |
| 15884 | 357 | if (purple_connections_get_all()) |
| 5170 | 358 | buddy_ticker_show(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
359 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
360 | return TRUE; |
| 3391 | 361 | } |
| 362 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
363 | static gboolean |
|
36754
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
364 | plugin_unload(PurplePlugin *plugin, GError **error) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
365 | { |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
366 | TickerData *td; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
367 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
368 | while (tickerbuds) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
369 | td = tickerbuds->data; |
| 5186 | 370 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
371 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
372 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
373 | g_free(td); |
| 5185 | 374 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
375 | |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
376 | if (tickerwindow != NULL) { |
|
5983
435a19acf12a
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
377 | gtk_widget_destroy(tickerwindow); |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
378 | tickerwindow = NULL; |
|
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
379 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
380 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
381 | return TRUE; |
| 3391 | 382 | } |
| 5170 | 383 | |
|
36754
8250d6be8c02
Started refactoring pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
384 | PURPLE_PLUGIN_INIT(ticker, plugin_query, plugin_load, plugin_unload); |