Mercurial > pidgin
annotate plugins/idle.c @ 13810:a84523152a24
[gaim-migrate @ 16240]
This is not a completed update, but it has useful bits and bug fixes
and the completed update will take some more time.
This adds support for some of the status API to Tcl, as well as
improving the handling of several of the pointer types (by introducing
a gaim reference object type and appropriate string roundtrip
functions) and introducing some "type safety".
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Sat, 10 Jun 2006 18:01:11 +0000 |
parents | 85267a333422 |
children | 571aebbe5ec6 |
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 |
13658
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
75 if (mins_idle) |
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
76 t = time(NULL) - (60 * mins_idle); /* subtract seconds idle from current time */ |
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
77 else |
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
78 t = 0; /* time idle is irrelevant */ |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
79 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
80 gaim_presence_set_idle(presence, mins_idle ? TRUE : FALSE, t); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
81 } |
4103 | 82 |
8986 | 83 static void |
84 idle_action_ok(void *ignored, GaimRequestFields *fields) | |
85 { | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
86 int tm = gaim_request_fields_get_integer(fields, "mins"); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
87 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
88 |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
89 /* only add the account to the GList if it's not already been idled */ |
12775 | 90 if (!unidle_filter(acct)) |
11754 | 91 { |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
92 gaim_debug_misc("idle", |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
93 "%s hasn't been idled yet; adding to list.\n", |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
94 gaim_account_get_username(acct)); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
95 idled_accts = g_list_append(idled_accts, acct); |
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 set_idle_time(acct, tm); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
99 } |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
100 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
101 static void |
12775 | 102 idle_all_action_ok(void *ignored, GaimRequestFields *fields) |
103 { | |
104 GaimAccount *acct = NULL; | |
105 GList *l = gaim_accounts_get_all_active(); | |
106 int tm = gaim_request_fields_get_integer(fields, "mins"); | |
107 const char *prpl_id = NULL; | |
108 | |
109 for(; l; l = l->next) { | |
110 acct = (GaimAccount *)(l->data); | |
111 | |
112 if(acct) | |
113 prpl_id = gaim_account_get_protocol_id(acct); | |
114 | |
115 if(acct && idleable_filter(acct)) { | |
116 gaim_debug_misc("idle", "Idling %s.\n", | |
117 gaim_account_get_username(acct)); | |
118 | |
119 set_idle_time(acct, tm); | |
120 | |
121 if(!g_list_find(idled_accts, acct)) | |
122 idled_accts = g_list_append(idled_accts, acct); | |
123 } | |
124 } | |
125 } | |
126 | |
127 static void | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
128 unidle_action_ok(void *ignored, GaimRequestFields *fields) |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
129 { |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
130 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
131 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
132 set_idle_time(acct, 0); /* unidle the account */ |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
133 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
134 /* 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
|
135 idled_accts = g_list_remove(idled_accts, acct); |
4103 | 136 } |
137 | |
8986 | 138 |
139 static void | |
9015 | 140 idle_action(GaimPluginAction *action) |
6008
35679a3f2bcc
[gaim-migrate @ 6456]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
141 { |
8986 | 142 /* Use the super fancy request API */ |
4103 | 143 |
8986 | 144 GaimRequestFields *request; |
145 GaimRequestFieldGroup *group; | |
146 GaimRequestField *field; | |
147 | |
148 group = gaim_request_field_group_new(NULL); | |
4103 | 149 |
8994 | 150 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
12775 | 151 gaim_request_field_account_set_filter(field, idleable_filter); |
8986 | 152 gaim_request_field_account_set_show_all(field, FALSE); |
153 gaim_request_field_group_add_field(group, field); | |
11754 | 154 |
8994 | 155 field = gaim_request_field_int_new("mins", _("Minutes"), 10); |
8986 | 156 gaim_request_field_group_add_field(group, field); |
4103 | 157 |
8986 | 158 request = gaim_request_fields_new(); |
159 gaim_request_fields_add_group(request, group); | |
160 | |
9015 | 161 gaim_request_fields(action->plugin, |
8986 | 162 N_("I'dle Mak'er"), |
163 _("Set Account Idle Time"), | |
164 NULL, | |
165 request, | |
166 _("_Set"), G_CALLBACK(idle_action_ok), | |
167 _("_Cancel"), NULL, | |
168 NULL); | |
4103 | 169 } |
170 | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
171 static void |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
172 unidle_action(GaimPluginAction *action) |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
173 { |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
174 GaimRequestFields *request; |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
175 GaimRequestFieldGroup *group; |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
176 GaimRequestField *field; |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
177 |
11975 | 178 if (idled_accts == NULL) |
179 { | |
180 gaim_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL); | |
181 return; | |
182 } | |
183 | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
184 group = gaim_request_field_group_new(NULL); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
185 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
186 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
12775 | 187 gaim_request_field_account_set_filter(field, unidle_filter); |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
188 gaim_request_field_account_set_show_all(field, FALSE); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
189 gaim_request_field_group_add_field(group, field); |
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 request = gaim_request_fields_new(); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
192 gaim_request_fields_add_group(request, group); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
193 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
194 gaim_request_fields(action->plugin, |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
195 N_("I'dle Mak'er"), |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
196 _("Unset Account Idle Time"), |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
197 NULL, |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
198 request, |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
199 _("_Unset"), G_CALLBACK(unidle_action_ok), |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
200 _("_Cancel"), NULL, |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
201 NULL); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
202 } |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
203 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
204 static void |
12775 | 205 idle_all_action(GaimPluginAction *action) |
206 { | |
207 GaimRequestFields *request; | |
208 GaimRequestFieldGroup *group; | |
209 GaimRequestField *field; | |
210 | |
211 group = gaim_request_field_group_new(NULL); | |
212 | |
213 field = gaim_request_field_int_new("mins", _("Minutes"), 10); | |
214 gaim_request_field_group_add_field(group, field); | |
215 | |
216 request = gaim_request_fields_new(); | |
217 gaim_request_fields_add_group(request, group); | |
218 | |
219 gaim_request_fields(action->plugin, | |
220 N_("I'dle Mak'er"), | |
221 _("Set Idle Time for All Accounts"), | |
222 NULL, | |
223 request, | |
224 _("_Set"), G_CALLBACK(idle_all_action_ok), | |
225 _("_Cancel"), NULL, | |
226 NULL); | |
227 } | |
228 | |
229 static void | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
230 unidle_all_action(GaimPluginAction *action) |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
231 { |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
232 GList *l; |
11754 | 233 |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
234 /* 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
|
235 * after the list is freed */ |
11754 | 236 for (l = idled_accts; l; l = l->next) |
237 { | |
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
238 GaimAccount *account = l->data; |
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
239 set_idle_time(account, 0); |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
240 } |
11754 | 241 |
242 g_list_free(idled_accts); | |
243 idled_accts = NULL; | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
244 } |
8986 | 245 |
246 static GList * | |
9015 | 247 actions(GaimPlugin *plugin, gpointer context) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
248 { |
8986 | 249 GList *l = NULL; |
9015 | 250 GaimPluginAction *act = NULL; |
4103 | 251 |
12306 | 252 act = gaim_plugin_action_new(_("Set Account Idle Time"), |
9015 | 253 idle_action); |
254 l = g_list_append(l, act); | |
4103 | 255 |
12306 | 256 act = gaim_plugin_action_new(_("Unset Account Idle Time"), |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
257 unidle_action); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
258 l = g_list_append(l, act); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
259 |
12775 | 260 act = gaim_plugin_action_new(_("Set Idle Time for All Accounts"), |
261 idle_all_action); | |
262 l = g_list_append(l, act); | |
263 | |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
264 act = gaim_plugin_action_new( |
12306 | 265 _("Unset Idle Time for All Idled Accounts"), unidle_all_action); |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
266 l = g_list_append(l, act); |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
267 |
8986 | 268 return l; |
4103 | 269 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
270 |
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
271 static void |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
272 signing_off_cb(GaimConnection *gc, void *data) |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
273 { |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
274 GaimAccount *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 account = gaim_connection_get_account(gc); |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
277 idled_accts = g_list_remove(idled_accts, account); |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
278 } |
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 static gboolean |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
281 plugin_load(GaimPlugin *plugin) |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
282 { |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
283 gaim_signal_connect(gaim_connections_get_handle(), "signing-off", |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
284 plugin, |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
285 GAIM_CALLBACK(signing_off_cb), NULL); |
12844 | 286 |
287 return TRUE; | |
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
288 } |
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
289 |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
290 static gboolean |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
291 plugin_unload(GaimPlugin *plugin) |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
292 { |
11754 | 293 unidle_all_action(NULL); |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
294 |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
295 return TRUE; |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
296 } |
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
297 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
298 static GaimPluginInfo info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
299 { |
9943 | 300 GAIM_PLUGIN_MAGIC, |
301 GAIM_MAJOR_VERSION, | |
302 GAIM_MINOR_VERSION, | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
303 GAIM_PLUGIN_STANDARD, |
8986 | 304 NULL, |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
305 0, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
306 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
307 GAIM_PRIORITY_DEFAULT, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
308 IDLE_PLUGIN_ID, |
13700
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
309 |
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
310 /* This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin. |
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
311 If that doesn't translate well into your language, drop the 's before translating. */ |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
312 N_("I'dle Mak'er"), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
313 VERSION, |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
314 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
|
315 N_("Allows you to hand-configure how long you've been idle"), |
6481 | 316 "Eric Warmenhoven <eric@warmenhoven.org>", |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6064
diff
changeset
|
317 GAIM_WEBSITE, |
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
318 plugin_load, |
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
319 plugin_unload, |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
320 NULL, |
8986 | 321 NULL, |
322 NULL, | |
323 NULL, | |
324 actions | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
325 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
326 |
12826 | 327 static void |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
328 init_plugin(GaimPlugin *plugin) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
329 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
330 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
331 |
8986 | 332 |
6063 | 333 GAIM_INIT_PLUGIN(idle, init_plugin, info) |
8986 | 334 |