src/idle.c

Wed, 06 Mar 2002 00:18:02 +0000

author
Luke Schierer <lschiere@pidgin.im>
date
Wed, 06 Mar 2002 00:18:02 +0000
changeset 3012
a5c5a612c253
parent 2381
553cf0455173
child 3517
ef03be2348a5
permissions
-rw-r--r--

[gaim-migrate @ 3025]
Lots of people have a problem with people who were added to their MSN reverse list while they were offline, not being prompted to add them to their allow list. Jason Willis fixed that. Also added a global buddy icon animation preference by Luke Schierer.

committer: Sean Egan <seanegan@pidgin.im>

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 *
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
6 * This program is free software; you can redistribute it and/or modify
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
7 * it under the terms of the GNU General Public License as published by
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
9 * (at your option) any later version.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
11 * This program is distributed in the hope that it will be useful,
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
14 * GNU General Public License for more details.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
16 * You should have received a copy of the GNU General Public License
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
17 * along with this program; if not, write to the Free Software
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
18 * 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
19 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 */
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 #ifdef HAVE_CONFIG_H
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1952
diff changeset
23 #include <config.h>
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 #endif
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
25 #include <time.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
26 #include <stdio.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
27 #include <unistd.h>
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
29 #ifdef USE_SCREENSAVER
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
30 #include <X11/Xlib.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
31 #include <X11/Xutil.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
32 #include <X11/extensions/scrnsaver.h>
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
33 #include <gdk/gdkx.h>
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
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
36 #include "multi.h"
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
37 #include "gaim.h"
1401
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1367
diff changeset
38 #include "prpl.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
40
2381
553cf0455173 [gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
41 gint check_idle(gpointer data)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42 {
2381
553cf0455173 [gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
43 struct gaim_connection *gc = data;
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
44 time_t t;
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
45 #ifdef USE_SCREENSAVER
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
46 static XScreenSaverInfo *mit_info = NULL;
1062
5936424ca7b1 [gaim-migrate @ 1072]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1058
diff changeset
47 #endif
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
48 time_t idle_time;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
49
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
50 /* Not idle, really... :) */
1058
e878d758cff6 [gaim-migrate @ 1068]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1056
diff changeset
51 update_idle_times();
e878d758cff6 [gaim-migrate @ 1068]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1056
diff changeset
52
e878d758cff6 [gaim-migrate @ 1068]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1056
diff changeset
53 plugin_event(event_blist_update, 0, 0, 0, 0);
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
54
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
55 time(&t);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
56
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
57
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
58 #ifdef USE_SCREENSAVER
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
59 if (report_idle == IDLE_SCREENSAVER) {
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
60 int event_base, error_base;
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
61 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
2114
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
62 if (mit_info == NULL) {
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
63 mit_info = XScreenSaverAllocInfo();
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
64 }
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
65 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
2114
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
66 idle_time = (mit_info->idle) / 1000;
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
67 } else
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
68 idle_time = 0;
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
69 } else
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
70 #endif /* USE_SCREENSAVER */
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
71 idle_time = t - gc->lastsent;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
72
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
73 if ((away_options & OPT_AWAY_AUTO) && (idle_time > (60 * auto_away)) && (!gc->is_auto_away)) {
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
74 if (!gc->away) {
1952
c39dc1fdeeee [gaim-migrate @ 1962]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1895
diff changeset
75 debug_printf("making %s away automatically\n", gc->username);
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
76 if (g_slist_length(connections) == 1)
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
77 do_away_message(NULL, default_away);
1895
aa3e49e81811 [gaim-migrate @ 1905]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1885
diff changeset
78 else if (default_away)
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
79 serv_set_away(gc, GAIM_AWAY_CUSTOM, default_away->message);
1468
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
80 gc->is_auto_away = 1;
1952
c39dc1fdeeee [gaim-migrate @ 1962]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1895
diff changeset
81 set_default_away(NULL, (gpointer)g_slist_index(away_messages, default_away));
1468
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
82 } else
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
83 gc->is_auto_away = 2;
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
84 } else if (gc->is_auto_away && idle_time < 60 * auto_away) {
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
85 if (gc->is_auto_away == 2) {
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
86 gc->is_auto_away = 0;
1815
e2b090284b19 [gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1575
diff changeset
87 return TRUE;
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
88 }
1468
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
89 gc->is_auto_away = 0;
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
90 if (awaymessage == NULL) {
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
91 debug_printf("removing auto-away message for %s\n", gc->username);
1401
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1367
diff changeset
92 serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL);
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
93 } else {
1450
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
94 if (g_slist_length(connections) == 1)
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
95 do_im_back(0, 0);
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
96 else {
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
97 debug_printf("replacing auto-away with global for %s\n", gc->username);
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
98 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message);
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
99 }
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
100 }
1109
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
101 }
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
102
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
103
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
104 /* If we're not reporting idle times to the server, still use Gaim
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
105 usage for auto-away, but quit here so we don't report to the
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
106 server */
1367
e238859aacc5 [gaim-migrate @ 1377]
fesnel
parents: 1254
diff changeset
107 if (report_idle == IDLE_NONE) {
1109
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
108 return TRUE;
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
109 }
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
110
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
111 if (idle_time > 600 && !gc->is_idle) { /* 10 minutes! */
1029
c5ea048dc7ac [gaim-migrate @ 1039]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1028
diff changeset
112 debug_printf("setting %s idle %d seconds\n", gc->username, idle_time);
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
113 serv_set_idle(gc, idle_time);
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
114 gc->is_idle = 1;
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1468
diff changeset
115 system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON);
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
116 } else if (idle_time < 600 && gc->is_idle) {
1029
c5ea048dc7ac [gaim-migrate @ 1039]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1028
diff changeset
117 debug_printf("setting %s unidle\n", gc->username);
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
118 serv_touch_idle(gc);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1468
diff changeset
119 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
120 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
121
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
122 return TRUE;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
123
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
124 }

mercurial