src/idle.c

Mon, 10 Mar 2003 05:30:31 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Mon, 10 Mar 2003 05:30:31 +0000
changeset 4687
91ad36873636
parent 4608
c165a90c65fc
child 5205
242b8aa81328
permissions
-rw-r--r--

[gaim-migrate @ 4998]
This is a new buddy list.

Lots of things about it just Don't Work. I probably already know about those
things, and you'd just be wasting my time in submitting a bug report about it.

I decided that instead of getting it to all work perfectly before committing,
that I'd get it in cvs, and slowly fix it with regular commits. That way, it's
easier to keep track of things, and other developers can help. Plus, I'm getting
pissed off at the buddy list and want it to die. It's kinda boring, and doing nothing
but the buddy list for such a long time has just gotten me very bitter.

After 0.60 is released later this week, Gaim will resume being fun. This week is
going to be very stressful, though, I'm sure.

Things you ought to know about this buddy list:
- It crashes
- It leaks
- There's no way to edit the buddy list, or access offline buddies
- Most of the menus and buttons and whatnot just plain ol' don't work.
- Status icons are only implemented for AIM.

That's mostly just because I'm lazy. As such, you may want to be wary of updating this.
If you do decide to update this, you may want to learn "cvs update -D yesterday" as well :)

All the art there is just placeholder art.

You probably won't really have as many problems as it sounds like you will from reading this.
This message is extra-negative to stress that I don't want to be bothered with complaints about
something not working about it :). I'll repeat: If something doesn't work, I probably already
know about it.

If you want to actually help with something, I'd be delighted to have it. IM me.

-s.

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
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
30 #ifndef _WIN32
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
31 #include <X11/Xlib.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
32 #include <X11/Xutil.h>
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
33 #include <X11/extensions/scrnsaver.h>
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
34 #include <gdk/gdkx.h>
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
35 #else
4536
76c632fee2bc [gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents: 4201
diff changeset
36 #include "idletrack.h"
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
37 #endif
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
38 #endif /* USE_SCREENSAVER */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4547
diff changeset
40 #include "gaim.h"
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
41 #include "multi.h"
1401
e81430ba5d7a [gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1367
diff changeset
42 #include "prpl.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
43
4536
76c632fee2bc [gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents: 4201
diff changeset
44 #define IDLEMARK 600 /* 10 minutes! */
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
45
2381
553cf0455173 [gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
46 gint check_idle(gpointer data)
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
47 {
2381
553cf0455173 [gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2372
diff changeset
48 struct gaim_connection *gc = data;
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
49 time_t t;
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
50 #ifdef USE_SCREENSAVER
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
51 #ifndef _WIN32
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
52 static XScreenSaverInfo *mit_info = NULL;
1062
5936424ca7b1 [gaim-migrate @ 1072]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1058
diff changeset
53 #endif
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
54 #endif
4201
547da94c5a14 [gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents: 3905
diff changeset
55 int idle_time;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
56
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 2381
diff changeset
57 plugin_event(event_blist_update);
1250
46ac03911ab0 [gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents: 1141
diff changeset
58
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
59 time(&t);
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
60
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
61
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
62 #ifdef USE_SCREENSAVER
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
63 if (report_idle == IDLE_SCREENSAVER) {
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
64 #ifndef _WIN32
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
65 int event_base, error_base;
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
66 if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) {
2114
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
67 if (mit_info == NULL) {
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
68 mit_info = XScreenSaverAllocInfo();
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
69 }
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2114
diff changeset
70 XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
2114
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
71 idle_time = (mit_info->idle) / 1000;
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
72 } else
bcebefe6507c [gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
73 idle_time = 0;
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
74 #else
4536
76c632fee2bc [gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents: 4201
diff changeset
75 idle_time = (GetTickCount() - wgaim_get_lastactive()) / 1000;
3905
9721673d9f55 [gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents: 3517
diff changeset
76 #endif
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
77 } else
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
78 #endif /* USE_SCREENSAVER */
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
79 idle_time = t - gc->lastsent;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
80
2372
c24942700dfd [gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2313
diff changeset
81 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
82 if (!gc->away) {
1952
c39dc1fdeeee [gaim-migrate @ 1962]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1895
diff changeset
83 debug_printf("making %s away automatically\n", gc->username);
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
84 if (g_slist_length(connections) == 1)
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
85 do_away_message(NULL, default_away);
1895
aa3e49e81811 [gaim-migrate @ 1905]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1885
diff changeset
86 else if (default_away)
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
87 serv_set_away(gc, GAIM_AWAY_CUSTOM, default_away->message);
1468
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
88 gc->is_auto_away = 1;
1952
c39dc1fdeeee [gaim-migrate @ 1962]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1895
diff changeset
89 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
90 } else
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
91 gc->is_auto_away = 2;
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
92 } else if (gc->is_auto_away && idle_time < 60 * auto_away) {
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
93 if (gc->is_auto_away == 2) {
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
94 gc->is_auto_away = 0;
1815
e2b090284b19 [gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1575
diff changeset
95 return TRUE;
1446
3948b2c7fb6a [gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1407
diff changeset
96 }
1468
9edfa387a871 [gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1450
diff changeset
97 gc->is_auto_away = 0;
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
98 if (awaymessage == NULL) {
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
99 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
100 serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL);
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
101 } else {
1450
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
102 if (g_slist_length(connections) == 1)
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
103 do_im_back(0, 0);
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
104 else {
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
105 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
106 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message);
acf8fed569d5 [gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1446
diff changeset
107 }
1407
3d249b7e49fe [gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1404
diff changeset
108 }
1109
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
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
111
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
112 /* 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
113 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
114 server */
1367
e238859aacc5 [gaim-migrate @ 1377]
fesnel
parents: 1254
diff changeset
115 if (report_idle == IDLE_NONE) {
1109
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
116 return TRUE;
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
117 }
c15973749312 [gaim-migrate @ 1119]
Ben Miller <millebe@cs.earlham.edu>
parents: 1062
diff changeset
118
4547
6111945dc464 [gaim-migrate @ 4826]
Herman Bloggs <herman@bluedigits.com>
parents: 4536
diff changeset
119 if (idle_time >= IDLEMARK && !gc->is_idle) {
1029
c5ea048dc7ac [gaim-migrate @ 1039]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1028
diff changeset
120 debug_printf("setting %s idle %d seconds\n", gc->username, idle_time);
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
121 serv_set_idle(gc, idle_time);
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
122 gc->is_idle = 1;
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1468
diff changeset
123 system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON);
4536
76c632fee2bc [gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents: 4201
diff changeset
124 } else if (idle_time < IDLEMARK && gc->is_idle) {
1029
c5ea048dc7ac [gaim-migrate @ 1039]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1028
diff changeset
125 debug_printf("setting %s unidle\n", gc->username);
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
126 serv_touch_idle(gc);
1575
220b4d845309 [gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1468
diff changeset
127 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
128 }
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129
1026
fa6230b217bc [gaim-migrate @ 1036]
bryner
parents: 1
diff changeset
130 return TRUE;
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
132 }

mercurial