annotate src/idle.c @ 3725:dd48b1ac5bd8

[gaim-migrate @ 3861] This is better because Duffman says so, oh yeah! No, but seriously... before these changes, if you got new email on an account, but didn't read it, gaim would pop up a little "read yo email, sucka!" notice every once in a while, because AIM sends you a little email status thing every once in a while. This should alleviate that problem (by attempting to keep track of the number of unread emails in your account). committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Thu, 17 Oct 2002 05:06:15 +0000
parents 6b0cb60162f4
children 3e508dd31b76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
1 /*
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
2 * gaim
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
3 *
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
6 * This program is free software; you can redistribute it and/or modify
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
7 * it under the terms of the GNU General Public License as published by
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
9 * (at your option) any later version.
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
11 * This program is distributed in the hope that it will be useful,
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
14 * GNU General Public License for more details.
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
16 * You should have received a copy of the GNU General Public License
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
17 * along with this program; if not, write to the Free Software
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 */
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 #ifdef HAVE_CONFIG_H
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1952
diff changeset
23 #include <config.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 #endif
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
25 #include <time.h>
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
26 #include <stdio.h>
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
27 #include <unistd.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
29 #ifdef USE_SCREENSAVER
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
30 #include <X11/Xlib.h>
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
31 #include <X11/Xutil.h>
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
32 #include <X11/extensions/scrnsaver.h>
2115
3ce77b547cf2 [gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2114
diff changeset
33 #include <gdk/gdkx.h>
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
34 #endif /* USE_SCREENSAVER */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
36 #include "multi.h"
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
37 #include "gaim.h"
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1367
diff changeset
38 #include "prpl.h"
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
40
2381
427ccd7dfdd2 [gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
41 gint check_idle(gpointer data)
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42 {
2381
427ccd7dfdd2 [gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
43 struct gaim_connection *gc = data;
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
44 time_t t;
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
45 #ifdef USE_SCREENSAVER
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
46 static XScreenSaverInfo *mit_info = NULL;
1062
9446ac58745e [gaim-migrate @ 1072]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1058
diff changeset
47 #endif
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
48 time_t idle_time;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
49
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1141
diff changeset
50 /* Not idle, really... :) */
1058
4927ce25d8cc [gaim-migrate @ 1068]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
51 update_idle_times();
4927ce25d8cc [gaim-migrate @ 1068]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
52
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 2381
diff changeset
53 plugin_event(event_blist_update);
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1141
diff changeset
54
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
55 time(&t);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
56
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
57
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
58 #ifdef USE_SCREENSAVER
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
59 if (report_idle == IDLE_SCREENSAVER) {
2115
3ce77b547cf2 [gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2114
diff changeset
60 int event_base, error_base;
3ce77b547cf2 [gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2114
diff changeset
61 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
2114
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
62 if (mit_info == NULL) {
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
63 mit_info = XScreenSaverAllocInfo();
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
64 }
2115
3ce77b547cf2 [gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2114
diff changeset
65 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
2114
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
66 idle_time = (mit_info->idle) / 1000;
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
67 } else
c582116e8463 [gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
68 idle_time = 0;
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
69 } else
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
70 #endif /* USE_SCREENSAVER */
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
71 idle_time = t - gc->lastsent;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
72
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2313
diff changeset
73 if ((away_options & OPT_AWAY_AUTO) && (idle_time > (60 * auto_away)) && (!gc->is_auto_away)) {
1446
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
74 if (!gc->away) {
1952
39df68320a82 [gaim-migrate @ 1962]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1895
diff changeset
75 debug_printf("making %s away automatically\n", gc->username);
1446
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
76 if (g_slist_length(connections) == 1)
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
77 do_away_message(NULL, default_away);
1895
e65b9942f649 [gaim-migrate @ 1905]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1885
diff changeset
78 else if (default_away)
1446
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
79 serv_set_away(gc, GAIM_AWAY_CUSTOM, default_away->message);
1468
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
80 gc->is_auto_away = 1;
1952
39df68320a82 [gaim-migrate @ 1962]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1895
diff changeset
81 set_default_away(NULL, (gpointer)g_slist_index(away_messages, default_away));
1468
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
82 } else
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
83 gc->is_auto_away = 2;
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
84 } else if (gc->is_auto_away && idle_time < 60 * auto_away) {
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
85 if (gc->is_auto_away == 2) {
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
86 gc->is_auto_away = 0;
1815
f15d449b3167 [gaim-migrate @ 1825]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1575
diff changeset
87 return TRUE;
1446
38f712e75836 [gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1407
diff changeset
88 }
1468
9db35684c68c [gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1450
diff changeset
89 gc->is_auto_away = 0;
1407
9f356885a77a [gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1404
diff changeset
90 if (awaymessage == NULL) {
9f356885a77a [gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1404
diff changeset
91 debug_printf("removing auto-away message for %s\n", gc->username);
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1367
diff changeset
92 serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL);
1407
9f356885a77a [gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1404
diff changeset
93 } else {
1450
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
94 if (g_slist_length(connections) == 1)
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
95 do_im_back(0, 0);
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
96 else {
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
97 debug_printf("replacing auto-away with global for %s\n", gc->username);
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
98 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message);
024f9250ba63 [gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1446
diff changeset
99 }
1407
9f356885a77a [gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1404
diff changeset
100 }
1109
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
101 }
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
102
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
103
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
104 /* If we're not reporting idle times to the server, still use Gaim
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
105 usage for auto-away, but quit here so we don't report to the
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
106 server */
1367
ad346597b7b2 [gaim-migrate @ 1377]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1254
diff changeset
107 if (report_idle == IDLE_NONE) {
1109
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
108 return TRUE;
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
109 }
c73736fa0b7c [gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1062
diff changeset
110
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1141
diff changeset
111 if (idle_time > 600 && !gc->is_idle) { /* 10 minutes! */
1029
740c6f933fe0 [gaim-migrate @ 1039]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1028
diff changeset
112 debug_printf("setting %s idle %d seconds\n", gc->username, idle_time);
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
113 serv_set_idle(gc, idle_time);
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
114 gc->is_idle = 1;
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1468
diff changeset
115 system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON);
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1141
diff changeset
116 } else if (idle_time < 600 && gc->is_idle) {
1029
740c6f933fe0 [gaim-migrate @ 1039]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1028
diff changeset
117 debug_printf("setting %s unidle\n", gc->username);
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
118 serv_touch_idle(gc);
1575
427e1409917c [gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1468
diff changeset
119 system_log(log_unidle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON);
1029
740c6f933fe0 [gaim-migrate @ 1039]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1028
diff changeset
120 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
121
1026
5bad25457843 [gaim-migrate @ 1036]
Rob Flynn <gaim@robflynn.com>
parents: 1
diff changeset
122 return TRUE;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
123
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
124 }