libpurple/idle.c

Fri, 20 Oct 2023 02:10:54 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Fri, 20 Oct 2023 02:10:54 -0500
changeset 42376
c6aa66fec38a
parent 42175
4185b4043214
child 42594
eddde70cedd8
permissions
-rw-r--r--

Prefix version.h with purple

And split constants into a separate file as in hasl.

Testing Done:
Compiled.

Reviewed at https://reviews.imfreedom.org/r/2680/

12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * purple
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
6 * source distribution.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19569
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 */
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23
41890
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
24 #include "idle.h"
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
25
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26 #include "connection.h"
41137
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
27 #include "conversations.h"
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
28 #include "debug.h"
22351
6ca0640b3d31 Change some g_idle_add(...) calls in libpurple to purple_timeout_add(0, ...)
Mark Doliner <markdoliner@pidgin.im>
parents: 22108
diff changeset
29 #include "eventloop.h"
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
30 #include "prefs.h"
41890
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
31 #include "purpleaccountmanager.h"
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
32 #include "savedstatuses.h"
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
33 #include "signals.h"
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35 typedef enum
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
37 PURPLE_IDLE_NOT_AWAY = 0,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
38 PURPLE_IDLE_AUTO_AWAY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
39 PURPLE_IDLE_AWAY_BUT_NOT_AUTO_AWAY
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
41 } PurpleAutoAwayState;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
43 static PurpleIdleUi *idle_ui = NULL;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 26891
diff changeset
45 /*
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46 * This is needed for the I'dle Mak'er plugin to work correctly. We
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
47 * use it to determine if we're the ones who set our accounts idle
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
48 * or if someone else did it (the I'dle Mak'er plugin, for example).
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
49 * Basically we just keep track of which accounts were set idle by us,
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
50 * and then we'll only set these specific accounts unidle when the
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
51 * user returns.
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
52 */
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
53 static GList *idled_accts = NULL;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 static guint idle_timer = 0;
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
57 static time_t last_active_time = 0;
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
60 set_account_idle(PurpleAccount *account, int time_idle)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
61 {
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
62 PurpleContactInfo *info = PURPLE_CONTACT_INFO(account);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
63 PurplePresence *presence;
42071
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
64 GDateTime *idle_since = NULL;
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
65 GDateTime *now = NULL;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
67 presence = purple_account_get_presence(account);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
68
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
69 if(purple_presence_is_idle(presence)) {
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
70 /* This account is already idle! */
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
71 return;
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
72 }
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
74 purple_debug_info("idle", "Setting %s idle %d seconds\n",
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
75 purple_contact_info_get_username(info),
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
76 time_idle);
42071
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
77
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
78 now = g_date_time_new_now_local();
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
79 idle_since = g_date_time_add_seconds(now, -1 * time_idle);
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
80 g_date_time_unref(now);
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
81
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
82 purple_presence_set_idle(presence, TRUE, idle_since);
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
83 g_date_time_unref(idle_since);
a719f0f3c600 Convert idle_time in PurplePresence to GDateTime
Gary Kramlich <grim@reaperworld.com>
parents: 41976
diff changeset
84
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
85 idled_accts = g_list_prepend(idled_accts, account);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
88 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
89 set_account_unidle(PurpleAccount *account)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
90 {
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
91 PurpleContactInfo *info = PURPLE_CONTACT_INFO(account);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
92 PurplePresence *presence;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
93
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
94 presence = purple_account_get_presence(account);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
95
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
96 idled_accts = g_list_remove(idled_accts, account);
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
97
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
98 if(!purple_presence_is_idle(presence)) {
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
99 /* This account is already unidle! */
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
100 return;
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
101 }
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
102
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
103 purple_debug_info("idle", "Setting %s unidle\n",
41976
49969fa9a664 Update libpurple for the deprecations in the account api
Gary Kramlich <grim@reaperworld.com>
parents: 41960
diff changeset
104 purple_contact_info_get_username(info));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
105 purple_presence_set_idle(presence, FALSE, 0);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
106 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
107
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
108
17579
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
109 static gboolean no_away = FALSE;
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
110 static gint time_until_next_idle_event;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
111 /*
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
112 * This function should be called when you think your idle state
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113 * may have changed. Maybe you're over the 10-minute mark and
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
114 * Purple should start reporting idle time to the server. Maybe
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
115 * you've returned from being idle. Maybe your auto-away message
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
116 * should be set.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
117 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
118 * There is no harm to calling this many many times, other than
17349
c5abad45e8a7 Update a comment: We don't check idle status every 5 seconds any more.
Richard Laager <rlaager@pidgin.im>
parents: 17248
diff changeset
119 * it will be kinda slow. This is called by a timer set when
c5abad45e8a7 Update a comment: We don't check idle status every 5 seconds any more.
Richard Laager <rlaager@pidgin.im>
parents: 17248
diff changeset
120 * Purple starts. It is also called when you send an IM, a chat, etc.
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
121 *
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122 * This function has 3 sections.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
123 * 1. Get your idle time. It will query XScreenSaver or Windows
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
124 * or use the Purple idle time. Whatever.
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
125 * 2. Set or unset your auto-away message.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 * 3. Report your current idle time to the IM server.
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
127 */
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
128
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
129 static void
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
130 check_idleness(void)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
131 {
35382
1b75f8a4129c Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 26891
diff changeset
132 time_t time_idle = 0;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
133 gboolean auto_away;
12573
1fc347b54974 [gaim-migrate @ 14895]
Mark Doliner <markdoliner@pidgin.im>
parents: 12412
diff changeset
134 const gchar *idle_reporting;
17579
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
135 gboolean report_idle = TRUE;
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
136 gint away_seconds = 0;
17536
b04036df5ac6 Compiler be quiet! Fixes this compile warning:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17349
diff changeset
137 gint idle_recheck_interval = 0;
18949
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
138 gint idle_poll_seconds = purple_prefs_get_int("/purple/away/mins_before_away") * 60;
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
139 gboolean set = FALSE;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
140
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
141 purple_signal_emit(purple_blist_get_handle(), "update-idle");
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
142
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
143 idle_reporting = purple_prefs_get_string("/purple/away/idle_reporting");
17579
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
144 auto_away = purple_prefs_get_bool("/purple/away/away_when_idle");
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
145
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 23196
diff changeset
146 if (purple_strequal(idle_reporting, "system") &&
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
147 PURPLE_IS_IDLE_UI(idle_ui))
12573
1fc347b54974 [gaim-migrate @ 14895]
Mark Doliner <markdoliner@pidgin.im>
parents: 12412
diff changeset
148 {
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
149 time_t new_idle = purple_idle_ui_get_idle_time(idle_ui);
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
150
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
151 if(new_idle > 0) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
152 /* Use system idle time (mouse or keyboard movement, etc.) */
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
153 time_idle = new_idle;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
154 idle_recheck_interval = 1;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
155 set = TRUE;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
156 }
12573
1fc347b54974 [gaim-migrate @ 14895]
Mark Doliner <markdoliner@pidgin.im>
parents: 12412
diff changeset
157 }
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
158
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
159 if(!set && purple_strequal(idle_reporting, "purple")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
160 /* Use 'Purple idle' */
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
161 time_idle = time(NULL) - last_active_time;
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
162 idle_recheck_interval = 0;
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
163 } else {
12573
1fc347b54974 [gaim-migrate @ 14895]
Mark Doliner <markdoliner@pidgin.im>
parents: 12412
diff changeset
164 /* Don't report idle time */
1fc347b54974 [gaim-migrate @ 14895]
Mark Doliner <markdoliner@pidgin.im>
parents: 12412
diff changeset
165 report_idle = FALSE;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
166
17579
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
167 /* If we're not reporting idle, we can still do auto-away.
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
168 * First try "system" and if that isn't possible, use "purple" */
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
169 if(auto_away) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
170 if(PURPLE_IS_IDLE_UI(idle_ui)) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
171 time_t new_idle = purple_idle_ui_get_idle_time(idle_ui);
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
172
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
173 if(new_idle > 0) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
174 time_idle = new_idle;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
175 idle_recheck_interval = 1;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
176
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
177 set = TRUE;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
178 }
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
179 }
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
180
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
181 if(!set) {
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
182 time_idle = time(NULL) - last_active_time;
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
183 idle_recheck_interval = 0;
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
184 }
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
185 } else {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
186 if(!no_away) {
19569
dcc2a321208e Prevent recursive idle handling loop. Patch from 'Gambit'
Sean Egan <seanegan@pidgin.im>
parents: 18949
diff changeset
187 no_away = TRUE;
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
188 purple_savedstatus_set_idleaway(FALSE);
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
189 }
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
190 time_until_next_idle_event = 0;
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
191 return;
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
192 }
14999
7b3992f19766 [gaim-migrate @ 17709]
Daniel Atallah <datallah@pidgin.im>
parents: 14254
diff changeset
193 }
7b3992f19766 [gaim-migrate @ 17709]
Daniel Atallah <datallah@pidgin.im>
parents: 14254
diff changeset
194
18949
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
195 time_until_next_idle_event = idle_poll_seconds - time_idle;
17161
c4e7791b276f Move the time_until_next_idle_event < 0 check to clarify.
Richard Laager <rlaager@pidgin.im>
parents: 17160
diff changeset
196 if (time_until_next_idle_event < 0)
c4e7791b276f Move the time_until_next_idle_event < 0 check to clarify.
Richard Laager <rlaager@pidgin.im>
parents: 17160
diff changeset
197 {
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
198 /* If we're already idle, check again as appropriate. */
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
199 time_until_next_idle_event = idle_recheck_interval;
17161
c4e7791b276f Move the time_until_next_idle_event < 0 check to clarify.
Richard Laager <rlaager@pidgin.im>
parents: 17160
diff changeset
200 }
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
201
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
202 if (auto_away || !no_away)
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
203 away_seconds = 60 * purple_prefs_get_int("/purple/away/mins_before_away");
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
204
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
205 if (auto_away && time_idle > away_seconds)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
206 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
207 purple_savedstatus_set_idleaway(TRUE);
17579
4c3e8468d487 Clean up the idle checking callback slightly.
Daniel Atallah <datallah@pidgin.im>
parents: 17536
diff changeset
208 no_away = FALSE;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
209 }
26891
0570b1cdf470 Adjust some idle handling code to fix "wedging" idle reporting into never
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
210 else if (purple_savedstatus_is_idleaway() && time_idle < away_seconds)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
211 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
212 purple_savedstatus_set_idleaway(FALSE);
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
213 if (time_until_next_idle_event == 0 || (away_seconds - time_idle) < time_until_next_idle_event)
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
214 time_until_next_idle_event = away_seconds - time_idle;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
215 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
216
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
217 /* Idle reporting stuff */
41890
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
218 if(report_idle && (time_idle >= idle_poll_seconds)) {
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
219 PurpleAccountManager *manager = NULL;
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
220 GList *accounts = NULL;
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
221
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
222 manager = purple_account_manager_get_default();
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
223 accounts = purple_account_manager_get_connected(manager);
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
224 while(accounts != NULL) {
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
225 set_account_idle(accounts->data, time_idle);
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
226
2c15f6e30f20 Add purple_account_manager_get_connected and port libpurple to it
Gary Kramlich <grim@reaperworld.com>
parents: 41840
diff changeset
227 accounts = g_list_delete_link(accounts, accounts);
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
228 }
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
229 }
18949
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
230 else if (!report_idle || (time_idle < idle_poll_seconds ))
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
231 {
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
232 while (idled_accts != NULL)
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
233 set_account_unidle(idled_accts->data);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
234 }
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
235 }
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
236
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
237 /*
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 25859
diff changeset
238 * Check idle and set the timer to fire at the next idle-worth event
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
239 */
22108
cb9819851163 Squash some compiler warnings, some from my -Wstrict-prototypes fixing.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
240 static gboolean
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
241 check_idleness_timer(G_GNUC_UNUSED gpointer data) {
17130
aebbbe87a06c Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16478
diff changeset
242 check_idleness();
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
243 if (time_until_next_idle_event == 0) {
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
244 idle_timer = 0;
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
245 } else {
18069
a8c10d130374 Raise the timeouts one second so they'll work every time (for certain) with
Richard Laager <rlaager@pidgin.im>
parents: 18068
diff changeset
246 /* +1 for the boundary,
a8c10d130374 Raise the timeouts one second so they'll work every time (for certain) with
Richard Laager <rlaager@pidgin.im>
parents: 18068
diff changeset
247 * +1 more for g_timeout_add_seconds rounding. */
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
248 idle_timer = g_timeout_add_seconds(time_until_next_idle_event + 2,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
249 G_SOURCE_FUNC(check_idleness_timer),
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
250 NULL);
18069
a8c10d130374 Raise the timeouts one second so they'll work every time (for certain) with
Richard Laager <rlaager@pidgin.im>
parents: 18068
diff changeset
251 }
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
252 return G_SOURCE_REMOVE;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
253 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
254
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
255 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
256 im_msg_sent_cb(G_GNUC_UNUSED PurpleAccount *account,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
257 G_GNUC_UNUSED PurpleMessage *msg, G_GNUC_UNUSED gpointer data)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
258 {
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
259 /* Check our idle time after an IM is sent */
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
260 check_idleness();
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
261 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
262
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
263 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
264 signing_on_cb(G_GNUC_UNUSED PurpleConnection *connection,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
265 G_GNUC_UNUSED gpointer data)
14189
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
266 {
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
267 /* When signing on a new account, check if the account should be idle */
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
268 check_idleness();
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
269 }
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
270
74a8004419ec [gaim-migrate @ 16765]
Kevin Stange <kstange@pidgin.im>
parents: 13724
diff changeset
271 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
272 signing_off_cb(PurpleConnection *gc, G_GNUC_UNUSED gpointer data)
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
273 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
274 PurpleAccount *account;
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
275
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
276 account = purple_connection_get_account(gc);
23196
ee37c234be19 applied changes from 7f7111ed9e5924db9e740ad354fce8fb82445b1e
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22958
diff changeset
277 set_account_unidle(account);
12825
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
278 }
0989792c930b [gaim-migrate @ 15173]
Mark Doliner <markdoliner@pidgin.im>
parents: 12573
diff changeset
279
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
280 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
281 idle_reporting_cb(G_GNUC_UNUSED const char *name,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
282 G_GNUC_UNUSED PurplePrefType type,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
283 G_GNUC_UNUSED gconstpointer val, G_GNUC_UNUSED gpointer data)
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
284 {
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42071
diff changeset
285 g_clear_handle_id(&idle_timer, g_source_remove);
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
286 check_idleness_timer(NULL);
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
287 }
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
288
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
289 void
41840
fe350460fb1c Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
290 purple_idle_touch(void)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
291 {
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
292 time(&last_active_time);
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
293 if (!no_away)
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
294 {
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42071
diff changeset
295 g_clear_handle_id(&idle_timer, g_source_remove);
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
296 check_idleness_timer(NULL);
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
297 }
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
298 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
299
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
300 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
301 purple_idle_set(time_t time)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
302 {
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
303 last_active_time = time;
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
304 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
305
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
306 void
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
307 purple_idle_set_ui(PurpleIdleUi *ui) {
41160
d12bedb8b662 Check that we have a PurpleIdleUi if we weren't passed null
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
308 g_return_if_fail(ui == NULL || PURPLE_IS_IDLE_UI(ui));
d12bedb8b662 Check that we have a PurpleIdleUi if we weren't passed null
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
309
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
310 g_clear_object(&idle_ui);
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
311 idle_ui = ui;
35572
5c4846317f2f Box the *UiOps structures
Ankit Vani <a@nevitus.org>
parents: 35489
diff changeset
312 }
5c4846317f2f Box the *UiOps structures
Ankit Vani <a@nevitus.org>
parents: 35489
diff changeset
313
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
314 PurpleIdleUi *
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
315 purple_idle_get_ui(void) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
316 return idle_ui;
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
317 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
318
12412
8abe3226695e [gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents: 12272
diff changeset
319 static void *
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
320 purple_idle_get_handle(void)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
321 {
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
322 static int handle;
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
323
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
324 return &handle;
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
325 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
326
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
327 static gboolean
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
328 _do_purple_idle_touch_cb(G_GNUC_UNUSED gpointer data)
17741
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
329 {
18949
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
330 int idle_poll_minutes = purple_prefs_get_int("/purple/away/mins_before_away");
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
331
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
332 /* +1 more for g_timeout_add_seconds rounding. */
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
333 idle_timer = g_timeout_add_seconds((idle_poll_minutes * 60) + 2,
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
334 G_SOURCE_FUNC(check_idleness_timer),
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41890
diff changeset
335 NULL);
18949
7ba397b0f34e Fix idle reporting as discussed on devel@. Poll as needed when we're not idle, and poll frequently (once every three seconds) when we are. Fixes #1357
Sean Egan <seanegan@pidgin.im>
parents: 18191
diff changeset
336
17741
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
337 purple_idle_touch();
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
338
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
339 return FALSE;
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
340 }
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
341
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
342
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
343 void
41840
fe350460fb1c Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
344 purple_idle_init(void)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
345 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
346 purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
347 purple_idle_get_handle(),
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41160
diff changeset
348 G_CALLBACK(im_msg_sent_cb), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
349 purple_signal_connect(purple_connections_get_handle(), "signing-on",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
350 purple_idle_get_handle(),
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41160
diff changeset
351 G_CALLBACK(signing_on_cb), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
352 purple_signal_connect(purple_connections_get_handle(), "signing-off",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
353 purple_idle_get_handle(),
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41160
diff changeset
354 G_CALLBACK(signing_off_cb), NULL);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
355
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
356 purple_prefs_connect_callback(purple_idle_get_handle(), "/purple/away/idle_reporting",
17163
8c150fc133c3 Add a missing semi-colon so this will compile.
Richard Laager <rlaager@pidgin.im>
parents: 17162
diff changeset
357 idle_reporting_cb, NULL);
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
358
17741
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
359 /* Initialize the idleness asynchronously so it doesn't check idleness,
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
360 * and potentially try to change the status before the UI is initialized */
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 36081
diff changeset
361 g_timeout_add(0, _do_purple_idle_touch_cb, NULL);
17741
5075c0d3a19a I think this will fix the problem that elb had where bonjour (and probably other accounts too) were signing on initially when -n was specified.
Daniel Atallah <datallah@pidgin.im>
parents: 17579
diff changeset
362
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
363 }
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
364
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
365 void
41840
fe350460fb1c Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
366 purple_idle_uninit(void)
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
367 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
368 purple_signals_disconnect_by_handle(purple_idle_get_handle());
17162
38f0cf5afda1 When using Purple idle, don't run a timer at all when idleaway. When using
Richard Laager <rlaager@pidgin.im>
parents: 17161
diff changeset
369 purple_prefs_disconnect_by_handle(purple_idle_get_handle());
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
370
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
371 /* Remove the idle timer */
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42071
diff changeset
372 g_clear_handle_id(&idle_timer, g_source_remove);
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
373
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
374 g_clear_object(&idle_ui);
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
375 }

mercurial