Mercurial > pidgin
annotate plugins/idle.c @ 13515:f5d4300aeed8
[gaim-migrate @ 15891]
Fix sf bug #1443092, Events logging not working properly?
"signed on" and "signed off" for people in your buddy list
are now correctly logged to the system log.
Richard, someone had already left a note in this function
to make a change after the string freeze (I think it was
you). We should still make a change after the string freeze,
but the change is different now than it was before this commit.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Wed, 15 Mar 2006 04:41:44 +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 |
