Mercurial > pidgin
annotate plugins/idle.c @ 13253:87a7c3077c19
[gaim-migrate @ 15619]
More cleaning up of oscar. Renamed some functions to be more clear.
Got rid of some stuff that wasn't used. Inlined some small things
in conn.c that were only used once.
The goals of all this are
1. Non-blocking I/O for all connections
2. p2p stuff won't use the same struct as oscar connections, because
that's stupid
3. The oscar PRPL should be less scary
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sun, 12 Feb 2006 21:27:04 +0000 |
| parents | 890c6429bc61 |
| children | 788580688610 |
| rev | line source |
|---|---|
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
1 /* |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
2 * idle.c - I'dle Mak'er plugin for Gaim |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
3 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
4 * This file is part of Gaim. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
5 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
6 * Gaim is the legal property of its developers, whose names are too numerous |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
8 * source distribution. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
9 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
13 * (at your option) any later version. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
14 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
18 * GNU General Public License for more details. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
19 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 4103 | 23 */ |
| 24 | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
25 #include "internal.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
26 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
27 #include "connection.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
28 #include "debug.h" |
| 11975 | 29 #include "notify.h" |
| 8986 | 30 #include "plugin.h" |
| 31 #include "request.h" | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
32 #include "server.h" |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
33 #include "status.h" |
| 9943 | 34 #include "version.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
35 |
| 11754 | 36 /* This plugin no longer depends on gtk */ |
| 37 #define IDLE_PLUGIN_ID "core-idle" | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
38 |
| 11754 | 39 static GList *idled_accts = NULL; |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
40 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
41 static gboolean |
| 12775 | 42 unidle_filter(GaimAccount *acct) |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
43 { |
| 11754 | 44 if (g_list_find(idled_accts, acct)) |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
45 return TRUE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
46 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
47 return FALSE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
48 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
49 |
| 12775 | 50 static gboolean |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
51 idleable_filter(GaimAccount *account) |
| 12775 | 52 { |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
53 GaimPlugin *prpl; |
| 12775 | 54 |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
55 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
56 g_return_val_if_fail(prpl != NULL, FALSE); |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
57 |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
58 return (GAIM_PLUGIN_PROTOCOL_INFO(prpl)->set_idle != NULL); |
| 12775 | 59 } |
| 60 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
61 static void |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
62 set_idle_time(GaimAccount *acct, int mins_idle) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
63 { |
| 11972 | 64 time_t t; |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
65 GaimConnection *gc = gaim_account_get_connection(acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
66 GaimPresence *presence = gaim_account_get_presence(acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
67 |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
68 if (!gc) |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
69 return; |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
70 |
| 11754 | 71 gaim_debug_info("idle", |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
72 "setting idle time for %s to %d\n", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
73 gaim_account_get_username(acct), mins_idle); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
74 |
| 11974 | 75 t = time(NULL) - (60 * mins_idle); /* subtract seconds idle from current time */ |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
76 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
77 gaim_presence_set_idle(presence, mins_idle ? TRUE : FALSE, t); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
78 } |
| 4103 | 79 |
| 8986 | 80 static void |
| 81 idle_action_ok(void *ignored, GaimRequestFields *fields) | |
| 82 { | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
83 int tm = gaim_request_fields_get_integer(fields, "mins"); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
84 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
85 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
86 /* only add the account to the GList if it's not already been idled */ |
| 12775 | 87 if (!unidle_filter(acct)) |
| 11754 | 88 { |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
89 gaim_debug_misc("idle", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
90 "%s hasn't been idled yet; adding to list.\n", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
91 gaim_account_get_username(acct)); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
92 idled_accts = g_list_append(idled_accts, acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
93 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
94 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
95 set_idle_time(acct, tm); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
96 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
97 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
98 static void |
| 12775 | 99 idle_all_action_ok(void *ignored, GaimRequestFields *fields) |
| 100 { | |
| 101 GaimAccount *acct = NULL; | |
| 102 GList *l = gaim_accounts_get_all_active(); | |
| 103 int tm = gaim_request_fields_get_integer(fields, "mins"); | |
| 104 const char *prpl_id = NULL; | |
| 105 | |
| 106 for(; l; l = l->next) { | |
| 107 acct = (GaimAccount *)(l->data); | |
| 108 | |
| 109 if(acct) | |
| 110 prpl_id = gaim_account_get_protocol_id(acct); | |
| 111 | |
| 112 if(acct && idleable_filter(acct)) { | |
| 113 gaim_debug_misc("idle", "Idling %s.\n", | |
| 114 gaim_account_get_username(acct)); | |
| 115 | |
| 116 set_idle_time(acct, tm); | |
| 117 | |
| 118 if(!g_list_find(idled_accts, acct)) | |
| 119 idled_accts = g_list_append(idled_accts, acct); | |
| 120 } | |
| 121 } | |
| 122 } | |
| 123 | |
| 124 static void | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
125 unidle_action_ok(void *ignored, GaimRequestFields *fields) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
126 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
127 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
128 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
129 set_idle_time(acct, 0); /* unidle the account */ |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
130 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
131 /* once the account has been unidled it shouldn't be in the list */ |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
132 idled_accts = g_list_remove(idled_accts, acct); |
| 4103 | 133 } |
| 134 | |
| 8986 | 135 |
| 136 static void | |
| 9015 | 137 idle_action(GaimPluginAction *action) |
|
6008
35679a3f2bcc
[gaim-migrate @ 6456]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
138 { |
| 8986 | 139 /* Use the super fancy request API */ |
| 4103 | 140 |
| 8986 | 141 GaimRequestFields *request; |
| 142 GaimRequestFieldGroup *group; | |
| 143 GaimRequestField *field; | |
| 144 | |
| 145 group = gaim_request_field_group_new(NULL); | |
| 4103 | 146 |
| 8994 | 147 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
| 12775 | 148 gaim_request_field_account_set_filter(field, idleable_filter); |
| 8986 | 149 gaim_request_field_account_set_show_all(field, FALSE); |
| 150 gaim_request_field_group_add_field(group, field); | |
| 11754 | 151 |
| 8994 | 152 field = gaim_request_field_int_new("mins", _("Minutes"), 10); |
| 8986 | 153 gaim_request_field_group_add_field(group, field); |
| 4103 | 154 |
| 8986 | 155 request = gaim_request_fields_new(); |
| 156 gaim_request_fields_add_group(request, group); | |
| 157 | |
| 9015 | 158 gaim_request_fields(action->plugin, |
| 8986 | 159 N_("I'dle Mak'er"), |
| 160 _("Set Account Idle Time"), | |
| 161 NULL, | |
| 162 request, | |
| 163 _("_Set"), G_CALLBACK(idle_action_ok), | |
| 164 _("_Cancel"), NULL, | |
| 165 NULL); | |
| 4103 | 166 } |
| 167 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
168 static void |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
169 unidle_action(GaimPluginAction *action) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
170 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
171 GaimRequestFields *request; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
172 GaimRequestFieldGroup *group; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
173 GaimRequestField *field; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
174 |
| 11975 | 175 if (idled_accts == NULL) |
| 176 { | |
| 177 gaim_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL); | |
| 178 return; | |
| 179 } | |
| 180 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
181 group = gaim_request_field_group_new(NULL); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
182 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
183 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
| 12775 | 184 gaim_request_field_account_set_filter(field, unidle_filter); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
185 gaim_request_field_account_set_show_all(field, FALSE); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
186 gaim_request_field_group_add_field(group, field); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
187 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
188 request = gaim_request_fields_new(); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
189 gaim_request_fields_add_group(request, group); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
190 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
191 gaim_request_fields(action->plugin, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
192 N_("I'dle Mak'er"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
193 _("Unset Account Idle Time"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
194 NULL, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
195 request, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
196 _("_Unset"), G_CALLBACK(unidle_action_ok), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
197 _("_Cancel"), NULL, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
198 NULL); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
199 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
200 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
201 static void |
| 12775 | 202 idle_all_action(GaimPluginAction *action) |
| 203 { | |
| 204 GaimRequestFields *request; | |
| 205 GaimRequestFieldGroup *group; | |
| 206 GaimRequestField *field; | |
| 207 | |
| 208 group = gaim_request_field_group_new(NULL); | |
| 209 | |
| 210 field = gaim_request_field_int_new("mins", _("Minutes"), 10); | |
| 211 gaim_request_field_group_add_field(group, field); | |
| 212 | |
| 213 request = gaim_request_fields_new(); | |
| 214 gaim_request_fields_add_group(request, group); | |
| 215 | |
| 216 gaim_request_fields(action->plugin, | |
| 217 N_("I'dle Mak'er"), | |
| 218 _("Set Idle Time for All Accounts"), | |
| 219 NULL, | |
| 220 request, | |
| 221 _("_Set"), G_CALLBACK(idle_all_action_ok), | |
| 222 _("_Cancel"), NULL, | |
| 223 NULL); | |
| 224 } | |
| 225 | |
| 226 static void | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
227 unidle_all_action(GaimPluginAction *action) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
228 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
229 GList *l; |
| 11754 | 230 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
231 /* freeing the list here will cause segfaults if the user idles an account |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
232 * after the list is freed */ |
| 11754 | 233 for (l = idled_accts; l; l = l->next) |
| 234 { | |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
235 GaimAccount *account = l->data; |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
236 set_idle_time(account, 0); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
237 } |
| 11754 | 238 |
| 239 g_list_free(idled_accts); | |
| 240 idled_accts = NULL; | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
241 } |
| 8986 | 242 |
| 243 static GList * | |
| 9015 | 244 actions(GaimPlugin *plugin, gpointer context) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
245 { |
| 8986 | 246 GList *l = NULL; |
| 9015 | 247 GaimPluginAction *act = NULL; |
| 4103 | 248 |
| 12306 | 249 act = gaim_plugin_action_new(_("Set Account Idle Time"), |
| 9015 | 250 idle_action); |
| 251 l = g_list_append(l, act); | |
| 4103 | 252 |
| 12306 | 253 act = gaim_plugin_action_new(_("Unset Account Idle Time"), |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
254 unidle_action); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
255 l = g_list_append(l, act); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
256 |
| 12775 | 257 act = gaim_plugin_action_new(_("Set Idle Time for All Accounts"), |
| 258 idle_all_action); | |
| 259 l = g_list_append(l, act); | |
| 260 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
261 act = gaim_plugin_action_new( |
| 12306 | 262 _("Unset Idle Time for All Idled Accounts"), unidle_all_action); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
263 l = g_list_append(l, act); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
264 |
| 8986 | 265 return l; |
| 4103 | 266 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
267 |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
268 static void |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
269 signing_off_cb(GaimConnection *gc, void *data) |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
270 { |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
271 GaimAccount *account; |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
272 |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
273 account = gaim_connection_get_account(gc); |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
274 idled_accts = g_list_remove(idled_accts, account); |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
275 } |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
276 |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
277 static gboolean |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
278 plugin_load(GaimPlugin *plugin) |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
279 { |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
280 gaim_signal_connect(gaim_connections_get_handle(), "signing-off", |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
281 plugin, |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
282 GAIM_CALLBACK(signing_off_cb), NULL); |
| 12844 | 283 |
| 284 return TRUE; | |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
285 } |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
286 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
287 static gboolean |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
288 plugin_unload(GaimPlugin *plugin) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
289 { |
| 11754 | 290 unidle_all_action(NULL); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
291 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
292 return TRUE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
293 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
294 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
295 static GaimPluginInfo info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
296 { |
| 9943 | 297 GAIM_PLUGIN_MAGIC, |
| 298 GAIM_MAJOR_VERSION, | |
| 299 GAIM_MINOR_VERSION, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
300 GAIM_PLUGIN_STANDARD, |
| 8986 | 301 NULL, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
302 0, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
303 NULL, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
304 GAIM_PRIORITY_DEFAULT, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
305 IDLE_PLUGIN_ID, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
306 N_("I'dle Mak'er"), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
307 VERSION, |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
308 N_("Allows you to hand-configure how long you've been idle"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
309 N_("Allows you to hand-configure how long you've been idle"), |
| 6481 | 310 "Eric Warmenhoven <eric@warmenhoven.org>", |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6064
diff
changeset
|
311 GAIM_WEBSITE, |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
312 plugin_load, |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
313 plugin_unload, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
314 NULL, |
| 8986 | 315 NULL, |
| 316 NULL, | |
| 317 NULL, | |
| 318 actions | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
319 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
320 |
| 12826 | 321 static void |
|
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
322 init_plugin(GaimPlugin *plugin) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
323 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
324 } |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
325 |
| 8986 | 326 |
| 6063 | 327 GAIM_INIT_PLUGIN(idle, init_plugin, info) |
| 8986 | 328 |
