Thu, 01 Jul 2004 15:57:38 +0000
[gaim-migrate @ 10256]
this patch had some little discussion, so the original comments about it
don't make too much sense now.
it makes the log viewwer further collapse things into months for things
older than the current month. for relatively short logs this might not be
wonderful, but it should help with very long logs. see patch #963827
oh and thanks to Cole Kowalski for this
committer: Luke Schierer <lschiere@pidgin.im>
| 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 | */ | |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6216
diff
changeset
|
23 | #include "gtkinternal.h" |
| 1 | 24 | |
| 1026 | 25 | #ifdef USE_SCREENSAVER |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
26 | # ifndef _WIN32 |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
27 | # include <X11/Xlib.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
28 | # include <X11/Xutil.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
29 | # include <X11/extensions/scrnsaver.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
30 | # include <gdk/gdkx.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
31 | # else |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
32 | # include "idletrack.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
33 | # endif |
| 1026 | 34 | #endif /* USE_SCREENSAVER */ |
| 1 | 35 | |
|
5615
2eb715cbbd9b
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
36 | #include "connection.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
37 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
38 | #include "log.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
39 | #include "prefs.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
40 | #include "signals.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
41 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
42 | #include "ui.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
43 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
44 | /* XXX For the away stuff */ |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5755
diff
changeset
|
45 | #include "gaim.h" |
| 1 | 46 | |
|
4536
76c632fee2bc
[gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents:
4201
diff
changeset
|
47 | #define IDLEMARK 600 /* 10 minutes! */ |
| 1 | 48 | |
|
2381
553cf0455173
[gaim-migrate @ 2394]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2372
diff
changeset
|
49 | gint check_idle(gpointer data) |
| 1 | 50 | { |
|
5560
7cd6678f838b
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
51 | const char *report_idle; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
52 | GaimConnection *gc = data; |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
53 | GaimAccount *account; |
| 1026 | 54 | time_t t; |
| 55 | #ifdef USE_SCREENSAVER | |
|
3905
9721673d9f55
[gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents:
3517
diff
changeset
|
56 | #ifndef _WIN32 |
| 1026 | 57 | static XScreenSaverInfo *mit_info = NULL; |
|
1062
5936424ca7b1
[gaim-migrate @ 1072]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1058
diff
changeset
|
58 | #endif |
|
3905
9721673d9f55
[gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents:
3517
diff
changeset
|
59 | #endif |
|
4201
547da94c5a14
[gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents:
3905
diff
changeset
|
60 | int idle_time; |
| 1 | 61 | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
62 | account = gaim_connection_get_account(gc); |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
63 | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
64 | gaim_signal_emit(gaim_blist_get_handle(), "update-idle"); |
|
1250
46ac03911ab0
[gaim-migrate @ 1260]
Decklin Foster <decklin@red-bean.com>
parents:
1141
diff
changeset
|
65 | |
| 1026 | 66 | time(&t); |
| 1 | 67 | |
|
5560
7cd6678f838b
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
68 | report_idle = gaim_prefs_get_string("/gaim/gtk/idle/reporting_method"); |
| 1 | 69 | |
| 1026 | 70 | #ifdef USE_SCREENSAVER |
| 5755 | 71 | if (report_idle != NULL && !strcmp(report_idle, "system")) { |
|
3905
9721673d9f55
[gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents:
3517
diff
changeset
|
72 | #ifndef _WIN32 |
|
2115
848a8af1a4af
[gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2114
diff
changeset
|
73 | int event_base, error_base; |
|
848a8af1a4af
[gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2114
diff
changeset
|
74 | if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base)) { |
|
2114
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
75 | if (mit_info == NULL) { |
|
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
76 | mit_info = XScreenSaverAllocInfo(); |
|
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
77 | } |
|
2115
848a8af1a4af
[gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2114
diff
changeset
|
78 | XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info); |
|
2114
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
79 | idle_time = (mit_info->idle) / 1000; |
|
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
80 | } else |
|
bcebefe6507c
[gaim-migrate @ 2124]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
81 | idle_time = 0; |
|
3905
9721673d9f55
[gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents:
3517
diff
changeset
|
82 | #else |
|
4536
76c632fee2bc
[gaim-migrate @ 4815]
Herman Bloggs <herman@bluedigits.com>
parents:
4201
diff
changeset
|
83 | idle_time = (GetTickCount() - wgaim_get_lastactive()) / 1000; |
|
3905
9721673d9f55
[gaim-migrate @ 4058]
Herman Bloggs <herman@bluedigits.com>
parents:
3517
diff
changeset
|
84 | #endif |
| 1026 | 85 | } else |
| 86 | #endif /* USE_SCREENSAVER */ | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
87 | idle_time = t - gc->last_sent_time; |
| 1 | 88 | |
|
5560
7cd6678f838b
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
89 | if (gaim_prefs_get_bool("/core/away/away_when_idle") && |
| 5748 | 90 | (idle_time > (60 * gaim_prefs_get_int("/core/away/mins_before_away"))) |
| 91 | && (!gc->is_auto_away)) { | |
|
5560
7cd6678f838b
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
92 | |
|
1446
3948b2c7fb6a
[gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1407
diff
changeset
|
93 | if (!gc->away) { |
| 6216 | 94 | struct away_message *default_away = NULL; |
| 95 | const char *default_name; | |
| 96 | GSList *l; | |
| 97 | ||
| 98 | default_name = gaim_prefs_get_string("/core/away/default_message"); | |
| 99 | ||
| 100 | for(l = away_messages; l; l = l->next) { | |
| 101 | if(!strcmp(default_name, ((struct away_message *)l->data)->name)) { | |
| 102 | default_away = l->data; | |
| 103 | break; | |
| 104 | } | |
| 105 | } | |
| 106 | ||
| 107 | if(!default_away && away_messages) | |
| 108 | default_away = away_messages->data; | |
| 109 | ||
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
110 | gaim_debug(GAIM_DEBUG_INFO, "idle", |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
111 | "Making %s away automatically\n", |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
112 | gaim_account_get_username(account)); |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
113 | if (g_list_length(gaim_connections_get_all()) == 1) |
|
1446
3948b2c7fb6a
[gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1407
diff
changeset
|
114 | do_away_message(NULL, default_away); |
|
1895
aa3e49e81811
[gaim-migrate @ 1905]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1885
diff
changeset
|
115 | else if (default_away) |
|
1446
3948b2c7fb6a
[gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1407
diff
changeset
|
116 | serv_set_away(gc, GAIM_AWAY_CUSTOM, default_away->message); |
|
1468
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
117 | gc->is_auto_away = 1; |
|
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
118 | } else |
|
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
119 | gc->is_auto_away = 2; |
| 5748 | 120 | } else if (gc->is_auto_away && |
| 121 | idle_time < 60 * gaim_prefs_get_int("/core/away/mins_before_away")) { | |
|
1468
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
122 | if (gc->is_auto_away == 2) { |
|
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
123 | gc->is_auto_away = 0; |
|
1815
e2b090284b19
[gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1575
diff
changeset
|
124 | return TRUE; |
|
1446
3948b2c7fb6a
[gaim-migrate @ 1456]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1407
diff
changeset
|
125 | } |
|
1468
9edfa387a871
[gaim-migrate @ 1478]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1450
diff
changeset
|
126 | gc->is_auto_away = 0; |
|
1407
3d249b7e49fe
[gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
127 | if (awaymessage == NULL) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
128 | gaim_debug(GAIM_DEBUG_INFO, "idle", |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
129 | "Removing auto-away message for %s\n", gaim_account_get_username(account)); |
|
1401
e81430ba5d7a
[gaim-migrate @ 1411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1367
diff
changeset
|
130 | serv_set_away(gc, GAIM_AWAY_CUSTOM, NULL); |
|
1407
3d249b7e49fe
[gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
131 | } else { |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
132 | if (g_list_length(gaim_connections_get_all()) == 1) |
|
1450
acf8fed569d5
[gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1446
diff
changeset
|
133 | do_im_back(0, 0); |
|
acf8fed569d5
[gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1446
diff
changeset
|
134 | else { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
135 | gaim_debug(GAIM_DEBUG_INFO, "idle", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
136 | "Replacing auto-away with global for %s\n", |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
137 | gaim_account_get_username(account)); |
|
1450
acf8fed569d5
[gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1446
diff
changeset
|
138 | serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); |
|
acf8fed569d5
[gaim-migrate @ 1460]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1446
diff
changeset
|
139 | } |
|
1407
3d249b7e49fe
[gaim-migrate @ 1417]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
140 | } |
| 1109 | 141 | } |
| 142 | ||
| 143 | ||
| 144 | /* If we're not reporting idle times to the server, still use Gaim | |
| 145 | usage for auto-away, but quit here so we don't report to the | |
| 146 | server */ | |
|
5560
7cd6678f838b
[gaim-migrate @ 5961]
Christian Hammond <chipx86@chipx86.com>
parents:
5548
diff
changeset
|
147 | |
| 5755 | 148 | if (report_idle != NULL && !strcmp(report_idle, "none")) |
| 1109 | 149 | return TRUE; |
| 150 | ||
|
4547
6111945dc464
[gaim-migrate @ 4826]
Herman Bloggs <herman@bluedigits.com>
parents:
4536
diff
changeset
|
151 | if (idle_time >= IDLEMARK && !gc->is_idle) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
152 | gaim_debug(GAIM_DEBUG_INFO, "idle", "Setting %s idle %d seconds\n", |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
153 | gaim_account_get_username(account), idle_time); |
| 1026 | 154 | serv_set_idle(gc, idle_time); |
| 155 | gc->is_idle = 1; | |
|
7475
987384816492
[gaim-migrate @ 8088]
Mark Doliner <markdoliner@pidgin.im>
parents:
7431
diff
changeset
|
156 | /* LOG 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
|
157 | } else if (idle_time < IDLEMARK && gc->is_idle) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
158 | gaim_debug(GAIM_DEBUG_INFO, "idle", "Setting %s unidle\n", |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5560
diff
changeset
|
159 | gaim_account_get_username(account)); |
| 1026 | 160 | serv_touch_idle(gc); |
|
7475
987384816492
[gaim-migrate @ 8088]
Mark Doliner <markdoliner@pidgin.im>
parents:
7431
diff
changeset
|
161 | /* LOG 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
|
162 | } |
| 1 | 163 | |
| 1026 | 164 | return TRUE; |
| 1 | 165 | |
| 166 | } |