src/idle.c

Sun, 23 Oct 2005 20:39:00 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Sun, 23 Oct 2005 20:39:00 +0000
changeset 11760
075e1495157b
parent 11725
0649170ebdf6
permissions
-rw-r--r--

[gaim-migrate @ 14051]
You know how if you were talking to someone with a body background and he
was the last person to say something, his background color would go all
the way to the bottom of the imhtml. This changes that; I think it's better.

1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
1 /*
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
2 * gaim
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
3 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7475
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7475
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7475
diff changeset
6 * source distribution.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
8 * This program is free software; you can redistribute it and/or modify
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
9 * it under the terms of the GNU General Public License as published by
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
11 * (at your option) any later version.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
13 * This program is distributed in the hope that it will be useful,
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
16 * GNU General Public License for more details.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
18 * You should have received a copy of the GNU General Public License
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
19 * along with this program; if not, write to the Free Software
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
23 #include "internal.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
25 #ifdef USE_SCREENSAVER
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
26 # ifndef _WIN32
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
27 # include <X11/Xlib.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
28 # include <X11/Xutil.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
29 # include <X11/extensions/scrnsaver.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
30 # include <gdk/gdkx.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
31 # else
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
32 # include "idletrack.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
33 # endif
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
34 #endif /* USE_SCREENSAVER */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35
5615
2eb715cbbd9b [gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
36 #include "connection.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
37 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
38 #include "log.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
39 #include "prefs.h"
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11654
diff changeset
40 #include "savedstatuses.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
41 #include "signals.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5755
diff changeset
42
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11654
diff changeset
43 #define IDLEMARK 600 /* 10 minutes! */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
45 typedef enum
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
46 {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
47 GAIM_IDLE_NOT_AWAY = 0,
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
48 GAIM_IDLE_AUTO_AWAY,
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
49 GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
50
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
51 } GaimAutoAwayState;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
52
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
53 #ifdef USE_SCREENSAVER
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
54 /**
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
55 * Get the number of seconds the user has been idle. In Unix-world
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
56 * this is based on the X Windows usage. In MS Windows this is based
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
57 * on keyboard/mouse usage.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
58 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
59 * In Debian bug #271639, jwz says:
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
60 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
61 * Gaim should simply ask xscreensaver how long the user has been idle:
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
62 * % xscreensaver-command -time
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
63 * XScreenSaver 4.18: screen blanked since Tue Sep 14 14:10:45 2004
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
64 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
65 * Or you can monitor the _SCREENSAVER_STATUS property on root window #0.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
66 * Element 0 is the status (0, BLANK, LOCK), element 1 is the time_t since
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
67 * the last state change, and subsequent elements are which hack is running
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
68 * on the various screens:
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
69 * % xprop -f _SCREENSAVER_STATUS 32ac -root _SCREENSAVER_STATUS
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
70 * _SCREENSAVER_STATUS(INTEGER) = BLANK, 1095196626, 10, 237
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
71 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
72 * See watch() in xscreensaver/driver/xscreensaver-command.c.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
73 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
74 * @return The number of seconds the user has been idle.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
75 */
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
76 static int
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
77 get_idle_time_from_system()
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
78 {
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
79 #ifndef _WIN32
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
80 static XScreenSaverInfo *mit_info = NULL;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
81 int event_base, error_base;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
82 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
83 if (mit_info == NULL) {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
84 mit_info = XScreenSaverAllocInfo();
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
85 }
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
86 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
87 return (mit_info->idle) / 1000;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
88 } else
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
89 return 0;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
90 #else
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
91 return (GetTickCount() - wgaim_get_lastactive()) / 1000;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
92 #endif
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
93 }
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
94 #endif /* USE_SCREENSAVER */
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
95
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
96 /*
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
97 * This function should be called when you think your idle state
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
98 * may have changed. Maybe you're over the 10-minute mark and
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
99 * Gaim should start reporting idle time to the server. Maybe
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
100 * you've returned from being idle. Maybe your auto-away message
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
101 * should be set.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
102 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
103 * There is no harm to calling this many many times, other than
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
104 * it will be kinda slow. This is called every 20 seconds by a
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
105 * timer set when an account logs in. It is also called when
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
106 * you send an IM, a chat, etc.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
107 *
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
108 * This function has 3 sections.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
109 * 1. Get your idle time. It will query XScreenSaver or Windows
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
110 * or get the Gaim idle time. Whatever.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
111 * 2. Set or unset your auto-away message.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
112 * 3. Report your current idle time to the IM server.
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
113 */
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11654
diff changeset
114 /* TODO: This needs to be namespaced or moved elsewhere. */
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
115 gint
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
116 check_idle(gpointer data)
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
117 {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
118 GaimConnection *gc = data;
11287
87bec7c61fed [gaim-migrate @ 13484]
Daniel Atallah <datallah@pidgin.im>
parents: 10423
diff changeset
119 gboolean report_idle;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
120 GaimAccount *account;
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
121 time_t t;
4201
547da94c5a14 [gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents: 3905
diff changeset
122 int idle_time;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
123
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
124 account = gaim_connection_get_account(gc);
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
125
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
126 gaim_signal_emit(gaim_blist_get_handle(), "update-idle");
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
127
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
128 time(&t);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129
11287
87bec7c61fed [gaim-migrate @ 13484]
Daniel Atallah <datallah@pidgin.im>
parents: 10423
diff changeset
130 report_idle = gaim_prefs_get_bool("/gaim/gtk/idle/report");
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
132 #ifdef USE_SCREENSAVER
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
133 idle_time = get_idle_time_from_system();
11697
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
134 #else
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
135 /*
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
136 * If Gaim wasn't built with xscreensaver support, then
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
137 * fallback to calculating our idle time based on when
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
138 * we last sent a message.
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
139 */
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
140 idle_time = t - gc->last_sent_time;
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
141 #endif /* USE_SCREENSAVER */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
142
11697
f7ee74b6caf9 [gaim-migrate @ 13988]
Mark Doliner <markdoliner@pidgin.im>
parents: 11677
diff changeset
143 /* Should we become auto-away? */
5560
7cd6678f838b [gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents: 5548
diff changeset
144 if (gaim_prefs_get_bool("/core/away/away_when_idle") &&
5748
2fee4320c0b8 [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
145 (idle_time > (60 * gaim_prefs_get_int("/core/away/mins_before_away")))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
146 && (!gc->is_auto_away))
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
147 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
148 GaimPresence *presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
149
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
150 presence = gaim_account_get_presence(account);
5560
7cd6678f838b [gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents: 5548
diff changeset
151
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
152 if (gaim_presence_is_available(presence))
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
153 {
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11287
diff changeset
154 const char *idleaway_name;
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11654
diff changeset
155 GaimSavedStatus *saved_status;
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 5872
diff changeset
156
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
157 gaim_debug_info("idle", "Making %s auto-away\n",
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
158 gaim_account_get_username(account));
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
159
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11287
diff changeset
160 /* Mark our accounts "away" using the idleaway status */
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11287
diff changeset
161 idleaway_name = gaim_prefs_get_string("/core/status/idleaway");
11677
89c2ab8d2ebf [gaim-migrate @ 13963]
Mark Doliner <markdoliner@pidgin.im>
parents: 11654
diff changeset
162 saved_status = gaim_savedstatus_find(idleaway_name);
11725
0649170ebdf6 [gaim-migrate @ 14016]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
163 if (saved_status)
0649170ebdf6 [gaim-migrate @ 14016]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
164 gaim_savedstatus_activate(saved_status);
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 5872
diff changeset
165
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
166 gc->is_auto_away = GAIM_IDLE_AUTO_AWAY;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
167 } else {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
168 gc->is_auto_away = GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY;
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
169 }
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9791
diff changeset
170
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
171 /* Should we return from being auto-away? */
5748
2fee4320c0b8 [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
172 } else if (gc->is_auto_away &&
2fee4320c0b8 [gaim-migrate @ 6173]
Nathan Walp <nwalp@pidgin.im>
parents: 5615
diff changeset
173 idle_time < 60 * gaim_prefs_get_int("/core/away/mins_before_away")) {
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
174 if (gc->is_auto_away == GAIM_IDLE_AWAY_BUT_NOT_AUTO_AWAY) {
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
175 gc->is_auto_away = GAIM_IDLE_NOT_AWAY;
1815
e2b090284b19 [gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1575
diff changeset
176 return TRUE;
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
177 }
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
178 gc->is_auto_away = GAIM_IDLE_NOT_AWAY;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9791
diff changeset
179
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
180 /* XXX STATUS AWAY CORE/UI */
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
181 /* Need to set this connection to available here */
1109
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
182 }
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
183
11287
87bec7c61fed [gaim-migrate @ 13484]
Daniel Atallah <datallah@pidgin.im>
parents: 10423
diff changeset
184 /* Deal with reporting idleness to the server, if appropriate */
87bec7c61fed [gaim-migrate @ 13484]
Daniel Atallah <datallah@pidgin.im>
parents: 10423
diff changeset
185 if (report_idle && idle_time >= IDLEMARK && !gc->is_idle) {
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
186 gaim_debug_info("idle", "Setting %s idle %d seconds\n",
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
187 gaim_account_get_username(account), idle_time);
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
188 serv_set_idle(gc, idle_time);
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
189 gc->is_idle = 1;
7475
987384816492 [gaim-migrate @ 8088]
Mark Doliner <markdoliner@pidgin.im>
parents: 7431
diff changeset
190 /* LOG system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
11287
87bec7c61fed [gaim-migrate @ 13484]
Daniel Atallah <datallah@pidgin.im>
parents: 10423
diff changeset
191 } else if ((!report_idle || idle_time < IDLEMARK) && gc->is_idle) {
10319
e45260cc6aa6 [gaim-migrate @ 11526]
Mark Doliner <markdoliner@pidgin.im>
parents: 9993
diff changeset
192 gaim_debug_info("idle", "Setting %s unidle\n",
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5560
diff changeset
193 gaim_account_get_username(account));
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
194 serv_touch_idle(gc);
7475
987384816492 [gaim-migrate @ 8088]
Mark Doliner <markdoliner@pidgin.im>
parents: 7431
diff changeset
195 /* LOG system_log(log_unidle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
1029
c5ea048dc7ac [gaim-migrate @ 1039]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1028
diff changeset
196 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
197
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
198 return TRUE;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199 }

mercurial