Mercurial > pidgin
annotate src/away.c @ 9699:267eab8f3fa4
[gaim-migrate @ 10558]
Add a password hint to the "Enter password" dialog.
Also added a gaim_account_get_protocol_name() to account.c/.h
This change sponsored in part by Daniel Atallah, Jon Oberheide, Mark
Doliner, the National Science Foundation, and by viewers like you.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sat, 07 Aug 2004 15:04:15 +0000 |
| parents | a049733e41f3 |
| children | 4d05b6e9e9cd |
| rev | line source |
|---|---|
| 1 | 1 /* |
| 2 * gaim | |
| 3 * | |
| 8046 | 4 * Gaim is the legal property of its developers, whose names are too numerous |
| 5 * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 6 * source distribution. | |
| 1 | 7 * |
| 8 * This program is free software; you can redistribute it and/or modify | |
| 9 * it under the terms of the GNU General Public License as published by | |
| 10 * the Free Software Foundation; either version 2 of the License, or | |
| 11 * (at your option) any later version. | |
| 12 * | |
| 13 * This program is distributed in the hope that it will be useful, | |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 * GNU General Public License for more details. | |
| 17 * | |
| 18 * You should have received a copy of the GNU General Public License | |
| 19 * along with this program; if not, write to the Free Software | |
| 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
21 * |
| 1 | 22 */ |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
23 #include "internal.h" |
| 1 | 24 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
25 #include "conversation.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
26 #include "debug.h" |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
27 #include "plugin.h" |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
28 #include "prefs.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
29 #include "prpl.h" |
| 6727 | 30 #include "status.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
31 #include "util.h" |
| 8807 | 32 #include "request.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
33 |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6284
diff
changeset
|
34 /* XXX CORE/UI: Until we can get rid of the message queue stuff... */ |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
35 #include "gaim.h" |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6284
diff
changeset
|
36 #include "gtkinternal.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
37 #include "gtkblist.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
38 #include "gtkimhtml.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
39 #include "gtkprefs.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
40 #include "gtkutils.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
41 #include "ui.h" |
| 1 | 42 |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
43 GtkWidget *imaway = NULL; |
|
652
4d3285caa191
[gaim-migrate @ 662]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
621
diff
changeset
|
44 GtkWidget *awaymenu = NULL; |
| 4412 | 45 GtkWidget *awayqueue = NULL; |
| 46 GtkListStore *awayqueuestore = NULL; | |
| 47 GtkWidget *awayqueuesw; | |
| 1773 | 48 |
| 6479 | 49 GSList *message_queue = NULL; |
| 50 GSList *unread_message_queue = NULL; | |
| 51 | |
| 52 GSList *away_messages = NULL; | |
| 1 | 53 struct away_message *awaymessage = NULL; |
| 54 | |
| 4412 | 55 static void dequeue_message(GtkTreeIter *iter) |
| 56 { | |
| 57 gchar *name; | |
| 58 GSList *templist; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
59 GaimConversation *cnv; |
| 9550 | 60 gboolean orig_while_away; |
| 61 | |
| 62 orig_while_away = gaim_prefs_get_bool("/core/sound/while_away"); | |
| 63 if (orig_while_away) | |
| 64 gaim_prefs_set_bool("/core/sound/while_away", FALSE); | |
| 4412 | 65 |
| 66 gtk_tree_model_get(GTK_TREE_MODEL(awayqueuestore), iter, 0, &name, -1); | |
| 4491 | 67 |
|
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8413
diff
changeset
|
68 gaim_debug(GAIM_DEBUG_INFO, "away", "Dequeueing messages from %s.\n", |
|
5213
1cf4eb75e3ee
[gaim-migrate @ 5583]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
69 name); |
| 4491 | 70 |
| 4412 | 71 templist = message_queue; |
| 4491 | 72 |
| 4412 | 73 while (templist) { |
| 74 struct queued_message *qm = templist->data; | |
| 75 if (templist->data) { | |
| 4793 | 76 if (!gaim_utf8_strcasecmp(qm->name, name)) { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
77 GaimAccount *account = NULL; |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
78 |
|
5580
86456ec3ca25
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
79 if (g_list_index(gaim_accounts_get_all(), qm->account) >= 0) |
| 4608 | 80 account = qm->account; |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
81 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
82 cnv = gaim_find_conversation_with_account(name, account); |
| 4412 | 83 |
| 84 if (!cnv) | |
| 4491 | 85 cnv = gaim_conversation_new(GAIM_CONV_IM, account, qm->name); |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
86 else |
| 4491 | 87 gaim_conversation_set_account(cnv, account); |
| 4412 | 88 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
89 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, qm->message, |
| 4412 | 90 qm->flags, qm->tm); |
| 91 g_free(qm->message); | |
| 92 g_free(qm); | |
| 93 templist = message_queue = g_slist_remove(message_queue, qm); | |
| 4491 | 94 |
| 4412 | 95 } else { |
| 96 templist = templist->next; | |
| 97 } | |
| 98 } | |
| 99 } | |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
100 |
| 4412 | 101 g_free(name); |
| 102 /* In GTK 2.2, _store_remove actually returns whether iter is valid or not | |
| 103 * after the remove, but in GTK 2.0 it is a void function. */ | |
| 104 gtk_list_store_remove(awayqueuestore, iter); | |
| 9550 | 105 |
| 106 if (orig_while_away) | |
| 107 gaim_prefs_set_bool("/core/sound/while_away", orig_while_away); | |
| 4412 | 108 } |
| 109 | |
| 4274 | 110 void purge_away_queue(GSList **queue) |
| 1773 | 111 { |
| 4274 | 112 GSList *q = *queue; |
| 113 struct queued_message *qm; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5593
diff
changeset
|
114 GaimConversation *cnv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
115 GaimAccount *account; |
| 9550 | 116 gboolean orig_while_away; |
| 117 | |
| 118 orig_while_away = gaim_prefs_get_bool("/core/sound/while_away"); | |
| 119 if (orig_while_away) | |
| 120 gaim_prefs_set_bool("/core/sound/while_away", FALSE); | |
| 1773 | 121 |
| 4274 | 122 while (q) { |
| 123 qm = q->data; | |
| 4167 | 124 |
| 4491 | 125 account = NULL; |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
126 |
|
5580
86456ec3ca25
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
127 if (g_list_index(gaim_accounts_get_all(), qm->account) >= 0) |
| 4608 | 128 account = qm->account; |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
129 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6479
diff
changeset
|
130 cnv = gaim_find_conversation_with_account(qm->name, account); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4274
diff
changeset
|
131 |
| 4167 | 132 if (!cnv) |
| 4491 | 133 cnv = gaim_conversation_new(GAIM_CONV_IM, account, qm->name); |
|
4476
62c1e5e656d0
[gaim-migrate @ 4751]
Christian Hammond <chipx86@chipx86.com>
parents:
4412
diff
changeset
|
134 else |
| 4491 | 135 gaim_conversation_set_account(cnv, account); |
| 4274 | 136 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
137 gaim_conv_im_write(GAIM_CONV_IM(cnv), NULL, qm->message, qm->flags, qm->tm); |
| 4167 | 138 |
| 139 g_free(qm->message); | |
| 140 g_free(qm); | |
| 4274 | 141 |
| 142 q->data = NULL; | |
| 143 q = q->next; | |
| 4167 | 144 } |
| 145 | |
| 4274 | 146 g_slist_free(*queue); |
| 147 *queue = NULL; | |
| 9550 | 148 |
| 149 if (orig_while_away) | |
| 150 gaim_prefs_set_bool("/core/sound/while_away", orig_while_away); | |
| 4167 | 151 } |
| 152 | |
| 4412 | 153 gint dequeue_cb(GtkWidget *treeview, GdkEventButton *event, gpointer data) { |
| 154 GtkTreeIter iter; | |
| 155 GtkTreeSelection *select; | |
| 4491 | 156 |
| 4167 | 157 if(!(event->type == GDK_2BUTTON_PRESS && event->button == 1)) |
|
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8413
diff
changeset
|
158 return FALSE; /* Double clicking on the list will dequeue that user's messages. */ |
| 4491 | 159 |
| 4412 | 160 select = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
| 161 if(gtk_tree_selection_get_selected(select, NULL, &iter)) | |
| 162 dequeue_message(&iter); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4274
diff
changeset
|
163 |
| 4412 | 164 return FALSE; |
| 4167 | 165 } |
| 4491 | 166 |
| 2573 | 167 |
| 168 | |
| 1773 | 169 void toggle_away_queue() |
| 170 { | |
| 4412 | 171 if (!awayqueue || !awayqueuesw) |
| 1773 | 172 return; |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
173 |
|
5573
5e7de337a053
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
174 if (gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
| 4412 | 175 gtk_widget_show(awayqueue); |
| 176 gtk_widget_show(awayqueuesw); | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
177 } else { |
| 4412 | 178 gtk_widget_hide(awayqueue); |
| 179 gtk_widget_hide(awayqueuesw); | |
| 4274 | 180 purge_away_queue(&message_queue); |
| 1773 | 181 } |
| 182 } | |
| 183 | |
| 1 | 184 void do_im_back(GtkWidget *w, GtkWidget *x) |
| 185 { | |
| 186 if (imaway) { | |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
187 GtkWidget *tmp = imaway; |
| 1768 | 188 |
| 4274 | 189 purge_away_queue(&message_queue); |
| 190 | |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
191 imaway = NULL; |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
192 gtk_widget_destroy(tmp); |
|
1614
3d3362903e1d
[gaim-migrate @ 1624]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1607
diff
changeset
|
193 if (w != tmp) |
|
3d3362903e1d
[gaim-migrate @ 1624]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1607
diff
changeset
|
194 return; |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
195 } |
| 1 | 196 |
| 197 awaymessage = NULL; | |
| 4412 | 198 awayqueue = NULL; |
| 199 awayqueuesw = NULL; | |
| 9674 | 200 if (awayqueuestore != NULL) |
| 201 g_object_unref(G_OBJECT(awayqueuestore)); | |
| 4412 | 202 awayqueuestore = NULL; |
| 3514 | 203 serv_set_away_all(NULL); |
| 1 | 204 } |
| 205 | |
| 1044 | 206 |
| 1 | 207 void do_away_message(GtkWidget *w, struct away_message *a) |
| 208 { | |
| 209 GtkWidget *back; | |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
210 GtkWidget *awaytext; |
|
1888
dedcd9e6f3e8
[gaim-migrate @ 1898]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
211 GtkWidget *sw; |
| 1 | 212 GtkWidget *vbox; |
| 4412 | 213 GtkTreeViewColumn *column; |
| 214 GtkCellRenderer *renderer; | |
|
1888
dedcd9e6f3e8
[gaim-migrate @ 1898]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
215 char *buf; |
| 1 | 216 |
|
1254
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
217 if (!a) |
|
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
218 return; |
|
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
219 |
| 6284 | 220 if(imaway) |
| 221 gtk_widget_destroy(imaway); | |
| 222 | |
| 223 GAIM_DIALOG(imaway); | |
| 224 gtk_window_set_role(GTK_WINDOW(imaway), "imaway"); | |
| 225 if (strlen(a->name)) | |
| 226 gtk_window_set_title(GTK_WINDOW(imaway), a->name); | |
| 227 else | |
| 7859 | 228 gtk_window_set_title(GTK_WINDOW(imaway), _("Away!")); |
| 6284 | 229 g_signal_connect(G_OBJECT(imaway), "destroy", |
| 230 G_CALLBACK(do_im_back), imaway); | |
|
1888
dedcd9e6f3e8
[gaim-migrate @ 1898]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
231 |
| 6284 | 232 vbox = gtk_vbox_new(FALSE, 5); |
| 233 gtk_container_add(GTK_CONTAINER(imaway), vbox); | |
| 234 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | |
| 235 gtk_widget_show(vbox); | |
| 1044 | 236 |
| 6284 | 237 sw = gtk_scrolled_window_new(NULL, NULL); |
| 238 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, | |
| 8973 | 239 GTK_POLICY_AUTOMATIC); |
| 6284 | 240 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
| 241 gtk_widget_set_size_request(sw, 245, 120); | |
| 242 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
| 243 gtk_widget_show(sw); | |
|
1888
dedcd9e6f3e8
[gaim-migrate @ 1898]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
244 |
| 6284 | 245 awaytext = gtk_imhtml_new(NULL, NULL); |
| 246 gtk_container_add(GTK_CONTAINER(sw), awaytext); | |
| 247 gaim_setup_imhtml(awaytext); | |
| 248 gtk_widget_show(awaytext); | |
| 249 buf = stylize(a->message, BUF_LONG); | |
| 6982 | 250 gtk_imhtml_append_text(GTK_IMHTML(awaytext), buf, GTK_IMHTML_NO_TITLE | |
| 6284 | 251 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
| 252 g_free(buf); | |
| 6982 | 253 gtk_imhtml_append_text(GTK_IMHTML(awaytext), "<BR>", |
| 6284 | 254 GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_COMMENTS | |
| 255 GTK_IMHTML_NO_SCROLL); | |
| 1773 | 256 |
| 6284 | 257 awayqueuesw = gtk_scrolled_window_new(NULL, NULL); |
| 258 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(awayqueuesw), | |
| 259 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
| 260 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(awayqueuesw), | |
| 261 GTK_SHADOW_IN); | |
| 262 gtk_box_pack_start(GTK_BOX(vbox), awayqueuesw, TRUE, TRUE, 0); | |
| 263 | |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8235
diff
changeset
|
264 awayqueuestore = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
| 6284 | 265 awayqueue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(awayqueuestore)); |
| 266 renderer = gtk_cell_renderer_text_new(); | |
| 267 | |
| 268 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(awayqueue), FALSE); | |
| 269 column = gtk_tree_view_column_new_with_attributes (NULL, renderer, | |
| 270 "text", 0, | |
| 271 NULL); | |
| 272 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); | |
| 273 column = gtk_tree_view_column_new_with_attributes(NULL, renderer, | |
| 274 "text", 1, | |
| 275 NULL); | |
| 276 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); | |
|
8413
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8235
diff
changeset
|
277 column = gtk_tree_view_column_new_with_attributes(NULL, renderer, |
|
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8235
diff
changeset
|
278 "text", 2, |
|
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8235
diff
changeset
|
279 NULL); |
|
f5b0e1a4b0c7
[gaim-migrate @ 9143]
Christian Hammond <chipx86@chipx86.com>
parents:
8235
diff
changeset
|
280 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); |
| 6284 | 281 |
| 282 gtk_container_add(GTK_CONTAINER(awayqueuesw), awayqueue); | |
| 283 | |
| 284 g_signal_connect(G_OBJECT(awayqueue), "button_press_event", G_CALLBACK(dequeue_cb), NULL); | |
| 2573 | 285 |
| 1773 | 286 |
| 6284 | 287 if (gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
| 288 gtk_widget_show(awayqueuesw); | |
| 289 gtk_widget_show(awayqueue); | |
| 290 } | |
| 1773 | 291 |
| 6284 | 292 back = gaim_pixbuf_button_from_stock(_("I'm Back!"), GTK_STOCK_JUMP_TO, GAIM_BUTTON_HORIZONTAL); |
| 293 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); | |
| 294 g_signal_connect(G_OBJECT(back), "clicked", G_CALLBACK(do_im_back), imaway); | |
| 295 gtk_window_set_focus(GTK_WINDOW(imaway), back); | |
| 296 gtk_widget_show(back); | |
|
1888
dedcd9e6f3e8
[gaim-migrate @ 1898]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
297 |
| 6284 | 298 awaymessage = a; |
| 1 | 299 |
|
1779
0da2a831c0ae
[gaim-migrate @ 1789]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
300 gtk_widget_show(imaway); |
| 6019 | 301 serv_set_away_all(awaymessage->message); |
| 1 | 302 } |
| 303 | |
| 8807 | 304 void do_rem_away_mess(gchar *name) |
| 1 | 305 { |
| 8820 | 306 struct away_message *a = NULL; |
| 6216 | 307 struct away_message *default_away = NULL; |
| 308 const char *default_away_name; | |
| 309 GSList *l; | |
| 310 | |
| 8807 | 311 /* Lookup the away message based on the title */ |
| 312 for (l = away_messages; l != NULL; l = l->next) { | |
| 313 a = l->data; | |
| 314 if (!strcmp(a->name, name)) | |
| 315 break; | |
| 316 } | |
| 317 g_free(name); | |
| 318 | |
| 8820 | 319 if (l == NULL || a == NULL) { |
| 8807 | 320 /* Could not find away message! */ |
| 321 return; | |
| 322 } | |
| 323 | |
| 6216 | 324 default_away_name = gaim_prefs_get_string("/core/away/default_message"); |
| 325 | |
| 326 for(l = away_messages; l; l = l->next) { | |
| 327 if(!strcmp(default_away_name, ((struct away_message *)l->data)->name)) { | |
| 328 default_away = l->data; | |
| 329 break; | |
| 330 } | |
|
1254
9da444224f0e
[gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
331 } |
| 6216 | 332 |
| 333 if(!default_away && away_messages) | |
| 334 default_away = away_messages->data; | |
| 335 | |
|
1306
868f9c98db13
[gaim-migrate @ 1316]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1292
diff
changeset
|
336 away_messages = g_slist_remove(away_messages, a); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
337 g_free(a); |
|
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
338 do_away_menu(); |
| 6727 | 339 gaim_status_sync(); |
| 1 | 340 } |
| 341 | |
| 8807 | 342 void rem_away_mess(GtkWidget *w, struct away_message *a) |
| 343 { | |
| 344 gchar *text; | |
| 345 | |
| 346 text = g_strdup_printf(_("Are you sure you want to remove the away message \"%s\"?"), a->name); | |
| 347 | |
| 348 gaim_request_action(NULL, NULL, _("Remove Away Message"), text, -1, g_strdup(a->name), 2, | |
| 349 _("Remove"), G_CALLBACK(do_rem_away_mess), | |
| 350 _("Cancel"), G_CALLBACK(g_free)); | |
| 351 | |
| 352 g_free(text); | |
| 353 } | |
| 354 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
355 static void set_gc_away(GObject *obj, GaimConnection *gc) |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
356 { |
| 4635 | 357 struct away_message *awy = g_object_get_data(obj, "away_message"); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
358 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
359 if (awy) |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
360 serv_set_away(gc, GAIM_AWAY_CUSTOM, awy->message); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
361 else |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
362 serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
363 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
364 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
365 static void set_gc_state(GObject *obj, GaimConnection *gc) |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
366 { |
| 4635 | 367 char *awy = g_object_get_data(obj, "away_state"); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
368 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
369 serv_set_away(gc, awy, NULL); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
370 } |
| 1 | 371 |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
372 /* XXX This needs to be fixed, NOW! */ |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
373 extern GtkListStore *prefs_away_store; |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
374 extern GtkWidget *prefs_away_menu; |
|
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
375 |
| 1 | 376 void do_away_menu() |
| 377 { | |
| 378 GtkWidget *menuitem; | |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
379 GtkWidget *remmenu; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
380 GtkWidget *submenu, *submenu2; |
| 1 | 381 GtkWidget *remitem; |
| 5160 | 382 GtkWidget *image; |
| 383 GdkPixbuf *pixbuf, *scale; | |
| 1 | 384 GList *l; |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
385 GSList *awy = away_messages; |
|
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
386 struct away_message *a; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
387 GList *con; |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
388 GaimConnection *gc = NULL; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
389 GaimPluginProtocolInfo *prpl_info = NULL; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
390 |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
391 int count = 0; |
| 1 | 392 |
| 4635 | 393 if (prefs_away_store != NULL) { |
| 394 gtk_list_store_clear(prefs_away_store); | |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
395 while (awy) { |
| 4635 | 396 GtkTreeIter iter; |
| 1 | 397 a = (struct away_message *)awy->data; |
| 4635 | 398 gtk_list_store_append(prefs_away_store, &iter); |
| 399 gtk_list_store_set(prefs_away_store, &iter, | |
| 400 0, a->name, | |
| 401 1, a, | |
| 402 -1); | |
| 940 | 403 awy = g_slist_next(awy); |
| 1 | 404 } |
| 405 } | |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
406 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
407 if (awaymenu) { |
| 4635 | 408 l = gtk_container_get_children(GTK_CONTAINER(awaymenu)); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
409 |
|
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
410 while (l) { |
|
1530
0b6e4d52de63
[gaim-migrate @ 1540]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1499
diff
changeset
|
411 gtk_container_remove(GTK_CONTAINER(awaymenu), GTK_WIDGET(l->data)); |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
412 l = l->next; |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
413 } |
| 1 | 414 |
| 8235 | 415 g_list_free(l); |
| 1 | 416 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
417 remmenu = gtk_menu_new(); |
| 1 | 418 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
419 menuitem = gtk_menu_item_new_with_label(_("New Away Message")); |
| 4635 | 420 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
421 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
422 g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(create_away_mess), |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
423 NULL); |
|
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
424 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
425 awy = away_messages; |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
426 while (awy) { |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
427 a = (struct away_message *)awy->data; |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
428 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
429 remitem = gtk_menu_item_new_with_label(a->name); |
| 4635 | 430 gtk_menu_shell_append(GTK_MENU_SHELL(remmenu), remitem); |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
431 gtk_widget_show(remitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
432 g_signal_connect(G_OBJECT(remitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
433 G_CALLBACK(rem_away_mess), a); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
434 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
435 awy = g_slist_next(awy); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
436 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
437 } |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
438 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
439 menuitem = gtk_menu_item_new_with_label(_("Remove Away Message")); |
| 4635 | 440 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); |
| 1 | 441 gtk_widget_show(menuitem); |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
442 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
443 gtk_widget_show(remmenu); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
444 |
| 5160 | 445 gaim_separator(awaymenu); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
446 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
447 for (con = gaim_connections_get_all(); con != NULL; con = con->next) { |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
448 gc = con->data; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
449 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
450 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
451 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
452 if (prpl_info->away_states != NULL && prpl_info->set_away != NULL) |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
453 count++; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
454 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
455 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
456 if (count == 0) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
457 } else if (count == 1) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
458 GList *msgs, *tmp; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
459 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
460 for (con = gaim_connections_get_all(); con != NULL; con = con->next) { |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
461 gc = con->data; |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
462 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
463 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
464 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
465 if (prpl_info->away_states && prpl_info->set_away) |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
466 break; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
467 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
468 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
469 tmp = msgs = prpl_info->away_states(gc); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
470 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
471 if ((g_list_length(msgs) == 1) && !strcmp(msgs->data, GAIM_AWAY_CUSTOM)) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
472 awy = away_messages; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
473 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
474 while (awy) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
475 a = (struct away_message *)awy->data; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
476 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
477 menuitem = gtk_menu_item_new_with_label(a->name); |
| 4635 | 478 g_object_set_data(G_OBJECT(menuitem), "away_message", a); |
| 479 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); | |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
480 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
481 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
482 G_CALLBACK(do_away_message), a); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
483 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
484 awy = g_slist_next(awy); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
485 } |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
486 } else |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
487 while (msgs) { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
488 awy = away_messages; |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
489 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
490 menuitem = gtk_menu_item_new_with_label(msgs->data); |
| 4635 | 491 g_object_set_data(G_OBJECT(menuitem), "away_state", msgs->data); |
| 492 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
493 gtk_widget_show(menuitem); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
494 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
495 if (strcmp(msgs->data, GAIM_AWAY_CUSTOM)) { |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
496 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
497 G_CALLBACK(set_gc_state), gc); |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
498 } else { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
499 submenu = gtk_menu_new(); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
500 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
501 submenu); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
502 gtk_widget_show(submenu); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
503 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
504 while (awy) { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
505 a = (struct away_message *)awy->data; |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
506 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
507 menuitem = gtk_menu_item_new_with_label(a->name); |
| 4635 | 508 g_object_set_data(G_OBJECT(menuitem), "away_message", |
| 509 a); | |
| 510 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), | |
| 511 menuitem); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
512 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
513 g_signal_connect(G_OBJECT(menuitem), |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
514 "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
515 G_CALLBACK |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
516 (do_away_message), a); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
517 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
518 awy = g_slist_next(awy); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
519 } |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
520 } |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
521 msgs = g_list_next(msgs); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
522 } |
|
1499
de0b946e86a4
[gaim-migrate @ 1509]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1456
diff
changeset
|
523 |
|
de0b946e86a4
[gaim-migrate @ 1509]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1456
diff
changeset
|
524 g_list_free(tmp); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
525 } |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
526 else { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
527 for (con = gaim_connections_get_all(); con != NULL; con = con->next) { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
528 GaimAccount *account; |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
529 char buf[256]; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
530 GList *msgs, *tmp; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
531 gc = con->data; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
532 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
533 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
534 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
535 if (!prpl_info->away_states || !prpl_info->set_away) |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
536 continue; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
537 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
538 account = gaim_connection_get_account(gc); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
539 |
| 5161 | 540 g_snprintf(buf, sizeof(buf), "%s (%s)", |
| 9699 | 541 gaim_account_get_username(account), |
| 542 gaim_account_get_protocol_name(account)); | |
| 5161 | 543 menuitem = gtk_image_menu_item_new_with_label(buf); |
| 544 | |
| 5160 | 545 pixbuf = create_prpl_icon(gc->account); |
| 546 if (pixbuf) { | |
| 547 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR); | |
| 548 image = gtk_image_new_from_pixbuf(scale); | |
| 549 g_object_unref(G_OBJECT(pixbuf)); | |
| 550 g_object_unref(G_OBJECT(scale)); | |
| 5161 | 551 gtk_widget_show(image); |
| 552 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), | |
| 553 image); | |
| 5160 | 554 } |
| 555 | |
| 4635 | 556 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
557 gtk_widget_show(menuitem); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
558 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
559 submenu = gtk_menu_new(); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
560 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
561 gtk_widget_show(submenu); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
562 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
563 tmp = msgs = prpl_info->away_states(gc); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
564 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
565 if ((g_list_length(msgs) == 1) && |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
566 (!strcmp(msgs->data, GAIM_AWAY_CUSTOM))) { |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
567 menuitem = gtk_menu_item_new_with_label(_("Back")); |
| 4635 | 568 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
569 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
570 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
571 G_CALLBACK(set_gc_away), gc); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
572 |
| 5160 | 573 gaim_separator(submenu); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
574 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
575 awy = away_messages; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
576 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
577 while (awy) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
578 a = (struct away_message *)awy->data; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
579 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
580 menuitem = gtk_menu_item_new_with_label(a->name); |
| 4635 | 581 g_object_set_data(G_OBJECT(menuitem), "away_message", a); |
| 582 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); | |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
583 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
584 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
585 G_CALLBACK(set_gc_away), gc); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
586 |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
587 awy = g_slist_next(awy); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
588 } |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
589 } else |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
590 while (msgs) { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
591 awy = away_messages; |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
592 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
593 menuitem = gtk_menu_item_new_with_label(msgs->data); |
| 4635 | 594 g_object_set_data(G_OBJECT(menuitem), "away_state", |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
595 msgs->data); |
| 4635 | 596 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
597 gtk_widget_show(menuitem); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
598 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
599 if (strcmp(msgs->data, GAIM_AWAY_CUSTOM)) { |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
600 g_signal_connect(G_OBJECT(menuitem), |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
601 "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
602 G_CALLBACK(set_gc_state), |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
603 gc); |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
604 } else { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
605 submenu2 = gtk_menu_new(); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
606 gtk_menu_item_set_submenu(GTK_MENU_ITEM |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
607 (menuitem), submenu2); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
608 gtk_widget_show(submenu2); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
609 |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
610 while (awy) { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
611 a = (struct away_message *)awy->data; |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
612 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
613 menuitem = |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
614 gtk_menu_item_new_with_label(a-> |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
615 name); |
| 4635 | 616 g_object_set_data(G_OBJECT(menuitem), |
| 617 "away_message", a); | |
| 618 gtk_menu_shell_append(GTK_MENU_SHELL(submenu2), | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
619 menuitem); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
620 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
621 g_signal_connect(G_OBJECT(menuitem), |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
622 "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
623 G_CALLBACK |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
624 (set_gc_away), gc); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
625 |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
626 awy = g_slist_next(awy); |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
627 } |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
628 } |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
629 msgs = g_list_next(msgs); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
630 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
631 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
632 g_list_free(tmp); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
633 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
634 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
635 menuitem = gtk_menu_item_new_with_label(_("Set All Away")); |
| 4635 | 636 gtk_menu_shell_append(GTK_MENU_SHELL(awaymenu), menuitem); |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
637 gtk_widget_show(menuitem); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
638 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
639 submenu = gtk_menu_new(); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
640 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
641 gtk_widget_show(submenu); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
642 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
643 awy = away_messages; |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
644 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
645 while (awy) { |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
646 a = (struct away_message *)awy->data; |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
647 |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
648 menuitem = gtk_menu_item_new_with_label(a->name); |
| 4635 | 649 g_object_set_data(G_OBJECT(menuitem), "away_message", a); |
| 650 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); | |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
651 gtk_widget_show(menuitem); |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
652 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
4162
d3c8d2b40494
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4124
diff
changeset
|
653 G_CALLBACK(do_away_message), a); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
654 |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
655 awy = g_slist_next(awy); |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1306
diff
changeset
|
656 } |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
657 } |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
658 } |
|
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5545
diff
changeset
|
659 |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
660 if (prefs_away_menu) { |
| 4635 | 661 l = gtk_container_get_children(GTK_CONTAINER(prefs_away_menu)); |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
662 while (l) { |
|
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
663 gtk_widget_destroy(GTK_WIDGET(l->data)); |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
664 l = l->next; |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
665 } |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
666 gtk_widget_hide(GTK_WIDGET(prefs_away_menu)); |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
667 default_away_menu_init(GTK_WIDGET(prefs_away_menu)); |
|
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1044
diff
changeset
|
668 gtk_widget_show(prefs_away_menu); |
| 1 | 669 } |
| 670 } |
