src/gtkidle.c

Fri, 06 Jan 2006 04:46:00 +0000

author
Casey Harkins <charkins@pidgin.im>
date
Fri, 06 Jan 2006 04:46:00 +0000
changeset 12744
45d72d69f399
parent 12410
98d8abd3db98
child 13324
8ff1c408ef3e
permissions
-rw-r--r--

[gaim-migrate @ 15091]
" Adds an emblem to a buddy if they have a queued message
(hidden conversation). In the large buddy list it is
added in the northwest corner, sliding the existing
northwest emblem (if specified) to the northeast
position and discarding the northeast emblem. In the
small buddy list, the emblem is added to the southeast.

Attached is a patch and an emblem image to be dropped
in pixmaps/status/default/. The emblem image is a
scaled down version of the send-im.png image." -- Casey Harkins

as I asked for this patch, and since there don't seem to be objections to
it (yet), I'm going ahead and applying it.

committer: Luke Schierer <lschiere@pidgin.im>

11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
1 /*
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
2 * gaim
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
3 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
6 * source distribution.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
7 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
12 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
17 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
21 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
22 */
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
12410
98d8abd3db98 [gaim-migrate @ 14717]
Richard Laager <rlaager@pidgin.im>
parents: 12278
diff changeset
24 #include "gtkidle.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
25
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
26 #ifdef USE_SCREENSAVER
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
27 # ifndef _WIN32
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
28 # include <X11/Xlib.h>
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
29 # include <X11/Xutil.h>
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
30 # include <X11/extensions/scrnsaver.h>
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
31 # include <gdk/gdkx.h>
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
32 # else
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
33 # include "idletrack.h"
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
34 # endif
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
35 #endif /* USE_SCREENSAVER */
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
36
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
37 #include "idle.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
38
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
39 /**
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
40 * Get the number of seconds the user has been idle. In Unix-world
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
41 * this is based on the X Windows usage. In MS Windows this is based
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
42 * on keyboard/mouse usage.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
43 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
44 * In Debian bug #271639, jwz says:
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
45 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
46 * Gaim should simply ask xscreensaver how long the user has been idle:
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
47 * % xscreensaver-command -time
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
48 * XScreenSaver 4.18: screen blanked since Tue Sep 14 14:10:45 2004
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
49 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
50 * Or you can monitor the _SCREENSAVER_STATUS property on root window #0.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
51 * Element 0 is the status (0, BLANK, LOCK), element 1 is the time_t since
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
52 * the last state change, and subsequent elements are which hack is running
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
53 * on the various screens:
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
54 * % xprop -f _SCREENSAVER_STATUS 32ac -root _SCREENSAVER_STATUS
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
55 * _SCREENSAVER_STATUS(INTEGER) = BLANK, 1095196626, 10, 237
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
56 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
57 * See watch() in xscreensaver/driver/xscreensaver-command.c.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
58 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
59 * @return The number of seconds the user has been idle.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
60 */
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
61 #ifdef USE_SCREENSAVER
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
62 static time_t
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
63 gaim_gtk_get_time_idle()
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
64 {
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
65 # ifndef _WIN32
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
66 /* Query xscreensaver */
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
67 static XScreenSaverInfo *mit_info = NULL;
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
68 int event_base, error_base;
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
69 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
70 if (mit_info == NULL) {
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
71 mit_info = XScreenSaverAllocInfo();
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
72 }
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
73 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
74 return (mit_info->idle) / 1000;
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
75 } else
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
76 return 0;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
77 # else
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
78 /* Query windows */
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
79 return (GetTickCount() - wgaim_get_lastactive()) / 1000;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
80 # endif /* _WIN32 */
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
81 }
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
82 #endif /* USE_SCREENSAVER */
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
83
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
84 static GaimIdleUiOps ui_ops =
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
85 {
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
86 #ifdef USE_SCREENSAVER
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
87 gaim_gtk_get_time_idle
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
88 #else
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
89 NULL
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
90 #endif /* USE_SCREENSAVER */
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
91 };
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
92
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
93 GaimIdleUiOps *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
94 gaim_gtk_idle_get_ui_ops()
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
95 {
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
96 return &ui_ops;
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
97 }

mercurial