annotate plugins/docklet/docklet.c @ 6371:8f94cce8faa5

[gaim-migrate @ 6876] I think I touched almost every file. Here's what happened. I started off fixing up the Makefile.am and configure.ac files to help with the core/UI split some. Then I got annoyed with the build_{allow,deny}_list() functions that everything used, and decided to core/UI split privacy. While doing that, I decided to redesign the dialog. So now, a lot has changed, but not really so much. Just that most files got affected. Oh yeah, and the UI stuff was taken out of internal.h and moved to gtkinternal.h. If you use this, please be aware of this change. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 05 Aug 2003 10:55:04 +0000
parents f14718d7082e
children 70d5122bc3ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
1 /*
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
2 * System tray icon (aka docklet) plugin for Gaim
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
3 *
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
4 * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org>
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
5 * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 * Inspired by a similar plugin by:
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * John (J5) Palmieri <johnp@martianrock.com>
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 *
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * modify it under the terms of the GNU General Public License as
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * published by the Free Software Foundation; either version 2 of the
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * License, or (at your option) any later version.
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 *
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful, but
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * General Public License for more details.
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 *
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 * 02111-1307, USA.
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 */
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 /* todo (in order of importance):
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
26 - unify the queue so we can have a global away without the dialog
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
27 - handle and update tooltips to show your current accounts/queued messages?
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
28 - show a count of queued messages in the unified queue
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 - dernyi's account status menu in the right click
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
30 - optional pop up notices when GNOME2's system-tray-applet supports it */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
32 #include "internal.h"
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6310
diff changeset
33 #include "gtkinternal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
34
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6138
diff changeset
35 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
36 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
37 #include "prefs.h"
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
38 #include "sound.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
39
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
40 #include "gtkaccount.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
41 #include "gtkblist.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
42 #include "gtkft.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
43 #include "gtkplugin.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
44 #include "gtkprefs.h"
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5669
diff changeset
45 #include "gtksound.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
46 #include "gtkutils.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
47 #include "stock.h"
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
48 #include "docklet.h"
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
50 #include "gaim.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
51 #include "ui.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
52
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
53 /* globals */
3867
43e396e94095 [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3773
diff changeset
54
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
55 GaimPlugin *handle = NULL;
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
56 static struct docklet_ui_ops *ui_ops = NULL;
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
57 static enum docklet_status status = offline;
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
58 #ifdef _WIN32
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
59 __declspec(dllimport) GSList *unread_message_queue;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
60 __declspec(dllimport) GSList *away_messages;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
61 __declspec(dllimport) struct away_message *awaymessage;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
62 __declspec(dllimport) GSList *message_queue;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
63 #endif
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
65 /* private functions */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
67 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
68 docklet_toggle_mute(GtkWidget *toggle, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
69 {
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5669
diff changeset
70 gaim_gtk_sound_set_mute(GTK_CHECK_MENU_ITEM(toggle)->active);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
73 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
74 docklet_set_bool(GtkWidget *widget, const char *key)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
75 {
5554
7b36d02031a2 [gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
76 gaim_prefs_set_bool(key, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)));
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 }
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
78
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
79 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
80 docklet_auto_login()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
81 {
5905
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
82 gaim_accounts_auto_login(GAIM_GTK_UI);
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
83 }
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
84
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
85 #ifdef _WIN32
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
86 /* This is a workaround for a bug in windows GTK+.. Clicking outside of the
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
87 menu does not get rid of it, so instead we get rid of it as soon as the
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
88 pointer leaves the menu. */
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
89 static gboolean
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
90 docklet_menu_leave(GtkWidget *menu, GdkEventCrossing *event, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
91 {
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
92 if(event->detail == GDK_NOTIFY_ANCESTOR) {
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
93 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "menu leave-notify-event\n");
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
94 gtk_menu_popdown(GTK_MENU(menu));
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
95 }
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
96 return FALSE;
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 }
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
98 #endif
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
100 static void docklet_menu() {
3513
ab939e746bdd [gaim-migrate @ 3585]
Luke Schierer <lschiere@pidgin.im>
parents: 3512
diff changeset
101 static GtkWidget *menu = NULL;
3512
1ea341091de8 [gaim-migrate @ 3584]
Luke Schierer <lschiere@pidgin.im>
parents: 3510
diff changeset
102 GtkWidget *entry;
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 if (menu) {
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 gtk_widget_destroy(menu);
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 menu = gtk_menu_new();
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
109
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
110 switch (status) {
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
111 case offline:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
112 case offline_connecting:
5905
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
113 gaim_new_item_from_stock(menu, _("Auto-login"), GAIM_STOCK_SIGN_ON, G_CALLBACK(docklet_auto_login), NULL, 0, 0, NULL);
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
114 break;
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
115 default:
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4840
diff changeset
116 gaim_new_item_from_stock(menu, _("New Message.."), GAIM_STOCK_IM, G_CALLBACK(show_im_dialog), NULL, 0, 0, NULL);
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4840
diff changeset
117 gaim_new_item_from_stock(menu, _("Join A Chat..."), GAIM_STOCK_CHAT, G_CALLBACK(join_chat), NULL, 0, 0, NULL);
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
118 break;
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
119 }
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
120
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
121 switch (status) {
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
122 case offline:
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
123 case offline_connecting:
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
124 break;
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
125 case online:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
126 case online_connecting:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
127 case online_pending: {
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 GtkWidget *docklet_awaymenu;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 GSList *awy = NULL;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 struct away_message *a = NULL;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 docklet_awaymenu = gtk_menu_new();
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 awy = away_messages;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 while (awy) {
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 a = (struct away_message *)awy->data;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 entry = gtk_menu_item_new_with_label(a->name);
3554
cf00549c53d7 [gaim-migrate @ 3644]
Sean Egan <seanegan@gmail.com>
parents: 3551
diff changeset
139 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_away_message), a);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
140 gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 awy = g_slist_next(awy);
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
145 if (away_messages)
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
146 gaim_separator(docklet_awaymenu);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 entry = gtk_menu_item_new_with_label(_("New..."));
3554
cf00549c53d7 [gaim-migrate @ 3644]
Sean Egan <seanegan@gmail.com>
parents: 3551
diff changeset
149 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(create_away_mess), NULL);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
150 gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 entry = gtk_menu_item_new_with_label(_("Away"));
3512
1ea341091de8 [gaim-migrate @ 3584]
Luke Schierer <lschiere@pidgin.im>
parents: 3510
diff changeset
153 gtk_menu_item_set_submenu(GTK_MENU_ITEM(entry), docklet_awaymenu);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
154 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
155 } break;
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
156 case away:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
157 case away_pending:
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 entry = gtk_menu_item_new_with_label(_("Back"));
3554
cf00549c53d7 [gaim-migrate @ 3644]
Sean Egan <seanegan@gmail.com>
parents: 3551
diff changeset
159 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_im_back), NULL);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
160 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
161 break;
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
164 gaim_separator(menu);
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
165
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
166 entry = gtk_check_menu_item_new_with_label(_("Mute Sounds"));
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5669
diff changeset
167 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), gaim_gtk_sound_get_mute());
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
168 g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
169 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
170
5669
9e7f8ffb0404 [gaim-migrate @ 6086]
Sean Egan <seanegan@gmail.com>
parents: 5609
diff changeset
171 gaim_new_item_from_stock(menu, _("File Transfers"), GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL);
6138
1894de5f7fbd [gaim-migrate @ 6612]
Nathan Walp <nwalp@pidgin.im>
parents: 6077
diff changeset
172 gaim_new_item_from_stock(menu, _("Accounts"), GAIM_STOCK_ACCOUNTS, G_CALLBACK(gaim_gtk_accounts_window_show), NULL, 0, 0, NULL);
5669
9e7f8ffb0404 [gaim-migrate @ 6086]
Sean Egan <seanegan@gmail.com>
parents: 5609
diff changeset
173 gaim_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(gaim_gtk_prefs_show), NULL, 0, 0, NULL);
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
174
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
175 gaim_separator(menu);
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
176
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
177 switch (status) {
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
178 case offline:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
179 case offline_connecting:
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
180 break;
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
181 default:
5607
eeba9205dd0f [gaim-migrate @ 6011]
Nathan Walp <nwalp@pidgin.im>
parents: 5584
diff changeset
182 gaim_new_item_from_stock(menu, _("Signoff"), GTK_STOCK_CLOSE, G_CALLBACK(gaim_connections_disconnect_all), NULL, 0, 0, 0);
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
183 break;
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
184 }
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
185
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6138
diff changeset
186 gaim_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(gaim_core_quit), NULL, 0, 0, 0);
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
188 #ifdef _WIN32
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
189 g_signal_connect(menu, "leave-notify-event", G_CALLBACK(docklet_menu_leave), NULL);
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
190 #endif
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 gtk_widget_show_all(menu);
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
192 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
193 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
195 static gboolean
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
196 docklet_blink_icon()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
197 {
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
198 static gboolean blinked = FALSE;
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
199 enum docklet_status icon = status;
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
200
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
201 blinked = !blinked;
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
202
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
203 if (status == online_pending) {
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
204 if (blinked) {
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
205 /* last icon was the right one... let's change it */
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
206 icon = online;
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
207 } else {
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
208 /* last icon was the wrong one, change it back */
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
209 icon = online_pending;
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
210 }
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
211 } else if (status == away_pending) {
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
212 if (blinked) {
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
213 /* last icon was the right one... let's change it */
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
214 icon = away;
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
215 } else {
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
216 /* last icon was the wrong one, change it back */
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
217 icon = away_pending;
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
218 }
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
219 } else {
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
220 /* no messages, stop blinking */
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
221 blinked = FALSE;
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
222 return FALSE;
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
223 }
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
224
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
225 if (ui_ops->update_icon)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
226 ui_ops->update_icon(icon);
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
227
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
228 return TRUE; /* keep blinking */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
231 static gboolean
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
232 docklet_update_status()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
233 {
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 enum docklet_status oldstatus;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 oldstatus = status;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237
5584
cade2082f760 [gaim-migrate @ 5988]
Luke Schierer <lschiere@pidgin.im>
parents: 5554
diff changeset
238 if (gaim_connections_get_all()) {
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
239 if (unread_message_queue) {
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
240 status = online_pending;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
241 } else if (awaymessage) {
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 if (message_queue) {
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 status = away_pending;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 } else {
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 status = away;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 }
5905
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
247 } else if (gaim_connections_get_connecting()) {
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
248 status = online_connecting;
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 } else {
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 status = online;
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252 } else {
5905
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
253 if (gaim_connections_get_connecting()) {
4157
9c31ddae80a1 [gaim-migrate @ 4385]
Rob Flynn <gaim@robflynn.com>
parents: 4108
diff changeset
254 status = offline_connecting;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
255 } else {
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
256 status = offline;
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
257 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
260 /* update the icon if we changed status */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 if (status != oldstatus) {
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
262 if (ui_ops->update_icon)
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
263 ui_ops->update_icon(status);
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
264
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
265 /* and schedule the blinker function if messages are pending */
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
266 if (status == online_pending || status == away_pending) {
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6309
diff changeset
267 g_timeout_add(500, docklet_blink_icon, &handle);
4261
e252238f99df [gaim-migrate @ 4512]
Christian Hammond <chipx86@chipx86.com>
parents: 4250
diff changeset
268 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 }
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
270
4093
987624dcece4 [gaim-migrate @ 4308]
Luke Schierer <lschiere@pidgin.im>
parents: 3939
diff changeset
271 return FALSE; /* for when we're called by the glib idle handler */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
274 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
275 docklet_flush_queue()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
276 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
277 if (unread_message_queue) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
278 purge_away_queue(&unread_message_queue);
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
279 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
282 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
283 docklet_remove_callbacks()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
284 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
285 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "removing callbacks");
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
287 while (g_source_remove_by_user_data(&handle)) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
288 gaim_debug(GAIM_DEBUG_INFO, NULL, ".");
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
289 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
291 gaim_debug(GAIM_DEBUG_INFO, NULL, "\n");
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
294 /* public code */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
296 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
297 docklet_clicked(int button_type)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
298 {
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
299 switch (button_type) {
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
300 case 1:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
301 if (unread_message_queue) {
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
302 docklet_flush_queue();
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
303 } else {
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
304 gaim_gtk_blist_docklet_toggle();
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
305 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
306 break;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
307 case 2:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
308 switch (status) {
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
309 case offline:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
310 case offline_connecting:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
311 docklet_auto_login();
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
312 break;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
313 default:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
314 break;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
315 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
316 break;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
317 case 3:
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
318 docklet_menu();
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
319 break;
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
320 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
321 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
322
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
323 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
324 docklet_embedded()
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
325 {
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
326 gaim_gtk_blist_docklet_add();
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
327
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
328 docklet_update_status();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
329 if (ui_ops->update_icon)
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
330 ui_ops->update_icon(status);
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
331 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
332
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
333 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
334 docklet_remove(gboolean visible)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
335 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
336 if (visible)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
337 gaim_gtk_blist_docklet_remove();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
338
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
339 docklet_flush_queue();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
340 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
341
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
342 void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
343 docklet_set_ui_ops(struct docklet_ui_ops *ops)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
344 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
345 ui_ops = ops;
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
346 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
347
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
348 /* callbacks */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
349
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
350 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
351 gaim_signon(GaimConnection *gc, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
352 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
353 docklet_update_status();
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
354 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
355
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
356 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
357 gaim_signoff(GaimConnection *gc, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
358 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
359 /* do this when idle so that if the prpl was connecting
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
360 and was cancelled, we register that connecting_count
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
361 has returned to 0 */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
362 /* no longer necessary because Chip decided that us plugins
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
363 didn't need to know if an account was connecting or not
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
364 g_idle_add(docklet_update_status, &docklet); */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
365 docklet_update_status();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
366 }
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
367
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
368 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
369 gaim_connecting(GaimAccount *account, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
370 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
371 docklet_update_status();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
372 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
373
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
374 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
375 gaim_away(GaimConnection *gc, char *state, char *message, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
376 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
377 /* we only support global away. this is the way it is, ok? */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
378 docklet_update_status();
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
379 }
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
380
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
381 static void
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
382 gaim_im_recv(GaimConnection *gc, char **who, char **what, void *data)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
383 {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
384 /* if message queuing while away is enabled, this event could be the first
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
385 message so we need to see if the status (and hence icon) needs changing.
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
386 do this when idle so that all message processing is completed, queuing
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
387 etc, before we run. */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
388 g_idle_add(docklet_update_status, &handle);
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
389 }
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
390
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
391 static void
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
392 gaim_new_conversation(char *who, void *data)
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
393 {
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
394 /* queue a callback here so if the queue is being
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
395 flushed, we stop flashing. thanks javabsp. */
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
396 g_idle_add(docklet_update_status, &handle);
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
397 }
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
398
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
399 /* static void gaim_buddy_signon(GaimConnection *gc, char *who, void *data) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
400 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
401
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
402 static void gaim_buddy_signoff(GaimConnection *gc, char *who, void *data) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
403 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
404
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
405 static void gaim_buddy_away(GaimConnection *gc, char *who, void *data) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
406 }
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
407
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
408 static void gaim_buddy_back(GaimConnection *gc, char *who, void *data) {
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
409 } */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
410
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
411 /* plugin glue */
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
412
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
413 #define DOCKLET_PLUGIN_ID "gtk-docklet"
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
414
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
415 static gboolean
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
416 plugin_load(GaimPlugin *plugin)
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
417 {
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
418 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "plugin loaded\n");
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
419
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
420 handle = plugin;
6077
b2c8e08508af [gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6063
diff changeset
421
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
422 docklet_ui_init();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
423 if (ui_ops->create)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
424 ui_ops->create();
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
426 gaim_signal_connect(plugin, event_signon, gaim_signon, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
427 gaim_signal_connect(plugin, event_signoff, gaim_signoff, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
428 gaim_signal_connect(plugin, event_connecting, gaim_connecting, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
429 gaim_signal_connect(plugin, event_away, gaim_away, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
430 gaim_signal_connect(plugin, event_im_recv, gaim_im_recv, NULL);
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
431 gaim_signal_connect(plugin, event_new_conversation, gaim_new_conversation, NULL);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
432 /* gaim_signal_connect(plugin, event_buddy_signon, gaim_buddy_signon, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
433 gaim_signal_connect(plugin, event_buddy_signoff, gaim_buddy_signoff, NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
434 gaim_signal_connect(plugin, event_buddy_away, gaim_buddy_away, NULL);
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
435 gaim_signal_connect(plugin, event_buddy_back, gaim_buddy_back, NULL); */
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
437 return TRUE;
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 }
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
440 static gboolean
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
441 plugin_unload(GaimPlugin *plugin)
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
442 {
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
443 if (ui_ops->destroy)
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
444 ui_ops->destroy();
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
445
5905
dbe2a2174be9 [gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
446 /* XXX: do this while gaim has no other way to toggle the global mute */
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5669
diff changeset
447 gaim_gtk_sound_set_mute(FALSE);
6211
9fd7716068d9 [gaim-migrate @ 6697]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6208
diff changeset
448
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
449 docklet_remove_callbacks();
4567
493f050dc11a [gaim-migrate @ 4848]
Sean Egan <seanegan@gmail.com>
parents: 4561
diff changeset
450
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
451 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "plugin unloaded\n");
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
452
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
453 return TRUE;
3554
cf00549c53d7 [gaim-migrate @ 3644]
Sean Egan <seanegan@gmail.com>
parents: 3551
diff changeset
454 }
cf00549c53d7 [gaim-migrate @ 3644]
Sean Egan <seanegan@gmail.com>
parents: 3551
diff changeset
455
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
456 static GtkWidget *
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
457 plugin_config_frame(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
458 {
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
459 GtkWidget *frame;
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
460 GtkWidget *vbox, *hbox;
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
461 GtkWidget *toggle;
5554
7b36d02031a2 [gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
462 static const char *qmpref = "/plugins/gtk/docklet/queue_messages";
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
463
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
464 frame = gtk_vbox_new(FALSE, 18);
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
465 gtk_container_set_border_width(GTK_CONTAINER(frame), 12);
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
466
5530
2c4c975620f0 [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5234
diff changeset
467 vbox = gaim_gtk_make_frame(frame, _("Tray Icon Configuration"));
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
468 hbox = gtk_hbox_new(FALSE, 18);
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
469 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
470
4093
987624dcece4 [gaim-migrate @ 4308]
Luke Schierer <lschiere@pidgin.im>
parents: 3939
diff changeset
471 toggle = gtk_check_button_new_with_mnemonic(_("_Hide new messages until tray icon is clicked"));
5554
7b36d02031a2 [gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
472 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), gaim_prefs_get_bool(qmpref));
7b36d02031a2 [gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
473 g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_set_bool), (void *)qmpref);
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
474 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
475
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
476 gtk_widget_show_all(frame);
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
477 return frame;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3514
diff changeset
478 }
3570
b791019b2492 [gaim-migrate @ 3666]
Sean Egan <seanegan@gmail.com>
parents: 3554
diff changeset
479
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
480 static GaimGtkPluginUiInfo ui_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
481 {
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
482 plugin_config_frame
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
483 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
484
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
485 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
486 {
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
487 2, /**< api_version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
488 GAIM_PLUGIN_STANDARD, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
489 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
490 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
491 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
492 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
493
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
494 DOCKLET_PLUGIN_ID, /**< id */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
495 N_("System Tray Icon"), /**< name */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
496 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
497 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
498 N_("Displays an icon for Gaim in the system tray."),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
499 /** description */
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
500 N_("Displays a system tray icon (in GNOME, KDE or Windows for example) "
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
501 "to show the current status of Gaim, allow fast access to commonly "
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
502 "used functions, and to toggle display of the buddy list or login "
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
503 "window. Also allows messages to be queued until the icon is "
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
504 "clicked, similar to ICQ."),
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
505 "Robert McQueen <robot101@debian.org>", /**< author */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6310
diff changeset
506 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
507
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
508 plugin_load, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
509 plugin_unload, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
510 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
511
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
512 &ui_info, /**< ui_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
513 NULL /**< extra_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
514 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
515
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
516 static void
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
517 plugin_init(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
518 {
6226
6b95da075de9 [gaim-migrate @ 6719]
Christian Hammond <chipx86@chipx86.com>
parents: 6211
diff changeset
519 gaim_prefs_add_none("/plugins/gtk/docklet");
6b95da075de9 [gaim-migrate @ 6719]
Christian Hammond <chipx86@chipx86.com>
parents: 6211
diff changeset
520 gaim_prefs_add_bool("/plugins/gtk/docklet/queue_messages", FALSE);
3551
cd938f18f3f8 [gaim-migrate @ 3626]
Sean Egan <seanegan@gmail.com>
parents: 3550
diff changeset
521 }
3510
e23909729192 [gaim-migrate @ 3576]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522
6208
3e3ee3cba192 [gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6179
diff changeset
523 GAIM_INIT_PLUGIN(docklet, plugin_init, info)