Mercurial > pidgin
annotate src/idle.c @ 10250:89a25444401c
[gaim-migrate @ 11390]
Minor changes to the creation of the list of pounces in the blist:
1. If the account is not online then don't attempt to lookup the buddy
or get the buddy's alias
2. If the buddy does not exist in your buddy list then don't attempt to
get the buddy's alias--just use the screen name
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 23 Nov 2004 06:37:42 +0000 |
parents | bdec08a8fc5b |
children | 32e7baa81e03 |
rev | line source |
---|---|
1026 | 1 /* |
2 * gaim | |
3 * | |
8046 | 4 * Gaim is the legal property of its developers, whose names are too numerous |
5 * to list here. Please refer to the COPYRIGHT file distributed with this | |
6 * source distribution. | |
1 | 7 * |
1026 | 8 * This program is free software; you can redistribute it and/or modify |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
1 | 12 * |
1026 | 13 * This program is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
1 | 17 * |
1026 | 18 * You should have received a copy of the GNU General Public License |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
1 | 21 * |
22 */ | |
9791 | 23 #include "internal.h" |
1 | 24 |
1026 | 25 #ifdef USE_SCREENSAVER |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
26 # ifndef _WIN32 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
27 # include <X11/Xlib.h> |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
28 # include <X11/Xutil.h> |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
29 # include <X11/extensions/scrnsaver.h> |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
30 # include <gdk/gdkx.h> |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
31 # else |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
32 # include "idletrack.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
33 # endif |
1026 | 34 #endif /* USE_SCREENSAVER */ |
1 | 35 |
5615
6500a6c8d679
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
36 #include "connection.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
37 #include "debug.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
38 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
39 #include "prefs.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
40 #include "signals.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
41 |
4536
ba99d30afc14
[gaim-migrate @ 4815]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4201
diff
changeset
|
42 #define IDLEMARK 600 /* 10 minutes! */ |
1 | 43 |
2381
427ccd7dfdd2
[gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
44 gint check_idle(gpointer data) |
1 | 45 { |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
46 const char *report_idle; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
47 GaimConnection *gc = data; |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
48 GaimAccount *account; |
1026 | 49 time_t t; |
50 #ifdef USE_SCREENSAVER | |
3905
3e508dd31b76
[gaim-migrate @ 4058]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3517
diff
changeset
|
51 #ifndef _WIN32 |
1026 | 52 static XScreenSaverInfo *mit_info = NULL; |
1062
9446ac58745e
[gaim-migrate @ 1072]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1058
diff
changeset
|
53 #endif |
3905
3e508dd31b76
[gaim-migrate @ 4058]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3517
diff
changeset
|
54 #endif |
4201
511c2b63caa4
[gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents:
3905
diff
changeset
|
55 int idle_time; |
1 | 56 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
57 account = gaim_connection_get_account(gc); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
58 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
59 gaim_signal_emit(gaim_blist_get_handle(), "update-idle"); |
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1141
diff
changeset
|
60 |
1026 | 61 time(&t); |
1 | 62 |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
63 report_idle = gaim_prefs_get_string("/gaim/gtk/idle/reporting_method"); |
1 | 64 |
1026 | 65 #ifdef USE_SCREENSAVER |
5755
9587ee01dc5d
[gaim-migrate @ 6180]
Christian Hammond <chipx86@chipx86.com>
parents:
5748
diff
changeset
|
66 if (report_idle != NULL && !strcmp(report_idle, "system")) { |
3905
3e508dd31b76
[gaim-migrate @ 4058]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3517
diff
changeset
|
67 #ifndef _WIN32 |
2115
3ce77b547cf2
[gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2114
diff
changeset
|
68 int event_base, error_base; |
3ce77b547cf2
[gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2114
diff
changeset
|
69 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) { |
2114
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
70 if (mit_info == NULL) { |
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
71 mit_info = XScreenSaverAllocInfo(); |
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
72 } |
2115
3ce77b547cf2
[gaim-migrate @ 2125]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2114
diff
changeset
|
73 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info); |
2114
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
74 idle_time = (mit_info->idle) / 1000; |
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
75 } else |
c582116e8463
[gaim-migrate @ 2124]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
76 idle_time = 0; |
3905
3e508dd31b76
[gaim-migrate @ 4058]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3517
diff
changeset
|
77 #else |
4536
ba99d30afc14
[gaim-migrate @ 4815]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4201
diff
changeset
|
78 idle_time = (GetTickCount() - wgaim_get_lastactive()) / 1000; |
3905
3e508dd31b76
[gaim-migrate @ 4058]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3517
diff
changeset
|
79 #endif |
1026 | 80 } else |
81 #endif /* USE_SCREENSAVER */ | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
82 idle_time = t - gc->last_sent_time; |
1 | 83 |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
84 if (gaim_prefs_get_bool("/core/away/away_when_idle") && |
5748 | 85 (idle_time > (60 * gaim_prefs_get_int("/core/away/mins_before_away"))) |
9949 | 86 && (!gc->is_auto_away)) |
87 { | |
88 GaimPresence *presence; | |
89 | |
90 presence = gaim_account_get_presence(account); | |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
91 |
9949 | 92 if (gaim_presence_is_available(presence)) |
93 { | |
94 /* XXX CORE/UI | |
6216 | 95 struct away_message *default_away = NULL; |
9949 | 96 GSList *l; |
97 */ | |
6216 | 98 const char *default_name; |
99 | |
100 default_name = gaim_prefs_get_string("/core/away/default_message"); | |
9949 | 101 /* XXX CORE/UI |
6216 | 102 for(l = away_messages; l; l = l->next) { |
103 if(!strcmp(default_name, ((struct away_message *)l->data)->name)) { | |
104 default_away = l->data; | |
105 break; | |
106 } | |
107 } | |
108 | |
109 if(!default_away && away_messages) | |
110 default_away = away_messages->data; | |
9944 | 111 */ |
6216 | 112 |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
113 gaim_debug(GAIM_DEBUG_INFO, "idle", |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
114 "Making %s away automatically\n", |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
115 gaim_account_get_username(account)); |
9944 | 116 |
117 /* XXX CORE/UI | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
118 if (g_list_length(gaim_connections_get_all()) == 1) |
1446
38f712e75836
[gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1407
diff
changeset
|
119 do_away_message(NULL, default_away); |
1895
e65b9942f649
[gaim-migrate @ 1905]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1885
diff
changeset
|
120 else if (default_away) |
1446
38f712e75836
[gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1407
diff
changeset
|
121 serv_set_away(gc, GAIM_AWAY_CUSTOM, default_away->message); |
9944 | 122 */ |
123 | |
1468
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
124 gc->is_auto_away = 1; |
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
125 } else |
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
126 gc->is_auto_away = 2; |
5748 | 127 } else if (gc->is_auto_away && |
128 idle_time < 60 * gaim_prefs_get_int("/core/away/mins_before_away")) { | |
1468
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
129 if (gc->is_auto_away == 2) { |
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
130 gc->is_auto_away = 0; |
1815
f15d449b3167
[gaim-migrate @ 1825]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1575
diff
changeset
|
131 return TRUE; |
1446
38f712e75836
[gaim-migrate @ 1456]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1407
diff
changeset
|
132 } |
1468
9db35684c68c
[gaim-migrate @ 1478]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1450
diff
changeset
|
133 gc->is_auto_away = 0; |
9944 | 134 |
135 /* XXX CORE/UI | |
1407
9f356885a77a
[gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1404
diff
changeset
|
136 if (awaymessage == NULL) { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
137 gaim_debug(GAIM_DEBUG_INFO, "idle", |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
138 "Removing auto-away message for %s\n", gaim_account_get_username(account)); |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1367
diff
changeset
|
139 serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL); |
1407
9f356885a77a
[gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1404
diff
changeset
|
140 } else { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
141 if (g_list_length(gaim_connections_get_all()) == 1) |
1450
024f9250ba63
[gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1446
diff
changeset
|
142 do_im_back(0, 0); |
024f9250ba63
[gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1446
diff
changeset
|
143 else { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
144 gaim_debug(GAIM_DEBUG_INFO, "idle", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
145 "Replacing auto-away with global for %s\n", |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
146 gaim_account_get_username(account)); |
1450
024f9250ba63
[gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1446
diff
changeset
|
147 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); |
024f9250ba63
[gaim-migrate @ 1460]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1446
diff
changeset
|
148 } |
1407
9f356885a77a
[gaim-migrate @ 1417]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1404
diff
changeset
|
149 } |
9944 | 150 */ |
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
151 } |
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
152 |
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
153 |
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
154 /* 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
|
155 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
|
156 server */ |
5560
b7319c094153
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
157 |
5755
9587ee01dc5d
[gaim-migrate @ 6180]
Christian Hammond <chipx86@chipx86.com>
parents:
5748
diff
changeset
|
158 if (report_idle != NULL && !strcmp(report_idle, "none")) |
1109
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
159 return TRUE; |
c73736fa0b7c
[gaim-migrate @ 1119]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1062
diff
changeset
|
160 |
4547
1f19b66c5d84
[gaim-migrate @ 4826]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4536
diff
changeset
|
161 if (idle_time >= IDLEMARK && !gc->is_idle) { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
162 gaim_debug(GAIM_DEBUG_INFO, "idle", "Setting %s idle %d seconds\n", |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
163 gaim_account_get_username(account), idle_time); |
1026 | 164 serv_set_idle(gc, idle_time); |
165 gc->is_idle = 1; | |
7475 | 166 /* LOG system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */ |
4536
ba99d30afc14
[gaim-migrate @ 4815]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4201
diff
changeset
|
167 } else if (idle_time < IDLEMARK && gc->is_idle) { |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
168 gaim_debug(GAIM_DEBUG_INFO, "idle", "Setting %s unidle\n", |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
169 gaim_account_get_username(account)); |
1026 | 170 serv_touch_idle(gc); |
7475 | 171 /* LOG 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
|
172 } |
1 | 173 |
1026 | 174 return TRUE; |
1 | 175 |
176 } |