Wed, 06 Mar 2002 00:18:02 +0000
[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 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 1 | 5 | * |
| 1026 | 6 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 1 | 10 | * |
| 1026 | 11 | * This program is distributed in the hope that it will be useful, |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 1 | 15 | * |
| 1026 | 16 | * You should have received a copy of the GNU General Public License |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 1 | 19 | * |
| 20 | */ | |
| 21 | ||
| 22 | #ifdef HAVE_CONFIG_H | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1952
diff
changeset
|
23 | #include <config.h> |
| 1 | 24 | #endif |
| 1026 | 25 | #include <time.h> |
| 26 | #include <stdio.h> | |
| 27 | #include <unistd.h> | |
| 1 | 28 | |
| 1026 | 29 | #ifdef USE_SCREENSAVER |
| 30 | #include <X11/Xlib.h> | |
| 31 | #include <X11/Xutil.h> | |
| 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 | 34 | #endif /* USE_SCREENSAVER */ |
| 1 | 35 | |
| 1026 | 36 | #include "multi.h" |
| 37 | #include "gaim.h" | |
|
1401
e81430ba5d7a
[gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1367
diff
changeset
|
38 | #include "prpl.h" |
| 1 | 39 | |
| 40 | ||
|
2381
553cf0455173
[gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2372
diff
changeset
|
41 | gint check_idle(gpointer data) |
| 1 | 42 | { |
|
2381
553cf0455173
[gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2372
diff
changeset
|
43 | struct gaim_connection *gc = data; |
| 1026 | 44 | time_t t; |
| 45 | #ifdef USE_SCREENSAVER | |
| 46 | static XScreenSaverInfo *mit_info = NULL; | |
|
1062
5936424ca7b1
[gaim-migrate @ 1072]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1058
diff
changeset
|
47 | #endif |
| 1026 | 48 | time_t idle_time; |
| 1 | 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 | 55 | time(&t); |
| 1 | 56 | |
| 57 | ||
| 1026 | 58 | #ifdef USE_SCREENSAVER |
| 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 | 69 | } else |
| 70 | #endif /* USE_SCREENSAVER */ | |
| 71 | idle_time = t - gc->lastsent; | |
| 1 | 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 | 101 | } |
| 102 | ||
| 103 | ||
| 104 | /* If we're not reporting idle times to the server, still use Gaim | |
| 105 | usage for auto-away, but quit here so we don't report to the | |
| 106 | server */ | |
| 1367 | 107 | if (report_idle == IDLE_NONE) { |
| 1109 | 108 | return TRUE; |
| 109 | } | |
| 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 | 113 | serv_set_idle(gc, idle_time); |
| 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 | 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 | 121 | |
| 1026 | 122 | return TRUE; |
| 1 | 123 | |
| 124 | } |