plugins/docklet/docklet.c

Wed, 08 Feb 2006 05:36:13 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Wed, 08 Feb 2006 05:36:13 +0000
changeset 13176
df549de66219
parent 13113
bfc8191807c2
child 13245
3c026039efc5
permissions
-rw-r--r--

[gaim-migrate @ 15538]
If you're not using a saved status and you select "New..." in the
gtkstatusbox then the new status dialog will be seeded with your
current message and stuff. rlaager told me to do this.

6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
1 /*
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
2 * System tray icon (aka docklet) plugin for Gaim
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
3 *
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
4 * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org>
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
5 * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
6 * Inspired by a similar plugin by:
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
7 * John (J5) Palmieri <johnp@martianrock.com>
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
8 *
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
10 * modify it under the terms of the GNU General Public License as
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
11 * published by the Free Software Foundation; either version 2 of the
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
12 * License, or (at your option) any later version.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
13 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful, but
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
17 * General Public License for more details.
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
18 *
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
22 * 02111-1307, USA.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
23 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
24 #include "internal.h"
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
25 #include "gtkgaim.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
26
6179
4df73df94250 [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6138
diff changeset
27 #include "core.h"
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
28 #include "conversation.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
29 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
30 #include "prefs.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
31 #include "signals.h"
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
32 #include "sound.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9893
diff changeset
33 #include "version.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
34
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
35 #include "gtkaccount.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
36 #include "gtkblist.h"
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
37 #include "gtkconv.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
38 #include "gtkft.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
39 #include "gtkplugin.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
40 #include "gtkprefs.h"
12614
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
41 #include "gtksavedstatuses.h"
5684
10b916deb20c [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5669
diff changeset
42 #include "gtksound.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
43 #include "gtkutils.h"
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10272
diff changeset
44 #include "gtkstock.h"
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
45 #include "docklet.h"
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
46
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
47 #include "gaim.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 8999
diff changeset
48 #include "gtkdialogs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
49
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
50 #define DOCKLET_PLUGIN_ID "gtk-docklet"
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
51
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
52 #ifndef DOCKLET_TOOLTIP_LINE_LIMIT
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
53 #define DOCKLET_TOOLTIP_LINE_LIMIT 5
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
54 #endif
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
55
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
56 /* globals */
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
57 GaimPlugin *handle = NULL;
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
58 static struct docklet_ui_ops *ui_ops = NULL;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
59 static DockletStatus status = DOCKLET_STATUS_OFFLINE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
60 static gboolean enable_join_chat = FALSE;
11989
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
61 static guint docklet_blinking_timer = 0;
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
62 static gboolean visibility_manager = FALSE;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
63
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
64 /**************************************************************************
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
65 * docklet status and utility functions
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
66 **************************************************************************/
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
67 static gboolean
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
68 docklet_blink_icon()
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
69 {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
70 static gboolean blinked = FALSE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
71 gboolean ret = FALSE; /* by default, don't keep blinking */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
72
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
73 blinked = !blinked;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
74
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
75 switch (status) {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
76 case DOCKLET_STATUS_ONLINE_PENDING:
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
77 case DOCKLET_STATUS_AWAY_PENDING:
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
78 if (blinked) {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
79 if (ui_ops && ui_ops->blank_icon)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
80 ui_ops->blank_icon();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
81 } else {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
82 if (ui_ops && ui_ops->update_icon)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
83 ui_ops->update_icon(status);
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
84 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
85 ret = TRUE; /* keep blinking */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
86 break;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
87 default:
11989
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
88 docklet_blinking_timer = 0;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
89 blinked = FALSE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
90 break;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
91 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
92
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
93 return ret;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
94 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
95
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
96 static GList *
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
97 get_pending_list(guint max)
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
98 {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
99 const char *im = gaim_prefs_get_string("/plugins/gtk/docklet/blink_im");
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
100 const char *chat = gaim_prefs_get_string("/plugins/gtk/docklet/blink_chat");
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
101 GList *l_im = NULL;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
102 GList *l_chat = NULL;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
103
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
104 if (im != NULL && strcmp(im, "always") == 0) {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
105 l_im = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
106 GAIM_UNSEEN_TEXT,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
107 FALSE, max);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
108 } else if (im != NULL && strcmp(im, "hidden") == 0) {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
109 l_im = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
110 GAIM_UNSEEN_TEXT,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
111 TRUE, max);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
112 }
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
113
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
114 if (chat != NULL && strcmp(chat, "always") == 0) {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
115 l_chat = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_CHAT,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
116 GAIM_UNSEEN_TEXT,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
117 FALSE, max);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
118 } else if (chat != NULL && strcmp(chat, "nick") == 0) {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
119 l_chat = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_CHAT,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
120 GAIM_UNSEEN_NICK,
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
121 FALSE, max);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
122 }
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
123
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
124 if (l_im != NULL && l_chat != NULL)
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
125 return g_list_concat(l_im, l_chat);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
126 else if (l_im != NULL)
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
127 return l_im;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
128 else
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
129 return l_chat;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
130 }
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
131
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
132 static gboolean
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
133 docklet_update_status()
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
134 {
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
135 GList *convs;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
136 GList *l;
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
137 int count;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
138 DockletStatus newstatus = DOCKLET_STATUS_OFFLINE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
139 gboolean pending = FALSE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
140
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
141 /* determine if any ims have unseen messages */
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
142 convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
143
12471
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
144 if (convs != NULL) {
12021
dff8a2336172 [gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents: 12018
diff changeset
145 pending = TRUE;
12471
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
146
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
147 /* set tooltip if messages are pending */
12526
88790bc6d4d3 [gaim-migrate @ 14838]
Nathan Walp <nwalp@pidgin.im>
parents: 12525
diff changeset
148 if (ui_ops->set_tooltip) {
12471
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
149 GString *tooltip_text = g_string_new("");
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
150 for (l = convs, count = 0 ; l != NULL ; l = l->next, count++) {
12471
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
151 if (GAIM_IS_GTK_CONVERSATION(l->data)) {
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
152 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION((GaimConversation *)l->data);
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
153 if (count == DOCKLET_TOOLTIP_LINE_LIMIT - 1)
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
154 g_string_append(tooltip_text, _("Right-click for more unread messages...\n"));
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
155 else
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
156 g_string_append_printf(tooltip_text,
12471
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
157 ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
158 gtkconv->unseen_count,
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
159 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
160 }
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
161 }
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
162
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
163 /* get rid of the last newline */
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
164 if (tooltip_text->len > 0)
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
165 tooltip_text = g_string_truncate(tooltip_text, tooltip_text->len - 1);
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
166
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
167 ui_ops->set_tooltip(tooltip_text->str);
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
168
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
169 g_string_free(tooltip_text, TRUE);
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
170 }
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
171
5d7c12d525ed [gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents: 12470
diff changeset
172 g_list_free(convs);
12475
e9d9c08d21ef [gaim-migrate @ 14786]
Casey Harkins <charkins@pidgin.im>
parents: 12472
diff changeset
173
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
174 } else if (ui_ops->set_tooltip) {
12475
e9d9c08d21ef [gaim-migrate @ 14786]
Casey Harkins <charkins@pidgin.im>
parents: 12472
diff changeset
175 ui_ops->set_tooltip(NULL);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
176 }
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
177
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
178 /* iterate through all accounts and determine which
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
179 * status to show in the tray icon based on the following
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
180 * ranks (highest encountered rank will be used):
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
181 *
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
182 * 1) OFFLINE
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
183 * 2) ONLINE
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
184 * 3) ONLINE_PENDING
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
185 * 4) AWAY
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
186 * 5) AWAY_PENDING
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
187 * 6) CONNECTING
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
188 */
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
189 for(l = gaim_accounts_get_all(); l != NULL; l = l->next) {
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
190 DockletStatus tmpstatus = DOCKLET_STATUS_OFFLINE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
191
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
192 GaimAccount *account = (GaimAccount*)l->data;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
193 GaimStatus *account_status;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
194
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
195 if (!gaim_account_get_enabled(account, GAIM_GTK_UI))
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
196 continue;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
197
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
198 if (gaim_account_is_disconnected(account))
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
199 continue;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
200
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
201 account_status = gaim_account_get_active_status(account);
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
202
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
203 if (gaim_account_is_connecting(account)) {
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
204 tmpstatus = DOCKLET_STATUS_CONNECTING;
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
205 } else if (gaim_status_is_online(account_status)) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
206 if (!gaim_status_is_available(account_status)) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
207 if (pending)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
208 tmpstatus = DOCKLET_STATUS_AWAY_PENDING;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
209 else
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
210 tmpstatus = DOCKLET_STATUS_AWAY;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
211 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
212 else {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
213 if (pending)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
214 tmpstatus = DOCKLET_STATUS_ONLINE_PENDING;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
215 else
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
216 tmpstatus = DOCKLET_STATUS_ONLINE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
217 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
218 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
219
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
220 if (tmpstatus > newstatus)
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
221 newstatus = tmpstatus;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
222 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
223
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
224 /* update the icon if we changed status */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
225 if (status != newstatus) {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
226 status = newstatus;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
227
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
228 if (ui_ops && ui_ops->update_icon)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
229 ui_ops->update_icon(status);
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
230
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
231 /* and schedule the blinker function if messages are pending */
11989
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
232 if ((status == DOCKLET_STATUS_ONLINE_PENDING
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
233 || status == DOCKLET_STATUS_AWAY_PENDING)
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
234 && docklet_blinking_timer == 0) {
de96bdf1d160 [gaim-migrate @ 14282]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11714
diff changeset
235 docklet_blinking_timer = g_timeout_add(500, docklet_blink_icon, &handle);
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
236 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
237 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
238
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
239 return FALSE; /* for when we're called by the glib idle handler */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
240 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
241
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
242 static gboolean
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
243 online_account_supports_chat()
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
244 {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
245 GList *c = NULL;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
246 c = gaim_connections_get_all();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
247
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
248 while(c != NULL) {
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
249 GaimConnection *gc = c->data;
12525
e186a099648c [gaim-migrate @ 14837]
Nathan Walp <nwalp@pidgin.im>
parents: 12498
diff changeset
250 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
e186a099648c [gaim-migrate @ 14837]
Nathan Walp <nwalp@pidgin.im>
parents: 12498
diff changeset
251 if (prpl_info != NULL && prpl_info->chat_info != NULL)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
252 return TRUE;
11713
775a09a070b7 [gaim-migrate @ 14004]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11709
diff changeset
253 c = c->next;
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
254 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
255
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
256 return FALSE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
257 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
258
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
259 /**************************************************************************
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
260 * callbacks and signal handlers
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
261 **************************************************************************/
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
262 static void
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
263 gaim_quit_cb()
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
264 {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
265 /* TODO: confirm quit while pending */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
266 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
267
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
268 static void
12531
c3b10e46acc0 [gaim-migrate @ 14844]
Nathan Walp <nwalp@pidgin.im>
parents: 12526
diff changeset
269 docklet_update_status_cb(void *data)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
270 {
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
271 docklet_update_status();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
272 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
273
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
274 static void
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
275 docklet_prefs_cb(const char *name, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12732
diff changeset
276 gconstpointer val, gpointer data)
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
277 {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
278 docklet_update_status();
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
279 }
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
280
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
281 static void
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
282 docklet_conv_updated_cb(GaimConversation *conv, GaimConvUpdateType type)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
283 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
284 if (type == GAIM_CONV_UPDATE_UNSEEN)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
285 docklet_update_status();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
286 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
287
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
288 static void
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
289 docklet_signed_on_cb(GaimConnection *gc)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
290 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
291 if (!enable_join_chat) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
292 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
293 enable_join_chat = TRUE;
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
294 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
295 docklet_update_status();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
296 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
297
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
298 static void
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
299 docklet_signed_off_cb(GaimConnection *gc)
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
300 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
301 if (enable_join_chat) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
302 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
303 enable_join_chat = online_account_supports_chat();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
304 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
305 docklet_update_status();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
306 }
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
307
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
308 /**************************************************************************
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
309 * docklet pop-up menu
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
310 **************************************************************************/
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
311 static void
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
312 docklet_toggle_mute(GtkWidget *toggle, void *data)
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
313 {
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10004
diff changeset
314 gaim_prefs_set_bool("/gaim/gtk/sound/mute", GTK_CHECK_MENU_ITEM(toggle)->active);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
315 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
316
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
317 static void
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
318 docklet_toggle_blist(GtkWidget *toggle, void *data)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
319 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
320 gaim_blist_set_visible(GTK_CHECK_MENU_ITEM(toggle)->active);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
321 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
322
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
323 #ifdef _WIN32
6894
8c6e286b079d [gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents: 6485
diff changeset
324 /* This is a workaround for a bug in windows GTK+. Clicking outside of the
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
325 menu does not get rid of it, so instead we get rid of it as soon as the
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
326 pointer leaves the menu. */
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
327 static gboolean
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
328 hide_docklet_menu(gpointer data)
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
329 {
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
330 if (data != NULL) {
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
331 gtk_menu_popdown(GTK_MENU(data));
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
332 }
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
333 return FALSE;
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
334 }
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
335
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
336 static gboolean
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
337 docklet_menu_leave_enter(GtkWidget *menu, GdkEventCrossing *event, void *data)
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
338 {
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
339 static guint hide_docklet_timer = 0;
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
340 if (event->type == GDK_LEAVE_NOTIFY && event->detail == GDK_NOTIFY_ANCESTOR) {
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
341 gaim_debug(GAIM_DEBUG_INFO, "docklet", "menu leave-notify-event\n");
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
342 /* Add some slop so that the menu doesn't annoyingly disappear when mousing around */
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
343 if (hide_docklet_timer == 0) {
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
344 hide_docklet_timer = gaim_timeout_add(500,
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
345 hide_docklet_menu, menu);
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
346 }
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
347 } else if (event->type == GDK_ENTER_NOTIFY && event->detail == GDK_NOTIFY_ANCESTOR) {
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
348 gaim_debug(GAIM_DEBUG_INFO, "docklet", "menu enter-notify-event\n");
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
349 if (hide_docklet_timer != 0) {
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
350 /* Cancel the hiding if we reenter */
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
351
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
352 gaim_timeout_remove(hide_docklet_timer);
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
353 hide_docklet_timer = 0;
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
354 }
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
355 }
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
356 return FALSE;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
357 }
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
358 #endif
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
359
12614
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
360 static void
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
361 show_custom_status_editor_cb(GtkMenuItem *menuitem, gpointer user_data)
12614
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
362 {
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
363 GaimSavedStatus *saved_status;
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
364 saved_status = gaim_savedstatus_get_current();
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
365 gaim_gtk_status_editor_show(FALSE,
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
366 gaim_savedstatus_is_transient(saved_status) ? saved_status : NULL);
12614
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
367 }
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
368
60587b3da220 [gaim-migrate @ 14950]
Mark Doliner <markdoliner@pidgin.im>
parents: 12600
diff changeset
369 static void
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
370 activate_status_primitive_cb(GtkMenuItem *menuitem, gpointer user_data)
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
371 {
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
372 GaimStatusPrimitive primitive;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
373 GaimSavedStatus *saved_status;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
374
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
375 primitive = GPOINTER_TO_INT(user_data);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
376
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
377 /* Create a new transient saved status */
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
378 saved_status = gaim_savedstatus_new(NULL, primitive);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
379 gaim_savedstatus_set_type(saved_status, primitive);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
380
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
381 /* Set the status for each account */
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
382 gaim_savedstatus_activate(saved_status);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
383 }
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
384
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
385 static void
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
386 activate_saved_status_cb(GtkMenuItem *menuitem, gpointer user_data)
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
387 {
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
388 time_t creation_time;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
389 GaimSavedStatus *saved_status;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
390
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
391 creation_time = GPOINTER_TO_INT(user_data);
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
392 saved_status = gaim_savedstatus_find_by_creation_time(creation_time);
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
393 if (saved_status != NULL)
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
394 gaim_savedstatus_activate(saved_status);
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
395 }
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
396
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
397 static GtkWidget *
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
398 new_menu_item_with_gaim_icon(GtkWidget *menu, const char *str, GaimStatusPrimitive primitive, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
399 {
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
400 GtkWidget *menuitem;
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
401 GdkPixbuf *pixbuf;
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
402 GtkWidget *image;
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
403
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
404 menuitem = gtk_image_menu_item_new_with_mnemonic(str);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
405
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
406 if (menu)
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
407 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
408
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
409 if (sf)
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
410 g_signal_connect(G_OBJECT(menuitem), "activate", sf, data);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
411
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
412 pixbuf = gaim_gtk_create_gaim_icon_with_status(primitive, 0.5);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
413 image = gtk_image_new_from_pixbuf(pixbuf);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
414 g_object_unref(pixbuf);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
415 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
416
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
417 gtk_widget_show_all(menuitem);
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
418
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
419 return menuitem;
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
420 }
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
421
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
422 static GtkWidget *
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
423 docklet_status_submenu()
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
424 {
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
425 GtkWidget *submenu, *menuitem;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
426 GList *popular_statuses, *cur;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
427
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
428 submenu = gtk_menu_new();
13048
1ac7fd059e69 [gaim-migrate @ 15409]
Mark Doliner <markdoliner@pidgin.im>
parents: 13047
diff changeset
429 menuitem = gtk_menu_item_new_with_label(_("Change Status"));
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
430 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
431
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
432 new_menu_item_with_gaim_icon(submenu, _("Available"),
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
433 GAIM_STATUS_AVAILABLE, G_CALLBACK(activate_status_primitive_cb),
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
434 GINT_TO_POINTER(GAIM_STATUS_AVAILABLE), 0, 0, NULL);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
435
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
436 new_menu_item_with_gaim_icon(submenu, _("Away"),
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
437 GAIM_STATUS_AWAY, G_CALLBACK(activate_status_primitive_cb),
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
438 GINT_TO_POINTER(GAIM_STATUS_AWAY), 0, 0, NULL);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
439
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
440 new_menu_item_with_gaim_icon(submenu, _("Invisible"),
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
441 GAIM_STATUS_INVISIBLE, G_CALLBACK(activate_status_primitive_cb),
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
442 GINT_TO_POINTER(GAIM_STATUS_INVISIBLE), 0, 0, NULL);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
443
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
444 new_menu_item_with_gaim_icon(submenu, _("Offline"),
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
445 GAIM_STATUS_OFFLINE, G_CALLBACK(activate_status_primitive_cb),
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
446 GINT_TO_POINTER(GAIM_STATUS_OFFLINE), 0, 0, NULL);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
447
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
448 popular_statuses = gaim_savedstatuses_get_popular(6);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
449 if (popular_statuses != NULL)
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
450 gaim_separator(submenu);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
451 for (cur = popular_statuses; cur != NULL; cur = cur->next)
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
452 {
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
453 GaimSavedStatus *saved_status = cur->data;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
454 time_t creation_time = gaim_savedstatus_get_creation_time(saved_status);
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
455 new_menu_item_with_gaim_icon(submenu,
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
456 gaim_savedstatus_get_title(saved_status),
13113
bfc8191807c2 [gaim-migrate @ 15474]
Mark Doliner <markdoliner@pidgin.im>
parents: 13048
diff changeset
457 gaim_savedstatus_get_type(saved_status), G_CALLBACK(activate_saved_status_cb),
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
458 GINT_TO_POINTER(creation_time), 0, 0, NULL);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
459 }
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
460 g_list_free(popular_statuses);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
461
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
462 gaim_separator(submenu);
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
463
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
464 new_menu_item_with_gaim_icon(submenu, _("New..."), GAIM_STATUS_AVAILABLE, G_CALLBACK(show_custom_status_editor_cb), NULL, 0, 0, NULL);
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13113
diff changeset
465 new_menu_item_with_gaim_icon(submenu, _("Saved..."), GAIM_STATUS_AVAILABLE, G_CALLBACK(gaim_gtk_status_window_show), NULL, 0, 0, NULL);
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
466
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
467 return menuitem;
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
468 }
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
469
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
470 static void
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
471 docklet_menu() {
3513
32f8b1104d15 [gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents: 3512
diff changeset
472 static GtkWidget *menu = NULL;
10127
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10104
diff changeset
473 GtkWidget *menuitem;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
474
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
475 if (menu) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
476 gtk_widget_destroy(menu);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
477 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
478
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
479 menu = gtk_menu_new();
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
480
12470
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
481 menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List"));
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
482 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
483 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
484 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
485
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
486 menuitem = gtk_menu_item_new_with_label(_("Unread Messages"));
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
487
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
488 if (status == DOCKLET_STATUS_ONLINE_PENDING || status == DOCKLET_STATUS_AWAY_PENDING) {
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
489 GtkWidget *submenu = gtk_menu_new();
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
490 GList *l = get_pending_list(0);
12470
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
491 if (l == NULL) {
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
492 gtk_widget_set_sensitive(menuitem, FALSE);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
493 gaim_debug_warning("docklet",
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
494 "status indicates messages pending, but no conversations with unseen messages were found.");
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
495 } else {
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
496 gaim_gtk_conversations_fill_menu(submenu, l);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
497 g_list_free(l);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
498 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
499 }
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
500 } else {
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
501 gtk_widget_set_sensitive(menuitem, FALSE);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
502 }
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
503 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
504
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
505 gaim_separator(menu);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
506
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
507 menuitem = gaim_new_item_from_stock(menu, _("New Message..."), GAIM_STOCK_IM, G_CALLBACK(gaim_gtkdialogs_im), NULL, 0, 0, NULL);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
508 if (status == DOCKLET_STATUS_OFFLINE)
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
509 gtk_widget_set_sensitive(menuitem, FALSE);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
510
12732
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
511 menuitem = docklet_status_submenu();
971281663a50 [gaim-migrate @ 15076]
Mark Doliner <markdoliner@pidgin.im>
parents: 12725
diff changeset
512 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12614
diff changeset
513
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12614
diff changeset
514 gaim_separator(menu);
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12614
diff changeset
515
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12116
diff changeset
516 gaim_new_item_from_stock(menu, _("Accounts"), GAIM_STOCK_ACCOUNTS, G_CALLBACK(gaim_gtk_accounts_window_show), NULL, 0, 0, NULL);
12163
483d8be2deec [gaim-migrate @ 14464]
Richard Laager <rlaager@pidgin.im>
parents: 12136
diff changeset
517 gaim_new_item_from_stock(menu, _("Plugins"), GAIM_STOCK_PLUGIN, G_CALLBACK(gaim_gtk_plugin_dialog_show), NULL, 0, 0, NULL);
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12116
diff changeset
518 gaim_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(gaim_gtk_prefs_show), NULL, 0, 0, NULL);
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12116
diff changeset
519
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12116
diff changeset
520 gaim_separator(menu);
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12116
diff changeset
521
12470
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
522 menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds"));
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
523 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), gaim_prefs_get_bool("/gaim/gtk/sound/mute"));
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10004
diff changeset
524 if (!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none"))
12470
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
525 gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
526 g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
f70a8568bc48 [gaim-migrate @ 14780]
Casey Harkins <charkins@pidgin.im>
parents: 12468
diff changeset
527 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
528
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
529 gaim_separator(menu);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
530
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
531 /* TODO: need a submenu to change status, this needs to "link"
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
532 * to the status in the buddy list gtkstatusbox
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
533 */
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
534
9994
9e35e51ba3bf [gaim-migrate @ 10907]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
535 gaim_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(gaim_core_quit), NULL, 0, 0, NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
536
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
537 #ifdef _WIN32
10910
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
538 g_signal_connect(menu, "leave-notify-event", G_CALLBACK(docklet_menu_leave_enter), NULL);
1feb55dbeeab [gaim-migrate @ 12663]
Daniel Atallah <datallah@pidgin.im>
parents: 10738
diff changeset
539 g_signal_connect(menu, "enter-notify-event", G_CALLBACK(docklet_menu_leave_enter), NULL);
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
540 #endif
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
541 gtk_widget_show_all(menu);
10268
862ed5d3f227 [gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents: 10127
diff changeset
542 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
862ed5d3f227 [gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents: 10127
diff changeset
543 ui_ops->position_menu,
862ed5d3f227 [gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents: 10127
diff changeset
544 NULL, 0, gtk_get_current_event_time());
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
545 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
546
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
547 /**************************************************************************
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
548 * public api for ui_ops
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
549 **************************************************************************/
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
550 void
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
551 docklet_clicked(int button_type)
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
552 {
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
553 switch (button_type) {
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
554 case 1:
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
555 if (status == DOCKLET_STATUS_ONLINE_PENDING || status == DOCKLET_STATUS_AWAY_PENDING) {
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
556 GList *l = get_pending_list(1);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
557 if (l != NULL) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
558 gaim_gtkconv_present_conversation((GaimConversation *)l->data);
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
559 g_list_free(l);
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
560 }
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
561 } else {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
562 gaim_gtk_blist_toggle_visibility();
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12280
diff changeset
563 }
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
564 break;
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
565 case 3:
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
566 docklet_menu();
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
567 break;
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
568 }
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
569 }
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
570
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
571 void
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
572 docklet_embedded()
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
573 {
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
574 if (!visibility_manager) {
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
575 gaim_gtk_blist_visibility_manager_add();
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
576 visibility_manager = TRUE;
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
577 }
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
578 docklet_update_status();
6894
8c6e286b079d [gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents: 6485
diff changeset
579 if (ui_ops && ui_ops->update_icon)
6211
f54c1fa4071e [gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents: 6208
diff changeset
580 ui_ops->update_icon(status);
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
581 }
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
582
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
583 void
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
584 docklet_remove()
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
585 {
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
586 if (visibility_manager) {
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
587 gaim_gtk_blist_visibility_manager_remove();
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
588 visibility_manager = FALSE;
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
589 }
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
590 }
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
591
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
592 void
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
593 docklet_unload()
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
594 {
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
595 gaim_plugin_unload(handle);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
596 }
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
597
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
598 void
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
599 docklet_set_ui_ops(struct docklet_ui_ops *ops)
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
600 {
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
601 ui_ops = ops;
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
602 }
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
603
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
604 /**************************************************************************
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
605 * plugin glue
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
606 **************************************************************************/
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
607 static gboolean
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
608 plugin_load(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
609 {
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
610 void *conn_handle = gaim_connections_get_handle();
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
611 void *conv_handle = gaim_conversations_get_handle();
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
612 void *accounts_handle = gaim_accounts_get_handle();
9893
c57bade18d6f [gaim-migrate @ 10781]
François Gagné
parents: 9813
diff changeset
613 void *core_handle = gaim_get_core();
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
614
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
615 gaim_debug(GAIM_DEBUG_INFO, "docklet", "plugin loaded\n");
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
616
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
617 handle = plugin;
6077
a4e87d8f61a0 [gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
618
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
619 docklet_ui_init();
6894
8c6e286b079d [gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents: 6485
diff changeset
620 if (ui_ops && ui_ops->create)
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
621 ui_ops->create();
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
622 gaim_signal_connect(conn_handle, "signed-on",
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
623 plugin, GAIM_CALLBACK(docklet_signed_on_cb), NULL);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
624 gaim_signal_connect(conn_handle, "signed-off",
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
625 plugin, GAIM_CALLBACK(docklet_signed_off_cb), NULL);
11714
2e075e8b2347 [gaim-migrate @ 14005]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11713
diff changeset
626 gaim_signal_connect(accounts_handle, "account-status-changed",
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
627 plugin, GAIM_CALLBACK(docklet_update_status_cb), NULL);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
628 gaim_signal_connect(conv_handle, "received-im-msg",
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
629 plugin, GAIM_CALLBACK(docklet_update_status_cb), NULL);
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
630 gaim_signal_connect(conv_handle, "conversation-created",
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
631 plugin, GAIM_CALLBACK(docklet_update_status_cb), NULL);
12018
60a434403f7e [gaim-migrate @ 14311]
Casey Harkins <charkins@pidgin.im>
parents: 12016
diff changeset
632 gaim_signal_connect(conv_handle, "deleting-conversation",
60a434403f7e [gaim-migrate @ 14311]
Casey Harkins <charkins@pidgin.im>
parents: 12016
diff changeset
633 plugin, GAIM_CALLBACK(docklet_update_status_cb), NULL);
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
634 gaim_signal_connect(conv_handle, "conversation-updated",
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
635 plugin, GAIM_CALLBACK(docklet_conv_updated_cb), NULL);
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
636
9893
c57bade18d6f [gaim-migrate @ 10781]
François Gagné
parents: 9813
diff changeset
637 gaim_signal_connect(core_handle, "quitting",
c57bade18d6f [gaim-migrate @ 10781]
François Gagné
parents: 9813
diff changeset
638 plugin, GAIM_CALLBACK(gaim_quit_cb), NULL);
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
639
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
640 gaim_prefs_connect_callback(plugin, "/plugins/gtk/docklet/blink_im",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
641 docklet_prefs_cb, NULL);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
642 gaim_prefs_connect_callback(plugin, "/plugins/gtk/docklet/blink_chat",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
643 docklet_prefs_cb, NULL);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
644
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
645 enable_join_chat = online_account_supports_chat();
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
646
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
647 return TRUE;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
648 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
649
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
650 static gboolean
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
651 plugin_unload(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
652 {
6894
8c6e286b079d [gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents: 6485
diff changeset
653 if (ui_ops && ui_ops->destroy)
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
654 ui_ops->destroy();
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
655
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
656 /* remove callbacks */
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11989
diff changeset
657 gaim_signals_disconnect_by_handle(handle);
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
658 gaim_prefs_disconnect_by_handle(handle);
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
659
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11256
diff changeset
660 gaim_debug(GAIM_DEBUG_INFO, "docklet", "plugin unloaded\n");
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
661
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
662 return TRUE;
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
663 }
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
664
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
665 static GtkWidget *
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
666 plugin_config_frame(GaimPlugin *plugin)
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
667 {
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
668 GtkWidget *frame;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
669 GtkWidget *vbox;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
670 GtkSizeGroup *sg;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
671 GtkWidget *dd;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
672
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
673 frame = gtk_vbox_new(FALSE, 18);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
674 gtk_container_set_border_width(GTK_CONTAINER(frame), 12);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
675
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
676 vbox = gaim_gtk_make_frame(frame, _("Blink tray icon for unread..."));
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
677 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
678
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
679 dd = gaim_gtk_prefs_dropdown(vbox, _("_Instant Messages:"),
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
680 GAIM_PREF_STRING, "/plugins/gtk/docklet/blink_im",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
681 _("Never"), "never",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
682 _("In hidden conversations"), "hidden",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
683 _("Always"), "always",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
684 NULL);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
685 gtk_size_group_add_widget(sg, dd);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
686
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
687 dd = gaim_gtk_prefs_dropdown(vbox, _("C_hat Messages:"),
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
688 GAIM_PREF_STRING, "/plugins/gtk/docklet/blink_chat",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
689 _("Never"), "never",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
690 _("When my nick is said"), "nick",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
691 _("Always"), "always",
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
692 NULL);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
693 gtk_size_group_add_widget(sg, dd);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
694
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
695 gtk_widget_show_all(frame);
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
696 return frame;
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
697 }
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
698
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
699 static GaimGtkPluginUiInfo ui_info =
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
700 {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12531
diff changeset
701 plugin_config_frame,
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12531
diff changeset
702 0 /* page_num (Reserved) */
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
703 };
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
704
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
705 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
706 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9893
diff changeset
707 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9893
diff changeset
708 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9893
diff changeset
709 GAIM_MINOR_VERSION,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
710 GAIM_PLUGIN_STANDARD, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
711 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
712 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
713 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
714 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
715
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
716 DOCKLET_PLUGIN_ID, /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
717 N_("System Tray Icon"), /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
718 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
719 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
720 N_("Displays an icon for Gaim in the system tray."),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
721 /** description */
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
722 N_("Displays a system tray icon (in GNOME, KDE, or Windows for example) "
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
723 "to show the current status of Gaim, allow fast access to commonly "
12498
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
724 "used functions, and to toggle display of the buddy list. "
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
725 "Also provides options to blink for unread messages."),
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
726 /** author */
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
727 "Robert McQueen <robot101@debian.org>"
93591c1f68f1 [gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents: 12475
diff changeset
728 "\n\t\t\tCasey Harkins <charkins@users.sf.net>",
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6310
diff changeset
729 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
730
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
731 plugin_load, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
732 plugin_unload, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
733 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
734
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
735 &ui_info, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8940
diff changeset
736 NULL, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8940
diff changeset
737 NULL,
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8940
diff changeset
738 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
739 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
740
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
741 static void
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
742 plugin_init(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
743 {
12472
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
744 gaim_prefs_add_none("/plugins/gtk/docklet");
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
745 gaim_prefs_add_string("/plugins/gtk/docklet/blink_im", "hidden");
1a11e00f8c88 [gaim-migrate @ 14782]
Casey Harkins <charkins@pidgin.im>
parents: 12471
diff changeset
746 gaim_prefs_add_string("/plugins/gtk/docklet/blink_chat", "never");
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
747 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
748
6208
46464ee45f48 [gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents: 6179
diff changeset
749 GAIM_INIT_PLUGIN(docklet, plugin_init, info)

mercurial